Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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


migrated from Sep 9 '11 at 13:40

This question came from our site for professional and enthusiast programmers.

locked by Yannis Mar 13 '12 at 20:30

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

"what be creative", I was going to edit that, but I have no idea whet you were going for there. – James McMahon Apr 27 '09 at 18:58
Shouldn't this be tagged subjective? I'd personally do away with "perks". What purpose would a "perks" tag have? – Daniel C. Sobral Jul 15 '09 at 11:32
Why would this be tagged subjective? There are techniques that work and some that don't backed by research and measured against strict criteria. That's objective. – Anthony Mastrean May 17 '10 at 18:38
This is about PROGRAMMERS, not PROGRAMMING. Thus, off-topic altogether. – bmargulies May 30 '10 at 22:14

137 Answers 137

Quality headphones. Music always helps...


In my humble oppinion the following is good incentive for new programmers:

  • Mentorship from a senior programmer.
  • Games and fun team building event activities
  • Promote training and certification
  • Good software tools and hardware

In a few words, I'd say room for growth.

I'm not the great hacker that most of the people on this site probably are (at least the ones with over 10k rep - I have yet to successfully answer a question after being here for a year). So for me, when I was starting out, I knew that college was, effectively, nothing. And I needed to do all my learning in the real world. Sure I got my CS degree, but I was way behind all the other CS majors because I didn't play with computers when I was young. I had hardly ANY experience with FILE SYSTEMS, for God's sake, before I got to college.

So, how do you create room for growth? To me, I think you have to create a professional, fun, AND academic environment. Professional meaning the usual things you read about in a business-type book (respect, clear expectations, blah blah).

Fun meaning, aside from games, putting together a group of people who can sit in a room together and just shoot the breeze and be mostly laughing.

Academic meaning an environment where everyone is a student and everyone is a teacher. This is probably the most difficult to foster in my opinion for any number of reasons.


Fast computer (not like mine)

more than 1 big monitors (not like mine)


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! :-)


Natural Light.

(it says my answer is too short!)


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.


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

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 :)


One of these would get me interested:

alt text

  • 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
  • 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.

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%.


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.


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.


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.


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


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

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

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!)

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 Nov 21 '08 at 8:05
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 Jan 28 '09 at 17:14

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

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.

We only have 15 employees, and we have tested the beer on nearly all of them. – Peter Hilton Feb 2 '09 at 23:29
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 Apr 2 '09 at 0:14
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 Apr 27 '09 at 18:20

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.

  • 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.


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.


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


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.


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.

Scripture in StackOverflow? I'm impressed! +1 – MrValdez Jan 25 '09 at 1:18
Romanian proverb : Ce tie nu-ti place, altuia nu-i face (What you don't like don't do to another) – Andrei Rinea Feb 2 '09 at 1:05
Golden Rule: Do unto others as you would have others do unto you. – Sixty4Bit Jul 9 '09 at 23:40
  • 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.

  • 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.


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.


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.