So you started learning programming a few weeks ago, it’s tough but you like it, and you want to know what are the next steps? This article is for you. I will be going over the few things that are critical for any programmer and that will help you reach the next level.
The article is quite long and looks very dense, but do not be afraid, it is easy to read and understand.
Google is already omnipresent in a lot of people’s life, and it is the go-to destination when it comes to researching knowledge. I am sure that you already know how to use Google, and that you are aware of the importance of the tool when it comes to learning.
What you have to learn is what to search, and how to search for it. Which keywords to use, or which part of your error message to use is crucial, and while this comes with experience. At the moment I am confident enough with my Googling skills that if I don’t find a solution, it probably means that there is no solution. Here’s what I usually do:
If I don’t have an error message, and I’m looking in how to do something specific in a specific language, I’ll always structure my search with the programming language, “how to”, and the problem. Be specific in your problem statement, and express it just like you would verbally formulate it. I have seen a lot of people searching for something on Google without success, just because they expressed their problem in a non-natural way. For example: “Java how to sort a list of objects by property“.
When you have an error, make sure to remove the parts that are specific to your application, for example class names that you created, paths that are valid only on your development environment, etc. I would also include the programming language, and / or the specific technology used.
Those are only the first steps towards being good at using Google, if they seem obvious to you, great, it means you’re already doing things right.
You’ve probably already heard the name “Git“. If you have no idea of what it is, it’s a “Version Control System”. This probably doesn’t help, so to explain it in a few words, it’s a software that allows you to manage easily incremental versions of your code, share them with teammates, and easily go back to previous versions. You probably think that you don’t need it, let me prove you the contrary.
Let’s say that I’m developing a website for a customer. Most of the features are already here, but when I show him the website, he doesn’t like the color scheme and would prefer to change it from orange to blue. I go back to work and spend 7 hours working on changing everything to a blue color scheme. I finish it, and send some screenshots to the client.
Turns out, he realizes that he hates the blue and wants to go back to orange. Well all I can do is hit frenetically my Ctrl + Z shortcut to undo everything, right? No, because I was using Git from the start.
What I did just before showing the website to the client for the first time, is that I took a snapshot, using Git, of the current state of my code, with the orange color scheme. I then spent 7 hours changing the colors to blue, but now that the customer wants to go back to orange, I just have to type one command,
git revert, to go back to the orange colors.
This is a simple example, but Git is useful for any project, whether it’s a personal website that you’re developing for yourself, or a huge platform with millions of lines of code, developed by dozens of people, like I do at my job at Amazon. It is also the best way to store backups of your code, instead of uploading a ZIP of your project to DropBox (we’ve all done that when we started!).
If you want to learn Git (you should), you can learn using the interactive tutorial of Atlassian: https://www.atlassian.com/git/tutorials/what-is-git
You’ve probably started to learn programming on a simple text editor. Back when I started 15 years ago, I used Notepad++, but more modern alternatives are Sublime Text, VS Code, Atom, etc. They definitely do the job when it comes to writing code, and I still use them almost daily when I have to do a very small modification, or touch a file that isn’t code, like a CSV sheet, but there is a better tool available for anyone, IDEs.
IDE means Integrated Development Environment, which isn’t more revealing to what it actually is. Basically, it’s a code editor, like the ones mentioned above, but tailored towards a specific (or multiple) programming language, and that comes pre-packaged with many tools to develop in those languages.
There are a lot of features that will make an IDE better than a text editor, here are a few of the major ones:
- Better code auto-completion: When you are typing code, the IDE is analyzing it and offer you the possibility to automatically complete what you are typing. Text editors can do that do, but it’s much less evolved and smart.
- Great refactoring: Refactoring is for example renaming a variable in your code, and expecting that it will be automatically renamed everywhere it’s used, or moving some files around and expecting the rest of the code to be aware of that change. IDEs have great refactoring capabilities which are going to save you hours of work.
- A debugger: Sometimes printing the content of a variable to understand where a bug comes from is not enough, and sometimes it’s even impossible. A debugger allows you to stop the execution of your program anywhere you want to, and visualize the content of the variables.
Note that most text editors will provide plugin systems that allow you to install extensions providing the same kind of functionalities, but it’s usually not to the same level, and it’s harder to install, keep up to date, and manage afterwards.
If you want to try an IDE, I recommend the JetBrains suit, which covers most widely used programming languages, and has free products for students. Their Java and Python IDEs are also free for anyone.
We now reach the end of this article, and while I have other ideas on things to add to the list (datastructures, the command line, etc.), I think they would be better suited in another article, for developers that have a little bit more experiences and are comfortable writing some code on their own. Keep in mind that those are more oriented for beginner programmers, that have only a few weeks of coding behind them.
One thing I would like to emphasize before finishing, is that I truly believe those points are not advises, tips, or optional improvements. If you are serious about programming, if you study it in school, or want to make it your job, they are hard requirements. Sure, some professionals from the sector will tell you that they don’t use Git and that ZIP files work just well, they will tell you that a debugger is useless, and that using Google is cheating. They are wrong, and you should run away from them.
You can read more on the same topic on my next article about the proper way to learn as a beginner programmer!