views:

1175

answers:

27

If you have a room full of capable developers, what can be done to encourage those developers to become excited and enthusiastic about software and software development?

No gimmicks, but a genuine move to create an environment where people want to work in software, not just because the company is a good company to work for overall.

+11  A: 

what can be done to encourage those developers to become excited and enthusiastic about software and software development?

Nothing.

A passion for software development comes from within, and cannot be created from zero. Feeding an existing passion is easy- resources, training, and a visible appreciation for that passion from management are all it takes.

The only exception may be to lead by example. If you're excited, others may follow.

UPDATE: As has been said in other answers, it's much better to hire well up front. I'd pass over ten good programmers who just want a paycheck for one good programmer who codes in his/her spare time for fun.

ANOTHER UPDATE: This answer has been jumping around with up/downvotes, so let me clarify. The OP's wording specifically asks how to make an existing team excited "about software development". It is my contention that if they are not already interested in their chosen professions, there is not much an employer can do to engender an interest. A disinterested, unmotivated team will make a mess of the most fascinating project. By contrast, a motivated team of professionals that like their jobs can make the best darned calculator program out there, and enjoy every minute of it.

Dave Swersky
This is obviously not true. Passion can go if the work is boring. Passion can come if the work is interesting and the environment is conducive to a excellent work ethic, and production of nice code (as well as delivery of systems).
Noon Silk
Nonsense. Good coders aren't blithely giddy automatons operating in a state of blissful obliviousness to their environment; work environment has a huge effect job satisfaction. If the OP had asked asked how to create enthusiasm from zero instead of encourage it, this might be a reasonable answer -- but he didn't, and it's not.
BlairHippo
@silky: I couldn't disagree more. The OP asked how to make developers "excited and enthusiastic about software development." Passion for *software development itself* is a personal interest developed naturally over time. It can't be cultivated by anyone other than the developer him/herself. You're talking about passion for a *project*. I love the practice of software development and always will. I've worked on projects that make me want to tear my hair out.
Dave Swersky
+6  A: 

Having an interesting, challenging and profitable problem to solve, where all developers have a stake in the results. If not, you have a room full of developers sticking around as long as the pay checks clear.

Otávio Décio
+3  A: 

How about giving them a financial stake in the outcome of their software project(s)? For example, corporate profit sharing.

That being said, passionate developers are the kind of people who go home and write software in their spare time.

David Montgomery
They already have a financial stake- their paychecks. Additional monetary incentives have been shown to be surprisingly ineffective at motivating highly-skilled professionals. Ironically, the soft incentives of public recognition and personal appreciation (which are FREE) are much more effective.
Dave Swersky
I've found my employees to be a lot more motivated over the long term (spanning multiple years) when they know that they'll likely see a personal financial benefit for working late/weekends/going the extra mile/etc. For short-term motivation, though, you're right -- an 'atta boy' from co-workers or clients works wonders.
David Montgomery
I think you do need to be a bit careful with this, however. I do agree that developers are somewhat motivated by financial incentives (I do think it can be overstated though), I've seen far too many startup type companies where developers seem far more interested in exit conditions and liquidation than developing a quality product. Stock options in particular are fairly toxic in my opinion.
Ryan Brunner
@Dave Swersky: paychecks are different then stock options. A pay check just slow you down from jumping ship. Stock options can make you point and laught at the guy that doesn't get them *assuming the stock is worth more then the paper it was printed on"
Matthew Whited
@Matthew: I've played the stock option game and have been burned every time (across two different software companies.) In my experience, stock options as compensation are worth less than a single Starbucks. Additional financial incentives should be clearly-stated, measurable bonus programs.
Dave Swersky
The problem with profit sharing and other financial incentives is that it's very hard to link it to individual and team performance. Either everyone gets it - including the slackers - or it's based on some individual evaluation measure which is sure to be biased, usually in disfavor of the one devoted programmer who takes on the invisible but oh-so-important dirty jobs.
Kena
@Ryan Brunner: I agree. Compensation is only part of any employee's job satisfaction. With 'Dilbert'-esque bad management beating you down every day, almost no compensation package is going to look good after a while.
David Montgomery
@Kena: I'm definitely coming from a small business owner point of view. I observe what my people are doing for the company on a day-to-day basis. In a larger organization, or in any size organization with bad/absent management, you're right -- the coder who quietly works his butt off is going to get shafted while the loud, obnoxious product manager is going to get a lot of credit he doesn't deserve. PS - Thank God I don't work in corporate America anymore!
David Montgomery
@David Montgomery: You also want to be careful about the coder that writes innumerable bugs, working hard nights and weekends, as opposed to the one who spends a lot of time not looking productive, works a forty-hour week, doesn't write a lot of code, but gets things done and gets them done right. It can be very difficult to tell who's good and who isn't.
David Thornley
+2  A: 

