views:

13433

answers:

135

I intend on hiring 2-3 junior programmers right out of college. Aside from cash, what is the most important perk for a young programmer? Is it games at work? I want to be creative... I want some good ideas

+2  A: 

I think having good challenges and learning opportunities is critical. That's true when you're above the junior level too.

nsanders
+138  A: 

The opportunity to work alongside experienced programmers.

schwerwolf
Having a good mentor is *very* important for jr developers.
Forgotten Semicolon
+1 Definitely - I wouldn't say it's just important for jr devs either. I find it invaluable being able to bounce ideas off other experienced programmers - even of the same callibre. Even if it's just so they can tell me I'm being retarded.
BenAlabaster
+1 - This is useful for getting a feel for the environment. How do other developers work here so that I can fit in well?
JB King
+3  A: 

I personally like the office my company gave me.

MagicKat
What do you like about it?
Autobyte
It gives me my own personal space. If I don't want to be disturbed, I can easily just shut the door. And most important I can see people enter my office, rather then have them sneak up behind me (which I personally hate)
MagicKat
Offices might isolate the new people especially since they already start out without knowing anyone.
Anton
I disagree. The fact that we have an open door policy, and that we go to lunch as a group encourages us to talk and get to know one another
MagicKat
+118  A: 

I always love going to conferences and training and consider that a perk. Not all companies pay to have their devs continue to learn. There's always more to learn. You benefit because they are learning more. They benefit from that too, but also have fun and get away from things for a couple of days and get to mingle with other devs.

Ryan Farley
To be honest, I consider it more of a right.
TraumaPony
You're both right, and I could not agree more with either of you.
John Dunagan
+24  A: 

be flexible about the starting hour.

Aaron
I can't count the amount of clients that have complained at me that I don't get in early enough when I stroll in at 10am instead of 7:30am like other departments. Why don't they understand that programmers are nocturnal?
BenAlabaster
Yeah, this is priceless for me. I can avoid the rush hour commute, which on London's tube system is quite painful, especially in summer.
JeeBee
Another vote from me, as with JeeBee this is very useful for working in London but it does rely on a certain amount of trust.
ChrisCM
I cannot upvote this enough..
Andrei Rinea
+65  A: 

Two flat-screen monitors, an optical mouse -- two things I don't currently have -- and each their own whiteboard with a few markers.

moffdub
You're using a ball mouse? What is this? 1998?
shoosh
Jeff Atwood suggests that a keyboard and mouse are basic tools you should own yourself: http://www.codinghorror.com/blog/archives/000666.html (see point three)
Aydsman
Yes Aydsman, it would be nice if they provided me with an optical mouse, but I should probably bring my own. But, I did bring in my own whiteboard markers. :)
moffdub
yeah all workplace lack of whiteboard.
pmlarocque
I brought in my own mouse because the supplied one only had two buttons and a wheel. I cant believe youre using a ball!
Karl
My workplace had the crappy ball-mouse that dell ships. I honestly thought laser mouses were cheaper to manufacture, but I guess I was wrong. Either that, or Dell is masochistic. I don't mind purchasing a mouse, so I bought one at Fry's
FryGuy
two is no wheres near enough, 4 minimum
Greg Dean
I can not work with 2 monitors, hurts my neck always looking left, right, left, right. I use virtual desktops (Linux).
pi
+1 I wish I had a whiteboard, I've got a cordless laser mouse which is great - even if it is my own.
BenAlabaster
Yeah, the whiteboard in my office is completely filled with notes and tasks I need to complete. Very useful.
KyleFarris
+1 for whiteboards
My Alter Ego
Well integrated virtual desktops on a 24" (or 30") monitor (Linux, Mac OS X) beat dual monitors of a slightly smaller size and no virtual desktop (Windows). I am only ever looking at one monitor at a time, it's just that switching applications in Windows sucks, and XP at work isn't getting upgraded soon.
JeeBee
+1 for the whiteboard suggestion. This is especially useful if you're doing things that face users like UI.
Alex
Our agile coach told us about GE and Apple, who went one step further and painted ALL the walls in the dev space with whiteboard paint!
whybird
+7  A: 

Flexible Schedule

Good PTO Program

Fun & Exciting Technology/Toys

Relaxed Work Atmosphere


A great idea would be to let all your devs design their own workspaces. Different people need different environments to be productive.

theo
+8  A: 

The opportunity to work alongside experienced programmers.

And also the possibility of learn from them.

Lucas S.
Doesn't one imply the other?
phjr
Could refine this as 'experienced programmers who are able and prepared to share that experience'.
Jonathan Webb
@phjr : Not necessarily. In a good world one would imply the other but sometimes the seniors keep the knowledge all to themselves..
Andrei Rinea
+48  A: 

Philip Greenspun wrote about this once. He suggested making the office a better place to be than home, which is easier for young programmers. For example, domestic hardware that someone living alone cannot justify: expensive coffee machine, pool table, huge TV with DVDs to watch.

Make the office more sociable: put beer in the fridge and have a drink together at the end of the day. Provide better food (easy for people who can't cook): get deli deliveries or a caterer.

Peter Hilton
Are you sure beer is safe for any employee? I mean I won't drink my mind and do nasty stuff but how about lil' Joe that you not even know?
Andrei Rinea
We only have 15 employees, and we have tested the beer on nearly all of them.
Peter Hilton
Not being able to justify an expensive coffee machine is a case of flawed priorities.
Arafangion
Isn't beer an insurance liability? I'm from the UK originally, so I'll drink at any opportunity. I can't believe it's frowned upon over here in North America to have a beer over lunch. +1 for the beer!
BenAlabaster
My team meets for a beer (regular or root) in the office once or twice a week for the past eight years, usually for a half hour to an hour. It's always the leaf nodes in the organization - mostly dev and test - and while it's totally informal and relaxed we get a lot of problems hashed out. It helps the new people get comfortable with us. Somebody just has to take the corporate amex card to costco once a month to restock the fridge, and it is well worth it.
fatcat1111
We've got a pub next door to the office, for those after-work beers. Oddly enough people prefer to go home to their partners, playstations and comfy sofas still!
JeeBee
JeeBee - that's because pubs need sofas too - http://hilton.org.uk/why_sofas.phtml
Peter Hilton
Here in Australia almost every company supplies beer (among other drinks) for free after 4pm on a Friday, common in Japan too.
Matthew Lock
Oh the joys of continental Europe - any excuse for an aperitif 8) Makes the whole week better when you can have a few drinks and a laugh with your colleagues.
Reuben Mallaby
+19  A: 

Good hardware: I'd be very interested if I was told that I would get a desktop system (WinXP is still my system of choice) and a Linux server box. Something I have root on and can run services on (local at a minimum, world visible would be nice.) A Virtual private server in the company data center instead of dedicated hardware would also work.

Another thing that would be nice would be access to good references: "We will buy you any books that are apropos to your job!" same with software to some point, "if it's under $60, we will just get it."

Edit: large screenS on pivot stands, good chairs, white boards, etc.

BCS
You can use Virtual Box or similar for running a test server system. This gives you the option to have lots of differently-configured (in terms of software) test systems, but only need one physical system.
rjmunro
The XP box is because I like the XP GUI (and lots of XP GUI apps) and the linux box because I like the *nux command line and environment. I'd go for a VM slice as long as it's big enough to do real processing on (like run my own MySQL server on).
BCS
clarification; nether the Linux nor the XP box would be a test system. They would *both* be dev systems.
BCS
+10  A: 

The access to training and mentors. The things that Junior developers want is pretty much what every programmer that I know wants. They want to work in a relaxed and flexible environment with people who are at least as smart as them if not smarter. They want to feel like they are a part of something. They want to constantly be learning.

Make sure that you have a training/book budget. Make sure that they are always learning and always have something interesting to work on. Make sure that you do team building or some kind of thing like that on a fairly regular bases. Lunch and learns are an increasingly popular tool these days.

One thing that Junior Developers might like more than more Senior developers is the use of cutting edge or even bleeding edge technology. Be careful about this one, cause it can byte you in the butt, but it always helps.

Charles Graham
+77  A: 
  • Give them each a budget and let them configure their own computer setup. Make them submit a plan for what they intend to purchase. Talk over the plan with them. It will be a great way to kick things off.

  • Give them a budget for a cell phone and unlimited plan that the company will pay for.

  • Pay for their home Internet service.

Little things like these they will show their friends to the response of, "Cool - I wish my company did that!"

shadit
Too bad I never convinced anyone to go for point one.... ;-)
Bob Cross
Cell phone is pointless if they don't have t ouse it for the job. But work @ home privileges with internet paid would be nice.
pmlarocque
I don't want Internet paid for. Then they could claim everything I did anywhere on the Internet was company property. Screw that.
jmucchiello
I also wouldn't want a company to pay for my internet access. They might feel like they have a right to decide what company/plan I subscribe to, and what I can do with it.
Joshua Carmody
+1 - I used to get my internet paid for by one employer many moons ago. Now my static IP costs me a fortune. In this economy I'd never get my employer to go for it...
BenAlabaster
Some people see the downside to anything... I think paying for home internet service is one of the coolest ideas ever. If my company did that, I wold probably tell everyone I met.
Daniel Straight
Just pay me more and let me choose. Then I can decide the provider and services I want as well as not risk the company trying to claim rights to code I wrote on my own hardware, at home, on my own time.
Matthew Whited
+13  A: 

