5 things beginner programmers should avoid
When I started to program back in 2012 I knew literally nothing about programming. Heck, I even wasn’t aware I programmed. If I could find the most honest description of that experience, I would say I was just playing with the compiler. My first program was a quiz in C++. I found some old book by Croatian author which explained basics of C++ in ancient DevCPP IDE. That moment was crucial in my life, but just like any other beginner, I did some stupid things. And that’s completely okay, because I learned much from them. I’m aware of that now and I want to stop people who are just starting (or are interested to start) their software development career to make same mistakes.
Moving between different languages
This is the worst mistake I made. After I wrote few programs in C++, I researched and found there are dozens of different programming languages which allow me to write programs. I have downloaded Visual Studio and played with Visual Basic for a long time by copying and pasting code. After that, I dabbled in Java, then in C#, then in Delphi, then … you get the point.
When you start, stick to one language. This is very important, because as a beginner you need to get yourself familiar with fundamental concepts like variables, loops, functions, classes, objects etc. It’s true that serious software developer should know more languages (and we’ll later discuss what it means to actually know some language), but you should stick to one language as a beginner.
Too much reading
As pretty much every curious kid I spent most of my childhood reading. This good habit, when transferred to programming, becomes dangerous. You should spend most of your time as a beginner by doing projects and experimenting. It’s useless to read about design patterns or data structures if you don’t even know how to properly write a valid program.
Of course, it doesn’t mean you shouldn’t learn theory behind things you do. It just means you should leave it on the side when you start because diving in theory will probably demotivate you quickly and move you away from programming. There is a place and time for everything. Your primary focus when you’re just starting and aiming at professional career is to learn enough to land junior position. After that, you’ll be surrounded by people who know much more than you and who will help you to reach higher level.
Becoming too emotionally attached to some language
Almost every programmer has a favorite language. I have few of them. But in the real world, you need to use different languages to do different things. Some languages are more suited for specific things, although you would stumble upon general purpose languages like Java, C++, C# and others which, theoretically, allow you to make everything you want.
I say theoretically because no one sane would write serious operating system in Java or use C++ for everyday back-end development. Look at the languages like tools, which, in fact they are. What answer you think you would get if you asked engineer whether screwdriver or a saw is more useful tool? Same thing applies here.
Using code you don’t understand in your projects
Probably every programmer on the Earth made this mistake at least once in his / her career. It's hard to control things as you wish, especially in systems with many moving parts (we'll talk about this problematic in future and how to make software more predictable). When such situations happen, we tend to become nervous and look desperately for solution. When we find something which can even remotely solve our problem, we use it right away.
Problem with this is that using incompatible code in your project could significantly alter it's behavior. This could also be the code which actually works and is the one you should use, but you forgot to modify it for your goal. There are exceptions of course; if you need library for, let's say, JSON manipulation, you don't have to know how it works (and well designed libraries don't force developer to understand them in details). If you really need to introduce code you don't truly understand in your project, try to consult with more experienced programmers or at least make some reminder to come back at that place in the codebase in future and realize what it does.
This, of course, applies to hobby projects. This rule is even more important in production.
Perfectionism
Repeat with me; there is no such thing as perfect program. Da Vinci once said that art is never finished, only abandoned. I would say that software is never finished, only abandoned (this quote was also used by one famous programmer, unfortunately I can’t find who really told it first). For me, development of software is one form of art. Exact and strict, for sure, but definitely an art. There is no such thing as true mastery of programming, and that’s beautiful.
Your first few projects will probably suck on many levels. Mine did too. Everyone’s did. There are really no shortcuts in this career. Software can become very complex in short amount of time. That’s the reason why we came up with various metodologies and ways to organize it. Your goal as programmer is not to write bugless software, because such thing doesn’t exist. Your goal is to write software which does what it has do with the least amount of bugs as possible in given period.
I hope you enjoyed this article. If you did, upvote and follow me for more content like this, and comment if you have questions or something to add. Cheers! 🍻
@originalworks
Great post with really good tips. I'm not an avid programmer myself, but I can definitely relate to the problems you've described. Looking forward to your next posts!
Thanks for your kind words!