Search for:
Navigating the Low Code Solution Landscape

Low-code development platforms have gained immense popularity in recent years, transforming the way applications are built and empowering businesses of all sizes to create software quickly and efficiently. In this article, we will delve into the world of low-code development, with a specific focus on three leading platforms: Oracle APEX, Microsoft PowerApps, and Bubble.io. Through an unbiased examination of each platform’s capabilities, strengths, weaknesses, and the broader pros and cons of low-code development, readers will gain a comprehensive understanding of the low-code landscape.

Oracle APEX, also known as Oracle Application Express, is a robust low-code platform that targets professional developers familiar with Oracle technologies. It offers a wide range of features, including an intuitive drag-and-drop page designer, declarative application development, and seamless integration with Oracle Database. According to surveys conducted by Oracle, APEX has proven highly successful among enterprise users, with 360,000+ developers and 25,000+ customers worldwide (source: Oracle APEX Usage Statistics).

Advantages

  1. Integration with Oracle Database: A significant advantage of APEX is its seamless integration with Oracle Database, providing developers with access to existing data structures and processes. This allows for rapid development and ensures data security and integrity.
  2. Scalability: APEX is highly scalable and can handle enterprise-level applications efficiently. It can handle large volumes of data and concurrent users without sacrificing performance.

Disadvantages

  1. Learning Curve: APEX can have a steeper learning curve for beginners without prior knowledge of Oracle technologies. Developers need to have experience with SQL and PL/SQL to make the most of the advanced features offered by the platform.
  2. Limited UI Customization: Compared to other low-code platforms, APEX may have limited options for UI customization. Although it provides a range of pre-built themes and templates, developers looking for extensive UI customization may find this limiting.

Microsoft PowerApps is a popular low-code development platform that seamlessly integrates with other Microsoft products and services, such as SharePoint and Office 365. According to Microsoft, PowerApps has seen a significant adoption rate, with over 2.7 million developers and 36 million app launches in the past year (source: Microsoft PowerApps Usage Statistics).

Advantages

  1. Native Integration: PowerApps’ native integration with Microsoft products and services provides users with an ecosystem that harmonizes seamlessly. This integration allows for leveraging existing data sources and seamlessly integrating workflows.
  2. User-Friendly Interface: PowerApps offers a user-friendly interface with drag-and-drop functionality, allowing both developers and non-technical users to create applications easily. The platform also provides an extensive template library, making it easier to get started quickly.

Disadvantages

  1. Limited Customization: PowerApps has some limitations in terms of advanced customization options compared to other platforms. For complex and highly customized applications, developers may feel restrained by the platform’s capabilities.
  2. Integration Challenges: While PowerApps excels in integrating with other Microsoft products, integrating with non-Microsoft systems and data sources can be more challenging. This could pose a limitation for businesses heavily reliant on non-Microsoft technologies.

Bubble.io is a visually-driven low-code development platform that prioritizes simplicity and ease of use. It appeals to users with little to no coding experience, allowing them to build web applications through an intuitive drag-and-drop interface. Bubble.io boasts a growing user base, with over 500,000 users across 195 countries (source: Bubble.io Usage Statistics).

Advantages

  1. User-Friendly Interface: The intuitive nature of Bubble.io’s interface enables users with limited coding experience to build web applications effortlessly. Its drag-and-drop functionality and visual workflows make it accessible for non-technical users.
  2. Extensive Marketplace: Bubble.io offers an extensive marketplace for plugins and integrations, providing users with a rich ecosystem of pre-built components to enhance their applications.

Disadvantages

  1. Limited Scalability: Although Bubble.io is suitable for simple to moderate applications, it may not be the optimal choice for complex or enterprise-level projects that demand scalability and enhanced performance.
  2. Limited Customization: Compared to some other platforms, Bubble.io may have limitations on advanced customization options. Developers looking for more control over the application’s look and feel may find these limitations restrictive.

We learned about the three dominant low code platforms, but what about the advantages and disadvantages of developing using low code? Why should we, as business leaders and enterprise architects, commit to this form of application development?

Advantages

  1. Rapid Application Development: Low-code platforms significantly reduce development time, enabling organizations to bring applications to market faster and stay ahead of the competition.
  2. Increased Productivity: With low-code development, developers can focus on business logic and application functionality rather than writing lines of code from scratch. This enhances overall productivity and allows developers to build more applications in less time.
  3. Lower Costs: Low-code development can reduce the need for large development teams, resulting in cost savings for businesses. Additionally, the efficient reuse of pre-built components and the ability to quickly iterate on applications helps lower development costs.
  4. Democratization of Development: Low-code platforms empower non-technical users within an organization to participate in the development process. This can lead to increased collaboration, innovation, and an inclusive approach to building applications.