Treat them as peers

brian
I cant stand the "well hes just a level one" comments. If my ideas are wrong or dont work tell me why and educate me, dont belittle me
Adam Lerman
+1  A: 

One nice perq we have here (beyond training, great environment, and the rest) is subsidized gym membership.

Danimal
+39  A: 

give them responsibilities and some degree of freedom.

make them feel like they are developing something for themselves, with passion

ugasoft
I second this, some feeling of excitement and getting personal benefit from the work goes a long way towards keeping new people within the company.
jjrv
+51  A: 

Being able to work remotely + flexible hours, Tech books give-a-way, and lots of love!

MarlonRibunal
Ditto on the Books
BCS
Ditto on working remotely, but you need to make sure they are "in it".. Prob after a 6-12 month probation period perhaps? I REALLY wish I could work from home, I actually get a lot more done.
Rob Cooper
+1 for the books, I love my books. I probably spend more on books than on my utility bills...
BenAlabaster
@balabaster Books are training materials. So it's a win-win if companies give them away to employees :-)
MarlonRibunal
Books? What century are you living in?
tsilb
@tsilb I don't really get your comment. You may probably want to paraphrase it ;-)
MarlonRibunal
It's 21st century, Doctor. The age of information.
frbry
+20  A: 

Lets them, on company time, do some private projects (things that could be useful for the company, but things they get to pick)

BCS
I write software all the time that assists me to get my job done rather than directly writing the actual apps... is this what you're talking about? For instance, I'm frequently asked to do things that would take me hours if I didn't spend time automating it.
BenAlabaster
No, I'm thinking of "hobby" projects.
BCS
Google does this IIRC
Alex Bagnolini
+1  A: 

The Joel Test has some good ideas, although you might not consider them "perks".

Michael Myers
+26  A: 

I'm currently slightly experienced but I still call myself junior. Here is what I appreciate of my employer:

  • Buys me books. I have a diverse taste from C# to perl to C to Asm to database design to tsql etc. Book prices vary from $20 to $50. This usually requires a PO and approval and such.
  • Allows me to critique current projects. I've re-written a few project to be MUCH cleaner through the experience I gain. Each time I document why I made those changes. Every now and then I re-write my re-writes. It's amazing to see how much you change. I do this one on my own. I initiated it.
  • A fast computer and a 24" monitor. This actually helps a lot, but for any developer. Less frustration and more code on the screen. Monitor also rotates for those kinds of days.
Nazadus
I think 24" monitors are waste unless you have to edit large images; for development work its more cost-effective to get lots of cheap 19" monitors. I have 4x19"s in portrait mode, gives me a 4096x1280 desktop.
Matt Howells
I'm not sure if you are right Matt because you will end up buying more or more expensive video cards as a result.
minty
Why have multiple monitors when you can just have one huge one with multiple windows on it. Editing large images? I can fit 3 browser windows on my monitor... Or 2 browsers and a text editor. Or... more commonly. A terminal, a browser, a text editor and an email client.
thenduks
I have to admit, even though I have 3 x 19" monitors on my desk which I love, my last client gave me 2 x 30" monitors. I do miss being able to have my solution explorer, properties window and toolbox windows open and still be able to read my code without having to scroll right...
BenAlabaster
Totally agree. Editing code on a vertically tilted monitor is addictive, even though weird at first.
Andrei Taranchenko
+6  A: 

There are a number of things that come to mind, and not even for junior people.

  • Training packages for use with conferences, certifications, or something similar. Showing a dedication to future growth in the field
  • Provide flexiable starting times especially to those just getting out of college and not used to working a "day job"
  • if In an environment where they must work from home, help them out a bit there, subsidize internet service, and/or company cell phone. If you must have access to them, giving them a way to do it helps.
Mitchel Sellers
+489  A: 

In my experience, good programmers want to program with as few distractions as possible. Some of these are more relevant to big companies, and I'm not sure where you work, but here are some examples:

  • Casual dress code: Young programmers in particular will have a tough time avoiding resentment of a strict dress code. "I'm just going to sit at my desk all day--why do I need to wear slacks/polos/other uncomfortable business clothes?" In my opinion, this is half rebellion and half honest productivity-seeking: It really is much easier to program in jeans and a t-shirt than slacks and a formal button-down. The question you probably need to ask yourself is if the potential productivity gain and morale boost is worth the potential loss of "professional" atmosphere. It all depends on your situation... there are startups and Fortune 500 companies out there which allow jeans & t-shirts.
  • Few meetings: Almost nothing is more distracting than a constant stream of meetings. Try to avoid team-wide "status meetings" that could be carried out via individual e-mails or conversations. Programmers like it when their employer lets them program.
  • Experienced coworkers: Good programmers want to improve. If any of your other employees have contributed to big open source projects, or have worked individually on some particularly successful internal projects, let your prospectives know!
  • Private offices: This is rarely practical anywhere but venture-capitalized startups, but if you can offer candidates their own offices, they'll leave the interview with hearts in their eyes. Programming is so much easier when you aren't distracted by foot traffic and people singing happy-birthday one cube over.
  • Cool stuff: If you can afford it, subsidize games for lunch breaks and post-work hang out sessions.
  • Best practices: This will ensnare good programmers and intimidate less experienced ones: Show that your candidates will be working with reliable, sane version control, and that there are coding standards about unit tests or inheritance or anything. Organization is important.
  • Don't nickel-and-dime: If you can be flexible with hours, do it! No one likes having to clock out every time they go to the restroom; it feels like you're not being valued as an employee.
  • Dual monitors: Instant win for almost any programmer who's worked with dual monitors before.
Max
+1 for that. I started in my current job a year ago straight out of University. It ticks all those boxes except the "Private Offices" one, and that's actually my biggest gripe; open plan offices are really distracting! Oh, and give them plenty of opportunities for further training.
alastairs
The job I got just 6 months after graduating ticks every box but private offices, too. I was really worried about getting a crappy tech job, but I've been blessed with a pretty good one. Lucky!
Max
Most of these points generally go down well with experienced programmers too.
Dan Harper - Leopard CRM
I'd say mentoring would be right up there, though that goes with the experienced programmers bit.
Daemin
Yeah man - you hit it right on the mark.
A good PC, ideally with fast hard disks. No point having them watching a spinning cursor and letting their attention wander. For a small cost you'll be keeping them working without them even knowing you did it! Besides, most of us like shiny new toys!
Ray Hayes
A good PC makes a big difference. Nobody likes to work with only 1GB of RAM... :(
apandit
VC funded start-ups are the worst in terms of individual offices. The typical mode of operation is to cram as many programmers as they can hire into one room, and let them fight it out.
hoyhoy
Brad Wilson
Disagree with private offices. I work in a dev pod with 8 developers in an open concept and I love it! I love the freedom to turn just ask and be asked as we go instead of emailing or getting up.
singpolyma
+1 Excellent list. The best things are perhaps "Experienced Coworkers" and "Casual Dress Code". I would know, I fell for at least 3 positions for just those reasons. Man I miss wearing jeans to work everyday and free lunch Tuesday's!
Abyss Knight
+1 for dual monitors
alex
+1 for casual dress code
Tanmoy
I can think of a time where I would've +1'd a comment for dual monitors, but I have 3 on my desk and I struggle with only 2 now...
BenAlabaster
I must have been really lucky with my first job right out of university. I got every single one of those perks plus a quad-core PC. I'm a web developer, why do I need a quad-core PC? Who cares...? Good benefits were also important to me. I've been out of college for 8 months.
KyleFarris
+1 on all but the dual-wielding-monitors. I used to have 2 24" widescreen monitors, + a 15" laptop screen. I've found its much more productive to have one large (30") display instead; that big line between the displays bothered me :).
Elliot Kroo
I'm only finished my first year of University and after a couple of months working at a job where I've had 2 widescreen monitors plus a 3rd hooked up to a laptop, I really can't work with 1 screen anymore. It's just a lot easier to do stuff when you can have your code in one screen and have your results + Error logs etc. in another.
Sector Corrupt
+1 for dual screens. Even better three screens. Good quality too and at least 22".
Cruachan
An awesome machine to drive the dual monitors.
Mark Thalman
You only need one screen to look at SO
Egg
Definitely the "few meetings" thing. Two jobs ago I worked at the meetingest company I'd ever seen; people seemed to think that meetings counted as work. Knowing your programmers' status is important, so (a) give them an easy way to update it, and (b) don't EVER punish them for it. If people are going slowly, see if they need help or have questions; don't make them stay late to finish, and don't berate them, whether publicly or privately. If we programmers get punished for giving an honest status, what we learn is not to be honest anymore.
Kyralessa
+1 for dress code as well and dual monitors! And no clock in/out BS! Great list :) I'm glad I could come into work with flip flops, a Hawaiian t-shirt and a blue Mohawk if I wanted too ;)
Leon
I don't agree with the few meetings point. Too many pointless meetings are a pain, but I've worked at a company that existed on the minimum possible number of meetings. These we're mainly ad-hock, and it just didn't work. Regular team meetings are important in my opinion.
UpTheCreek
+33  A: 

