The Perfect Development Environment

A friend of mine recently asked, what would be the ideal dream job/work scenario.  I started thinking about it and created this list (Which I’ll be pointing him to).  I thought it would be an entertaining post, so here are the things I came up with.  Please comment with ideas and notions of what would make your dream job/work scenario.

  • 30-45 minutes a day for blogging & getting the days thoughts together.
  • 1-1 1/2 hour lunch with a proper 45 minute to hour long siesta afterwards.  Returning to work for the home run stretch.
  • Pair development Agile style.  Switching on and off, with stories and the like.  Maybe experiment with the flexible nature of the development style of different developers.  Change pairs at least daily.  Work on reasonable daily work scopes, don’t let the work lag day to day by assigning tasks to large to complete in a pair session.
  • Downtown PDX Location or otherwise a town center location (Beaverton, Hillsboro, tigard, Gresham?? maybe not Gresham, Hawthorne, Belmont, Mississippi Ave, Alberta, etc).  It adds dramatically to the vitality and creativeness of the developers and their respective solutions.
  • Friday telecommute for the morning and bulk of the day.  Then meet up for beer/food/beverage of choice day.  Meet about 3 or 4pm or whenever happy hour starts at a designated place that the team chooses.
  • Assure everyone has a fairly decent laptop.  Not a desktop, there should be no reason to chain someone to a desk for development.  I’ve seen it happen and the laptop allows for a much more relaxed and conducive work tool.  Sometime of course, someone might prefer a desktop, someone might even need an extra hardware kick – which are perfectly good examples.  But a laptop should still be available too.
  • The team needs to all be in the top % of their respective income brackets.  If they aren’t, the disparity, when learned or guessed or figured out – which always seems to happen, pushes people out of teams, increases turnover, and causes all types of animosity.  Especially when the market is good and there are all those other upper bracket percentages available.
  • The team needs to be social enough to pull off an effective Agile process, and it helps a huge amount if the team actually gets along on activities outside of work.  Most people that are developers today don’t have too much of an issue with this, especially once everyone gets to know each other and the pair programming kicks in.

That’s just some ideas.  So what else would ya’ll out there in the world have for ideas?  Beer on Friday, Playstation 3, X-Box 360, foosball table, Olympic swimming pool, jet planes, rocket ships, moon landings?   …whoops, got a little carried away.

