I covered the first steps of my programming career in My Journey to Programming, and got to the point where I was about to tackle my first practise job. What happened next?
I took the job, of course. And they asked me if I could do Linux, so I did some Linux. Heck, I started with Ubuntu 10.04, and my first impressions of the GUI were: “Oh, it’s just a flipped-over Windozer, the “Start Menu” being on the top and all the window controls on the left. No problemo.”
When it came to installing applications, I got to know the concept of “repositories”. I didn’t even use a smartphone back then, so I had no idea why you needed to get all your applications from a single place. Internet, anyone?? Not long after that I realized it’s just plain geniousness. And easy! It’s about time Microsoft started doing the same thing!
Learning to use a Linux system involved a lot of Googling in my case, so it’s kind of trivial to imagine the amount of Googling required for learning to code with that thing! Where’s my Visual Studio 2008? Where are my .EXE files?? What’s going on?! Google to the rescue!
In about a week it all started to make perfect sense. I had seen lecturers in my school tweaking with those .BAT files when building and uploading applications to Arduinos using AVR Studio and the likes. Somehow I got exposed to the magic word “gcc“. So, mr. Lecturer, you’re telling me that the [name it] Studio can’t compile a thing?! Sigh.
Now some people may say it’s a good thing when they ignore such a vital piece of information in school, as all the “frameworks” and “studios” can do those tasks without notice, and all the “unnecessary” details are mercifully hidden away. Makes me wonder, just exactly how many tech students get to slither their way out of university without ever getting to know what a compiler actually is? Maybe I missed a class or something?
Well, I apt-getted the GNU Compiler Collection for my Ubuntu box. By that time I was already familiar with the idea of writing my code using a text editor instead of a “studio”. I still haven’t gotten back to those “studios” because of the bitter feel of their betrayal in my heart.
I soared through the basics of BASH scripting, Python and the Django framework, as my first assignment was about migrating an old PHP-based production management system to a Python equivalent. Eventually it turned out that further development of the old system would be a better idea, so I went through the basics of PHP, MySQL and Apache2 (now I could light up a LAMP while sleeping, if I had to).
My another assignment during the summer involved BSD sockets, so I got my hands on the Internetworking with TCP/IP book by Douglas E. Comer. I managed to build up a basic understanding for a bunch of new things such as the Internet Protocol, Ethernet, TCP, UDP, ICMP and the OSI-model, though, I obviously didn’t make much progress with the quite advanced task at hand as the beginner-level coder I was (am). Finally, I had to study the basics of the Perl programming language, and I still think Perl is by far the easiest choice when you have to mess around with serial ports.
That’s how I got to coding on Linux, and I really have no intention of returning from there, as I noticed I can still do the same things as everyone else, and a whole lot more as well! Though it’s possible for anyone to overload a human brain with too much irrelevant information, I personally find studying many things at once a nice way to soften your mind for the inevitable moment when you eventually have to make your choice and stick to it for the rest of your life.
Oh, another thing. Maybe it’s just me, but I think a serious problem among inexperienced programmers is best practises. My coding and best practises can usually be considered two greatly distant things. Whenever I face a new, interesting problem, at first I just go all-in with the knowledge I have, the result being a totally oversized snake-case-spaghetti-bolognese. Then I start the usual process of problem solving, that is, do some research and write the whole thing again. That’s alright when you’re still studying, but it must be the main reason for employers not hiring freshmen. Consider the fact that your studies go on for, what, four years? You can’t learn to code in that time, so you can as well forget those best practises! How simple is that?
Then we get to the question: should your studies last for, maybe 10 years? Or should you do something on your own as well?