Going to a software development conference with good, inspirational speakers can make a huge difference.

GraemeF
I'd rather sit locked in my basement working on code then listening to one more person tell me I'm going to fail if I don't use TDD.
Matthew Whited
Of course, if you have nothing left to learn then probably not much use.
GraemeF
+12  A: 

I've yet to meet a capable developer who is not already excited about making great software. The trick is to stay out of their way and not destroy the natural enthusiasm.

The Joel Test is a good start.

RossFabricant
+1. While there's not much one can do to create enthusiasm, companies generally go through a lot of work to kill that enthusiasm
Kena
+1 for introducing me to the Joel Test ... even though it depressed the hell out of me.
BlairHippo
+3  A: 

You don't.

You either have people in the team that love learning and always want to push themselves to be better, or you don't have those people in your team. Of course reality is, you'd have a mixed bag.

Just employ people who are enthusiastic (it's easy to tell), and don't employ the ones who see programming/developing software as 'just' a job.

It's impossible IMO to turn complete non-enthusiasts into passionate programmers. There is no silver bullet.

Wim Hollebrandse
+6  A: 

I have to agree a little bit with the comment made by Pascal, but I'm not going to start off that way.

Overall, it has been proven that one of the best ways to give developers an environment that allows them to like their work is to give them freedom. However, your looking at a different route here, you are trying to find "passionate" developers.

To be 100% honest there is not a direct connection to "capable" and "passionate". There are hundreds of developers out there that are capable of being programmers, and mighty good ones at that. But many of them do not have any desire to become passionate developers.

To create a team of passionate developers, you really have to start with the recruitment process and HIRE passionate developers, not try to "create" them.

Mitchel Sellers
But you DID start off that way.
iandisme
Yes....I did....
Mitchel Sellers
+1  A: 

I am inclinced to say nothing like others have, and i must agree that a real passion for it is not something you can create, it either exists or it does not however there are things you can do.

Scoring high on Joel's test is a great start,

Paul Creasey
+23  A: 

Sheild your developers from all the politics to the best of your ability. Let them what they do best, develop software. Nothing kills a productive team like having to squabble in inner-office politics.

This well-known conversation says it best:

Peter Gibbons: Bob, I have eight different bosses right now.

Bob Slydell: I beg your pardon?

Peter Gibbons: Eight bosses.

Bob Slydell: Eight?

Peter Gibbons: Eight, Bob. So that means that when I make a mistake, I have eight different people coming by to tell me about it. That's my only real motivation is not to be hassled, that and the fear of losing my job. But you know, Bob, that will only make someone work just hard enough not to get fired.

George
Quoting yourself? Normally, I'd be against it; but in this case I think it's acceptable.
Noon Silk
Um, no, he's quoting characters from the movie Office Space...
Dave Swersky
Dave: Yes. Sneakily, the poster has actually changed his name since I made that comment.
Noon Silk
+3  A: 

money, money, money... and don't say that money doesn't matter if the project is exciting or boring routine.

Roman
+4  A: 

I think the biggest thing is the company has to value what the developers can do for the company. If the company is run by cheapskates who just see your developers as an expense they can't wait to be rid of then you are doomed. The developers' team needs to be viewed by management as a strategic asset that makes them money now and will make them more money in the future.

Also good communication in the company is vital. The developers have to be able to find out what it is the company needs them to do. Autocratic top-down bureaucracy and mushroom management can wreck morale and make it impossible for developers to add value, regardless of what level of enthusiasm they brought to the job. The software your team builds will be only as good as the communication in the company--I think that is what Conway's Law is about.

So that is a big challenge, in many cases an impossible one, because senior management will have their own ideas about priorities and communication and good luck influencing them. But the alternative is guerrilla development, where you're fighting an endless battle against your own company.

Nathan Hughes
+4  A: 

For me, the things that keep me motivated are:

  • A problem/task that I find challenging, that I can learn from
  • A plan to implement the solution in a way I think is reasonable. Nothing is more de-motivating for me than a management team that forces technologies I don't believe in down my throat.
  • Other folks to discuss the possible solutions with, be they on the same team or not.
  • A management team that appreciates the hard work I'm putting in.
RHSeeger
+1  A: 

Fire all the PHBs and hire smart managers who maximise the chances that the software will actually be finished and work right.

HandyGandy
PHBs?? Whats that?
Brett Rigby
Pointy haired bosses.
HandyGandy
Pointy-haired bosses. Dilbert.
Kena
Oh, of course! Thanks.
Brett Rigby
+32  A: 

In my opinion, the absolute, #1, most essential thing that motivates developers to be enhusiastic about their work is a sense of ownership over their product. All the team-building excercises, reading groups, etc. are good but ultimately ineffective if the developers don't have a sense of ownership.

Here's a quick, off the cuff list of things that are important, in my mind, to ensuring this is the case:

  • Developers have a real and honest stake in the future design of the system. There will always be requirements that come from outside the development team, but developers should be represented when those requirements are discovered and be able to give real input into the future state of what you're working on.
  • Developer championed requirements or changes to your solution should be given a voice. A balance needs to be found, certainly, but all too many companies don't have proper mechanisms to allow pure development-focused requests to get through. These could be product enhancements, building up unit tests or simple refactorings, but they are essential to the quality of your product and for giving developers a stake in your project.
  • Developers should have contact with users. A development staff that's treated like the guys in the basement who churn out code are never going to have a very enthusastic approach to the product or developing their own skills.
  • Embrace new technologies, even if it's only for a PoC or prototype of what the technologies can do. No developer in the world has ever been excited about churning out boilerplate code, and they never will be.
  • Let development teams own their process. Development methodolgies decreed from on-high will without fail demotivate the development team, who now need to deal with the added burden of planning meetings and waterfall development. Require that a process exist, but until there's a problem, keep your hands off the specifics.
  • "Just the way things work" is NEVER an excuse for a broken process. If developers have a legitimate concern with a process they need to follow, they need a honest chance to argue against it. As a manager, one of the worst things you can say is "That's the way the VP / Executive / CEO / God wants it, so we need to follow it". You need to champion your developers concerns, or failing that, allow them direct interaction with the person in question. If you as a manager are viewed as a sockpuppet for the executive, good luck ever motivating a developer again.
Ryan Brunner
+1 for the sense of ownership. I've worked on both sorts of project and was definitely more enthusiastic about the ones I felt I "owned" in some way.
ChrisF
Actually, what you mostly seem to be saying here is "Don't squelch their enthusiasm, and these are a few things that will."
David Thornley
Please add to this list: Not requiring developers to code to the lowest common denominator.
Metro Smurf
+19  A: 

Hire the Right People

During the interview process ask questions that let you see their passionate about the craft.

Some examples, Do they:

  • Read software books or blogs, listen to podcasts?
  • Play with new languages/libraries at home?
  • Contribute to open source projects?

Once you have good people stay out of their way. Have the right amount of process, don't force unnecessary standardization, listen to issues, be honest about reasons things are happening.

Rob Spieldenner
I don't think it's relevant at all. Just because someone is passionate about software in general won't make him passionate about YOUR software. In fact, it might be the contrary, as the passion slot might be already taken by an open source project, for example...
Brann
+15  A: 

Read Peopleware by DeMarco and Lister.

Rob Spieldenner
+1; was going to recommend this myself if it hadn't been already. Basically it's premise is that people naturally want to be enthusiastic and engaged in their work. Your job is to remove the obstacles which are stopping it happening and then GET OUT OF THEIR WAY. From this point of view your question isn't how to create an enthusiastic team, it's how to remove the factors which are preventing one from forming naturally.
timday
You really ought to elaborate a bit on the contents of Peopleware. Everyone else who posted an answer here should probably read Peopleware. This is in fact the only answer here so far (out of 22) that is even close to right.
T.E.D.
@timday- Right. There is an awful lot in there about things one can do to encourage a team to "gell" though. That's the info I think Brett is looking for.
T.E.D.
Peopleware is very good. There are other books, like Weinburg's (sp?) "Psychology of Computer Programming", that are well worth reading.
David Thornley
+2  A: 

Although I agree that it is not easy (or even possible) to create passion about programming, I think it is possible to keep passionate developers enthusiastic about their work. Even the most passionate programmer developer can become disillusioned if placed in a stagnant work environment.

So what can be done?

  • Provide plenty of opportunity for personal development, give lots of freedom to learn new things. Let the developers have some choice in the courses they take, and the conferences they wish to attend.
  • Toys - Not in the traditional sense, but being able to use the latest technologies
  • Provide a nice place to work. It doesn't have to be Google, but it does have to be somewhere you would want to spend time.
  • Of course money helps. Not in the sense that a company can pay for enthusiastic staff, but people need to feel suitable rewarded for their efforts.

I have found working in an organisation that has embraced agile development has many of the correct qualities for building enthusiastic teams.

jheppinstall
+2  A: 

Read "Dynamics of Software Development" by Jim McCarthy. Seriously, nearly the entire book deals with this and related issues.

Quinn Taylor
+4  A: 

Just to be precise, is the question "I have a team of developers, and I want to make those specific developers enthusiastic about software development", or simply "I want a team of enthusiastic software developers"? In the latter case, simply don't hire people who aren't enthusiastic.

In the former case, you're pretty much screwed. It's hard to change someone's personality so much that they start to care about something they didn't really take an interest in before. Of course it can be done, but let's face it. How many here have been unable to convince their better half that programming is interesting? For that matter, how many people have failed to adopt their girlfriend's enthusiasm for shopping, or shoes? ;)

