Collaborative Development

Collaborative development: how did we get here?

by on October 14, 2013 9:47 am

I have been doing software development for over 30 years and it has been fun to watch how the idea of collaboration has evolved. In the early 80s, in one of my first assignments as a developer I got my very own cubicle. It was in one of the far corners of a cube farm that worked really well as a cave where I could go and get my work done with only a few distractions. I was near the printer and its constant buzzing, chirping, and groaning became a white noise I that I eventually got used to. Back then, we had 3278 terminals and the keyboards were not quiet; the sound of fifty keyboards all clickety-clacking at the same time provided another type of sound that drowned out the all-too-often personal chatter. Yes, we did need to get up occasionally and ask a fellow developer a question and even less frequently brainstorm about an idea. But on a normal day, we all sat in our caves sprinting towards all of our somewhat-connected individual goals.

As the years went by and I progressed in my career, I got to move into an office. The only difference in collaboration was that I could actually close my door if I needed to concentrate on something and those who hadn’t reached my lofty level would more often get up to come see me when they needed something. Back then, in the 90s, most communication was face-to-face or via email systems like PROFS and LOTUS NOTES. The advent of email was important because it meant you could make your point without being interrupted and it made it especially easy to take cheap shots at those you didn’t like since you didn’t have to look them in the eye. It also meant more of what you said was recorded for posterity, just ask Oliver North (if you’re under 40, you might have to look that one up). While email allowed us to communicate with our teams without having to actually get up and walk, we were still a long way from being truly collaborative.

Over the next decade, companies realized that office space was expensive and could be a lot cheaper if we could squeeze more people into less space. Cube farms started to return and people started sitting closer together again. Instant messaging began to arrive in the work environment and individuals had even more opportunity to mix it up with the other individuals that were closing in around them. People still loved having their own space, though, that they could personalize and sometimes hide out in.

But as office space concepts were evolving, so were ideas about producing high quality software on more aggressive schedules. Waterfall processes that were built on “walled off” teams that depended on expansive documentation as communication devices were being thrown out or at least altered in favor of iterative and incremental approaches. Lean practices used for manufacturing were being retrofitted for use in building software. And as the formal processes changed, so did the expectations for development teams and how they communicated with each other and other teams.

The new mantras are “be agile,” “eliminate waste,” and “collaborate.” No longer are individuals being rewarded by being cave dwellers. The concept of team goals over individual achievements has made those of us who were rewarded for outperforming the person in the cube next to us rethink what success means in our new development environment.

So here we are in 2013, no longer hiding out in our cubes waiting on the next assignment but, in some cases, sitting elbow to elbow with team mates. Are we now automatically collaborative? I would suggest we are not. As individuals, we still need our own space and our own time alone. Our skills as development team members are still founded in our problem-solving talents and while some problems lend themselves to brainstorming and team synergy, others require us to sit our desks and figure things out. However, modern-day processes like scrum or kanban expect us to be in constant communication with our team mates.So where is the happy medium?

Here are my recommendations for being the right degree of collaborative:

  1. Get to know your teammates (even the ones you wouldn’t normally hang out with). Yes, every team has annoying teammates (someone on your team probably thinks YOU are that person). As a team, you have to get over it and figure out how to engage everyone’s talents effectively. Be professional and try to be friendly to everyone.
  2. Listen up and speak up. Some people on your team have an opinion about everything (I fit this category) and some are quiet and reserved. Give everyone a chance to speak, keep an open mind, and don’t be afraid to offer up ideas.
  3. Offer help. Not everyone has your skills, experience or perspective. When others are struggling, help out by offering advice or insight, but don’t shove it down people’s throats. And when you are the one that needs help, don’t waste a lot of time. Once you’ve tried to figure out problems on your own, ask for help and don’t wait until the last minute.
  4. Be selective about interruptions. It’s a two-way street. Don’t ask the person right next to you to figure out every problem just because they are there. It’s good to work things out as a team, but try to consolidate your questions rather than constantly interrupting. If it’s something that two of you really need to conquer together, pair programming (or testing or designing or documenting) works really well.
  5. Get up out of your chair. Email, instant messaging, phone calls, and texting are good substitutes for face-to-face communications when necessary, but the best way to communicate is to get up and go talk to people. Hopefully, your work environment makes it easy to just turn around or stand up and look to find the person you need to talk to. If it doesn’t, then you have to make an effort. Don’t leave out those who are seated further away.
  6. Use high quality head phones. We all need our private time to concentrate and get work done. These days we sit in noisier, more interruption-prone environments and finding a quiet corner is impossible. Getting lost in your favorite musical getaway will often provide that solace you are looking for, but leaky head phones disturb those around you.

