views:

765

answers:

17

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?

+4  A: 

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.

DaveJustDave
+13  A: 

Trust, autonomy, and large monitors.

Ben Hoffstein
Of the three, large monitors is the most important
1800 INFORMATION
How large are we talking here? I'm working with two 19" monitors, each at 1280x1024 resolution and I'm perfectly happy, but what do other people consider acceptable/good?
Mal Ross
@Mal Ross, honestly the more pixels the better. I used to think 17" was as good as life could get, but now I'm happily cruising along on two 30" screens (2560 x 1600) and can't turn back.
Ben Hoffstein
4th'd by me on the Large Monitors... and at least two of those babies as well!
kevchadders
+3  A: 

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. ;)

+27  A: 

Don't treat your employees like children. This single rule makes everyone involved happier:

  • If your employees want to browse the web, let them.
  • If your employees want to take an hour and a half lunch break, let them.
  • If your employees want to come into work a bit late, let them.

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.

Cody Brocious
+6  A: 
  • Flexible schedule
  • Dual Screen
  • Not being in a rush all days
  • Build project in team that everybody respect everybody
Daok
+3  A: 

I'd add to the list of answers other people have gave:

  • expensive chairs and adjustable desks/monitors for ergonomics
  • offices for quiet working environment
  • give bonuses after a long stretch of having people bust their asses all day
Greg Rogers
A: 

two important points in my view :

  • Developer should have a good mindset(+ve energy towards the company and work)
  • Management should do everything to make the developer feel 'wanted'
Jobi Joy
+9  A: 
  • Serving an important purpose, e.g. extending the frontiers of knowledge, promoting sustainable living, preventing fatal accidents, something like that, however indirectly. There has to be something real about improving the world or making life slicker, easier, more fun or productive for someone.
  • Enough money rolling in to pile it up, support non-profits and local artist, etc. If it's only enough to merely survive, i'll be gone ASAP.
  • Feeling like i fit in, usefully serving the company, at least half the time. This is mainly a matter of using my strengths and skills rather than straining to do make up for weaknesses or constantly learning new infernal technologies of no lasting value. Sure, we all have to "stretch" and learn new doodads and so on, but my present job makes it clear i can't have 100% of that every day ongoing. Let me go home with at least something accomplished each day.
  • Having choices, a widening of future possibilities. Not to be stuck at one desk with the same view and never get to travel. To know that if i do good work, i could be going somewhere new and interesting. Like, uh, Mars maybe...
  • Good management sure helps, but isn't essential. Once upon a time, i left a company where i had a great manager, but the job failed in the other considerations. OTOH, i spent five years where i had professional disagreements with the boss, but it was a unique historical situation and i was doing interesting, specialized work hard to explain to others or find anyone to take over, and it was fun seeing the boss on the national news.
  • All the above factors being equal, then having many good places to eat lunch nearby would help me stay!
DarenW
+2  A: 

Things that make me happy, in no particular order:

  • Latest and greatest hardware
  • Flexibility around what tools and techniques are used to get the job done
  • Sensitivity to developer burn-out
  • Minimal time spent in meetings
  • Feeling empowered, that people trust me to get things done
  • Bonuses & perks
Keeth
A: 

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.

Nathan Feger
+1  A: 
  1. Freedom (timings, dress code, excessive documentation)
  2. Technically Challenging work with new feature development
  3. Good peers
  4. No pointy haired bosses
  5. A promising project
  6. Private cubes
  7. Good Hardware
  8. Reputation of the firm
  9. Budget for books and conferences
A: 

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

+5  A: 

The easiest way to keep your developers happy:

  1. Buy them gadgets
  2. List item
  3. List item
  4. Pay above market
  5. Feed them
  6. Flexi hours
  7. Let them do whatever they want even if it's not work related
  8. Never sack anyone

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.

Totophil
+1  A: 

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:

  1. It's constant practical training
  2. It will make them better developers
  3. It will keep your company relevant in the future
David McLaughlin
+1  A: 

An unordered list consisting of:

  • Interesting work
  • Enough money

:-)

adrianh
+3  A: 

There are a lot of thing here you should do; Here is a list what not to do:

  • Block off access to certain sites / ports (like messenger)
  • Monitor your employees constantly and confront them with the fact that they are not "working" all the time
  • Publicly embarace your employees buy telling them what they do wrong in front of their collegue's.
  • Buy the cheapest pc's you can get with Vista licenses for your employees; no choises for them.
  • Set the deadlines so tight that every day is a rush to be done
  • If a task is done well reward your employees with a old legacy crap-project to finish
  • Accept all client requests (like create this superduper webshop, I need it tomorrow) and let your employees deal with it.
  • Say your company is inovative but let your employees do all the inovative stuff in their own time
  • Shout at your developers when a too tight deadline hasn't been made
  • Saddle up your employee's with work they hate (I hate to work with Flash, guess who get's all of the Flash jobs)
  • Say you are willing to change and make things better but don't spend any time or money on it
  • Make your employees think the yare much less good at what they do so you don't have to pay them the same as your rival company's.

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.

D4V360
A: 

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.

OldMan