Work from home. (for voting)

pdavis
+34  A: 

Casual dress (for voting)

pdavis
+31  A: 

Private offices (for voting)

pdavis
for voting make it community please
John Nolan
downvote: good development needs teamwork. Private offices counter teamwork. Hell, even tall cube partitions counter teamwork.
slim
Developers need to communicate their work. Should sit together not privately. Downvoted for that reason.
Hace
You can communicate even if you're in different rooms.
Sasha
I find that an office full of developers is great, but being one of just a couple of developers in an office full of other random people is a constantly distracting pain in the a$$. So +1 for private offices, and +1 for open plan offices dedicated to developers. -1 for general open plan offices.
BenAlabaster
@slim: Disagree. You can collaborate via umpteen desktop sharing and conferencing tools. Add video if you really want to. Devs only benefit from proximity when working on the same work unit; and are often tasked to things too small for two people, so they become a distraction.
tsilb
Being able to turn around to chat to another developer is priceless, and you can see if they're busy and not disturb them. I think large team offices are better (3 - 5 people per room). Open plan offices do suck, too much noise from too many people.
JeeBee
+5  A: 

Good hardware (for voting)

pdavis
As mentioned above community please
John Nolan
+4  A: 

The chance to devote time to learning. Give them the chance to spend longer than expected for a task so that they can pore through books and search across the net to learn the best way to do things. Give them O'Reilly books. Encourage them to spend time reading them. Encourage them to make connections online and become familiar with sites such as this one where they can learn the habit of trying to program well instead of trying to program just to get done.

Yes, that's a perk. For them as well as for you. :)

skiphoppy
+150  A: 
CrashCodes
What's wrong with Brawndo? It's got what plants crave.
toast
Yeah, but not a soda fountain with a price tag on it, for crying out loud!
skiphoppy
ELECTROLYTES!!!!!
Jeff Atwood
Great point on Admin rights - would have never thought of that! Nothing more crippling than not being able to install productivity tools...
agartzke
Yes...Admin rights... its like...water...we need admin rights... and a local login... heck...we want a toolset if we ever have to rip our desktops/laptops apart...
anbanm
Admin rights. It's got what developers crave.
Ryan Thames
I looked into a postmix machine for our developers once. It was expensive and required regular cleaning; you needed to be mixing thousands of drinks per week to justify the cost. :-( No sale.
Oddthinking
Free Coke might seem like a good perk - but it's not doing your staff any favours in the health department. Healthy brains are more productive brains!
slim
admin rights - this seems so basic that I'd question the sense of companies that deny it - I'd assume that either the staff was mostly incompetent or that the management was paranoid - But this is like demanding that chairs be clean - if you've got to ask for this you've got bigger problems.
Steve B.
+1 good internet connection
I'd agree with free *healthy* drinks, like orange juice, and a selection of herbal teas, but not easily accessible junk.
Andrei Taranchenko
I once worked at a place with free fountain sodas, candy, and granola bars. I'm not sure they were sending the right message. Sugar lows and weight gain don't help, either.
spoulson
Bah, free drinks is great. If the health nuts don't want soda, nobody's making them drink it.
tsilb
@Andrei: Orange Juice is basically Coke with vitamins. The only healthy drink is water.
Bartek Tatkowski
Admin rights are essential. I didn't have admin rights on my desktop for the last two months but it was largely a moot point since when I needed them, I had root access to a netbook (.. though this meant I was running apache off a netbook.. sort of slowed down my CGI), but my work gave me access to Sudo the second I mentioned it anyway..
Sector Corrupt
Why a soda fountain? Just find out what drinks they like and buy cans. They're easily recyclable, and a decent amount to drink, and people can choose diet or sugary sodas as they like. Also buy some of those 12-can holders where you put lukewarm sodas at the top and get chilled ones from the bottom.
Kyralessa
@toast: Now with more MOLECULES!
DR
A: 

I won't claim this is the most important perk, but I know of a company that has season tickets to all the local sports teams, and employees can use the tickets for free on a rotating basis. It's pretty popular.

Jeff Miller
+18  A: 

Actually, Joel Spolsky has a really good article on this subject that I refer to from time to time:

Joel on Attracting Developers

EDIT: I read Joel's book on hiring devs, Smart and Gets Things Done. In the book, he says that this article is an embarassing bubble-era relic and he has learned a lot since then. I don't think the blog post is all bad, but it's true that the book is a lot more sophisticated.

Brian MacKay
you didn't notice most of this advice so far stems directly from Joel's blog?
Mark Lubin
It needed saying, though. Asked and answered, if you will.
John Dunagan
+10  A: 

My company has purchased an O'Reilly Safari Online account for each of our developers. I have access to thousands of books online at any time.

We also have training videos available at online from CBT Nuggets but I find their content limited.

Also, some productivity tools, for Visual Studio, such as CodeRush/Refactor Pro or Resharper

Quality Coffee in-house.

benPearce
+2  A: 

When I was just starting out, I benefited greatly from the mentoring of others in the office. It helped a lot, and I viewed it as a serious perk -- I was often quoted as, "I'm getting paid to learn!"

There are all the trivialities (games in the office, DVDs, etc.) -- I think that while they make for a great interview carrot, they're not a reason said programmers will stay. Indeed, once their work ramps up, they'll probably realize they have little time for those "perks" and wonder why the company even bothers.

As a junior, learning from someone who respects you, is able to teach you and is able to lead you is very enticing long-term. It may not have the interview sex appeal that the others do, but it's something I think all serious developers did appreciate (or would have appreciated, if they didn't get it).

Sponsor a corporate-wide subscription to Safari. Allow a junior dev to take 2 or 3 hours a day learning. Make him feel valued. Let him contribute.

Which is another biggie: Make him feel like part of the team, and give him projects which not only interest him, but also challenge him. Too often, the junior dev gets the jobs like "move control X to the lower right corner," or "write all the property routines" (or getters/setters in Java/Obj-C/et al), or "add javascript validation." Give him something to do which makes him feel useful, like a real contributor. He'll appreciate that, too -- and probably become more passionate about your firm and your practices.

(BTW, my use of "him" is not meant to be sexist; it's just a shorthand. Please expand it to "him/her" mentally.)

John Rudy
+4  A: 

Good project management - with minimal BS and meetings under control

Good technical mentoring

Book reimbursement, resources, tools

And I take issue with the "aside from cash"

I think cash isn't really ranked up that high unless the environment is so poor - that's why they call it compensation.

Cade Roux
When a developer tells me they dont want "just cash", it makes me worry. You can not pay your bills with thank-you's, trophies, hand-shakes, days off, and pats on the back. Last I checked, my grocery, utility company, water company and mortgage company only accepted money. ;) Cash is king.
Optimal Solutions
Cash is important, but ultimately, they will leave a crappy environment, regardless of cash. Most surveys show it is not in the top requirements for job satisfaction.
Cade Roux
+23  A: 

Invite your whole team to the restaurant of their choice every Friday for lunch. A former boss of mine used to do just that and it really helped team bonding.

If budget doesn't allow it, you can do it once every two weeks or once a month. But think of the value of having closer team members.

Gilles
We doe Thursday at my work.
BCS
Then you're missing the very catchy name "free food friday" :)
Gilles
Twelve o'clock Tuesday Tasty Tacos 'n Team Talk?
Zack Peterson
@Gilles "Free food fursday" works
Matthew Lock
+1  A: 

In addition to what has been said, make sure you have them work on stuff that has impact on the business. If they feel that you value their work as a core part of your business, they might become much more engaged in their projects. If they do, that's the kind of developers you want full time.

AlanR
+3  A: 

Speaking as an actual college student (senior), here's some things I'd like:

A degree of direction (tell me what you need done)

A degree of autonomy (trust me to get it done)

I'm probably unusual among my peers in that I prefer professionalism. As a general rule of thumb, I think casual dress would be very helpful, though it wouldn't be a huge issue for me personally.

But really, the big thing is trust, and letting me do what you're paying me to do. If I think I'm going to be stuck attending constant meetings and always worrying about office politics, that's a big strike against you. Competence is also very important... I don't know if I could work for a manager who knew nothing about programming. I understand that it's entirely likely a great manager might not even be as good a programmer as I am, but they should at least know enough to know what's feasible and what's not.

Oh, and probably the biggest thing for me: Long term prospects. I hate job hunting, and I'd tolerate an otherwise-mildly intolerable job if I knew that I wasn't likely to be laid off, out-sourced, etc.

Asmor
+12  A: 
  • Casual dress code and office environment
  • Flexible hours
  • Allow listening to music while working (earphones allowed)
  • Multi-monitor/powerful workstations
  • Skilled/experienced co-workers/bosses
  • Code reviews done by those co-workers/bosses
  • Being able to work on creative projects that they come up with, and having them reviewed by those skilled co-workers/bosses (Most valuable perk!)
Brian Kim
What? There are places that *don't* allow listening to music? Woah.
Ted Percival
Oh yes, there sure are. Spent 3 days in one, never again!
pzycoman
Ouch, 3 days without my music... if someone had said "no music/headphones to me", I'd have been out the door. You hire me for my talent, education, insight etc. As long as I'm meeting/beating my goals/objectives/deadlines/budgets, how I get there is not up for debate.
BenAlabaster
That's indeed shocking. What company was that? There should be a blacklist.
+2  A: 

Casual dress code Free pop (This was one that I really liked back in the dot-com days and miss it sooo much) Flextime and telecommuting Configure there own machine w/dual monitors and a budget Benefits like health care, dental and vision - Some of us like being able to get a discount on glasses or having our teeth checked.

I would also suggest making sure there is a clear process for how work will be done as junior programmers may not necessarily be aware of all the best practices and what kind of environment you want to give them.

JB King
+1  A: 

I'm a new programmer myself. Things I found useful at my last internship are dual monitors (or a really wide one, good to look up things AND look at code at the same time), admin rights on my own box, flexible hours (really important one, put me at ease not having to worry about emergencies/appointments/talking to manager for those and the like). I also loved how my manager/supervisor would never look over my shoulder...feels easier to code that way. Also, our tools server had some free and tested (for our particular environment) programs like folder diff, tool to view method signatures in assemblies, etc. They help everyone but are especially handy to new developers.

origin
+1  A: 

Experience with experienced programmers. Games, free food, free massages, are just gimmicks (cough google cough)

alvin
+23  A: 

I'm surprised the cynics amongst us haven't said 'non brain-dead leadership'!

Attracting young people with toys is a bit patronising, better to say:

"Yeah so we could offer you lots of new shiny toys, but how about we guarantee you no PHBs instead?"

;-)

