So, there you are… an experienced software developer, a seasoned professional,
a great person able to take responsibility in challenging projects,
all the while being a reliable and a cooperative team player.
Your coworkers enjoy working with you, you finish your tasks on time, you get paid what you agreed to…
All is well, all is nice.
Then, an old friend calls you up, saying “Hey, I just started learning this software development thing you’ve been doing for years.
Wow, it’s so amazing. I always thought it wasn’t something for me, but it turns out it’s insanely cool.”
And then you start remembering the times when you felt like that.
The first time you wrote “Hello World”. That was some powerful stuff.
And then just to showcase your dominance to the computer you wrote a loop and made it write it 10000 times.
And how about the time you gained the skill to write a program which can find out whether the number 198372102937 is a prime number or not?
If you can’t let the not knowing go, check out the answer here.
You remember! But you probably have to dig a bit in your memory to rediscover those feelings. The past few months, maybe years, there aren’t many of them.
The excitement turned into a routine. The constant learning and growth turned into endlessly repeated patterns. Welcome to the software developer’s RUT.
Things have become stale, you start to head to stagnation. It doesn’t mean you’re not growing anymore, but the pace is getting slower and slower.
Then your mind probably starts telling you: “Maybe this is not for me, maybe it was, but not anymore?”,
“Maybe if I change my project/job I’d feel more excited about what I do?”,
“What if I manage to make more money out of my work, that’ll motivate me to do more?”,
“Maybe I ought to direct myself to management and let the other developers do this work that’s becoming more and more tedious to do?”
Many people will actually believe these things to be true and will go for them.
If you feel like this, don’t worry or be ashamed. It’s completely natural to reach progress obstacles in everything you do in life.
It means what you’ve been doing so far really worked and you really progressed. Up until here.
Now it’s time to take a step back, analyze things, rethink your approach to software development, start adapting your work philosophy, modifying your everyday actions and hop onto the PROGRESS TRACK again.
Here are 7 unordered tips on where you can start:
– Your desktop. Treat it like a cache memory. It’s a place where you’d put your most frequently used items. The less items you have there, the less time you’ll waste searching through them.
– Empty your Trash or Recycle Bin. Learn to let go of past things. These things can take a huge amount of memory if you neglect them.
– Remove unused data. It’s very easy to fall into the trap of hoarding things you don’t need. If you don’t need it, or can get it easily online, get rid of it.
– Update your OS and applications to the latest versions.
– Organize your e-mail. Delete all outdated e-mails you won’t ever need again. Organize the ones you need in folders. Unsubscribe from mailing lists you don’t need.
- Get to know your development environment and tools better
– Try to get to know all of the features your development environment offers you. You don’t have to use all of them, but it’s nice to be aware of them and be able to use them whenever you need them.
– Learn or modify the keyboard shortcuts to the most used commands. This is a great way to keep yourself in the flow and minimize distractions while thinking hard and writing code at the same time.
– Working with the command line is a must, you’re a developer after all. Get used to it.
– Get the required level of knowledge about the other segments of your development environment like the operating system, your preferred browser, database administration tools, source control tools and/or whatever else you use on a regular basis.
- Stay technically relevant
– Watch videos from conference talks. One important note about this: Don’t expect too much from one individual talk. What you can get out of a talk depends a lot on the subject, the presenter’s presentation skills, the quality of the information presented, the level of knowledge you posses prior to watching the presentation, etc. In my experience, I found that the Pareto principle pretty much applies here as well – roughly only 1 in 5 of the presentations you’ll watch will be truly significant to updating your mindset and the other 4 might be just noise for your brain. So, don’t get discouraged if you find yourself combing through hours of talks and you don’t get anything out of them yet. The truly good ones are just around the corner.
– Listen to podcasts. Personally, I love listening to audio-only materials like audiobooks and podcasts for one simple reason, they leave a lot of my attention span free for other activities, like walking, riding a bike or exercising. That way, I can get new information in without having to free time up for it.
– Read or reread the classic software development books. While software technologies evolve with an ever-increasing pace, the software development principles and best practices have remained largely unchanged for decades. There’s absolutely no chance that you won’t get anything good and not be a better software developer after reading these books.
- Improve your project experience
– Optimize your processes. When you’ve worked on a project for at least a few weeks, you start to see some patterns emerging. Maybe you get notifications for things that don’t concern you directly and you can’t do anything about. Why not turn them off if that won’t hurt your work on the project. If possible, subscribe to notifications about events that really do matter to you instead of having to periodically check whether they occurred. If working with other people, optimize the communication with them. Communicate more when really needed, communicate less when communication is not essential at the moment.
– Learn more about the projects you’re working on from a technical and business perspective as well. This, very often, is a big area in which you can greatly improve and benefit greatly from the improvement. If you’ve boarded the project after it started and/or other developers are working on it as well, it’s very easy to not see the big picture and miss a lot of the things that are happening in the project. You tend to know certain areas well and consequently improve your knowledge there, but completely lack knowledge of other areas. So whenever you face working on the less favorable areas to you, you might tend to avoid them if possible, do quick fixes instead of long-term solutions and maybe make big oversights and wrong assumptions just because you actually don’t really know what’s going on there. I’d suggest you plan to dedicate a short time after each task you complete to organize your mental image of the project. Personally, I consider writing cards in Trello and drawing diagrams (it doesn’t have to be anything formal) with draw.io to be awesome tools to organize everything you know about your project.
- Start blogging
Remember that the most important thing about writing is to not write for other people, but write for yourself and to organize your own mind. It’s very easy to come up with millions of words of self-talk while thinking about a certain subject in your head, but all of them become completely different when you try to write those words somewhere. To me, writing blog posts is in many ways similar to writing code. You immediately notice when something you just wrote doesn’t make any sense, or can be shortened or expressed in a more concise and clearer way. By writing, you unburden yourself of your brain’s consistent jibber-jabber when thinking about a certain subject. Someone else benefiting from what you wrote is also a great motivator.
- Create or contribute to open source projects
You might not have the awesomest idea for the next cool app that will rock the world. You might not posses the knowledge currently to build a new operating system. But, I am certain that there’s something (even if it’s a very small thing) that you can contribute to the developers’ community that you and some other developers can benefit from. We, as developers, see areas for improvement in our work all the time. Why not invest some time and effort to actually make those improvements. Open source projects have one great characteristic which is that you don’t have to guarantee anything to anyone. You don’t need to make any commitments about your work. It’s all based on doing whatever you want, whenever you want. It’s usually the total opposite of regular work in many cases and if you haven’t tried it yet, you’ll be amazed how much work you’d be willing to do when the pressure is off.
- Learn to take care of yourself
This is written last, but it’s probably the biggest and most important area of improvement. Always remember that YOU are the one that develops the software. And a big part of that YOU are your mind and body. They are structured and behave in certain ways. Get the manuals and tutorials and learn how they work so you can get the best results out of them and use them to be the best software developer you can be.