The perfect software project

What do you love about how software development is done where you are?  What do you hate, and how would you improve it?

Suppose you could work on the perfect software project.  What would it look like?

What’s the ideal hardware, tools, processes, people, skill set, office, etc., for you?

Here’s some ideas:

  • people who can show they know how to do things simply

  • a variety of snacks available 24/7, including healthy stuff

  • outsource every non-software activity I can, so we can all focus on the important stuff

  • Microsoft’s health care plan

  • A work area free from background noise (HVAC, computer fans, etc.)


Comments (14)

  1. Bryan Murphy says:

    All I ask is that I (and my team) be allowed to focus on a single project (or two) instead of having 20 thrown at me, and be given the time to do it correctly instead of having to rush everything out the door to meet an unreasonable deadline.


  2. Stephane Rodriguez says:

    A perfect software project is a project that forces you into your limits every single day, forces you to make big sweaty bets and you are the only one responsible for these. An example is to be responsible for the architecture of a product whose specs is going to change a billion times in a short time frame, in such a way that if the architecture is bad it will immedialtely show, and if the architecture is good, it will allow major changes in the code with a marginal cost.

  3. Scott Allen says:

    I’ve worked at a string of small companies and startups over the last 8 years. To me, the perfect software project is the one where I can see the finished product being sold, and being used, and making users excited. Sometimes it seem that putting all the right pieces in place to achieve this goal can be very, very, very, hard.

  4. *Team members who care about doing it right.

    *A nice place to play after the work hours (For me this is just about any outdoor activity like riding my bike, hiking, rowing, cross country skiing, snow shoeing etc.)

    *I would like walls so that I don’t have to use headphones.

    *Managers who help fight off feature creep.

    *Something that pushes me to learn new things (Okay within limits. I hate being on total new ground)

    *On the HVAC tact, an office that is not right next to the paper mill (Some days the "smell of money" is just too much to handle)

    *Lots of natural light.

    *The ability to read and learn new things through out the project. The ability to play with new ideas like code generation.

  5. Todd Spatafore says:

    – Corporate honesty, if the company isn’t doing well just tell us the truth. Don’t tell us everything is great, the pipeline is full then the next day all of engineering has to be laid off.

    – Open communications with respect for each other. There’s nothing worse than an engineer that writes something and then looks at you funny when you ask them for help on their API.

    – Training days. The company doesn’t have to pay for it, but if I want to go to TechEd, don’t make me take vacation to do it.

    – Allow some playing around in your code. Every now and then I have to take a couple of days to write a game in DirectX, but this actually helps me be more productive in my normal work tasks, and I’ve never missed a deadline. So lay off me man!

    – Stop using technology that is ancient and past end of life cycle unless you have a revenue stream you have to protect. I’ve worked at so many start-ups where they want to use technology that’s more than five years old. I know it’s proven, but it’s also no longer supported by the original developer.