Categories
Enterprise Application Development

Delivering a major product update from home

By Deepak Anupalli,
VP of Engineering, WaveMaker

COVID-19 has disrupted life in many ways, bringing new challenges as well as opportunities for everyone to learn and innovate new ways of coping up with this crisis. Working from home is never easy, amidst daily chores, fetching essentials, keeping the kids occupied etc. staying on top of a product release is an unprecedented task.

A major product update was planned to go out to customers on April 1st week and we were hit by COVID lockdown, from March 18th our teams started working from home. It is a very humbling and commendable effort by the team to come forward to make the release happen. WaveMaker 10.4 is released on April 20th, a big Kudos to WaveMaker Team !

What did we learn?

Amidst the crisis and lockdown, being a software product organization the best way we can help the world is to create better software. In these times, having a clear purpose for our team to achieve something better, learn new things, be closer to one another and keep our morale high is very important. There is nothing better than to work as a team to accomplish more and better.

How did it happen

1. Better collaboration using the right tools.

Collaborating with a large distributed team is very tough, unless we have the right tools to track the tasks, their progress and information needed for the team members at the right time. Understanding where the team is stuck and changing course, making right decisions is the most important job for the product leads. Collaboration doesn’t necessarily mean getting onto a video call for everything and going on for hours, effective communication is the most important aspect of collaboration.

2. Over communicate and share everything with the team.

Team learned to document every detail, summary of the discussions, notes from brainstorming sessions, videos, presentations etc. Having an internal collaboration platform, like Groupe.io helped team members to do this effectively and also engage every member in conversations. Conversations are very crucial as they capture the decisions made in developing the features, which improved collaboration across development, testing & devops teams.

3. Bring the team together, by setting a clear routine

Daily morning stand ups to discuss the priorities for the day and deliverables from each individual. It is very important to be empathetic to each one and understand one another’s personal situation amidst the crisis, alongside working together to achieve the objective.

4. Enabled for remote working

Leaving aside the productivity and collaboration tools like G-suite, JIRA, Groupe.io, WaveMaker started the journey with cloud infrastructure, embracing AWS and container-based delivery model, since the inception. Having all the platform infrastructure and deployment environments on the cloud, enabled us to connect and deliver easily.

5. Most importantly, fun!

Of course, there are Yoga sessions, virtual birthday celebrations, games, and fun!

Check out all the new features in the 10.4 release here

Categories
Insights

Model Driven Development vs Code Generation – WaveMaker

Low-code products provide rapid acceleration of app development using Model Driven Development. The idea of using a model as a starting point to describe your business semantics and then from the model generate application artifacts can be very powerful as it eliminates a lot of code development while building your application.

Low-code products take this approach to accelerate and help deliver applications faster with higher productivity. With that said, there are two interesting angles that low-code products take:

1. Full dependency on Model Driven App Development
2. Partial dependency on Model Driven App Development

Full Dependency on Model Driven App Development

In this scenario, the Model is used to abstract the business semantics and logic, and it is then interpreted at runtime into a working application. There is no real code that is generated and the application is always dependent on the model for its functioning.

This is good for business users to define the model and then have the application derived out of it. The downside is there are very little opportunities to do very specific customizations as there is no code generated or accessible. Magic happens underneath the covers if you will and at any point there is no way to independently take the application out and maintain or enhance outside of the Low-code products. Many Low-Code Products that are business process driven fall into this bucket and suffer from lack of real code generation, customization and more importantly independent existence of the application.

Partial dependency on Model Driven App Development

In this scenario, the Model is used as a starting point to describe business semantics and relationships, and is automatically converted into real code. There is no runtime interpretation of the model. The Application relies on software generated code to be fully functional.

The approach allows users to abstract the business semantics as one is still starting with a Model driven development but allows greater flexibility and customization by allowing developers to access, modify and fully extend real code that is auto generated using the model.

Magic still happens but is fully visible to the developers. At any point in time, since code is always generated it is always accessible. The application can be extended using real code. The application can be exported and has an independent existence outside the low-code product as well. In some ways, you get the best of both worlds, (acceleration and freedom). WaveMaker Low-Code Platform falls into this category and more importantly supports this approach with fully standards based modern technology stack and architecture suited for cloud native application development and delivery.