Dipak Patel
Does 'non brain-dead leadership' actually exist?? :-)
Jonathan Webb
Yeah. Let's keep this realistic! :)
Zack Peterson
If you actually tell them at the interview that you don't have brain dead leadership, they'd probably not believe you - if they do they're insufficiently cyncical to survive and you don't want them ;) Better to demonstrate your quality leadership by not having stupid policies like dress codes.
Mark Baker
Attracting programmers with toys might be patronizing, but when you've got all the toys sitting on your desk, who cares? :P
BenAlabaster
+6  A: 

Give them the choice of tools as far as possible. I know it's not always possible, but I guess there is nothing more demotivating than forcing a Linux guy to use Windows, a MAC Guy to use Windows, or a Windows Guy to use Linux.

Of course that's not always possible, but also what about favourite email clients? Some love thunderbird, others outlook and others mutt.

Yaba
A: 

An office kitchen

A: 

Adjustable-height desks, I bet they are very nice. Sometimes I would love to write code while standing. I took the idea from here: http://www.joelonsoftware.com/items/2008/09/10.html

However a cool and comfortable chair will rock also. Something puffy or fancy, like those chairs that look like a hand. So I can stand for a while, then sit if I get tired and so on.

Gastoni
+1  A: 

The best equipment:

  • chair
  • monitors
  • modern workstation (e.g., nothing older than 2 years)
  • ergonomic keyboard

Matching 401k (the higher the match, the better)

Good mentoring.

Freedom to pursue creative outlets related to work projects (i.e., 20% time).

Update: after reading other answers, I think I'd also say:

  • private office
  • individual book/training budget
  • HDHP with the amount of the deductible given at the beginning of the year in the form of an HSA
Ben Collins
A: 

Casual dress is huge. I work for a large corporation (150K+ employees). When I started we were allowed casual dress and now are not. That is one main reason I am out looking again a year out of college

Adam Lerman
A: 

Well, remembering back to my days of interviewing for that first big job:

1) Actually hiring me!

Sorry... bad at interviews I guess.

Big favorites for me are a flexible work schedule and casual dress code.

Telos
+4  A: 

There were lots of good suggestions already. I did a quick search on the all the response I can't find these so I'm including these 1. Good health insurance coverage from the employer. 2. Paid time off. it really helps to re-boost employees.

Prache
+6  A: 
Marcel Tjandraatmadja
Agreeing with the not own office. More appropriate when you've got people reporting to you.
Swati
A: 

Budget for Books / Mount a library

Good desktop tower with lots of RAM and a fast hard drive

Check what you will demand because that is what the programmer will care about

setatakahashi
+1  A: 

A decent manager, good training, and good motivation would be nice. In all of my past jobs, the training sucked, the managers didn't care, and they ended up "motivating" me right into a new job.

Treat your employees well, and the perks will matter less. (But free food never hurts, either :))

Scott S.
A: 

Definately flexible working hours and lots of training/conferences. Free drinks and video games just seems too trivial.

This may seem a bit contentious but in my first programming job I really struggled for the first month because I had no money. Commuting, even just paying for lunch was a problem and it just made life harder. I couldn't enjoy the job. So maybe a small short-term loan to paid back over the next few months out of the pay-packet might help. Or maybe a one month agreement to pay expenses on production of tickets/receipts.

lewis
+1  A: 

One thing that would be very appealing is if an employer offered to sponsor one non-work interest for each employee. This could be something simple, like paying for karate classes or offering a small scholarship for those who are taking night classes for a graduate degree. I think that contributing to making an employee a more well-rounded person will actually pay dividends for the employer in the end.

Team outings are fun, help bring people together and act as much-needed breaks when projects get intense. Offering even bi-monthly events could be a nice incentive.

Evgeny
A: 

Merit based rewards are important; Developers generally despise politics and people being rewarded or promoted over someone who has done better work.

BrewinBombers
+13  A: 

This is a sort of negative answer.

Don't give the office more entertainment than home. No TV, video games or beer. The office is for work and that is why I go to the office. I go home for video games and TV.

Don't bother with team outings. It's not relaxing. It's just more work. If I wanted to go somewhere to have fun, I'd go there with my own family or friends. Or I would stay home and sleep late. No doubt some people believe everyone else in the office wants to be friends and spend all their time hanging out. It isn't true. Sorry.

The same is true about company meals. I like to go out and away from the office for lunch and dinner. If there is a lunch meeting at the office, I will be making plans to leave work an hour early (with exceptions for crunch time, which had better not last more than a month or two out of each year.)

Zan Lynx
Its not negative.
Optimal Solutions
Yeah, this answer is very good. :|
Andrei Rinea
You didn't go as far as saying a certain level of smart dress is better than totally casual and scruffy, as it's a mental reminder that you're not at home dozing on the sofa. But yes, +1 for injecting some reality.
JeeBee
Agree with you on organised team-outings, I find those draining. But having good amenities at work (even if it's just a decent kitchen/lounge are with no games) does provide a better environment for you to at least get to know your co-workers a bit better.
Esti
Schedule outings that are manditory. Those are fun: i.e. whitewater rafting
monksy
A: 

We have a ping-pong table.

But mostly you want to find out what their co-ops and internships didn't get them that they wanted, and give them that. I didn't like big companies because I wanted a real voice in the way things were done. I've been with my small company since undergrad.

Kevin Conner
A: 

Lunches out - on the company, of course...with beers. After work beers on Fridays. Beer is the key.

Ty
A: 

Give junior developers what they need to be productive on their tasks, within the bounds of company policy of course, then if possible, grant them what they want, in order to be even more productive. Though this is relative to individual tastes, just reading from the comments above is a good starting point.

+6  A: 

I think the biggest perk for a new programmer is when they first join the company they have a plan and know exactly what there career "road map" is.

When I first started my current job I was given some interesting work right from the start and I knew exactly what was expected of me. Other fresh graduates were left to school themselves up which ultimately helped them to loose interest in the work completely.

Other gimmicks like a big screen etc are great but they don't make a boring job any better!

waquin
+1  A: 

A chance to be part of a successful team.

Bart
+3  A: 

Working with people who can explain why they do things the way they do.

Bart
+1  A: 

interesting work. When I started programming many years ago, you got lumped with the crap work as no one else wanted to do it.

Aaron Arbery
+166  A: 
minty
My company had a building constructed recently. We moved in several months ago. One of the features was smaller cubicals. I didn't mind too much because they gave me one of these chairs.
CrashCodes
I need a better chair...
Brian Kim
Has anyone out there noticed how it's next to impossible to crack off a silent one when sitting on an Aeron?
ConcernedOfTunbridgeWells
@NXC, it's ok, nothing matters when you're sitting in an Aeron.. that's one part of my job I'm looking forward to when I go home for winter break.
dancavallaro
@NXC: +1 dietary fiber.
John Dunagan
I have one of these chairs at home, and it was worth every penny. (Which is a good thing, because it cost about 100,000 pennies.)
Kyralessa
Never tried those... Seems one would want padding...
tsilb
That's the exact chair I have :D It's very comfortable.
Alex
One more extremely happy aeron owner here :)
Ali
I find that I slide down those chairs and next thing I know my shoulder blades are resting on the seat. The fabric is really slick.
Cj Anderson
@Alex - looks exactly like my chair as well !!! extremely comfortable and adjustable in many ways ! love it
Scott Vercuski
My exact chair, i just googled Aeron, good god these are expensive, there must be several million pounds worth of Aeron where i work, :O
Paul Creasey
Agree a good chair is important, but man, Aerons are completely overpriced and overated.
UpTheCreek
A good chair is vital for health. Maybe it doesn't need to be an Aeron, but a bad chair will put you in pain and destroy your life. It's also quite possible that an employer not providing a decent chair would face future lawsuits for harming their workers.
Donal Fellows
Aren't arm rests bad for ergonomics, because they don't allow you to sit close to your desk? Assuming you can afford a desk once you've bought the chair ...
Andrew Grimm
+2  A: 

