Learning to program in recent years has gotten significantly easier, but one could also say it's gotten quite harder as well. Hear me out.
In recent years, getting into software development, let's say web development to be precise, has gotten so much easier. Now anyone could become a web dev in less than 3 months, compared to back then. But yeahh, when I say becoming a web dev in less than 3 months, of course, I am referring to just getting to play around with Html, CSS and a wee bit of JavaScript, then maybe Node.js if you're looking to go full-stack.
This is just basically how it is presented to a lot of newbies, or aspiring web devs out there. Yeah, there are hundreds of thousands of tutorials and classes that could help you become one. In fact, shortage of resources to learn from is a non-existent issue nowadays, not to talk of the insane amount of "Helper Tools" out there, promising to make your work over 70x easier.
Let's talk a little bit about web development in the very early 2000s, web development could be said to have been harder then, mostly only computer gurus and computer science students could easily develop a website, this was because the web was quite relatively new and the layman had little to no idea of how it actually worked, also, it's learning resources were mostly only shared at college level. Learning web development then might have seemed extremely technical, but lets take a brief look at what a web developer would be required to learn, to build a fully functional web application, let's take for example, the popular ebay website then.
An understanding of Html, CSS and JavaScript would be expected, as those are the pillars of the web.
Knowledge of how to set up and configure web servers.
Basic server-side scripting with PHP.
CSV(Comma Separated Value) files for the database.
Well of course It would look like this:
Yeah obviously not so appealing. Recent web development has introduced a ton of better design principles, more dynamic interactions and better security to web applications. Along with these new introductions came a ton of new tools and techniques required to achieve them. So let's take a look at what it would take to create that same ebay web application in more recent years, well you would basically have to learn about:
Same Html, CSS, and JavaScript
Responsive web design
frontend JavaScript frameworks like React.js
Asynchronous programming
Database management systems(DB MS)
ServerSide language like Node.js
ServerSide JavaScript frameworks like Express.js
API integrations
Web sockets
Version control systems like git
CI/CD
Testing frameworks
How to use User Authentication and Authorization tools like OAuth
Cloud services like AWS or Microsoft Azure
Sheesh, personally, Ifind all these quite overwhelming.
Well, we all know that these tools and techniques are provided to create more dynamic web applications, offer a higher level of abstraction to the initial development technicalities and overall make the development process a lot easier and faster. All these are great, but now let us take a look at it from the beginner's point of view.
Knowing you have to learn all these things to build a web application now might not be the main issue, but with the emergence of new tools, frameworks, practices, techniques, libraries and the rest popping up left, right, front, back and center every single day, it's getting quite harder to keep track even for the experienced developer.
Someone just learning about web development might go ahead to learn about the first three pillars(Html, CSS, JavaScript), after that, there comes the confusion with everything.
Having to figure out what you actually need to learn, to pick one tool or framework and stick with it might actually be the most challenging aspect of it all, with the vast number of tools, frameworks and development techniques out there, coupled with an abundance of learning resources, filtering out the information that you actually need and what is actually necessary to learn is the most crucial part of it all. This is also one of the reasons a lot of newbies get stuck in tutorial hell, because they try to consume information about the million and one tools and techniques that are out there, and then later realize they have actually not learned anything in the process at all.
While learning about a particular tool for example, they could come across information of the new and latest tool or framework that is taking the development world by storm, try to divert to go learn that, to make sure they are learning about the latest, but along the way, a cool new shiny raving tool or technique comes out and now they feel they have to learn that as well, it's just never ending. This makes the process of learning to program nowadays much more tasking than before.
Although the field of software development is an ever changing and ever growing field keeping developers on their feet with new trends and adoptions. The question now is "Are we overcomplicating the development process with all of these new adoptions and supposedly helper tools? and when exactly does it get all unnecessarily too much?"
What do you think? Share your thoughts in the comment section below.