Convincing people to share your interest and enthusiasm for something is hard work.

Unless you're willing to set aside a few years of your life for getting into the head of each individual developer, getting to know them and what makes them tick, and gradually push and prod them towards taking an interest in something that they previously simply considered a job, you're probably better off letting them go and hiring people who are motivated to begin with.

jalf
+4  A: 

In Weinbergesqe fashion:

You've asked the wrong question. The right question is "What are the things that managers do that dispirit developers and reduce moral?" Then don't tolerate those things in your environment.

And oh by the way, you should already know the answer to that question. If you don't find another job.

HandyGandy
+1  A: 

A management team that knows computers and can hold their own in a technical conversation is a very helpful feature. Don't try to sell passionate developers on hype, tends and buzzwords.

Matthew Whited
+4  A: 

Give them interesting problems.

Give them the means to solve those problems.

Minimize the amount of crap they have to deal with that isn't directly related to solving those problems.

Reward them for successfully solving those problems. Don't underestimate the value of a sincere pat on the back from the guy who signs your paychecks.

Give them a stake in the larger venture -- beyond the next paycheck.

And when they suggest a new problem they think is worth solving, listen.

BlairHippo
+2  A: 

If they're fundamentally unenthusiastic about software development, there's nothing you can do.

If they're enthusiastic, that's great, and you need to avoid squelching that. There are some excellent recommendations elsewhere in these answers.

