The discussion begins
Yesterday I had a discussion with my CTO and it came up that the technology stack we use. It seems that it is too complicated for the our team of developers. The reason it seems this way is because when the project managers and account managers come to the team, most seem to be on Google looking into how to do something, be it in AngularJS, C# or MS SQL.
This got me thinking about our technologies we use and if it really that complicated. Should we simplify it, should we opt for a more “standard” approach to the development of our web applications.
In short, “Yes”, it is complicated, BUT, “No”, it is not too complicated. The standards have changed.
We all know that programming, in any language/framework is not easy. Even more so when you have to learn a new framework/language. You can expect to google an insane amount to find the answer you are looking for. It is only with time and coding that you do not visit Google search page that often. Funny though that even after a long time, you still have to go back there, just to make sure.
The perception of the complexity, in my opinion, comes from the lack of knowledge of how the language/framework/setups works. With the advent of Single Page Applications, there were some best practices with regards to bundling, optimizations, etc. Consequently, the use of task runners, like Grunt, came to the fore front, creating some complexity with the compiling of the code into single files. This also brought with it pre-processors, like LESS and SASS, with which you could make your CSS more maintainable in large code bases.
Unfortunately the setup and configuration of the task runners and the pre-processors takes getting used to for some. These unfortunate few then can become very vocal about the ‘apparent’ issues they are having. This in turn, creates the perception that there is unnecessary complexity with the setup.
Single Page Applications
Along with Single Page Applications, came the frameworks. We chose AngularJS when it was launched and with it came another set of best practices that took some time to get used to. It was a complete rework of how we used to work, coming from the JQuery library to complete front-end framework.
Test Driven Development
Unit Test also came as a thing that was supposed to be implemented and a select few have touched it but to this day, not everyone is doing it, or cannot see the value, because it creates ‘complexity’ when trying to get stuff done.
Which brings me to what I perceive to be the issue… the reason that most of this seems complex is the fact that there is no real training for those that need to do the work, and as we all know, learning a new framework or language will have you looking up code samples and examples and best practices for many a month to come.
Some ‘perceived’ causes
Another problem these days is that there are so many competing technologies that, again, it is difficult to keep yourself relevant. Now this does not really affect you if you have a steady job, because then you just go with what the company has decided on.
This being a problem as well, because the company makes a choice, based on the opinions of the developers, and then leaves it up to the developers to up skill in the chosen technologies. While it is not a problem for me, I do see that it can be a problem for developers that do not have the time to up skill. Some are under deadlines the moment they walk in to the moment they walk out, not giving them any time to study, learn, play with the chosen technologies.
Lack of training
So, if the above is the case, does sufficient training material exist? Is there enough ‘skilled’ developers assisting, improving, and helping the not so fortunate ones? Maybe this is the reason why the developers are constantly googling and on stack overflow, wading through hundreds of entries to find the answer.
I am currently trying to see where this takes me and will come up with some ideas as to how to solve this perceived complexity, if you have ideas or know of things that worked, please leave a comment below.