Now we are at a point where new people in the IT industry start learning about programming straight ahead from programmming languages. Programming is not only about the syntax it is about thinking like an engineer to come up with sophisticated solutions. Therefore, I focused on learning computer science fundamental topics such as computer architecture, compilers, operating systems, algorithms and data structures.

You might ask, why would you waste your time reinventing the wheel? Well, because if you don’t know these basics and how the program works inside out, you are not a real engineer, you are just another user with bunch of external libraries and frameworks by connecting them with each other and calling it a final product. The reason in my opinion why newbies may struggle to feel like true developers when faced with a job is that requirements that include many abstract frameworks and tools, rather than allowing for more hands-on coding experience. A lot of beginners these days (including myself) learn popular frameworks that are used in the field and then apply for jobs without having an understanding of the underlying mechanisms involved. The problem with those soydevs when they have to move to another project, it is gonna take them a lot more time to get used to because they lack foundational computer science skills.

That’s also why, even in high ranked universities like MIT and Harvard, there are still classes of algorithms and data structures, low-level programming languages like C and so on to give students the understanding of how a technology works. Once you know these little details everything else makes sense and becomes possible. Do not fall for the hype of the industry, learn the fudamentals and this will get you far.