If they used to be enthusiastic, and have had that beaten out of them, you are likely to get good results by giving them reasonable challenges, shielding them from bad management, and in general treating them like valuable and respected people.

David Thornley
+3  A: 

Hookers and blow?

Eric H.
NOW you're thinking.
temp2290
+2  A: 

If you have a room full of capable developers, what can be done to encourage those developers to become excited and enthusiastic about software and software development

The correct question is actually "What can be done to encourage those developers to become excited and enthusiastic about software and software development in our company".

It's quite simple actually. The answer has never been a secret. It's just nobody listens to it.

Very simply elements:

  • Let those enthusiastic developers work among other passionate people. Remove those who don't care from the team. Otherwise they will act like diseased cells proliferating apathy and depression to the other team members.

  • Aspire to develop a quality and professional product

  • Establish a professional and effective process

  • Trust and respect people. Value their knowledge. Respect their opinions. Actually, it's part of a bigger strategy: let your developers be able to make a difference and let them see they can really influence and change things.

  • Let them grow professionally and let them see this growth is appreciated and needed by you

Now what doesn't help at all.

  • Pay them badly. Developers are also humans (for the most part) and they also have their bills to pay.

  • Reject their initiatives, proposals and improvement suggestions. Tell them each time they come up with something that their attempt to introduce change make them a foreign und unwelcome element in the company.

  • Have low quality product and have no interest to make it better. Hacks, copy/paste code, accumulating technical debts, things falling apart after each release, that does not motivate developers.

  • Have badly run development and chaotic process. Tasks, projects and small decisions taking a new vector every few days will finally remove desire to be involved from anybody. Failing schedules because of unpredicted work load and feature set, they all go down the road. It will suffice to run out of coffee some day for some of them to start moving elsewhere.

  • Have a boring and uninteresting social environment. Developers having nobody to talk to to share their interests will finally feel dull. Not everyone is interested in taxes, football and kindergarten issues as the only topics on social gatherings.

Developer Art
+1  A: 
skyflyer
+1  A: 

Dan Pink notes 3 things that motivate people if there is creativity required in a job. RSA Animate - Drive: The surprising truth about what motivates us is a 10 minute video about these but here are the 3 things:

Autonomy - Give the team control over the schedule and empower them to own their work.

Mastery - How well are they developing their craft of building excellent software.

Purpose - Why are they making this software? What massive benefit will it have?

A few other sources on this stuff:

JB King