Disadvantages

  1. Limited Customization: While low-code platforms offer convenience and speed, they may have limitations when it comes to advanced customization options. Complex applications or those with unique requirements may face challenges in achieving the desired level of customization.
  2. Performance Issues: Complex or high-scale applications built on low-code platforms may experience performance issues if not properly optimized. Careful consideration of the application’s architecture and optimization techniques is necessary to mitigate these issues.
  3. Vendor Lock-In: Organizations should carefully evaluate the long-term implications of adopting a specific low-code platform, as switching platforms or making significant changes to the underlying codebase can be challenging. This potential vendor lock-in should be a consideration for businesses aiming for flexibility and scalability.

Wrapping Up

Low-code development platforms offer businesses a variety of benefits, such as accelerated application development, increased productivity, and cost savings. Oracle APEX, Microsoft PowerApps, and Bubble.io are all formidable options in the low-code market, each catering to specific needs and user requirements. By understanding the pros and cons of these platforms, organizations can make informed decisions suitable for their specific projects.

While Oracle APEX offers a powerful solution with seamless Oracle Database integration, Microsoft PowerApps provides a comprehensive ecosystem for Microsoft users, and Bubble.io excels in simplicity and accessibility. Ultimately, the choice of a low-code platform depends on the organization’s unique needs, level of technical expertise, and project requirements.

Advantages of Using Behavior Driven Development for New Software Projects

Introduction
Behavior Driven Development (BDD) is an agile software development approach that emphasizes collaboration, communication, and delivering value to customers. By focusing on the behavior of the software and its expected outcomes, BDD helps teams align their efforts towards meeting user requirements effectively. In this article, we will explore the advantages of utilizing BDD in new software projects, highlighting its ability to enhance communication, improve test coverage, increase customer satisfaction, and promote a shared understanding among stakeholders.

Enhanced Communication and Collaboration
BDD promotes closer collaboration between developers, testers, product owners, and other stakeholders. Its emphasis on shared understanding helps bridge the gap between technical and non-technical team members. By using structured natural language scenarios, BDD enables the creation of a common language that all parties can understand, reducing communication barriers.

Teams practicing BDD can use tools like Cucumber or SpecFlow for .NET or Behat for PHP, which support syntax such as Given-When-Then, to write executable specifications. These specifications serve as a communication medium, allowing stakeholders to discuss and agree upon the expected behavior of the software. As a result, BDD helps ensure that everyone involved has a clear understanding of the project goals, reducing misunderstandings and improving overall efficiency.

The following is an example of Behat code:Feature: Shopping Cart
In order to buy products
As a customer
I need to be able to put interesting products into a cart

Rules:
– Tax is 6%
– Delivery for cart under $10 is $3
– Delivery for cart over $10 is $2

Improved Test Coverage
BDD encourages the creation of automated tests that reflect the desired behavior of the software. These tests, often written in a natural language format, help ensure that developers and testers cover all possible scenarios and edge cases,resulting in improved test coverage.

By focusing on behavior and outcomes, BDD avoids the common pitfalls associated with writing tests based solely on implementation details. This approach makes tests more resilient to changes in code, reducing the need for extensive test maintenance. Additionally, BDD encourages the use of test driven development (TDD), where tests are written before the code, promoting higher code quality.

Increased Customer Satisfaction
BDD places a strong emphasis on the needs and expectations of the end-users. By involving stakeholders in the creation of executable specifications, BDD ensures that customer requirements are thoroughly understood and addressed. The collaborative nature of BDD helps to identify any gaps or misunderstandings early in the development process, reducing rework and customer dissatisfaction.

Furthermore, BDD enables the creation of behavior driven acceptance tests, which validate that the implemented software meets the desired behavior. These tests provide a clear indication of progress and allow stakeholders to have confidence in the product’s functionality. By aligning development efforts with customer expectations, BDD helps deliver software that better satisfies their needs, leading to increased customer satisfaction.

Promoting a Shared Understanding
BDD fosters a shared understanding among team members, including developers, testers, and product owners. By using a common language and collaborating on the creation of executable specifications, BDD ensures that everyone involved has a clear picture of the software’s behavior.

This shared understanding helps align the team’s efforts towards a common goal, reducing the risk of miscommunication and rework. It also facilitates knowledge sharing and reduces dependencies on individual team members. With a shared understanding, developers can focus on delivering features that meet the desired behavior, while testers can create thorough tests based on the agreed-upon specifications.

Wrapping Up
Behavior Driven Development (BDD) offers numerous advantages for new software projects, ranging from improved communication and collaboration to increased customer satisfaction. By focusing on behavior, BDD aligns development efforts with user requirements, resulting in a shared understanding among stakeholders. With enhanced communication, improved test coverage, and a customer-centric approach, BDD helps teams deliver software that meets expectations and adds value. Embracing BDD can lead to more efficient development cycles, reduced rework, and ultimately, successful software projects.

PHP 8 — Worth The Upgrade?

What do I think of the latest version of PHP (8.1 at the time of me writing this)?

How do I love thee? Let me count the ways.
I love thee to the depth and breadth and height
My soul can reach, when feeling out of sight
For the ends of being and ideal grace.