Originally published in IT BRIEFCASE

Categories
Insights

Evaluating Low-code Platforms for scalability – Wavemaker

The enterprise application market is expected to grow to 250 billion USD by 2024. This is hardly surprising given enterprises are developing more applications than ever before. As enterprises plan to deliver more enterprise applications, pressures of speed-to-market and the lack of talent available necessitates organizations to look for better and smarter alternatives. The application development platform is one such solution. Simply put, a low-code platform is a set of tools that enable application teams to plan, design, develop, test, and deploy applications — consistently and cost-efficiently.

Low-code is the next stage in the evolution of app development platforms. It enables rapid application development with GUIs for programming, pre-fabs and templates for replicability, and CI/CD integration for automated deployments. An important transformation that low-code brings to the application development landscape is the empowering of citizen developers and business users to build enterprise-quality applications, even without specialized programming skills. Gartner finds that “By 2024, low-code application development will be responsible for more than 65 percent of application development activity.”

As enterprise applications are large, complex, and come under immense compliance scrutiny, IT leaders worry about the scalability of such platforms, and the applications they build.

Here’s how low-code platforms are poised to deliver enterprise scalability

Low-code platforms are poised to deliver both dev-time and run-time scalability. Dev-time scalability is the ability of a low-code platform to scale in line with the development needs of your organizations. It should enable multiple developers, across teams/geographies, programming several use cases, for loosely connected applications, across web, mobile and other platforms.

If you’re an application development leader, use the following checklist to assess if your low-code platform offers you dev-time scalability.

  • How easy is it to onboard new developers to the platform?
  • How well would it handle multiple teams working on multiple applications at the same time? Does it allow you to give role-based access?
  • How comfortable is it for both citizen developers and professional programmers to collaborate on the platform?
  • Can you add custom code to the application developed by the low-code platform?
  • How convenient is it to do end-to-end application development — from research / planning to deployment and maintenance?
  • Does it offer organization-wide collaboration tools and templates to quickly replicate pre-built elements across teams?
  • Can it develop on a wide range of development technologies/languages?
  • Does it integrate and communicate well with your existing tools?

Run-time scalability is the ability of the applications developed using low-code platforms to deliver a seamless user experience in production at scale. This means that the application needs to be able to handle large volumes of users, perform complex operations, at high standards of performance and reliability. There is no reason a low-code platform can not do this. John Rymer, Forrester’s principal analyst serving application development & delivery professionals, identifies real-world experiences of developers who have used low-code platforms for applications like full-scale ERP or route 1.5 million orders per day.

If you’re the operations lead of an enterprise application, evaluate your new low-code platform for rum-time scalability using the following metrics.

  • Does it enable rapid deployment with containerization?
  • Does it automate tasks for faster deployment?
  • Can you deploy to any cloud, multi-cloud, hybrid-cloud, or on-prem environments?
  • Does it integrate with your CI/CD pipeline for automated deployments?
  • Can your developers deploy applications on-demand independently? Does your low-code platform offer self-service DevOps?

If the answer to the above questions is yes, you might rest assured that it offers runtime scalability. But remember that the role of the low-code platform in application scalability is limited.

To make your application truly scalable, you need to design your architecture for scale: Make sure that there is no single point of failure, build for a 10x use case, enable monitoring and maintainability, and gain visibility of scalability costs as well. If scalability is an important concern for your enterprise application — as it should be — then your best bet is to create internal processes and architecture design that enable such scale and combine them with a low-code platform that would support it.

Originally published in CIOReviewIndia

Categories
Insights

How low-code helps IT leaders to create agile teams – WaveMaker

In 2020, whether or not an IT organization needs agile teams is no longer the debate. The advantages of agile methods on team efficiency, project visibility, scale, and long-term software robustness are rather clear. Gartner observes that enterprise-class agile development and agile ops are sliding into the trough of the hype cycle, meaning, challenges in building and managing agile teams will make themselves more apparent in the near future.

