Why wanting to learn programming can be so overwhelming

Published in: Programming

Consider this.

For you to be a decent web application developer, you need to have a good grasp of HTML, CSS (has frameworks), PHP, MySQL/MariaDB/Postgres/SQLite (or frameworks/language like PHP-Laravel, ruby on rails, Python/Django/flask – I don’t want to even list a large number of javascript framework or many alternatives of javascript for that matter (typescript, Dart) maybe even bootstrap or similar libraries. On the server side – on the performance side of things – you need to be well versed with NGINX or Apache configurations (and optimizing performance with Memcache, reverse proxy, CDN, to name a few), on security side of things there are just too many to name but running your site on https and having proper test or having good programming practices for XSS based vulnerability are absolute minimum. It also helps that you are well versed in a POSIX based system (ie, Linux *BSD), chances are high you will end up working on those systems, remotely.

I can’t even keep up with all the hipster new languages and frameworks coming out every other month.

I am not trying to hyperbole. It is true, that in large tech companies there are teams of people working on different aspect of web apps, It is also true that there a specific class of programmers/developers known as “DevOps” or “Full Stack Developer”. Usually, someone who is well versed (but not necessarily expert) in all aspect of an application developing cycle. It takes years of experience and certain driven personality to get there and they are usually very well paid.

So you walk into a bar and you ask a room full of developers where to start – chances are high that you will get all kinds of suggestions and recommendations but it is also highly likely that most of them will probably suggest you, a newbie, to get good at the basic stuff, more specifically: HTML, CSS, Vanilla Javascript, PHP, MySQL/MariaDB, Linux. In that order. If you are really good at picking things up chances are high that you will most likely be in a good position in a years’ time. Forget about frameworks, for the time being, chances are high that by the time you have got your basics in order the older frameworks are challenged by something new.

It’s generally not a good idea to touch frameworks if you are not already very good with the vanilla stuff. I can safely say this is true for all/most languages.

Low-level verbose Languages (Java, C, C++, C#, swift, rust, GO and others) has their own sets of problems, more specifically for having a much steeper learning curve. But at least they are not anywhere as fragmented as Web-application languages. It’s generally not a good idea to start with low-level language – it’s certainly possible to start with them but chances are high that most people will be scared away. If you really want to just dive into general programming, I think python pretty much beats them all – in term of accessibility. It is probably the easiest language to learn with which you can create some serious applications, Python has its limitations but you won’t have to worry about that when starting out.

To me, learning programming was not nearly as hard as deciding where to start – I had so many false starts with different languages – only to start something new. Programmers, in general, tend to be very very opinionative (myself included), and passionate about the language they love. So it’s easy to be misguided in the middle of all these conflicting information from people, who are in general more knowledgeable than you are.

My advice is to stick to one language and go through the whole process until you are comfortable with it – before jumping to the next thing. Once you are comfortable with a programming language it generally gets easier to learn other languages – because the underlying logic is very similar. You mostly have to familiarize yourself with the language syntax.

about | pages | archive | rss