Computer language can be a tricky thing. And it is the stumbling block when it comes to normally people understanding how computers really work. You are starting to see a lot of classes and schools come around to trying to teach people how to code. A lot of these places offer a few weeks introductory course to get you started. That is both a good thing and a bad thing. It is good because it is always great for a person to be able to learn a new skill and then try to make money off of it. When you are in a class like this you never know if it is your true passion or not and the short time frame to take the class is a great way to find out.
These types of classes are bad in a way because they only give you a surface view of what programming is really about. While yes you are able to write programs now, most of the time the classes focus on a high level language and the students never know what is going on underneath the sheets. They do not know how the actual machine works and they are clueless when it comes to understanding how the code that they are writing is affecting the machine. And it is not the students fault because there is no way that they can learn all of that information in that short amount of time. The class is only a few weeks to a few months long and the usual computer science course is a few years long. There is no way that instructors would be able to smash that much information in such a short amount of time.
When you have that many programmers who do not know what is going on behind the scenes of the machines that they are using, one thing tends to happen. They start to introduce bugs. And even though all programmers will introduce bugs at some point in their programmer’s life cycle, the bugs of people who do not know what is going on under the scenes are usually worse. When you do not know how memory management and the garbage cycle works or you do not know what the L caches are and how they interact with the CPU then that could mean big trouble down the line when you are trying to do any serious work.
This is why I think that if you want to be really good at what you do and make sure you truly understand how the machine works then you should learn how to write Assembly language. Well maybe you don’t really need to learn how to “write” in it but you should at least understand it. The reason why is because Assembly language almost maps one on one with how data is processed in the machine. The only thing that separates Assembly from the CPU is operation code or what is otherwise known as OpCode. But is a rare when you can find a person who understands that. So Assembly language is usually as deep as most programmers get when it comes to understanding how the machine operates.
You are not going to be a horrible programmer if you do not understand Assembly. But it will make you better if you do understand it. It will help you understand why certain functions do what they do and why certain bugs are worse than others.