Starting software development may seem too hard and cumbersome task for many. Actually you only need a computer and a heck lot of interest in software development to get started. In this story I will go through all the basic stuff of software development and open some topics that you may not have thought before. While this story will not do the hardest work for you, it will still hopefully kick you just enough to get started.
So buckle up your seat belts and let’s go!
For especially junior developers there might be some words and abbreviations in this story you don’t understand. I have collected some of the to this list so in case you find a word you don’t understand you can always come back to this chapter.
As you may already know, there are multiple different programming languages. The hardest part is to select which one you should start with. I would see selecting the first programming language can be sum or individual value of the following:
Think what do you want to achieve with programming skills? Is it to get job, impress your friends, build a robot, construct your own website or something else? Next I have collected some areas you might be interested and what programming languages are mostly used for these things:
This list is not complete but it gives you idea what kind of search words you can use to look for the best language.
As you now may have an idea what language you want to start using for your first steps into development I have to let you down and tell it’s not actually the language that you should train. Programming language is, well, a language. It’s a way of expressing yourself just like any natural language. While knowing a programming language makes completing a task possible, it doesn’t necessarily turn your mindset where it needs to be. When thinking about programming there are at least the following aspects:
Most of the skills developers need are not related to programming language at all. Languages are there to give possibility to do things while software developers are there to actually do these things. Never underestimate a developer who lacks skill on the programming language — he/she might know more than you think.
What programs do I need to start writing? Actually that depends a lot of the programming language you have chosen. Most of the languages, such as C, C++, Go and Java require some compiler to build machine executable code. Some languages such as Python, PHP and other scripting languages don’t need to be compiled before running but still require the framework underneath to produce some output.
There are tons of tutorials for all major languages on the internet with information how to setup build environment for different languages on different operating systems.
For me it has always been very clear that all development is done on Linux platform. Some might argue with this and use Windows or Mac but it’s all the same — you can do software development on any platform. If you are not familiar with Linux, I highly recommend trying some easy distribution such as Ubuntu for your software development. You can even install it on tool called VirtualBox and run it inside your Windows/Mac. To do this, again, search for tutorials from the internet.
Another thing that is important to find is your text editor of choice. There are many, many text editors and IDEs you can choose from and here is a list of the most used ones:
Apart from the listed ones there are huge amount of commercial editors from for example JetBrains without forgetting everyone’s favorite Microsoft Visual Studio. I suggest you try at least 2–3 editors out and see what feels right for you.
A must tool every developer should have in their toolbox is version control. Version control is used to track changes to source files by different contributors. It is a must to have if you are working together with other people and it helps a lot also if you are developing alone.
Two of the most used version control systems are Git and Subversion. While Git is much more popular these days it might be that you bumb into Subversion sooner or later. I would suggest you learn at least how to use Git and some basics of Subversion. There is awesome online tutorial for Git available here so check that out.
When someone starts learning programming they usually start with writing a program that outputs the famous words: 'Hello world’. There’s actually a website where you can find examples how to do this in 500+ different programming languages at https://helloworldcollection.github.io if you are interested.
I suggest you start with simple “Hello world” program just to get something done. Especially if your language selection requires compiling it might take a while to get understanding how to get it built and running.
After you have all sorted out and can actually output something from your program you should think of an idea for your first actual program. It can be just simple tool for parsing input text or a small game. Start what interests you the most.
Before starting your project I suggest you to create repository for your project for example to GitHub. GitHub is an online service where you can host your Git projects, contribute to other projects and collaborate with other developers. The UI is very clever and you can easily find version history and changes you’ve done to your project. If you hesitate publishing your code to public you should still use version control for the project with for example local git repository.
The famous GitHub logo
Also you might want to be sure your program works as expected. I suggest you take a look at available test frameworks for the language of your choice such as googletest for C++ or Codeception for PHP. With the tests you can proof the functionality and prevent further defects in your code. Testing is really important especially if and when your software grows and abstracts more. Also all modern software companies do automatic testing on top of some testing framework so it’s good for your experience to have knowledge of at least some of them.
One of the most crucial things when starting working with software is to find help. Every developer hits the wall from time to time and just can’t figure out the solution by themselves. The most important source of information are fellow programmers — your colleagues, school friends or even your family members. You should remember there is no stupid questions, only stupid answers. That also applies to questions you ask about software development.
Also you should not forget all online services there is for programmers such as:
Apart from your just started project you should also practice software development on alternate methods. There are few (yet again online services) that are specialized in this. Just to mention few of them: HackerRank and Codility. These services allow you to complete programming challenges of different difficulties. Some companies actually use these services for pre-selecting candidates for open positions and that’s why they are also great practice for the future job searching.
One great method to learn new things is refactoring your own code. Or if you have the guts, someone elses code. Improving performance, optimizing memory usage or simplifying complexity can teach you a lot of new techniques and programming language features. You might want to consider contributing in some open source software in GitHub or invite your friends to work with your own project. Often best way to learn is reading and understanding code someone else has written.
Also you might want to participate in some training or go to school to learn software development. That might help you get started but unfortunately it will not do the heavy lifting. Most of teaching only scratches the surface of software development or is focused on totally wrong things considering your future career. From personal experience only the ones who did software on their free-time, and not only in school, actually made it to a profession.
Some books you might want to consider reading:
If you have more good books, please let me know in the comments!
No matter what you do, there is no shortcut to learn programming. Practice, ask and create things over and over again — It’s the only way you will get where you want to be. I promise you it will pay back eventually.
As I am not a book author (at least not yet), this is only a scratch in the surface. In case you want to know more from me, please let me know in comments — I might even write part two for this. Also all comments and improvement ideas are welcome. And as always: Thanks for your time.
I am Heikki Hellgren, Software developer and technology enthusiast working at Elektrobit Automotive. My interests are in software construction, tools, automatic testing and all the new and cool stuff like AI and autonomous driving. You can follow me on Medium and Twitter. Also you can check out my website for more information.