As I advance in my career, I have found that I do less technical work and more project management work. I joke that I am getting dumber every day. Each time I go back to doing technical work it seems to be a little harder to get things going. What suggestions do people have for maintaining technical expertise throughout your career?
How to maintain the technical skills after becoming a project manager
project-management
Related Solutions
We had a similar problem (without the technical details, of course) in the company I work about two years ago.
You just need to do it one step at a time. Don't try to adopt the agile software development in a rush. There's a lot of stuff to learn and apply. Don't let the lack of expertise to bring you down either.
Build slowly (but as fast as you can :P), steadily and surely.
I would recommend the next steps (to do this, you might switch from management to development for a while, but that should be fine)
- Learn a good version control system, and learn it well. Personally I would recommend git or mercurial. There is a lot of documentation on both.
- Build a solid core on practices and patterns. Read books, read blogs, watch screencasts with the team members. This will give a new air to the development.
- Learn TDD/BDD and try to apply it in the new code, as well as in the old code that you might touch when doing a new feature.
- Do pair programming. Two heads think better than one, and also 4 eyes are better than 2 :).
- Find about the latest and most common used tools in the community of the language you are currently developing. Learn about them and try to include some of them in the project. See how these were built and learn.
- Use scrum. Iterations, stories, story points, impediments are all concepts you should get familiar with. For me, scrum has proven to be the best workflow for software development and management. Apply it and learn from each day experience.
- Teach by example. Most of beginner developers are eager to learn new stuff, but also some of them are very lazy. Anyways, show them the new stuff you've been learning and applying and hopefully that will tickle their brains.
Also, if possible, hire a consultant just so that he can check out the process and give better advice.
Don't get lazy or discouraged. Just learn from your mistakes and try different approaches. This is just the beginning!
Edit:
Here are some of the links and books that I've been reading/using lately...
Learning git: Pro Git
These are some of the blogs that I would recommend (most of them are .NET oriented):
- Java Blogs
- Karl Seguin's Blog and his Foundations of Programming series.
- CodeBetter.com
- Code Thinked
- Los Techies
- Clean Coder
- And also this link to a stack overflow question.
For books, you can see Buiding A Solid Programming Core list on amazon. I would also recommend these:
You are in a frantic and desperate mindset. Take a few deep breaths, clear your head and contemplate the following facts (and if your mind leaps to counterarguments and panic, start over with the breaths).
- If you're doing all the work, then they need you. If you die, so does their business.
- If you're working late nights and weekends then you are working at an unsustainable pace, tending toward a steady state of inefficiency and poor work. If you were somehow able to work decent hours, you'd actually get more done per day and get things finished sooner. (If your brain just said "But my manager--!" then start over with the breaths.)
- When your manager gives you an unreasonable goal and you half-kill yourself to get it done, you are rewarding him for his behavior. You will get more of what you reward.
- "This cannot be late." Yes it can. Read this one over a few times.
- Although you feel that he should reward you for hard work, you know that this is not true. This is not the path to success.
- If the task is not completed by the deadline (see #4), which will look worse: A) you accept the task with the look of a hunted animal, work like a demon and then cringingly admit that it is not ready on time, or B) you tell him calmly at the outset, and every day that it will not be ready by that date, but that it will be ready at that later date, you work calmly and steadily, it is not ready at the deadline but it is ready when you told him it would be. (Breathe, breathe.)
The important thing here is your mindset: your goal must not be to achieve the impossible. Now that you can see there is another way, how do you communicate this to your boss? There are no miracles, but you can accomplish a lot by speaking his language.
- Document everything you do. Seriously. Take a little time to do this, even though you are under deadlines.
- Tech-illiterate managers love pretty pictures. Acquaint yourself with a professional-looking tool, one of those "schedulers" that they love. You must be able to produce timelines and graphs in pretty colors.
- Learn some buzzwords, especially the ones he (or his boss) uses.
Now combine these things. When they ask you for a quote, work out a good one-- don't rush this--, pad it a little, give it to them, never ever negotiate a time estimate and whip up a timeline showing it. If possible, use the graph as your reply (if you can get them to start using your graphs, you've half won). If they outsource the job and you have to fix the problems, give them a quote for that, whether they ask for it or not; in the end you will have a graph that shows A) the four weeks they wanted, B) the six weeks you quoted and C) the eight weeks it actually took because they outsourced it; label this so that an idiot could understand it: "two week overrun due to outsourcing". Come to every meeting armed with figures, graphs, buzzwords. If you do this right you'll be amazed at how they accept whatever is on the graph, and how they see the graph itself not as a waste of time, but as "professional behavior".
Good luck, and let us know how it works out.
Breathe.
Best Answer
Keep on coding
I've always tried to steer away from a position where I'm forced to do more management than coding. In fact it's something I always point out in interviews - I'm a coder - always will be.
I would say that's #1 on keeping your technical skills sharp - as simply as it sounds - keep on coding. Whether or not that's what you want to do is a different story.
You can also try being more involved with group code reviews. Not only is this a great way of sharing knowledge and elimination key-person dependency, it will also show you what's going on in the codebase and keep your skills sharp.
The problem (in my opinion) with programmers moving into project manager positions is that there is absolutely nothing that says if you're good at programming you will be good at project management. In my experience the exact opposite is usually true.