Some Advice For All Aspiring Developers
The Advice I Would Give My Younger Self After 21 Years Of Software Development
I started programming 21 years ago, at the age of 12. I was lucky enough to have a father who was interested in IT and computer science. Although a nuclear physicist, he got into IT by accident and stayed there until his retirement. He had this magic book about assembly and the compiler that brought me into development. He is who I owe this to. But times were different back then. The internet was far from what it is today, and you learned a lot from books. And as a 12-year-old and later, I was far from really knowing what I was doing.
You, on the other hand, have a different foundation today. The internet is full of knowledge for you to consume, and it makes it way easier for you to get into development, no matter whether you are self-taught, a CS student, or going to a bootcamp. And for you I compiled this advice, hoping that it will help you on your journey. Take it as some of the most important things that I wish I had known back then when I started out.
Spend more time on the why
Ask yourself honestly why you want to learn to develop software. It is okay to go for the money. In many countries, software developers earn top salaries. But you should always be aware of your own motives.
If you constantly tell yourself you do it because you love it, while silently thinking that it's for the money that helps you support your family, you could actually end with burnout or depression. The internal struggle between you pretending to love it and your experience of not liking it that much can really hurt your mental health.
If you are aware of why you do it, it'll boost your mental strength and morale. Even money is a good honest motive, really. But don't lie to yourself.
Do more research on what different fields of software development there are
If you listen to Tech Twitter, for example, you might get the impression that there are only two prominent fields in software development:
- Web development
- Machine learning
But actually, there is:
- Web development
- Machine learning
- Data science
- Backend development
- Embedded development
- and more
- and more
- and more
- and more...
- and much, much more...
And all these fields come in a multitude of nuances. One backend dev position is not like the other backend dev position. Some do not only create REST APIs but deal with messaging and multiple databases. Not all machine learning engineers develop models. Some work a lot on deploying them and creating pipelines to retrain them. Some DevOps are more like SREs. Some are more like administrators. This can go on and on and on.
Use this as your first real chance to get good at googling. Check the internet and see how many different fields there are in software development, and try to get an idea of what you would do in each. Perhaps something you read sounds so interesting that you get curious enough to try it out yourself.
Dive deeper into a few fields that interest you
If you found one or more fields that you find interesting, dive deeper into them. Get a good idea of what you need to be successful in them. You will most likely also find a few roadmaps to become X or Y. Try to get an idea of whether following such a roadmap seems interesting for you. If you spot a lot of stuff on it that doesn't sound too exciting, you might want to start with something different. Losing motivation right at the beginning could lead to a lost opportunity.
Many developers only later fall in love with development when they finally grasp the whole and not only a part of it. It's okay if you are not immediately carried away by hearts flying around anywhere. Give development a fair chance and look left and right.
Think in milestones
While you might have the goal to learn to code, it is not easy to reach. It might take a long time until you are really comfortable coding. Such a long time could make you lose motivation. If you create smaller and easier-to-reach milestones for yourself, you achieve something more frequently.
Set yourself small goals for each day or week. This is what you want to achieve in that specific timeframe. After each milestone, plan for your next. Even if you decide that you won't continue with the path you are currently on, you will still have achieved a few milestones until then. It's no shame to change directions and move on.
Learn the fundamentals
Before you jump right into your first framework, learn about some of the most important fundamentals:
- How a computer works
- What a programming language actually is and does
- Math (basics)
- Data Structures
- Networking / I/O
You will need all of these at some point.
For some of us, this is the most important stuff. For others, it's boring as hell. There is, however, no excuse to skipping these. As a developer, you are expected to know your craft. It doesn't make sense to jump right into Django, Express, or React if you don't know how to solve any problem with an algorithm yet. Yes, you can learn by doing, but a basic idea of conditions, loops, and such definitely helps, and it makes your life way easier.
Realize that software development is more than programming
Programming is only a fraction of a developer's job. It also includes:
- Critical Thinking
- Testing software
- Designing solutions
- Documenting features
- Talking to and discussing with other people
- And more
You might love to write code, but when you finally want to enter the industry, you will most likely get confronted with the reality of this job. Companies expect you to not only know how to program. They ask for the full package. If you haven't also spent a lot of your time developing all the other skills necessary, you will probably have a hard time finding a job. You train some of them while actually writing software, but working on them independently doesn't hurt at all.
Before You Leave
I'd love to count you as my ever-growing group of awesome friends!
Interested in reading more such articles from Oliver Jumpertz?
Support the author by donating an amount of your choice.