— Elizabeth Barrett Browning

Let me set the rollback clock to 2001. I was working at Golfsmith International, and we were tasked with rewriting the E-Commerce website in a different language. At the time, it was written using Oracle’s “htp” package. Even in 2001, we knew that this was perhaps the worst choice for web development.

The tech lead on my team, Srinivas Mulpuri, mentioned this fairly new language and platform called PHP. We ended up building a very robust e-commerce website. We even included features that seemed cutting edge in 2023 standards.

I have been developing off and on with PHP ever since. I have written code that I was proud of and code that I would want to ignore the fact that I developed it. My story is not new. It is shared by millions of PHP developers globally.

PHP has became the platform you love to hate and hate to love. But, truth be told, it is being used to power 77.4% of all websites across the globe.

Not to shabby.

What makes PHP so popular is also what has also given PHP a bad reputation for serious programming. PHP is very easy to learn and PHP applications are easy to develop. The language has always been very forgiving, with out-of-the-box configuration. Features that have become synonymous with the more enterprise languages like C# and Java, such as typed variables, object oriented architecture, and function return types, were non existent in legacy PHP applications. PHP also included features such as “magic methods”. An example of “magic methods” are implicit object getters and setters when defining classes. Once you learn about object oriented development, you will want to develop applications using object oriented architecture. With legacy PHP, you will find yourself very frustrated when trying to build a true object oriented application after you are confronted with the likes of globals and magic methods.

Now, I did not set out wanting to discuss PHP of days old. If you are reading this, you want to know, “should I upgrade”.

“Yes!”

PHP 8 and 8.1 has introduced all the constructs that are mostly familiar with enterprise software development along with an improved engine that boasts some of the best software processing times on the planet.

I found the following summary from https://kinsta.com/blog/php-vs-python/#performance-and-speed that compares the speed and performance between php 7 and python. Things only got better with PHP 8.

According to an Unbounce report published in December 2018, 79% of online shoppers facing trouble with site speed and overall performance say they won’t visit or patronize the website again.

It shows that all the apps and sites you develop must be responsive and load faster — within 2–3 seconds at most.

Although speed and performance can vary due to various elements like hardware resources, memory, storage space, code logic, hard disk access time, data path width, and more, what programming language you use is also a factor to consider.

Hence, comparing the speed and performance of Python and PHP is crucial.

The early versions of PHP were slow, including PHP 5.x that took a great deal of time to execute codes. It seems like their developer community has worked significantly on improving the programming language’s performance and speed with PHP 7.x.

It’s exceptionally faster than many programming languages, including Python. Zend Engine 3.0 was also released with PHP 7, making the programming language 2x faster than its previous version.

Comparatively, Python’s code compilation process is designed to be quicker, even without installing caching systems. When a file is created and/or modified, it converts this code into bytecode. It was way faster than what PHP used to be before PHP 7.x was introduced.

For example, if you’re developing a banking system, which can receive a huge amount of traffic daily, it needs to be exceptionally fast. Shorter delays can impact system performance greatly. In this case, using PHP 7 would be recommended over Python.

However, if you want to build a simple application where speed and time lag don’t have much impact, you can use both Python and PHP.

Conclusion: PHP wins in terms of speed and performance.

Speed and performance are not the only reasons to upgrade to PHP 8.x. For me, code quality and structure was a top reason. When you develop with an IDE, such as PHPStorm by JetBrains or Microsoft Visual Studio Code, you will see how you can improve the quality of your code through the use of the integrated linting tool.

What exactly is linting? Linting is design time validation of code standards.

Here are some features of 8 and 8.1 that the linting tool can help with as you write better quality object oriented PHP code:

  1. function return types
  2. PSR-4 code structure
  3. variable types
  4. enum types
  5. final class constants
  6. deprecation of passing null to non-null arguments
  7. namespace validation
  8. validation of array key values. causing error or warning for non-existing indices.

How about a real world example?

My SaaS software, Cognicio, was originally written using a combination Symfony components and non-framework PHP. For years, there were small bugs that sometimes occurred in only certain situations. These bugs were difficult to identify, or even recognize that they were bugs. The code was written using PHP 5.4 compatible libraries and features. The code had definite performance issues as well. After upgrading the code to 8.1, and upgrading the referenced libraries, the integrated linting tool with PHPStorm went to work! I found several sections of code where the code was written in a way that errors were absorbed.

Some people say, if you do not test it, then there are no problems to report. Therefore, you are 100% error free. This is true in code and in life.

Using the original code, I had no idea error and warning conditions were occurring. After upgrading, issues presented themselves and were fairly easy to fix. Code inefficiencies were also discovered more easily. As a result, the code ran with less bugs and performance issues were resolved.

In conclusion, to answer the question, “should you upgrade your legacy PHP applications to 8.1”? The answer is definitely, yes.

Stay tuned to other articles in my bookshelf series where I discuss other specific aspects of enterprise PHP development, such as TDD or Test Driven Design.