Before we discuss these challenges, let’s understand what we define as an agile team. An agile team for us is a cross-functional group of people who use the required technology and collaborate seamlessly, to develop and deliver a working and tested increment of a product. Typically, agile teams are organized around products or features; and have a seamless intersection across the business, technical and organizational architectures. As a result, agile teams will eliminate dependencies and inefficiencies, empowering them to develop high-quality solutions, quickly and efficiently, to solve real-world problems.

But it’s not as easy as it sounds. Building agile teams — especially for full stack development — is a long-term journey, riddled with practical challenges.

Finding full stack developers

Developers in the end-to-end application development process are often expected to deal with the underlying complexity of integrating, configuring, and developing various systems and frameworks. In the era of modular development and microservices, this can be very complex and time-consuming, often requiring your team members to upskill. In smaller teams, this might just be unaffordable.

Needing specialists

Application development requires highly skilled resources across various phases of the development lifecycle such as  UI design, application architecture, security, performance, etc. Firstly, hiring a specialist in each of these areas can be expensive. Even if you can afford this it can be unnecessary. Even counterproductive in some cases such as when there is not enough work to keep a specialist meaningfully engaged, it could affect their morale and that of the team.

Mounting siloes

A KPMG survey in 2019 found that 45% of their respondents mentioned siloes between business and IT as a key driver for adopting agile. Yet, ironically, when you seek to adopt, agile at scale, siloes can become inevitable. This can then disproportionately affect team collaboration, and even extend the distance from your business requirements.

When unable to overcome these practical challenges, agile teams fail to realize the potential they can achieve… They lose speed-to-market, efficiencies, and even human connections, leading them back — sometimes without their own knowledge — too old ways. This can be dangerous: As they will continue doing agile, conducting daily standup meetings, for example, without actually being agile.

But it doesn’t have to be this way!

Low-code can help IT leaders address all these challenges and more to create leaner and agile teams.

To define low-code in simple terms, it is a visual development approach that enables developers to build web and mobile applications using a graphical interface, instead of writing code. As a result, developers and agile teams with varying levels of experience and various skill sets can come together on the common ground towards accelerated development. Here’s how.

Low-code abstracts complexity and prepares smaller agile teams for a full-stack development

Low-code eliminates the need to find and onboard developers with universal knowledge of the application stack by abstracting the complexity and providing accelerators across the development life cycle. Using low-code platforms, developers easily manage end-to-end application development from UI design, focused code development to deployment; as well as easily own micro-functionality (also known as microservices).

Low-code helps generalists perform specialist roles

With a robust low-code platform, developers with conceptual knowledge of the application landscape will be able to handle end-to-end development more seamlessly. For instance, even without being a UI specialist, a developer would be able to build quality UI for their application. Low-code platforms can also handle integration, security, customization, standards compliance, etc.

This makes developers self-sufficient, and the development process nimble.

Low-code breaks team siloes

Visual prototyping has proven itself to be a gamechanger in translating business requirements into application features. As business users play with working screens and different tools, they are able to see how their brief translates into functionality, and therefore learn to articulate better. On the other hand, developers design the UI, process flow, business logic, etc. visually, enabling faster feedback cycles.

A low-code platform can also serve the purpose of a common integrated development environment (IDE) for your team members to work interchangeably on different aspects of the project. Without relying on myriad tools, languages, and frameworks, your developers can collaborate easily, allowing them to spend less time on cross-training, hand-offs, and documentation.

Low-code accelerates development

The most important promise of agile development has always been speed. IT leaders aspire to build agile teams to take their products to market faster and adapt to market demands quicker. Low-code can help you achieve both.

Eliminating bottlenecks and facilitating collaboration, low-code allows business users to engage more deeply and offering ‘visibility through visual prototypes. With a better understanding of requirements right at the beginning, teams and managers save a lot of time and energy that might otherwise be spent on rework, resulting from clarification of requirements. As a result, you can make the best possible version of your product as quickly as possible.

All of this saved time can be invested in developing new features and testing new functionalities with your customers. If that isn’t worth trying, what is!