Essence of Software Development

You know the stereotype.  Programmers work in isolation, their office dark, littered with empty pizza boxes and soda cans.  Loathe to speak to customers, requirements are passed electronically via user stories.  E-mail serves to keep others at bay, until reluctantly, the programmer emerges to attend a meeting.

While this perception may hold elements of truth, building software products is a complex social process. Far from being isolated, today's programmers and their leaders must possess skills in communication and negotiation.

After all, what is software development?  How does it begin?  Does it begin when one individual determines a problem exists?  No. It begins when someone communicates the existence of a problem to another.  Nothing occurs (regarding software development) until this communication takes place. Ultimately, quality of communication governs quality of solutions.

In the software development process, collections of individuals (customers) communicate with collections of others (software developers).  Even if we assume one point of contact between customer and developer, each representative communicates internally with many others.  Those others have different needs and filters.  A software engineer wants to know, "What do I build?"  A technical writer wants to know, "What do I document?"  And a software tester wants to know, "How and what do I test?"  These are refinements of a more general question, "What problem are we trying to solve?"

This communication occurs regardless of tools, processes, methods, and language.  In other words, communication is an essential element of software development.   I ask you to reflect for a moment, based on your experience, how many software managers receive communication skills training?  How many software managers possess exemplary written and verbal communication skills?  How many software managers understand human communication models? My anecdotal evidence suggest very few.

Moreover, even perfect communication does not eliminate challenges.  Real world constraints prevent fulfilling every customer whim, desire, need, or want.  Thus, a second essential element of software development: negotiation.

A software leader must possess skills to navigate the sea of conflicting constraints imposed by cost, schedule, quality, people, and resources.  This leads to an analogous set of questions: How many software managers receive negotiation skills training?  How many software managers possess exemplary (or any) negotiation skills?  How many software managers understand facilitation and mediation methods? My anecdotal evidence again suggests very few.

While technical ability is important, ultimate success is tied equally to communication and negotiation skills.   If you are or aspire to become a software leader, consider courses or workshops on communication models and negotiation. It is ironic that many associate software development with isolation and socially inept individuals.  This myth contributes to our difficulties in software development as much as the combined lack of processes, methods, and tools. Instead of hiring software managers solely based on their technical ability, I encourage you to also investigate their ability to communicate and negotiate.

For me, these skills are non-negotiable.

" It is ironic that many associate software development with isolation and socially inept individuals." I believe this is where the breakdown of communication begins. People try to shove all of us software developers into a box. You're nerdy, like video games, redbull/coffee, wear sarcastic tshirts, aren't great communicators, and don't like to be bothered. This couldn't be further from the truth. I consider myself a pretty good communicator, and I constantly using negotiation to come up with acceptable solutions. When faced with a problem, I like to offer an range of solutions and work with the business to figure out which one is best for both of us. We all have the same career, but we are all very different and have varying degrees of skill. When software developers are left in a cold dark corner coding without opportunity to hone or use communication and negotiation skills, they become managers without those skills. If we stop stereotyping developers, we might make better managers.

Like
Reply

Nicely put and this becomes all the more important in distributed agile teams...

Like
Reply

Great Post Neal!! Communication is the key to successful software development!

Like
Reply

Well written my friend and so very spot on. Hope texas is treating you well. Nashville blew it when they let you get away.

Like
Reply

To view or add a comment, sign in

More articles by Neal Reizer

  • Lessons learned working with development partners

    I have worked with development partners in the U.S.

    5 Comments
  • Give responsibility. Grow leaders.

    A specific way to grow technical leaders into business leaders is to allow team members to create business cases. Your…

    1 Comment
  • Observations and experiences with "The Talent War" book

    [ Disclaimer: I am not affiliated with The Talent War Group (TWG).] My hiring and development practices have been…

  • Management and the Art of Feedback

    I've talked to a large number of people recently that want to become managers (I'm putting aside whether that is itself…

  • We all fail at some point. Admit it.

    When interviewing people, I explore past failures to evaluate a person's humility, resiliency, emotional strength, and…

  • Defining career goals: Dig deep

    In prior articles, I explored factors that influence your career success or contributed to career failures. When…

    2 Comments
  • Learning from career failures

    In my last article, I asked a question to help you identify factors that influenced past successes. The second question…

  • Exercise: Identify your career success factors

    Recently, I have spoken with a number of folks about their career. What began as ad-hoc has become (somewhat)…

    10 Comments
  • From technology leader to business leader

    One of my goals is to assist individuals transition from technical leadership to business leadership. Technologists are…

    3 Comments
  • Balance self, not work and life

    Often, I read about work-life balance as co-equal parts that must be harmonized, yet implicitly are distinct. For…

    21 Comments

Others also viewed

Explore content categories