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
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
- 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
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.
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.
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.
An office kitchen
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.
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
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.
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
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.
Merit based rewards are important; Developers generally despise politics and people being rewarded or promoted over someone who has done better work.
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.
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.
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
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
not much process but newbies might not be knowledgeable enough to appreciate it. (Your blog could help there)
Some flexibility with regards to buying things.
TP add ons. Amazon books, technical magazine subscriptions.
They made me more comfortable and feel more valued.
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.
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 :)
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!
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 :)
Educate them. Give them the opportunity to work on their skill set.
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...
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.
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,
- 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.
- Definitely a good working environment like equipment, chairs and desk.
- Give them the freedom to work "above their role". Credit them for thinking out of the box and encourage them when they don't.
- Set goals and make sure you measure them. Fresh graduates and young programmers usually have trouble (mostly) setting and realising objectives.
- Don't make Rules and Regulations up "just because"
flex time 2 monitors good chair. allow headphones and an xbox360 in the break room.
- Private office
- Casual dress code
- Free coffee
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?
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.
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 working environment, competitive compensation, and the ability to do research and development.