Don't throw them in with the general population. Give them a place with some degree of privacy, where they can concentrate and not be constantly distracted by phones, business conversations and foot traffic.

Try to give them specified projects with finite, tangible requirements. Give them goals to achieve, instead of open-ended projects that leave them at the mercy of business types who refuse to ever commit to a specification.

Have and enforce a change request policy. Have and enforce a clearly defined chain of command that requests have to flow through.

Make sure they have more experienced programmers to aspire to and seek advice from.

I would take these things over foosball tables and free soda any day.

Jerry
A: 

Hey, well, I'm still in university, so I guess I might be qualified to answer! I can tell you what would attract me personally to a job, but I can't really speak in general terms. For me, the most important thing is interesting work. I don't want to maintain a 40 year-old accounting system. I do want to do something challenging and fun. Maybe that's a bit much to ask for, but I would expect others to ask for it as well. I think this leads a lot of programmers into the game development industry, and apparently they get burned out there, so that's not cool-- but that doesn't mean other development can't be fun. It would depend, obviously, on the person involved. I'd love to do things like image manipulation and simulations (and, yes, game development), but I haven't gone deep into other areas. The number one pulling me into a job would really be the "fun" aspect-- cheap things like a dedicated wii room and comfortable clothes do help, but neither will make me want to take a job fixing the remaining y2k bugs, or whatever else needs doing.

Devin Jeanpierre
+68  A: 

The type of people you'd like to hire tends to be a first-order concern when deciding what sort of perks to offer. For the programmer who's thinking about or in the process of raising a family, paternity leave, company matching of adoption funds up to $X/year, flexible vacation and working hours, and a sense of job security may be much more attractive than a soda machine and free Segways for all. You mention that you're looking for "junior" or "young" programmers, but many young folks do still fall into this category.

I sense, however, that by "young", you might mean "too young to be into that whole 'work-life balance' thing". Let's call this 'The Google Strategy'. The idea here is to make it so it just doesn't make sense to their analytical minds to ever leave work. Have on-site services like free food, drink, and laundry, provide gathering places for informal conversations. Make them feel like they're the rock stars of the company, and they'll repay you with long hours and hard work. The good news for you is that these types of perks don't cost you much at all relative to the increased hours they'll be willing to put in. The bad news is that this model tends not to be sustainable, and this dot-com era "irrational exuberance" no longer satisfies your programmers when they start to want to take vacations, get married and go on a long honeymoon, have kids, and so forth. At that point, they want flexibility, more vacation time, a 401k, etc. Besides the first one, these all cost significant coin.

Here's the most important point though: if you'd like to hire the absolute brightest people you can find, don't try to outsmart them. Odds are, the really sharp ones will be a little less interested in the size of the Free Red Bull Fridge and the number of air hockey tables at their disposal, than whether you'll value them as an asset to the company and as an individual (both in terms of compensation and employer/employee relations in general), whether you have a sustainable business model/plan, whether your work really excites them, and whether your work really excites you. I'd suggest reading a couple essays on Joel On Software, he treats the subject of hiring good programmers in a fair amount of detail ("Smart, and Gets Things Done", I think, is the name of one of the essays).

While your question certainly isn't without merit, and providing a work environment with some of the same perks as your competitors will make your sales pitch somewhat easier, the only people that will be truly swayed by these kinds of things are not the people you want the success of your small company to depend on. Good developers want to feel like they're making a contribution to something that matters, like their skills are valued and put to good use, like they are responsible to their peers and to themselves. Focus on having a truly great, dynamic company that does great work, and that treats its technical people with respect (things like private offices help here, too), and you'll really attract the type of people you're looking for.

(Thanks to Thomas Kammeyer for a tip on the last paragraph!)

Matt J
@Matt J - this is spot on. The me generation mentality of "what can you give me because I deserve it" really needs to go away. Those of the me generation that you describe in your last paragraph will the successful ones in the long term.
Metro Smurf
Paternity leave? Not all programmers are male, young or otherwise.
kajaco
You're absolutely right. However, for what I consider to be at least a slight majority at this time (unfortunately), it's a nontraditional benefit worth looking into. I advocate treating people of any gender, race, age, etc. equitably, and this is one way to do that.
Matt J
This is the best answer I've seen here... one thing possibly to add: making them feel as if they are making a definite, positive contribution to the work that's got everyone so excited. People don't want to feel important so much as needed. Lean into intrinsic motivators.
Thomas Kammeyer
Actually, Joel expanded the *Smart, and Gets Things Done* essay into an entire book: http://www.amazon.com/Smart-Gets-Things-Done-Technical/dp/1590598385/
John C
+2  A: 

I am a recent graduate. In my opinion, the most appealing perk for me is having an interesting project to work on. I don't want to be writing simple in-house enterprise applications all day. This may be someone else's idea of fun. However, it is not mine.

cdv
+2  A: 

Smart people and cool projects would attract the best programmers. IMO, if you rely only on monetary incentives, you'll most likely attract the wrong crowd.

Ingrid
+1  A: 
  • Freedom to make mistakes and learn

  • Knowledgable and tolerant team members

  • Great hardware and a single widescreen monitor

A: 

cool project

atleast one good / cool guy in the team they can learn from - say you have Linus or stallman coming in once a while - the entire college would be running behind you for getting hired

no dress code

flexible timings

powerful laptop + paid home access

good food and snacks

a good blog that talks about your company like what Joel does to fill his outfit with smart grads

trainings

not much process but newbies might not be knowledgeable enough to appreciate it. (Your blog could help there)

A: 

Some flexibility with regards to buying things.

TP add ons. Amazon books, technical magazine subscriptions.

They made me more comfortable and feel more valued.

Pace
A: 

Software and hardware for personal use. Like a nice notebook computer packed with development and productivity tools that you can use for both work related projects and personal projects.

Bill
A: 

only two things:
1) they must realise that they know nothing
2) they should listen to what more experienced people say and try to improve themselves
how simple :)

Neverrav
+18  A: 

Programmers need vacation. Lots of it. Four weeks a year to start. Minimum.

Dana
In Norway most programmers have 5, and some even 6 weeks. 4 is the minimum required by law.
Espo
In Australia, 4 weeks is the minumum. After 10 years (!) you get 13 weeks 'long service' leave - paid.
CAD bloke
Sweden you usually have 5 weeks and paid overtime or 6 weeks and no paid overtime
superwiren
Similar in Germany
DR
4 weeks - 20 days, that's the bare minimum required by law in the UK (bank holidays are extra, so 28 days of holiday for a 5 day week). Most professionals get more holidays - 25 days + bank holidays is typical, 30 days quite common once you've got experience. The productivity benefits are high, with well rested, non-resentful employees.
JeeBee
This is the #1 thing I hate about being an American. :( Companies here think they're insanely generous if they give you three weeks.
Kyralessa
@Kyraleesa I hear that. I used to work at a place that gave you 2 and acted like you were lazy if you used it all. They wouldn't roll it over to the following year, and they would even have 'blackout' dates in november and december because they knew IN ADVANCE that they would mismanage things to the point of being way behind. I'm constantly tempted to move to Europe.
LoveMeSomeCode
+1  A: 

The best perks for new programmers are too offensive to most people.

px
A: 

WHen I was a young programmer right out of school (its been a while now) the thing that I lucked into were 1) Open Internet connection, no blocked sites except the nasty stuff 2) The ability to advance 3) Challenging work 4) Good hardware, it sucks when the build takes 2 hrs 5) A beer fridge (hard to maintain as the organization grows) 6) great Senior Developers 7) Flexible working hours

As these things became less of a priority at the company I was at, I left too!

WACM161
+2  A: 

The option to install whatever software you need to get the job done. Notepad++, Pownce or whatever.

A: 

My own cool job that is at an Insurance investment company came with the following perks: fully stocked kitchen with soda, coffee, snacks. beer for afterhours, srsly! 'Free lunch fridays' where the entire company has lunch brought in (we have about 30 people). triple 19' flatscreen monitors for development. Large screen HD TVs a good pay and casual work environemnt works well too :)

SomeMiscGuy
+1  A: 

Here's something: Don't leave them in the dark when they are just starting. They will be very uncomfortable if they have no direction when they start. Make sure they have very, very clearly defined tasks with measurable deliverables. When I first started, I was throw into a mess of a product with no direction and told to fix bugs that made absolutely no sense to me. Find somewhere appropriate for them to work and make sure you give them what they need to contribute positively. Otherwise you're just going to have a bunch of college kids surfing the web on your dime.

