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
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.
Read more about locked posts here.
migrated from stackoverflow.com Sep 9 '11 at 13:40
This question came from our site for professional and enthusiast programmers.
The option to install whatever software you need to get the job done. Notepad++, Pownce or whatever.
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
Shower on the premises, so that employees can jog/cycle to work.
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.
- 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.
One nice perq we have here (beyond training, great environment, and the rest) is subsidized gym membership.
The Joel Test has some good ideas, although you might not consider them "perks".
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.
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.
Experience with experienced programmers. Games, free food, free massages, are just gimmicks (cough google cough)
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 :))
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.
Lunches out - on the company, of course...with beers. After work beers on Fridays. Beer is the key.
A chance to be part of a successful team.
interesting work. When I started programming many years ago, you got lumped with the crap work as no one else wanted to do it.
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.
Freedom to make mistakes and learn
Knowledgable and tolerant team members
Great hardware and a single widescreen monitor
The best perks for new programmers are too offensive to most people.
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.
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!)
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.
Two words: Starting salary. It determines how much money you will make for the majority of your career.
- Free coffee
- Good nearby food
- Well stacked library
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.
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 :)
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.
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.
- 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.
- bright colleagues
- interesting challenges
- 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.
The best equipment:
- modern workstation (e.g., nothing older than 2 years)
- ergonomic keyboard
Matching 401k (the higher the match, the better)
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