12 thoughts on “The Perfect Development Environment

  1. I’m not a programmer, but I know what my perfect office is like.

    Fully integrated green building with rooftop garden, local restaurants and food, probably in the inner eastside industrial district.  Involves a bike commute.

    Get to work at 9, gather thoughts, catch up on email, plan out day.

    10: make plans/meetings/etc.  Go to meetings, etc.

    11:30-12:30 or 13:00: lunch break (may be later because get in at 9)

    13-15:00: power through some data analysis.  Write reports.  Go to site visits or whatever.  Make more plans.
    15:00-17:00: Emails and figure stuff out.

    17:00-18:00: Sort things out, leave if caught up.

    Happy hour with friends/colleagues.  Still sort of working.  Keep up on what others are doing, how I can help.  

    19:00 Networking meetings/dinner

    20, 21:00: go home.  Clean up house a bit.

    22:00: go out to a club and hang out with friends until about 1:00.

    1:30-8:00 sleep.

  2. Recovering Christians only.  No faith based computing.  No religious nuts of anykind.  Political diversity, yes.  Theological?  No.  

  3. I would like a napping room with lots of comfy pillows and blankets to take cat naps and regain my focus around 3pm.

  4. I like most of it except for the pair development part…I realize you tried to make it sound pretty flexible, but it still sounds like a great way of undoing all the team building you mention in the rest of the post.

  5. Awwww, come on.  Pair programming is great…

    ok, so maybe not all the time, but on a semi-frequent basis it really allows the team to share “elite” skills.  Otherwise they tend to stick to the strong and the not so strong tend to get bogged down.

    …and one does want everyone to be as strong as possible on a team.  🙂

    …A Naughty Mouse – what is a recovering Christian?
    btw – “thedr9wningman” – I dig that day.  Not bad really.

    A 9am start time is a fairly good start time.  The only problem is that it seeps into the 5-6 pm departure hours, I’m of the mindset that if I come in at 9:00, I’ll probably be leaving at 6pm or later…   …which is a great way to avoid most of the 5pm hour rush too.
    oh the conflicts of a 24 hour time cycle.

  6. Must have complete blues/rock/metal band room with the following:

    Couple of Fender tube amps (HRD, Twins, 65 Deluxe Reverb, etc.)
    Marshall Stack
    Mesa Boogie Stack
    Ampeg Bass Amp
    A few decent electric and acoustic guitars
    A couple of decent bass guitars
    A nice rock drum kit
    Decent live mixer
    Mics, stands, monitors, etc.
    …and no rules. Play whenever.

    That’s how I get away from the code and revitalize my mind!

  7. Oh oh oh… for getting away and mind revitalization we need to have a drum set w/ a bass setup too!  🙂

  8. The time for blogging/catching up on tech news or getting thoughts together for the day should be required. I believe everyone should set time aside during the day to accomplish all of this. I find that those that do take the time to do this continue to come up with new ideas on how to accomplish tasks and show a passion for their work that won’t be found in those that don’t. Passion for what you do is what is going to separate you from the rest of the crowd.

    Anyone that has eaten a heavy lunch will tell you that they are pretty worthless for about an hour afterward. I would happily stay at work an extra hour if it meant I could get in a 30-60 minute power nap in after my lunch. This secret is what allows me to be more productive at home when I am able to telecommute.

    Pairing is an excellent idea but it only works when a company is willing to hire exceptional employees. If the company is looking to discount the salary they are offering they are going to get two types of employees. Cheap labor that is not prepared or desperate employees that have some sort of malfunction. There is a reason they are taking a position for that amount of money and it isn’t because they are independently wealthy and just want to help out. Companies should be looking for individuals that are what I call "Force Multipliers". These are people that add more to the team than just a static number.

    I believe most companies haven’t embraced telecommuting as much simply because they feel they will lose control over their employees. I feel that if they hired top tier talent they wouldn’t need to worry about this. Telecommuting allows people to spend more time with their family and loved ones. It shows that the company cares about the employee and it’s family and the employee will, hopefully, reciprocate.

    Why companies don’t make laptops and VPN mandatory is beyond me. It seems like it would be in their best interest to allow employees the ability to work whenever and wherever they are. I can’t begin to tell you the times that an idea has occurred to me while I was at home and I couldn’t get in to work to begin working on it. Writing it down on paper then trying to recall as much of your thought process as possible the next day just doesn’t cut it.

    Salaries are tied directly to the type of person you are going to find. If you are paying 30k a year for a senior developer you are not going to get a top quality individual. The other issue that companies need to be aware of is hiring pro-actively and not reactively. I often find that a company will only begin looking at candidates when a position must be filled and they don’t give themselves the time to find a great candidate. They are then left to find the better of two evils.

    If you don’t respect each other or like each other enough to spend anytime after work then you aren’t really a team.

  9. For being anti-social that sure is a positively team oriented comment.  🙂

    I dig it though, very good and valid points.

    Oh I almost forgot one myself. Everyone ought to have a nice 5-15 minute SCRUM/Stand Up/Quick meeting in the morning to kick off that 30-45 minute blog reading and ramping up for the day session.

    A quick meeting of all the key devs on a team would help in a major way. But the content of the stand up must stay along the lines of the SCRUM/Team topics of the day’s work.

  10. I like your ideas, you hit the nail right on the head with all of those.  Overall I would love to actually FEEL that the company I work for actually cares about their employees by keeping morale high and providing a fun and creative environment.  Yes, that means beer Fridays, video game systems, foosball tables, ping pong tables, morale events (gasp!), nice communal/social areas, free caffeinated bevs (coffee, tea, soda, et al).  Anyone remember those days?  Having begun my career in this industry in the silicon valley (pre-dotcom bust) I sure do. <sniffle>

  11. Color me crazy guys, but all I need for surroundings is a desk (with chair), a lamp (not too bright), and at least one PC (possibly 2).

  12. Come on eatsleepcode, there has got to be something that would make you at least feel more productive right?

    Like free caffeine drinks, mini-cooper races in the afternoon.  Something crazy like that right?

Comments are closed.