Is learning to program getting more difficult?

Written by
Published on

If you are new to programming (more specifically web development) and you are finding it increasingly more difficult to keep up with the ever changing landscape, then fret not, it might not be just you.

I've been a programmer for 20 years and even I find myself in a sea of new terminology, new acronyms and new libraries as the older concepts get deprecated and thrown out the window day by day.

There's just alot more development going on in the world these days. And companies are building and iterating at a massive rate. Whereas in the past, you had maybe 2-3 primary stacks to choose from, you now might have the option of 10-12 alongside multiple languages and multiple versions of languages as well.

And knowing which is the "best" one is often times difficult, as they all claim to be at the top of their game, only be to forgotten 2 years later. I can claim that .NET is the best, because I've been doing it for decades. But a proficient PHP developer can claim that PHP is the best. It's subjective in the end.

So you have to pick and hope that you made the right choice down the road. Programming languages come and go all of the time. Technologies that were once labeled as crucial and irreplaceable are now un-secure and to be avoided at all cost. It happens.

Not only are there more languages and frameworks to choose from right now, but the ones that are there are constantly changing as well.

As an example, I started off my career as a .NET developer working on Window's Forms. I then moved to ASP.NET and worked on Web Forms when it first came out. I also spent time working with Classic ASP, which is the outdated precursor to ASP.NET and should be avoided. Some time later Microsoft released ASP.NET MVC, which I used heavily as well for many projects both professionally and personally. That was challenging in it of itself, as Web Forms are completely different than MVC.

And just recently I decided to look into using ASP.NET's Web API framework to build out a small RESTful library. And the example I stumbled onto was the following:

If you are not a .NET developer, then it's mainly gibberish so don't worry too much about it. If you are a .NET developer however, there is alot going on there. There's 3 sets of attributes at the top of the page used to configure the endpoint, plus the use of the ActionResult type with a given class template definition. And to top it off there's a lambda expression thrown into the mix with a return value of CreateAtAction.

Going into the code for the first time, I have a vague idea as to what is happening there. But that's mainly because because Web API relies heavily on ASP.NET MVC structure. If I was not familiar with MVC, I would absolutely no clue how to set up a simple endpoint using Web API.

All of that is on top of actually knowing how to program (loops, conditionals, functions, etc). And it's on top of knowing web development concepts (html, javascript, css). And we haven't even touched database management, security, authentication and server configuration.

Now mix in the fact that ASP.NET Web Forms are slowly being fazed out and that the same might be true for .NET MVC and you can start to see the biggest challenge. Technology is advancing at such a rate these days, that it is not possible for the average programmer to keep up.

And the same is true for every other framework, language and technology as well. CSS3 allows for complex animations and transitions. JavaScript has API's for audio, 2D/3D graphics, geolocation and payment processing. HTML5 has a fully drawable canvas that leverages a clients GPU.

Things are getting complicated all around. And most of these concepts are not taught in a formal university setting. In fact, the only place that you might find this material being taught right now is in a coding bootcamp, as they tend to focus heavily on web development.

So are we doomed to live a mediocre existence as so-so programmers struggling to build simple API's? Well, not exactly. There's one thing (and probably only one thing) that we can control.

You (and I) will just have to get better at this whole programming thing. Which means that we might need to pick up new frameworks more frequently and that we might need to drop old languages more frequently.

It means that we will probably have to spend more time reading documentation and writing test code to ensure that we know how something works at a very granular level. Which means that we will undoubtedly make many more mistakes and leave behind a larger trail of bugs in our wake.

These are things that I do on a daily basis, which is why I wrote this article. Because it is a challenge and things aren't always clear on the web.

Sometimes the only reference to an issue that you are having is a StackOverflow post from 2011 with broken links. Other times the code that you spent weeks working on last year, is no longer valid and should be replaced immediately.

Getting good at acquiring new skills is what is inevitably going to make the next decade in software engineering a simpler process to get through. Because things are not slowing down. And, in fact, they might get levels more complex as we approach the quantum computing era.

To end on a positive note, you don't have to master all of these new technologies overnight. You just have to be aware that they are there and that they are changing in the background all of the time and then work towards keeping up. And when you detect the early signs that your technology stack is in decline, then making the shift towards the latest and greatest might make the most sense.

Leave a comment

No messages posted yet

Developer Poll


Add a comment

Send me your weekly newsletter filled with awesome ideas