unforgiven3
A: 

Educate them. Give them the opportunity to work on their skill set.

A: 

Free fruit

Dynite
+21  A: 

A career path. Not that they necessarily have to follow it, but give them the thought that they don't have to be a junior forever, and show them that there are opportunities in the company. Give them an idea of what it takes to advance.

Dana
Its very motivating to have examples of the kind of developer you want to become, and some guidance/structure on how to get there.
Nader Shirazie
Wouldn't attract a starting junior; they tend to consider *having* a job at all to be their career path. OTOH, for anyone after their first job, career path is definitely the big attractor (or they'll be someone that you can't retain anyway.)
Donal Fellows
A: 

I started about 3 1/2 years ago.

I was hired at the first place that interviewed me which I was thrilled about. It was a great first job because we got to use bleeding edge technology.

Problem was, my manager was rather disrespectful. I don't know why but it made me leave the company after a 1 1/2 year. I know my manager's manager wasn't too happy with my [ex-]manager. I had hoped to work there longer...

Regards, Frank

Frank V
A: 

I have graduated 3 years age and I remember how I felt when I was looking for a job.

First, thing that I remember after reading many job postings, is the realization of how little I knew about specific technologies and understanding that I would have to do a lot of learning to become successful in the field. So I applied for positions where they emphasized regular training.

Other thing, that I remember is being worried about being put in a position where I don't get to do much programming. I wanted a position that would have the least amount of repetitive task, because if I am not "creating" I am bored.

Things like private offices, corporate culture and even the pay did not concern me as much. It was my first real job, after having to work everywhere just to keep my tank and stomach full during college, so I basically had little understanding how it works. In fact dress code was the least of my concern; I actually wore tie/slacks to interview, orientation and first 3-4 days of work. In fact I thought it would be nice to work in good clothes. (I guess I am more fashion aware, than most fellow programmers.) Now I wear khakis most of the time and like it.

As I said, this is how I felt when looking for my first job, so this is purely subjective.

xsaero00
+2  A: 

Training is by far the #1 thing. It was when I was starting out.

  • Company funding for books and/or conferences.
  • Time to work on projects that might not directly be a product but can help in advancing skills (and could possibly turn into a product).
  • Time with Senior level developers/mentors.
tidge
+4  A: 

Be flexible with office hours. If a programmer gets his best work done between 1:00pm and 10:00pm, or he has other classes or some other reason to need flexible hours, why force him to work 9:00-5:00? Naturally you may need programmers in the office at certain times for mentoring/training/code review/important meetings, etc. But most programmers appreciate flexibility where it can be found.

Joshua Carmody
A: 

I think instead of thinking of them as perks, they should be thought of as the norm.

In no order of preference, the top 5 for me would be,

  1. Either offer for free or help them with what excites and interests them related to work. For example, free conference passes, books, learning courses etc.
  2. Definitely a good working environment like equipment, chairs and desk.
  3. Give them the freedom to work "above their role". Credit them for thinking out of the box and encourage them when they don't.
  4. Set goals and make sure you measure them. Fresh graduates and young programmers usually have trouble (mostly) setting and realising objectives.
  5. Don't make Rules and Regulations up "just because"
Sarat
A: 

flex time 2 monitors good chair. allow headphones and an xbox360 in the break room.

DanWoolston
+35  A: 

A boss who would ask this question.

JohnMcG
+1  A: 

There is nothing like the company of an experienced fellow programmer guiding the new programmer. I am always thankful to my very first mentor when I entered into software development. (Thanks Chris!)

ragu.pattabi
A: 
  • Private office
  • Casual dress code
  • Free coffee
izokurew
+1  A: 

I would argue against private offices, I would promote more of an open office concept with "war rooms" so that the the newb's can quickly ask a more experienced person quickly & easily. But keep the rooms smaller, five or less people. Also, dual or triple monitors is a must.

Nathan Koop
A: 

casual dress

Nathan Koop
+2  A: 

Perks that I have liked:

1) a book budget to get technical books related and unrelated to the job

2) assigned mentor - someone more senior to help show me the ropes and tell me about the culture

3) pop/snack area with minimal (better is no cost) to staff

4) notebook,wifi and lounge where you can be more relaxed when you arent coding hard but still working on things like email. our company has 4 of them than you can pick up in the lounge and curl up on the couch and read mail etc during lunch or during an unwind time

5) budget for movie tickets, dinner out etc. to give to staff after they have done a grinder or delivered a key element on time - anything to make them feel special and remembered for hard work

MikeJ
+10  A: 

Perks?

  1. Mentors: Single greatest asset i was given. Someone who showed me the ropes, listened to me, took me aside when i messed up, explain why (not how) things were done. Someone who had knowledge of the product (not a HR/PR person), or could distill something in ten minutes or less. Sometimes new people are afraid to ask questions.

  2. Goals & Salary: When your programmers start, have them write down three goals they'd like to achieve in three months. They don't need to be "climb mount Everest", "write a compiler" type goals. But They must measurable. It's a great tool to find motivated people.

  3. Fitness Bonus Where i work, if you can accumulate 500+ km in one year biking to work, the company will write you a check for $500, just like that. It's great way to encourage this whole "being green" thing and helps relieve stress and saves money.

  4. The Best Tools Provide programmers with the best tools. I can't tell you how much resentment I felt was I was told that VS2003 was too expensive, but all the sales staff had blackberries. It made me feel undervalued and i eventually quit.

  5. Perk time Allow your coders 20% of there time to work on their own projects. It's a great way to spur ideas, and helps keep people motivated.

A: 

I suggest reading these excellent articles from "Joel on Software" blog:

http://www.joelonsoftware.com/articles/fog0000000043.html - 12 Steps to Better Code

http://www.joelonsoftware.com/articles/BionicOffice.html - Bionic Office

http://www.joelonsoftware.com/articles/fog0000000040.html - How do You Compensate Programmers?

http://www.joelonsoftware.com/articles/FindingGreatDevelopers.html - Finding Great Developers

There are more by Joel, very specific to office layout and working conditions for developers, anyone knows?

DV
A: 

Offices and fancy chairs are overrated. Responsibility, visibility and the opportunity to work on something cool and learn are critical to getting and retaining young developers to a non-established company. Fresh out of school, working on something impressive or world-changing was way more important than almost anything else.

Making work feel like college will help keep them in the office more hours, but it won't keep a young hot-shot developer working on dialog boxes for an internal insurance company application.

Also, money, lots of money, never hurts.

+4  A: 

In my opinion, the best perk a new programmer can have is a good mentor who is extremely knowledgeable and understanding.

Jeremy Cantrell
+1  A: 

Two words: Starting salary. It determines how much money you will make for the majority of your career.

Kevin Conner
"Aside from cash"
Daniel Daranas
+3  A: 

I think private offices are overated, especially for junior developers. OTH managers must understand that every time a developer is distracted by noise, people walking around them, or being in a huge bullpen or a sea of cheap cubes that it costs the firm money in the near term.

Good work areas, especially good chairs and monitors, make a huge difference.

Any kind of dress code beyond 'naughty bits must be covered' is insane when applied to developers. Having non-flexible work hours is insane when applied to developers. In general what is known in management theory as 'Taylorism' is a good way to drive away the best developers.

All developers, especially junior developers, appreciate formal training opportunities.

Jim In Texas
+1  A: 

Shower on the premises, so that employees can jog/cycle to work.

Alexander
A: 

As a college student hoping to enter the programming field I would really love to find a place that would offer me a chance to grow. So here is what I would love to see:

1) A great chair. I like supportive, comfortable chairs. However, nothing too comfortable like a La-z-boy chair.

2) A mentor or hero who could lend me advice when I need it, hugs and praise when I've earned it, and a gentle push when I am falling behind.

3) Food. Eating a proper meal and being as healthy as I can would be really nice if it fit into work.

4) Schwag. Company shirts, logos, bumper-stickers, etc.

Good luck.

Zee JollyRoger
your expectations are way too high. dream on, but soon you'll face the grim reality - 60 hours/week of cubicle life with office drones :/
DV
A: 

Good working environment, competitive compensation, and the ability to do research and development.

+1  A: 
  • Free coffee
  • Good nearby food
  • Well stacked library
daniel
A: 

Having worked at some &#!t jobs I have found that one of the nicest things is a training program. Just expecting somebody to pick up the job and be swimming in the first week can be exceptionally frustrating. If you set aside X amount of time and have them up to speed as to how things are done in the work place they feel a lot less out of place when they have to tackle the real issues.

A: 
  1. Trust, it might not sound like much but when your just starting out in the field the notion that you take them and their skills seriously, and are going to provide useful feedback can be enormously satisfying.

  2. Training & Certification is a huge plus, it can often make Jr. Programmers feel likes your investing in them. It also helps weed out folks that view programming more as a hobby or something they feel into as opposed to a career.

  3. I really liked the idea of building my own system on a budget above. Its an interesting idea and I think it would attract people, it certainly would me.

Paul Allaire
A: 

Lay out the metrics by which their work will be evaluated.

Then, let them know that they have time and geographical flexibility where they may opt to work from home several days a week (with prior approval of the lead programmer).

