Assemble and Invent — Programming Like You’ve Never Seen it Before
Ok…well if you’re a programmer, then you’ve seen it. If you aren’t a programmer, then you might be interested to know that programming isn’t the same as you might have learned 15 or even 5 years ago. Maybe you took a class or have a friend that showed you some programming years ago, but did you know that programming continues to change? You might think that if you were to hire a programmer that knowledge of a particular programming language was the most important gauge of whether they could program well or not. The reality is that programming is only one piece of the puzzle.
Actually, programming is very much like assembling a puzzle. That analogy becomes more and more true as the years progress. Sure, there are very complicated programs that are assembled in a pure programming kind of way, but there is also a lot of programming these days that is done by assembling pieces and “gluing” them together with small portions of programming. Programming is often more like pre-fab construction, i.e. taking pieces of a structure that have been built elsewhere and putting them together at the building site; versus construction of the entire structure from the ground up at the building site. Modern programming methods enable a software developer to utilize many pre-made parts and parts that the developer creates (constructs) and assemble them together to make a complete product.
So let’s deconstruct the puzzle! There are three modern programming methods which have changed the way software is developed: Frameworks, APIs, and microservices. These game changing elements enable software developers to get to an internal software application, mobile app, MVP, SaaS (Software as a Service) application, or other build target much sooner. We are only going to look at them from a very high level, but our hope is that at the end of this article you will have a better idea of how things have changed in the programming industry.
Frameworks
In the programmer’s world, the programmer must be knowledgeable of many pre-written nuggets of code, called frameworks. Frameworks allow the programmer to do all sorts of things, such as:
- Interacting with a database — where all of your information is stored, such as invoices or inventory
- Validating that you entered information correctly — such as entering a phone number in a manner that looks like a phone number
- Managing computer memory
- Displaying information to the browser and interacting with the browser so that the application looks more like an application installed locally on your computer rather than an application that is running in the browser
Frameworks allow the developer to focus on developing new business functionality instead of reinventing the wheel every time they need to program common functions found in every application, like interacting with the database. Increasingly, frameworks become extensions of the programming language in such a way that an entire ecosystem of functionality becomes available to a programmer. There are programmers all around the world who are developing these frameworks and then offering them to anyone to use without any kind of remuneration. This free software is what is referred to as FOSS — Free and Open-Source Software. There are also proprietary frameworks that are built by companies for the purposes of making a profit.
A good developer is knowledgeable in what frameworks are available for the programming language they are using such that they can put these pieces together and utilize them in ways that help increase their productivity and reduce the cost of development. This means, that the programming language that is being used is important only to the extent that there are enough frameworks to support the programming language. Languages that have been around for some time, like Java, allow for a much richer experience for the programmer to be able to put the pieces together and be productive rather than creating these frameworks for the first time.
Another really important aspect of these frameworks is that, because so many people around the world are using and developing them, the testing of the frameworks has been quite rigorous. When a bug appears in the framework, it is addressed very quickly and rolled back out to the community, tested and made production ready.
APIs
API is an acronym for Application Programming Interface. You probably have heard the term “user interface.” A user interface is what the user interacts with, or the interaction layer between the computer and the user. Likewise, an API is the interface between the programmer and the computer; or better said, between the programmer and other applications. This can be a little bit difficult to visualize, but hang in there; the topic will be rewarding.
To make this a bit more clear, let’s examine the following scenario. Many businesses use QuickBooks in some capacity. The QuickBooks API allows the programmer to create invoices or look up customers and many, many other things that are available within QuickBooks. The QuickBooks API enables the software developer to integrate programs that are specific to your business with QuickBooks. This way, you can use the portions of QuickBooks that you want to use and create custom programs to perform the unique tasks that your business requires.
APIs are extremely important to the growth of the software marketplace. MuleSoft says, in an article entitled, “What is the API Economy?” that, “APIs are one of the products of a wider revolution, which is almost as profound as the industrial revolution.” New businesses are springing up all over the place and creating products that allow unique and important business functionality. You may make use of one of these applications, such as the QuickBooks example, and you may want to integrate this piece of software with other pieces of software that are available on the internet. In order to do that you need some layer of integration. The API is that layer of integration.
This revolution is so profound that new companies have formed that develop software that enables integration between various applications offered on the internet. In other words their software is a product that exists solely because of the API layer. If this layer were not available, the companies providing these products could not exist. Companies like Zapier and Mashery are examples of such companies which connect applications together to make them appear to the user more like a single application.
Without the API layer, microservices would not be able to exist.
Microservices
Traditionally, software applications were created by layering functionality on top of functionality on top of functionality until you ended up with the application that did all of the things that you could possibly want it to do. That approach is still used today, but some companies are opting instead to produce smaller units of an application, tie those units together, and the sum total of those units becomes the application.
To the user, these microservices are not visible. As far as the user is concerned the application is a single monolithic application that was built using the traditional approach. As an example, when you land on a page on Amazon.com you may well be looking at one or many microservices that constructed Amazon’s webpage. To you, it looks like a single webpage created by a single program. Behind the scenes, it seamlessly created a page that looks like one application produced the page.
At Outfast Source for example, we produced a user microservice. As we created web applications for our clients, we found that over and over again we created the mechanism for users to be able to sign in, get their password if they have forgotten it, change their password and the many other features that are typical of a modern user administration system. Rather than create this every single time and charge our clients for this every single time, we determined to create something that we can offer that reduces their custom software development investment and allows us to focus instead on building the functionality that is unique for them to gain a competitive advantage or to bring a product to the marketplace.
As the microservices method of developing gains popularity, it will become increasingly popular to knit these microservices together, tying them together with their API, and creating applications through this assembly process rather than reinventing pieces that have already been created.
The really huge advantage to microservices is that these individual pieces can be easily replaced as technology changes or as a company’s needs change. The other microservices that are interfacing with the piece that needs to be replaced can continue to function through the API that is provided to it and the piece that is replaced simply continues to offer the same API but perhaps utilize a different programming language, set of frameworks or itself interface with other microservices to provide the service that it provides.
What Does This All Mean?
Here are the important takeaways.
Whether you are hiring someone to develop something for you or you are communicating with someone who provides you these services today, hopefully you have a better understanding of the life of a software developer. For them, it isn’t about programming in a certain language day in and day out. Sure, they do that, but they also spend a disproportionate amount of their time programming against APIs, frameworks and increasingly microservices.
It is also important to understand that rapid software development occurs now because of the use of all of these previously built pieces that have been and are being assembled; therefore, today, we are able to create applications much more quickly and cost-effectively than we were able to do 5, 10 or 15 years ago; and the velocity continues to increase with every passing year.
One needs to balance this view, however, with the knowledge that the demands from the user community and from application sponsors — those funding the development of new and existing applications — is significantly more than it was in the past. Many of the gains in development have been overlaid with increasing demands for many small features which often offset the cost advantages. In the end, however, users end up with software which makes them productive and isn’t that the reason for software in the first place?
If you are considering taking a plunge into the creation of a custom software application, then go for it! Just be sure to ask your software developer how they intend to utilize frameworks, APIs, and microservices to help defray the cost of creating your application.
This article originally appeared on Outfast Source Blog.