With this article, I would like to share some things I learned until now in my journey towards a Software Engineer 😀. I hope it is useful to you in any way.
One thing is certain: the world is packed with study material about Software Development. And of course everyone has their reasons to read a certain book, watch a specific video or read that awesome article.
Not following a predefined curriculum of subjects, I learned that it is really important to find out how you learn best and find the fitting study material. The only way to discover this is just to try different ways of learning.
I know about myself I can watch videos and read stuff all I want, over and over again, but I need exercises (a lot of them) for it to stick. I might not be the fastest one in understanding new concepts, but by knowing which way of learning fits my brain I can make sure it doesn't wear me down as much and I can keep doing it for a longer time.
It can by all means also be more than one way! To be more specific, think of:
- Video tutorials
- Reading (e-)books
- Exercises/Coding challenges/Katas
- Personal projects
- Pair programming
- On the job learning by doing small tasks in a team
- Code reviews
The best advice I can give from my experience in the past months: please, don't force yourself to read a certain book because 'someone more experience said you really needed to' while it doesn't work for you. Of course suggestions are welcome, but don't feel bad to try something new if the current way of learning doesn't fit how you learn best. And be confident about that. No one knows/feels that better than you do. But be open for some friendly advice 😉.
A few months ago I watched a beginner coding video on YouTube where someone mentioned to make your personal coding projects professional (for example, building a complete employee management system). So you have something to 'add to your portfolio' and 'show off your skills' in interviews.
In that same period a good friend gave me the advice to start out with some fun coding projects. When listening to his motivation I noticed this approach would leave out unnecessary pressure for me and I liked that. Just, applying what I have learned so far and making something simple/low key. And I will see what happens from there.
My first two coding projects were:
- A storytelling game console app with a Christmas story where the user could choose scenario's
- A command-line Tamagotchi
I have learned a lot from these and as a cool side effect: colleagues wanted to play them => hello code reviews!
Of course this is my personal experience on first projects and if you really love going for a business app as a first project, by all means go ahead 😃!
I just wanted to share that it is not really needed to build something 'useful' to gain experience, as long as the enthusiasm is there. And of course this doesn't mean that you can't have fun working on your professional portfolio. But I noticed it's easy to get dragged into the 'building your portfolio' stuff. I decided that my goal was to learn to apply my coding knowledge. It didn't matter how I did that.
As a beginner, it can be scary asking more experienced people to review your code. But I noticed it brings my a lot. For me it's another way of learning different ways of solving a solution. And it's a great moment to ask questions about concepts that are new to you as well. The 'why' question is important here.
So if someone suggests a change, be curious and ask why would they do it like that? Not to start a discussion about what is 'best', but to learn different views. Plus it will give you practice to think along in different solutions to a coding problem in the future. It does help to find some people you feel comfortable with. And you know that enjoy taking the time to explain things to you.
Learning Software Development means absorbing an incredible amount of information. I can be an impatient person when it comes to this. "Why don't I get this?" - "Oh right, 5 days ago I didn't know what this subject was at all, calm down".
There are a lot of areas to focus on: languages, frameworks, back-end, front-end, testing, API's, authentication and authorization, Databases, etc. It's normal you can't know it all at once.
It helped me to define what is the most important thing to learn next and focus on that first. Instead of doing it all at once. Of course you can change the priority as soon as something else becomes more relevant. Next to this, be open about your focus area to others so they can think along.
It's easy to forget small steps in your growth, while in the end it will form your learning journey. Those are successes as well! How cool would it be to look back and see specific actions/small learnings? Writing down my small successes (e.g. writing my first unit test, first deploy to master) helped me to keep some perspective regarding my learning process and be proud of my achievements.
For the record, you can be proud of something while you can still improve. The one doesn't rule out the other. So please allow yourself to be proud! You deserve it.
In the end, this article has become a more 'mindful' article than expected. But I am glad it did. Because that means I can apply these techniques in other situations as well.
Feel free to share your experiences on getting started as as junior dev 😄!