Software development, removing monolithic software, enabling learning and been open to change
At Teem we’re developing a culture of using the tools that best fit the problem we’re trying to solve.
Sometimes this means having to “step outside the box” and learn new technologies. The initial learning time is painful, but pays off over time. Recently both myself and our Product Dev Lead experienced this by learning NodeJS Express framework for APIs and the Material Design Angular framework.
Some of the barriers software teams have is in using outdated technology or being stuck in approaches to software development that inhibit agility and add further complexity. They become stagnant and stop learning as a result without any openness to outside advice or change.
Take for example software development and monolithic approaches to software design
People are so fixated on having the “right framework” and by default will start developing code in Java, thinking they have reached the pinnacle of everything there is in Programming land.
Some people will also have the same mindset for .NET development, thinking it will solve all their web app problems. There is nothing wrong with these languages, in fact they are still the leaders for solving lot’s of problems, but software development has changed and so have the available tools.
The reality is, that Java’s main selling points in the 1990s was providing cross platform support through it’s JVM and common User interface libraries. I was a Java developer using AWT and Swing for User interfaces. Microsoft Visual Basic and .NET (C# and VB) became popular due to their Rapid Application Development features in the 1990s/2000s and the way the whole packaging of the IDE environment was done. I got involved developing in both Visual Basic 5/6 and .NET and found the development experience to be easy to develop applications quickly.
This success to Java and .NET becoming a popular choice for developers when developing complex monolithic applications with multiple tiers and various Thick or thin client implementations. 3-Tier was the “new way” of doing things and so there were only 2 sets of products in the market that had a foothold when it came to providing end-end 3-Tier Apps:
- Java based stacks typically with Oracle Databases.
- Microsoft based stacks typically with SQL Server Databases.
However, what has happened as a result of this massive undertaking of these languages is developers have still used the same approaches to software dev they did 10–15 years ago. I worked at a leading software house and then an industry leader and both their approaches to developing software in general was the default “We’ll build it in Java”, “Well build it in .NET”. It seemed to be that if you offered any other solution or language then you were frowned upon as being too “naive” or incompetent.
But it is naivety and lack of wanting to “step outside the box” that has meant these companies and others have never thought of other languages they can use when trying to solve a particular problem. Take for example a web application that needs to be interactive and support HTML5. A good option to consider rather than use .NET or Java and either a SQL or Oracle database is to instead using AngularJS, Bootstrap, Node and MongoDB. Node scales nicely and also is lightweight.
The same could be said for APIs. Rather than use Java with Spring you could instead using a lightweight Node Express implementation.
I recently spoke to someone who provided some really useful views on computer programming and how it’s learnt. He said that it ultimately doesn’t matter which language you use as long as you understand how to do 4 basic things:
- Declare variables
- Test variables
- How to store and retrieve a result in memory
- How to store and retrieve something in persistent storage
To add to that we discussed that basically learning a language is to learn the framework e.g. functions, approach to development.
So in summary don’t step outside the box and think of the tools at your disposal. You’ll also finding a new language not as hard as you think and the rewards are huge over time — you’ll get personal satisfaction from learning something new and be amazed why you didn’t think of doing this earlier.
Ben Fellows is Head of Engineering @ Teem. He leads the development of solutions for cloud automation that reduce the time it takes to provision applications on cloud infrastructure and reduce complexity with cloud automation.