8 tips for software developers to avoid stagnation and change specialization
Software engineers always need to be on the lookout for novelties and growing trends. That’s the only way to stay relevant and succeed in the IT industry; some of us learn it the hard way.
Being a software developer, I created Rich Media Applications and Games in Adobe Flash technology for most of my life. As you can imagine, I felt safe in my position, focusing on what I knew best. As it turned out, I was soon to leave my comfort zone.
The reality hit me in July 2017 when I was a TechLead in a small GameDev company.
The game we were creating at that time was the biggest project I had ever worked on — an MMO RPG. I created it from scratch, so it almost felt like having a child and watching them grow up. I was deeply attached to the project.
We used many remarkable frameworks and libs, like Away3D, Starling, Feathers, and AS3 Signals. I felt thrilled creating Proof of Concepts and testing Away3D engine capabilities.
The game is still available for desktop (Windows) — you can check it out here — but I can’t say the same about my involvement in the project.
So, what happened in July 2017?
Adobe deprecated Flash and announced its End-Of-Life (EOL) at the end of 2020, which meant they would cease support, distribution, and security updates for Flash Player.
It was devastating news — I invested over ten years of my life in that technology, and I was very good at it.
But then, it shouldn’t come as such a surprise. The apparent truth is that IT technologies are constantly changing and evolving. Learning is the bread and butter for every good programmer.
Still, this sudden change made me quit and stay jobless for six months. The first two I spent resting and thinking about what I wanted to do about my career. For the remaining four months, I learned 6 hours per day every day.
Today, I’m a backend developer at Evojam. I no longer make the mistake of preserving the status quo, but I keep growing.
And so should you, so let me show you how!
1. Make a choice: Technology
It is one of the most important steps, if not the most important, because it will strongly affect your future.
It’s also a perfect time to experiment.
Pick the top 3 of your favourite technologies/programming languages and try them out. Don't be afraid to change your mind.
Do you like frontend or backend more?
Would you like to work on creating mobile apps or web apps? Or would you like to develop games?
Do you like Linux and want to be a DevOps specialist and write Ansible scripts?
Possibilities are abundant! Remember, however, that there are harder and easier topics. So, if you've never programmed, don’t start with a low-level language like C, as it requires a greater understanding of the processes handled by high-level languages under the hood, i.e. memory management. As a beginner, focus on learning the basics.
If you don't know the answers to the questions I asked above, just google it! Google the list of questions, too, if you need more help and inspiration. From now on, self-discovery and curiosity are your best friends.
When you check out all technologies you like, commit to one of them. If the choice is still hard for you, check the number of job offers on the market. More job offers will likely mean you'll need less effort to find a job in this technology later.
2. Don't be afraid to make mistakes: Mistake is the mother of motivation
Do you think you're great and don't have to study too much because you have extensive programming experience and will find a job right away?
Do a reality check and go for an interview! The interviewers are very likely to throw cold water on your assumptions.
That’s how it worked for me. With my TechLead experience in game production, I believed I knew it all and would easily find a job in any GameDev company. I ended up going for an interview at a large GameDev company without much preparation.
And guess what? I didn't get the job. I left the interview devastated.
The person conducting the technical interview could have done a better job, too. They didn’t show any interest in my skills but focused on proving me wrong and trying to diminish my experience.
I would call it a toxic conversation, yet I needed it at that point to understand the power of humility.
Making mistakes is a natural part of the learning process. I will remember this lesson for the rest of my life. At that moment, I understood how much work awaited me.
3. Own your story: Find a friend/mentor/tribe to talk about technology
Take a close look at your circle of friends and acquaintances. There must be someone with similar interests or even someone who is also learning new technology. Use this connection!
Awakening curiosity together and exchanging information work magic; it gives you more positive feelings and makes the learning process fun.
Not sure where to start? My tip is to be open about what you are doing at the moment and share it with your friends on various occasions.
One of my friends' partners happened to be a Java programmer who did what I was doing at that time a year before. We quickly connected and started to share articles, experiences, and valuable information. It was stimulating and motivating, and I no longer felt alone with my mission.
And all it took was a short conversation about my projects and goals.
4. Learn to learn
There are many tools you can use to learn. Find out what works best for you.
Some people learn best by reading articles and books, and others like video courses. There is a lot of knowledge to find on Youtube in the form of tutorials, podcasts, and videos from conferences. And, of course, there is the famous Stack Overflow.
We live in times when information is available like never before, so use it wisely!
My personal favourite is online courses.
When I was learning Java, I completed "Java Programming Masterclass" by Tim Buchalka and "Spring Framework 5: Beginner to Guru" by John Thompson. When I needed to learn Ansible, I used "Ansible for the Absolute Beginner - Hands-On - DevOps" and "Ansible Advanced - Hands-On - DevOps" by Mumshad Mannambeth.
The cool thing about these sources is that they include exercises for you to do yourself and a community that, among others, consists of specialists who actively answer your questions. Focus on these two aspects while looking for a course on your topic. Practice is a crucial part of the learning process because programming combines knowledge and skill.
To acquire and sharpen my skill, I used code practice websites, which offer programming puzzles on every level. Another perk is that the ability to program on a website without an IDE is useful for some recruitment processes. Not to mention it's generally a good practice. If you don't care about live coding, you can use IDE and paste your solution.
Find a website that suits your needs and matches your technology, or explore all of them. They are easy to find — just google "best code practice websites."
Even such a simple website like CodingBat will be great if you want to learn the basics of Java or Python
5. Identify core skills you need
You can easily learn your entire life with so much knowledge, topics, and frameworks available. And you probably will!
Still, concentrate on several areas of expertise to protect yourself from information overload and maintain focus, at least at the beginning.
Find out what you need to apply for the job you want. Do research, ask around, check job offers, and even ask interviewers!
When I started my adventure with Java, I quickly discovered that I also needed to learn the Spring framework. It was a revelation for me, but it has allowed me to advance my career.
6. Self-care: Mindset is the key to your inner power
Even though growth is strongly associated with education and experience, you won’t sustain it without proper self-care.
For this purpose, I developed a routine to go through every morning after brushing my teeth. It only takes about 20-30 minutes, depending primarily on how long you want to meditate.
Meditation
It’s scientifically proven that 12 minutes of meditation daily benefits your ability to focus and mental health.
If you’re a newbie or need guidance, try HeadSpace — an application with meditation programs. For absolute beginners, I recommend the "Basics" course, which starts with 5 minutes a day. When ready for the next step, find meditations designed to improve your focus or happiness.
Affirmation
Write down who you want to be, what you’d like to change in yourself, or what you want to continue doing. Structure the sentences to indicate you are already doing all the items. The list should include things that are possible to achieve.
I know how hard it is to write it, so I am sharing my affirmation as an example:
I care for my sleep quality.
I stay hydrated.
I only eat foods that are good for me.
My weight is dropping, which allows me to do new things.
I am slim and well-built.
I achieve everything I dream of because I work wisely.
I do and create; I am a creator.
I leave my comfort zone every day.
I’m the best at choosing valuable things, events, and people.
I provide value to others, which improves their lives.
Thinking positively, I attract positive people and experiences into my life.
I am confident in my abilities.
Programming is easy for me.
I am free from addiction.
I am a yogi.
I am a runner.
I am a traveller.
I am a programmer.
I am an entrepreneur.
I am a podcaster.
I am a leader.
I am a billionaire.
I am a musician.
I am a lover.
I am myself.
Visualisation
Imagine yourself in the near future after you reach your goal. Create an image of situations, people you meet, and things you achieve. Your new apartment or car, or whatever it is you need.
Make your vision as detailed as you can. Feel the handshake of the new boss when you have just signed the employment contract.
Write it down. You can go back to your visualisation notes every day and change them if you like. Use your imagination and be creative.
Example:
I have a good job where I fulfil myself, and it allows me to do whatever I want.
I live in a big house with a garden.
I have completed a marathon.
Be grateful to yourself
Every morning, write down three victories from the previous day — significant achievements or small accomplishments, changed habits, research, completed course lessons, or even the fact that a new diet makes you feel good. It is personal and only for you.
Example:
I read the next chapter of the book.
I ran 5km.
I finally started cooking.
All these techniques don’t take much time, but they completely change the mindset and help you stay motivated, positive, and relaxed.
7. Testing the waters: Be brave
What I’m going to say might sound counterintuitive, but give it a chance.
Start looking for a job even before you finish your course or plan.
It’s not as crazy as it seems! Here’s why:
You need to learn the interview process itself. In time you will be better even as an interviewee.
You will not find work straight away.
Use every job interview as an opportunity to grow. Write down all questions you don't know the answer to. Ask for feedback.
Show that you are interested and fully committed to improving and learning. For many companies, your attitude, commitment, and ability to learn are more important than knowledge, especially in Junior level positions.
8. The company of your dreams
Have you read the headline and immediately thought about a specific brand? If you could tell a company name off the top of your head, be patient, as it might be worth a wait.
Go through some recruitment processes and gain some confidence. If you are confident already, well, then go for it. Apply for your dream job at your dream company. Like I said before — don't be afraid to make mistakes!
And if you need more tips at any stage of your career path to keep growing, feel free to contact me at kkalinowski@evojam.com. After all, I used to be you!