Bob Minteer
+7  A: 

Apart from the hard stuff like offices, tools, gear, food and snack I'd like to add something that makes me feel special:

Let your developers in on decisions!
If you're getting new tools for them, or moving or starting a new project or even hiring new people -let your developers in on those decisions. It's only fair you get a say in who your new coworker is or what the next big thing you are going to work for a few years on.

One way to do this is to conduct meetings in a round table fashion where you specifically ask every attending person for their opinion, not just let them speak up if they wish.

Niklas Winde
I wish I could up-vote this 1000 times... +1
BenAlabaster
A: 

Besides money, the greatest attraction for a new developer would be an experience that will allow him/her to build his career on strong footings. A developer can get this experience by working in an environment that will allow him to learn, improve, strive to achieve challenges, where 'quality' (of code, documents, etc) has some value, where best practices are followed, where people look for a better solution and most important point is - No internal politics.

Umer Azaz
+6  A: 

I can't get past the fact that new programmers should be paying us until they've learned enough to make themselves useful.

In medieval times, you had to beg and bribe your way into an apprenticeship at a guild, and then you had to haul firewood on your back for 30 years before the Master would even let you look at an anvil.

Overpaying junior programmers makes as much sense as small-market NBA teams drafting high school players. The money gives them an ego which blinds them to their lack of knowledge, and by the time they figure out how to be useful, they declare free agency and they're gone.

MusiGenesis
lol - I'm reporting you to the programmers union :P It's the union "entitlement" mentality, I've noticed this is getting worse over time.
BenAlabaster
+4  A: 

Being a college student who would go for job in a few short years, I'd say it's definitely

  • Casual dress code

    -- why does my dress matter when I can program good enough?

  • Mentoring -- some older, wiser programmers to guide you. I'd just have been out of college, used to having a professor around the corner or a TA to throw questions at.

  • Friendly/productive atmosphere

    -- I'd like to have people who will discuss codes after their job and not make me go to really stupid meetings that don't get things done.

  • Boss that understands programming

    -- I've been surrounded by all CS people who think in similar ways and understand me. I'd want to have a boss to be similar.

  • Gym/Fitness membership... -- It just helps to vent off pressue of programming..

  • Some resources to work on own projects

    -- I would want to do some of my own things, even after office hours if required.. I'd be glad to use to company resources.

  • Please please, root on my PC.. or admin

    -- I know what I do, please give me rights..

pvsnp
A: 

In any environment in which programmers don't maintain their own equipment and IT does, making sure that IT helps rather than hinders the programmer. Either a group of IT admins that support programmers as their main responsibility, or a dedicated admin for programmers.

Few things can be more frustrating than having to wait hours or days for simple tech tasks to be completed.

(Of course, it should go without saying that programmers must have root/local admin privileges on their own workstations.)

Another thing: make the day 1 setup for a new programmer a thorough thing. Not something where it takes a day to get their account set up, another day for e-mail to be created, etc. Ideally, everything is set up for them (and tested to work!) so they can then plunge in, start reading source code, start receiving training from their mentors, etc.

+1  A: 

Simply follow Jeff Atwood's (PBUH) Programmer's Bill of Rights and they will come.

It doesn't hurt to provide abundant caffeination infrastructure as well :)

pookleblinky
+3  A: 

These are all personal :-).

  1. Free coffee. I have solved countless problems while waiting for my coffee to finish, or even walking to the coffee vending machine.
  2. Laptops. I don't care about fancy dual monitor setups everyone keeps mentioning because I usually end up working on only one of them anyway. However, having a laptop and being able to work from any part of the company more valuable to me. I can just take my problem with me and it makes it easier for me do demonstrate what is going on to a college.
  3. Smoking area. I smoke, and although I don't smoke that much, it's really nice to actually spend five minutes somewhere else. The most interesting discussions I have with peers are usually while smoking.
  4. Open office. I don't like to sit in an office, by myself, for a prolonged length of time because it makes me feel like a machine. To me, interaction with peers is a huge motivation to go to work.
  5. Whiteboard and artistic people around. If there are any webdesigners, 3d modelers, sound guys or whatever type of artsy people you can find; put them in the same room as the programming / tech guys. This too makes the job seem less mechanical.
  6. No dress code. I'll quit the day someone will try to make me wear a suit. They honestly don't make me feel comfortable, besides that, I probably wouldn't fit in such a formal culture anyway. Besides that, I'm a pierced up coding 'goth' that delivers the best work when I don't have to worry about something other than code. That include clothing.
  7. Learning opportunity. Doesn't matter what, it could be seminars, peer reviews, book, 'research time', anything goes.
  8. If the job requires concurrent programming: a dual core machine at least.
  9. A stash of ritalin, lol.

I don't care about:

  1. Dual monitor setups. As stated previously; they distract me so, I tend to prefer widescreens.
  2. Fast hardware; it hard these days to actually get slow hardware these days.
  3. Gadgets.
  4. Free internet at home, or a cell phone. I already have those.
  5. The editor, IDE or OS I have to use as long as I can figure out how to work with it in an hour or two (it usually takes less time though).
  6. Huge paychecks. Give me a pleasant working environment where I'm happy to be for the biggest part of the week and I'm happier than when I have a huge pile of money stashed away at the bank. Use that cash to improve the office conditions.
  7. Game rooms, guitars, pooltables, foosball or airhockey tables et cetera.
Jasper Bekkers
A: 

Subscription to Safari Library Books Online. Unlimited access to all their books and those of partner publishers, never goes out of date, searchable, training videos, and notes you make are kept forever, even through subscription lapses.

By the way, not all fresh-out-of-college programmers are young, nor are they male. Most are, I grant; but not all. :)

kajaco
+1  A: 

Well, working on challenging and interesting projects, being respected and not being ignored (some junior developers are just forgotten in a corner of the office) can be better than throwing them games and gadgets.

egapotz
+1  A: 

I'm a current college student, graduating in about a year, and the only thing that matters is respect. Money, hours, aeron chairs, multiple moniters, admin rights to your own computer, private office, telecommuting rights, these all represent the same thing: the employer views you as a real employee. Clock ins, lowball offers, drug tests, cubicle farms, folding chairs, ect., these all represent the opposite: the employer views you as a stupid little kid.

The most intelligent and hardworking graduates are probably not as interested in the free soft drinks and game lounges as they are in the idea that they will be viewed as important contributors, both to your company and the field of software engineering at large.

Dylan White
A: 
  • Independence , and a feeling that their Inputs matter
  • Work From Home
  • Allow for Personal work at Office (initially there might be lot of wasteage of time , Slowly it will come down automatically)
  • Casual Dress code
  • Laptops and Not workstations
  • Creative projects
  • Allow them to Work on Other things not limited by Work Profile (Like a new programmer wold cherish the idea of having the liberty to directly interact with the Clients and Understand / Solve Problems)

All this would be grt for them , And would think twice before leaving as they would feel suck would place would not be available elsewhere.

Srikanth131
Laptops? Eugh..
UpTheCreek
+2  A: 
  • Gym Membership
  • Video Games
  • Dual Monitors
  • 4 weeks+ of vacation
  • Flexible starting hour
  • If no private office then noise cancelling headphones.

And MOST importantly other people their age to work with.

When you are 22-23 years old it is really hard to relate to your coworkers when they are all talking about their kids/families.

mc6688
Why was he downvoted?
+20  A: 

Matthew 7:12

Therefore all things whatsoever ye would that men should do to you, do ye even so to them: for this is the law and the prophets.

Mohammed

The most righteous of men is the one who is glad that men should have what is pleasing to himself, and who dislikes for them what is for him disagreeable

Confucius - Analects XV.24

Never impose on others what you would not choose for yourself.

