Learning to program in the recent years has gotten significantly easier, but one could also say it's gotten quite harder as well. Hear me out.
This is just basically how it it 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. Infact, 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 student 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 what a web developer would be required to learn, to build a fully functional web application, lets take for example, the popular ebay website then.
- Knowledge on how to set up and configure web servers.
- Basic server side scripting with PHP.
- CSV(Comma Separated Value) files for 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 lets take a look at what it would take to create that same ebay web application in the more recent years, well you would basically have to learn about:
- Responsive web design
- Asynchronous programming
- Database management systems(DB MS)
- ServerSide language like Node.js
- API integrations
- Web sockets
- Version control systems like git
- Testing frameworks
- How to use User Authentication and Authorization tools like OAuth
- Cloud services like AWS or Microsoft Azure
Sheesh, I personally find 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 to 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 tool, 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.
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.