I doubt we will ever go back to the days when we were encouraged to go off and solve problems on our own, at least on medium or large teams. To that end, always remember, software development is a team sport; continue to play hard and support the team.

— Keith Shakib, asktheteam@keyholesoftware.com

  • Share:

4 Responses to “Collaborative development: how did we get here?”

  1. Lou Mauget says:

    Keith:

    Well-said, and accurate.

    -Lou Mauget (sent from my workbench in a big room full of occupied workbenches – picture available upon request)

  2. Srinath says:

    Nice article on collaboration through the early times to the current day. Liked the recommendations on how to be more collaborative in our teams !!

Leave a Reply

Things Twitter is Talking About
  • The life of a Keyhole consultant - A Delicate Balance: It’s What We Do http://t.co/ToRpWY3aix Blog as true today as the day it was written.
    September 19, 2014 at 9:50 AM
  • 7 Things You Can Do to Become a Better Developer - http://t.co/llPNMUN8nQ
    September 19, 2014 at 8:43 AM
  • .@jessitron Good luck, you'll do great! Our team really enjoyed your KCDC14 talks.
    September 18, 2014 at 10:19 AM
  • RT @woodwardjd: 7 deadly sins of programming. I think I did all of this last week. #strangeloop http://t.co/f7QFq1SpqW
    September 18, 2014 at 10:03 AM
  • In Part 2 of our series on creating your own #Java annotations, learn about processing them with the Reflection API - http://t.co/E1lr3RmjI7
    September 17, 2014 at 3:18 PM
  • We send out our free monthly tech newsletter tomorrow - dev tips/articles via email. Not on the list? Sign up: http://t.co/h8kpjn419s
    September 16, 2014 at 2:58 PM
  • Want to chuckle? If programming languages were vehicles -http://t.co/quqHsUFCtR #funny
    September 16, 2014 at 11:41 AM
  • In Part 2 of our series on creating your own annotations, learn about processing #Java annotations using Reflection: http://t.co/DJZvQuarkc
    September 16, 2014 at 9:06 AM
  • Don't miss @jhackett01's newest post on the Keyhole blog - Processing #Java Annotations Using Reflection: http://t.co/E1lr3RmjI7
    September 15, 2014 at 12:02 PM
  • We're pretty excited - Keyhole's #BikeMS team raised 158% of their fundraising goal to benefit @MidAmericaMS. Plus, they had a great ride!
    September 15, 2014 at 10:38 AM
  • A huge welcome to David Kelly (@rheomatic) who officially joins the Keyhole team today! :-)
    September 15, 2014 at 10:00 AM
  • Sending warm thoughts to @eastlack, @cdesalvo, @wdpitt & all participating in #BikeMS this AM. Thanks for helping in the fight against MS!
    September 13, 2014 at 8:10 AM
  • .@rheomatic We are so excited to have you joining the team! Welcome :-)
    September 12, 2014 at 4:11 PM
  • As the official holiday is a Saturday, we're celebrating today! Happy (early) #ProgrammersDay to you! http://t.co/1CvUfrzytE
    September 12, 2014 at 1:55 PM
  • Tomorrow @cdesalvo, @eastlack, & @wdpitt are riding #BikeMS to benefit @MidAmericaMS. You can get involved, too - http://t.co/9boQwEUxth
    September 12, 2014 at 11:00 AM
  • RT @AgileDevs: 5 tips for great code reviews http://t.co/9PdbtEv0z8
    September 11, 2014 at 2:53 PM
  • The BEMs of Structuring #CSS - http://t.co/159suYtfx6 A quick introduction to the Block Element Modifier methodology.
    September 10, 2014 at 2:49 PM
  • A huge welcome to Joseph Post (@jsphpst) who has joined the Keyhole team this week!
    September 10, 2014 at 9:52 AM
  • @TheGrisExplores Absolutely, and thanks for the compliment! Here's an article that you might find helpful, too - http://t.co/7oxpaohCS1
    September 9, 2014 at 2:22 PM
  • Express.js seems to be the top pick! MT @TheGrisExplores: "what's your fave server-side MVC framework for NodeJS when SPA is not an option?"
    September 9, 2014 at 1:56 PM
Keyhole Software
8900 State Line Road, Suite 455
Leawood, KS 66206
ph: 877-521-7769
© 2014 Keyhole Software, LLC. All rights reserved.