I recently finished 7 years as a professional software developer! I thought it would be useful to spend sometime writing down a few things that I have learnt and helped me grow.
There are 7 main things that I feel have made the most impact:
- Plan - Do - Check - Act
- Have a good support system
- Learn something new, as often as possible
- Showcase your successes
- Learn from failures and share that knowledge
- Pursue opportunities
- Don't be afraid to walk away
Plan - Do - Check - Act
Once you follow this practice for a while you realize using a continuous improvement method, is the most obvious way to "continuously improve"!
My process is quite simple.
I plan out goals for myself to finish in 3/6 months. They are usually focused on 3 areas:
- things to improve myself
- things to help the team/project achieve something
- things to help the organization at large
I then share these goals with people who can help me achieve them. This often includes but is not limited to my team members.
The most logical next step and an important one is to make progress on these goals. Along the way however, its important to periodically sit down and analyze how things have been going, check if you have actually made progress towards your goals and if all of them are still relevant. This usually includes getting feedback from other people in the team/organization.
Course correction is also an important part of the process, where you make changes to your goals or methods based on your introspection / the feedback you received.
I cannot stress enough the importance of having a support system outside and at work. There are three categories of people I have in my own support system, people with - more, equal and less experience than me. The last category of course gained importance only after the first 2-3 years of work.
Most of the time people got added to my support system with no conscious effort on my part . Colleagues at work who you are extremely comfortable talking to about how things are going. They are sounding boards, people you can vent your frustrations to (we all have those) and also your guides/mentors. They also help you keep tabs on the pulse in the organization and the industry at large.
Learn something new, as often as possible
Its been extremely important to keep learning new things or your knowledge will become obsolete fast! Software platforms have an extremely fast rate of change. You can be a average developer and not have to learn anything new for years. However, if you want to be a great (or sought after) developer your only choice today is to keep learning new languages and techniques/patterns so you can choose the best fit for situations you face.
Showcase your successes
Let's face it, we live in a world with millions of developers and most of us work in companies with more than 50 people. You are a small fish in a enormous ocean. I have realized that its not enough to just do a brilliant job or build awesome software, its just as important to talk about it. Please don't take that to mean you need to boast. The best developers I know and love working with are extremely humble people, but they also don't shy away from speaking at length about cool work they have done. If you love your work, this should be easy if you can get over your fear of what others might think. The natural side effect is that someone probably learns something from you and achieves something good themselves!
Learn from failures and share that knowledge
Just as important as showcasing your successes is to accept, admit and learn from failures. Personally, I have learnt so much more from failure than from success. The one thing I have found helpful is learning from others failure and not just your own. Which makes it important to put what you have learnt from your own failure out there for that other people also benefit from the knowledge. As so many great people have said, if you haven't failed you aren't doing it right.
I have not yet had the fortune of having a perfect opportunity just being handed to me at the right time. Its always involved being aware of what is happening around me and asking to be on that cool new project or role. We are the only driver on the journey that is your career, other people can only be navigators (beware the back seat drivers! :P). Everyday I actively try to find ways to chart a path to my career goals through opportunities others help me uncover or create! It helped me get a lot of the work I really enjoyed doing in the last 7 years.
Don't be afraid to walk away
Walking away at the right time is just as important as pushing on when you know its right. I walked away from my first and second jobs because my path forward became extremely hazy. It was one of my toughest decisions to walk away from my first job. I was comfortable and had a good support system in place. What I didn't have anymore was the confidence that the job would allow me to continue my learning and growth. It took me longer than it should have, but I don't regret the decisions I have made to walk away both times. The scariest thing would be to have worked for a year or more and not have any growth or learning to show for it.