I don’t know why, but for some reason I’ve been asked many times the last couple of months how to get started in software development. To be honest, I’m not even close to understanding why this happens, I’m not some kind of cool or famous developer, but for some reason people try to ask me this question. Well, this post is dedicated to those who will be asking me in the future. I’m just tired of saying the same thing over and over again. Buddy, there’s one thing you need to know to get started. The thing is, programming should be fun AF for you! If you’re still wondering if you should start, or if you don’t think it’s the right thing for you, then find something else to focus on. You’ll just freak out while you’re pushing yourself to do it. I am usually asked by novice Java programmers, so I will orient myself to them in this post.
My point is that even if you read all the books, blog posts, and articles in the world, you won’t become a real programmer.
Only one thing can make you a programmer – writing code.
Thus, on your Way of the Samurai you should spend 70% of your time coding, not reading. Not just write stupid pieces of code in the form of to-do lists and other crap they do on courses. You must solve problems with coding. Only when you’re looking for a way to solve a problem you do learn. But when you find it – now the books become handy, you know how to implement it in the right way.
You might have no idea how to find these “problems”. The easiest way is contributions into Open Source. Just go to GitHub and find the project that you will be involved in! Make your first contribution and feel useful, because you have contributed to something that thousands of programmers are probably using! And you’re just getting started.
But you shouldn’t sit around and wait for someone to come help you understand the project. You should dive into it yourself, read the documentation, study the source code. After that you should ask questions. No one likes people who start throwing questions that are answered in the documentation or code.
Train your ability to learn, not get used to being handed something on a silver platter!
You can also try to find a few beginners just like you to work as part of a team. Let’s say you are putting together a team with one junior backend developer,
one junior frontend developer, one junior tester, one junior designer, etc.
After that you start developing some website, which, for example, somehow replicates the existing
one but with some changes. If your team is motivated enough, maybe for six months of joint efforts,
you can create something that can be deployed and show the employer.
Such an experience would be equivalent to a real commercial project.
In addition, you can find someone already working, so he checks your project once a week
(you can even pay him for this, it will be worth it).
The most challenging thing here is to keep motivation at a high level.
Because very often teams like the one described above fall apart after 1–4 weeks due to a lack of interest
in working on the project.
I’m highly recommending you to watch this video
Use proper tools
As a programmer, you have to use the right tools for software development. I’m not talking about IDE, etc. right now. I am talking about several things:
GitHub is the main platform for Open Source developers, make it your social network. Don’t try to be cool on Instagram or Facebook, forget this crap – use GitHub.
Stack Overflow is a site where you should ask questions and possibly answer them. By learning to ask questions on this platform, you will develop the ability to express yourself clearly and correctly as a software engineer!
Sources of knowledge
I prefer books to other sources of information. You don’t need to read books about the Spring framework, Hibernate, etc. You need to read books that will deal with general aspects of software development. Such books will never lose relevance, unlike those books that are designed for a specific framework. By the time a book dedicated to the framework comes out, it will have had time to be updated several times. There are a few books that I like, I don’t agree with everything in these books, but overall they are worth reading. This list may be updated; I will try to add new books that I like, stay tuned!
- Junior Objects. This book will make you a real software developer, as long as you complete all the exercises. There are many other very useful books hidden inside this book.
- Clean Code. This book is like the Bible for programmers. Read it.
- Code Complete. You know what, programmers have several Bibles :)
- Refactoring. You know what, programmers have several Bibles :)
- Working Effectively with Legacy Code A lot of useful stuff, especially about testing.
- Release it!. How you should release your software.
- Elegant Objects, v1-v2. Watch out! May cause a burning pain in the ass of people with an intolerant opinion different from that of the majority or industry standarts. These books will break down your understanding of OOP. To me, these concepts are more properly described than those we are used to hearing.
- Head First Java. This book was my first one, and honestly, it is one of the best books to start learning Java.
- Effective Java. Guide how to use Java “right”.
- Java Concurrency in Practice. How to make your race condition less of a race and less of a condition.
- Uncle Bob Martin. Author of Clean Code.
- yegor256. Author of Elegant Object series.
- Jeff Atwood. Co-founder of the Stack Overflow.
Nice to read, but not necessary
- Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People. Will help you with simple algorithms.
- The Definitive ANTLR 4 Reference. A well-written guide to ANLTR4.
- Dragon Book. For those who want to dive into compilers.
- Crafting Interpreters. Very well written book about interpreter development.
Here I have tried to describe how to get started as a software developer. Also, as an important mention, don’t try to sit and write code for 7-8-9-10 hours a day. You will just burn out, keep learning not more than 2-4 hours a day and 3-5 days a week.
Don’t do something by pushing yourself – it will kill all interest and motivation!
Couple videos about Open Source
How to get into an open source, so as not to burn with shame (Russian)
Open source developers inevitably have better soft and tech skills (English)
Contributing to Open Source Can Change Your Life - Here’s How to Do It (English)