WOPR
Scripture in StackOverflow? I'm impressed! +1
MrValdez
Romanian proverb : Ce tie nu-ti place, altuia nu-i face (What you don't like don't do to another)
Andrei Rinea
Golden Rule: Do unto others as you would have others do unto you.
Sixty4Bit
+1  A: 
  • bright colleagues
  • interesting challenges
  • flexitime
  • freedom to fail (if you never fail, you're not being challenged enough)
  • freedom to innovate (i.e. an organisation that doesn't stonewall ideas from juniors)
  • Google-style 20% time -- or something similar
  • the sense that attending conferences and education is encouraged, not merely allowed
  • casual dress code
  • dining facilities on site or very nearby

I would suggest that working from should not be the norm for junior hires - they need face to face contact in order to become part of the team. It's good if they have the facilities to work from in order to do out of hours work, or have occasional home days.

slim
+2  A: 

I just entered the job market and landed with a company where the hours (with the exception of occasional deadlines) are 9-5, 3 weeks vacation to start, and free lunch monday - thursday from different restaurants. This beat the other places that essentially said they would treat me like dirt and have me work long hours. The hours and benefits allow me to maintain a very healthy work/life balance, and this makes me more productive at work.

Oh yeah, and dual monitors rock.

Steve
Where do you work?
Simucal
Hi Simucal, I don't feel comfortable putting that down here. Is there someway to private message here?
Steve
It's okay to mention it. We won't tell anyone.
Don Branson
A: 

If I were to pick a few perks (as a junior developer) that would make me switch companies:

  • Games in the lunchroom, so you can play a bit during morning and afternoon breaks
  • Comfortable chair instead of "whatever the leasing company gives us"
  • Fridge stocked with beverages
  • Getting to order whatever programming books I need
  • Non-tolerance for incompetent developers
  • Company-sponsored team activities like paintball, lasertag, etc.
  • Getting to be around good developers my own age
  • Sponsored gym membership
  • Flexible starting hours
Stefan Thyberg
"Non-tolerance for incompetent developers"Not everyone is as good as the next guy. Being professional is about helping others and working as a team.
Dynite
A professional environment can't be maintained without... professionals. Some people are simply not meant for software development but manage to stay in the field anyway somehow. See www.thedailywtf.com for reference.
Stefan Thyberg
+1  A: 

Some of these have been mentioned before, while others seem to have been skipped over...

  • A bluetooth headset - preferably one that multi-pairs with my desk phone and my cell phone and lets me listen to music in stereo. Less is more, right? I don't want to have to keep switching headsets to answer different phones or listen to my music, and I definitely don't want to have to hold the receiver while I try and continue my daily work - and I don't want half a dozen gadgets cluttering up my desk, the fewer the better.
  • O'Reilly Subscription - I think this costs me $40 a month which I'd rather not pay for myself, but I refuse to live without it, so I do.
  • MSDN License - The one with all the nifty stuff like Expression Studio, Visual Studio Team Edition etc. This currently costs me a small fortune, it would be nice if it came as a perk of my job!
  • Software - Don't give me hassle about purchasing software that will make me more productive when I ask - XmlSpy, Icon Workshop, Resharper/CodeRush just buy it and bring it to me when it arrives, the small amount of $$$ it costs, by the time you've wasted a half hour of my time having me write up justification and you've wasted another 10 minutes reading it, we've just spent more than the cost of the software.
  • Flex Time/Telecommuting - If I arrive late, chances are I didn't leave until late last night, don't quiz me like a five year old where I was at 8:30 when everyone else arrived! Where were you and everyone else at 2am when I left?
  • Give me leeway to be myself. Putting my feet on my own desk is perfectly acceptable behaviour, as is listening to music, eating, having pop on my desk etc. As long as I'm not disturbing anyone else's workflow and I'm meeting all my deadlines/objectives, that's all that matters.
  • Home internet connection and VPN privileges - for those work from home days.
  • Time to think - without questioning what I'm doing "instead of working" - we're programmers, thinking is working, what's more, that's what you pay us for.
  • Bookshelf - for all my books
  • Books - to put on said bookshelf.
  • No micromanaging - I'm an adult, I don't need micromanaging! Give me a task and some kind of idea of the direction you want me to take and leave me to do what you hired me for. If you wanted to do the job yourself, be my guest I can always find something else to do. If I need help, I'll ask.
  • A forum for answering questions/learning
  • Training/Seminars/Further Education (i.e. Masters Degrees, PHd's etc)
  • Life Insurance Policy
  • Stock Options
  • RRSP/401K
  • Occasional Team Building Days - Sailing, War Games, Paintball, whatever you like

And if you wanted to throw in a couple of nice personal perks:

  • Gym Membership
  • Golf Club Membership
BenAlabaster
A: 

Free headphones (good around-the-ear phones from Sennheiser or even Bose, maybe even noise-canceling ones)!

A: 

Anything with caffene in it should be free. Coffee, lattee, candy bars, soda (especially Mountain Dew) etc.

Seriously though, ask anyone who has worked in a place like Microsoft where they have great break rooms close by and they will tell you that they can be a godsend when working late etc.

JonnyBoats
+1  A: 

casual dress will have to be up on the list for me.

i used to work for an employer who would on occasion stock our department mini fridge with caffine (in our senerio it was Mountain Dew).

the most important thing to me was chemistry. having coworkers that were intellegent enough to bounce ideas off of but social enough where we could invite each other to bar bq's.

finally, i think being comfortable. i think the casual dress is a small preface to this, however, good chairs, good screens, performing machines, lowest stress conditions possible. being a developer deadlines are already enough to stress out about.

Robert Sweeney
A: 

Substantial times of uninterrupted peace and quiet to get into that highly productive state of "flow" while programming. A noisy office drives productivity down at least 50%.

Jim Ferrans
+1  A: 
  • Quality chairs. A developer spends a lot of time during the day sitting. While a good quality adjustable chair may seem expensive, it's cheaper than having a developer miss work because their back is injured from sitting in an Office Depot $79 special.
  • In office catering. It doesn't have to be covered by the company, but having a secretary make a lunch run for the office is a great benefit. Not only does it enable the developer to work through their lunch, if they need/ want to, but it helps cut down on that time lost before lunch where everyone tries to coordinate about who's going where.
  • Dual monitors, or one large(30"+) high resolution widescreen format LCD. The productivity gain from having multiple monitors is amazing. Imagine a secretary having to work in an office with only a single file cabinet with just one drawer. That's what development on a single 17" 4:3 aspect ratio monitor is like.
  • Quiet. Even if you can't afford private offices for the developers, providing the developers with a space separate from marketing and people whose jobs are to talk to your customer base, or the sales team is very important to a developer. A developer has chosen to work with computers, and not people, because they are likely not an extrovert. Therefore, keeping them sheltered from the sales team's pep-talks and team building exercises will be very valuable. If you have to have a giant open floor plan for the entire business, look at getting some banners or sound dampening to hang from the ceiling.
  • Respect. Your developers are building the tools that your company uses to be more profitable. They may be making the software you sell, or the software that gives your company the advantage you need to be competitive, treat them with respect.
  • Books. Developers need knowledge like plants need water. If a developer isn't given an outlet to learn new techniques and practices, they will search for it themselves. Give your developers a quarterly library fund, or have a company library they can get books from, and request new books be added to. You can create an internal website which the developers can vote for new additions to the library with, and buy them once a quarter. A subscription to an online library resource like Safaribooks.com
  • A sense of being appreciated. You chose to hire these particular developers for a reason. Make them feel like they are special in some way. Have a quarterly/ monthly guest speaker, as you can afford it. If you can't afford a guest speaker, send some of them to conferences and workshops. Rotate your developers through conferences, so that everyone has the opportunity to go.
  • Managers who understand what is involved in developing software. Developing software is not the same thing as digging a ditch or laying bricks. A developer will not spend 8/8 hours writing code. Plenty of time will be spent on research, whether requirements gathering/ clarification, or on the right approach to solve a particular problem. In physical engineering, prototypes and stepwise refinement are part of the iterative development of a product. The same is true in software. Just because the final check-in for a task is only a few text files, doesn't mean that the developer didn't spend a lot of effort refining that feature or bug fix.
  • Guidance. As a recent college grad, your new developers are going to need someone who's been around to guide them to the correct technologies and practices to use to increase their value, both for the company and for themselves.
hasalottajava
+4  A: 
Chris S
A: 

To add to the list: snacks, and not sugar stuff, but actual energy food, fruits, oats, cheese, salad, sandwiches. May be a pain to set up, but if I had that, I'd be spending more time at work :)

Eugene
A: 

From my perspective the most important thing the job has to enable the employee is the personal growth. Find time to discuss about work and if possible provide them a mentor.

Beside this:

  • flexible schedule
  • drink
  • food
  • pleasant working environment
niko
A: 

Help them to research all the time in the research interest's of technology leading corporations and new technologies to help them acquire a good knowledge about breakthroughs, discoveries, new tools, etc, and be more creative about their work, just don't make them feel like they don't learn innovative stuff in their environment. Also give them the liberty to finish their programming tasks without restricting them to sit for 8 hours in front of a computer every day. Lockheed Martin gives their employees the liberty to work any time they want if they complete their 40 hours a week.

KJP
A: 

Natural Light.

(it says my answer is too short!)

sixtyfootersdude
A: 

Scott Adams, who talent was not so much just being funny as being seriously insightful and making us laugh about it, named the OA4 concept. He suggested that companies truly serious about their employees would be OA4 Companies and throw their employees Out At 4pm.

I'm into my 13th year of professional programming now, finally working for myself, doing only what I want with exactly the tools I choose, and getting OA4 is almost impossible. OA2am is currently more like it. But the truth of all-nighters and suchlike 'dedication', (and I pulled a 24 hour special only last week for a client deadline), is that it's just like credit card spending; sooner or later you have to pay it back.

The reward isn't in the perks, it's in the job. Help people do their job well - not compulsively, obsessively, heroically or with guilt. I'm not a better person for busting a gut whatever my feelings suggest; I'm a better person for starting at the same time every day; finishing at the same time every afternoon; and getting plenty of breaks away from the desk. Sometimes you do good work; sometimes you don't. If you follow a healthy routine, you'll do more good work more often. A good company as Adams suggests, would be one that encourages us to be better people.

Hey, anyone want to write some Cocoa with me? I'll let you Out At 4pm! :-)

Lachlan Scott
A: 

Fast computer (not like mine)

more than 1 big monitors (not like mine)

Kai Wang