I'm in a company that relies strongly on outsourcing IT, which is strongly reflected in the available personal development plan. In essence, if you follow the plan, after 1 year you're ok at writing specifications for other people to implement. I'm looking for good quality development plans for software engineers that involve both implementation skills and personal leadership skills.<p>Are there good resources out there? What should I pay attention to?
This is where the dreaded question comes in: Where do you want to be in 5 years? Your development plan will be different if you want to be one of the contractors implementing projects vs. a tech lead in an enterprise shop vs. a coder at a FAANG or startup. Heck, being good at writing up specs for other people to implement is actually a useful skill in some roles.<p>So first, define your end goal. Then work backwards - if you want to be at point Y in 5 years, you need to be at point X in 4 years, W in 3 years, V in 2 years, and U next year... so how do you make that first move?
You need to work backwards from two decisions to be taken in future - your role and the area of operation.<p>Role is important because being a software development manager requires different skills than being a senior developer. For the latter you need to code more, understand how things work under the hood and develop a strong grasp over the fundamentals. For becoming a manager, understanding systems while preserving some abstractions is important. You also need to understand people and how you can effectively delegate. Similarly, there are other traits required for being a technical writer, a consultant or a technical program manager. Once you know the traits that will be useful for your future, invest time to nurture them.<p>Secondly, figuring out the area is important since you want to enjoy your work. It should be something that you are naturally excited about and see a value in. An area can be something as broad as software infrastructure or as specific as distributed message brokers. Once this is figured out, you can intensively read up on the relevant topics to gather knowledge and develop depth. This should be helpful to establish yourself as a domain expert regardless of the role you play later. However, you do need to try out a lot of things to discover which one of them intensely resonates with your interests. This process should involve working on small side projects and reading up. Being naturally curious helps.
It's not about the code (most juniors code better than me) but become senior is thinking _beyond_ code, thinking about mentoring and supporting co-workers, how your work impacts the business' greater goals and strategies, how you can positively impact culture organisation wide, the ability to ask questions, how you take responsibility, how you're inquisitive.
It's hard to give advice over the internet. That being said, if you're not writing code I'd recommend preparing and looking for a new job.<p>When you interview, people tend to ask you what you're looking for and wanting to write more code to get more experience is a great reason to look for a new role.
I would say probably work on some personal projects. Maybe read some books on leadership, since hiring managers are looking for buzzwords. Real leadership will come with experience.