Some developers get itchy feet after a year or so, some stay in the same place for years. If you are the latter - what is it that keeps you happily at the same place?
Environment? Challenges? Access to lastest tools? Good management?
Some developers get itchy feet after a year or so, some stay in the same place for years. If you are the latter - what is it that keeps you happily at the same place?
Environment? Challenges? Access to lastest tools? Good management?
I think management is pretty important. Culture is too. Bottom line, have a tech-heavy alpha geek manager that knows how to say no to upper management, and have a culture that doesn't care if you're browsing Facebook on company time.
I find that having smarter coworkers to learn from helps. I'm generally not happy unless there are enough challenges giving me opportunities to learn new strategies/technologies; for me, that's the most important factor.
Outside of that...hardware and snacks is always a plus. ;)
Don't treat your employees like children. This single rule makes everyone involved happier:
The key is freedom and trust. Let them stay after to make up the time they cut into, and if there's been a big push where everyone's been staying late then give them a lenient week to rest up and recover.
Of course, if these things start impacting their work, deal with it, but do so on a case-by-case basis instead of rules that just end up pissing off everyone.
I'd add to the list of answers other people have gave:
two important points in my view :
Things that make me happy, in no particular order:
I like to be proud of the work I do. So, if I'm coding, or thinking about coding, working with other smart people that's good. Also, try fostering an environment where ego is subjugated to efficacy.
1 Trust - most important point 2 Freedom 3 Office, right now I have none and use a good set of BT headphones when I want to be "alone" 4 Hardware 5 The ability to actually develop software, not just program it 6 Time with customers. Nothing is more boring than just hacking away for weeks
The easiest way to keep your developers happy:
Unfortunately, as a manager you also need to get work done, on time, within budget and of acceptable quality. The low churn rate is only important since a good developer leaving company takes skills and knowledge with them. It affects your company in a number of ways: - Software quality drops. Some of the knowledge was never been externalised (formalised, transferred), valuable conceptual ideas literally went out of the door. As the result the integrity of design concepts suffers. High churn rate means that the software quality is never going to get anywhere above world average, which is frighteningly low.
Finding and training replacement costs money, takes time and effort. Hence has a negative impact on both budget and deadlines.
High employee turnover rate lowers morale and everyone's perception of the workplace, inducing even higher numbers of leavers. High churn rate is contagious.
So much for the foreword and putting things into the context. Practically I would give the following tips for keeping developers and happy and help get your managerial job done at the same time:
Be realistic about what can be accomplished. Never chronically overload your people. Clearly setting priorities is the best tool for workload management.
Never put unnecessary pressure on your reports. Give them slack when you able to, personal circumstances of your reports differ.
Be just. Have a set of principles, make them clear to everyone, and stick to them.
Sack chronic skivers, incompetent morons, dishonest folks, moaners. Always give them a chance first. If you let a team members to get away with murder others will follow the lead.
Fight routine. This is highly controversial. Most of the work is routine, routine means stability, routine means higher quality. Therefore fight only meaningless routine, anything that doesn't involve brain work, promote stability or good routine.
Empirical evidence suggests that having regular brain exercise helps keep developer brains sharp and happy. Regularly (i.e. weekly) set a well defined practical task for everyone to solve creatively. Reward good solutions.
Make effort to recognise and reward behaviours that lead to increased quality, lower cost and speed up work.
Put mechanisms in place that keeps the code base clean. You'd be surprised to learn how many developers are unhappy or even leave company since they do not wish any longer to "maintain this pile of shite". Many would readily jump at new project since they do not need to support the old screwed code base and can start from scratch. Put certain percentage of time and budget for re-factoring of existing code into every development plan. Allow for at least one prototype (even low fidelity); avoid adding up new problems to the code as much as possible.
Provide your support on all levels when your reports need it. The success of a project needs an issue to be escalated for resolution to customer, project sponsor, CEO? This is your job to take it up the ladder and make sure that a compromise is not made that is "not ok" with your specialists. Do not make fools out of them; make everyone respect your team competence.
Make sure your people are paid enough (check market), working conditions are adequate, they have good tools and access to the knowledge they need, that working practices aid that team does.
Make effort to listen to what developers say. Always listen and address when people complain about the company or their job. Remember complaint is “an expression of dissatisfaction whether oral or written, justified or not, from or on behalf of an eligible complainant, about the workplace ability to meet expectations”. As manager you won’t necessary hear what people really say, be approachable, make arrangements to become a part of the gossip-net if necessary (have a secretary, deputy who will seem more approachable than you are etc).
Do not expect anyone to be “self-motivated”. Remember that motivation has two ends (aligned with company needs and misaligned). It is your job to help foster the motivation that is right.
Take it easy, good development team won’t let you go astray.
I think the key to keeping a developer happy is the 20% rule - give them the time to keep themselves relevant and allow them to experiment with new skills, try a fun project, solve a difficult problem in the company, WHATEVER. Just a break from the day to day shit that drags us all down.
It's a no-brainer to implement this:
An unordered list consisting of:
:-)
There are a lot of thing here you should do; Here is a list what not to do:
These are things I experience every day at my current job; Fortunatly for me my contract ends by next week and I'm out of there. Don't let this happend to you! The most important thing in a software company is to keep your employees happy all the time; Give them no reason too leave; the market is too small for that.
Do not impose them taks that are impossible to fulfill then scream at them when they fail at fulfilling them
That goes specially with deadlines. Do not ask them to write a compiler until tomorrow then blame them when they fail. Learn that such mistakes are the manager to blame to much more than the developers.
When you feel a deadline failed because you misspredicted the effort needed, make sure to thanks the developer for his effort on trying to achieve it anyway (if he really deserves that of course)
Never reject their ideas without giving some explanation of why, otherwise they will feel unappreciated.
Pay attention if your employee is getting tired of the same assignments he receives for years. If its showing theses signs, assign different tasks or projects if possible. That renews the interest a lot.