The Growth of Website Software Engineering: Node.js, AngularJS and Ionic3

style="float: right; margin-bottom: 10px; font-weight: 600;"Fri 26th May, 2017

Rarely, in any field of human endeavour, has the landscape changed so dramatically and so consistently, over such a short period of time, than in the realm of software technologies. And this trend is showing no signs of abating and in fact may be accelerating.

Software Engineering, which is a complex discipline, requires the mastery of various skills, such as coding in multiple languages, following best practices, version control systems, testing, and adhering to the principles of engineering.  To engineer something, is to create a product whose value, robustness, ease of maintainability and upgradeability, among other things, is measurable and testable.  

Engineering allows a certain level of quality to be attached to a product.  In software development, the difference between code which is engineered, and code which is just written, is the difference between how much you want that code not to malfunction and cause a catastrophic system failure.  Would you want a graduate programmer to write that airplane control functionality, or a software engineer with 20+ years experience and a wealth of tools at his/her fingertips to code, collaborate, fully test and verify system integrity?

Luckily, software engineering is big business nowadays, and all safety critical systems rely on engineering skills being utilised and following industry best practices.  Software can be collected, analysed and compared, leading to better quality robust code.  In software, safety is measurable.  However, web development, which is even more of a recent creation than software engineering, was once a long long way behind its bigger and more powerful brother.  HTML was all one needed to know to put up a fancy website; quick and cheap, with all the risks associated with that level of quality.  The stakes have increased as each year of the Internet's existence saw its usage grow, but luckily things have changed recently for the better.

Over time, this basic HTML knowledge proved inadequate for more high-performing websites.  So server-side languages became popular.  PHP is now the biggest of them all and can handle most use-case scenarios.  A little bit of Javascript running on the client's browser, and the web developer could feel good about a job well done.

Yet something is happening which is causing concern.  The growth in the Internet's popularity, means that more and more tools and services are going online.  Personal data, private data, financial data - all of these are critically important to the end user, yet handled relatively causally online, without the rigor which software engineering would ensure.  Web technologies were rarely utilised to the same level of professionalism and accountability which more traditional software systems were familiar with.  The end result is a hackers paradise and websites which are relatively vulnerable and hard to maintain.

In recent years, the trend for online development is moving closer and closer to the engineering aspect, in part due to the problems just mentioned. Major website data breaches, complexity of large sites and the need for more and more optimised and scalable solutions, means that web development is no longer HTML, PHP and a bit of Javascript. It now employs real software engineering techniques, tools and languages, dedicated purely to the online environment.

Version Control Software such as GIT is now par for the course with larger websites.  For bigger applications making use of languages and packages such as Java, build systems (Gradle, Maven, etc) can be deployed along with Continuous Integration tools such as Jenkins.  Test suites are still relatively underdeveloped and utilised, but progress is being made. The end result is that website creation is moving away from the previous quick and dirty approach to a more engineering-centric development process.  And everyone benefits from that.

Another area of concern, is the rather inflexible use of hardware, which many developers are unaware of.  For instance, PHP executes server requests per instance in a separate thread, which can lead to RAM overload and system slowdown. Solutions exist such as Amazon Web Services (AWS), which offers Elastic Compute Cloud (EC2) functionality, which scales hardware resources on demand, but this solution is hardly suitable for all scenarios. For certain applications, switching to something like Node.js, which is a Javascript engine running on the server under one thread, can lead to huge performance improvements, which can be measured.  On the client side, Javascript Frameworks such as AngularJS provide a lot of functionality, already tested, to allow the software engineer to quickly prototype end-user functionality.  Coupled with popular cross platform mobile applications such as Ionic 3, you can quickly understand how the landscape has changed dramatically from a purely HTML-based environment, into a fully-fledged suite of professional software engineering tools and processes.

Next time you think of hiring a web developer, you might want to consider whether or not you wish to hire someone to code your site, or someone to engineer it.  Your clients' data security and your own business model, may critically depend on it.

If you are Looking for employment in Germany in the field of software engineering or website development, then contact and/or read the following article: A Munich Recruitment Agency for Engineers

German Engineering Jobs
Write a comment ...
Post comment