Geeks With Blogs

Tim Murphy

Tim is a Solutions Architect for PSC Group, LLC. He has been an IT consultant since 1999 specializing in Microsoft technologies. Along with running the Chicago Information Technology Architects Group and speaking on Microsoft and architecture topics he was also contributing author on "The Definitive Guide to the Microsoft Enterprise Library".

I review for the O'Reilly Blogger Review Program

Technorati Profile

Tim Murphy's .NET Software Architecture Blog Adventures in Architecting and Developing .NET

I saw a tweet asking why do we educate computer scientists to get developers and compared this to structural engineers and stone masons.  I believe this is a good question with a flawed premise.  The flaw is in thinking that a developer’s job is as simple and limited in variations as that of a mason.  Almost every problem attacked by a developer requires that they bend their tools and materials in a new way.  This requires that everyone on a team communicate and at least on some level understand each other’s hurdles.  This is not an environment what you create a spec and throw it over the wall.  Even then, I would believe that a structural engineer needs to understand materials and how they are connected in order create new designs.

There is also the question of what do each of these titles mean?  What is the job that each really does?  Both titles have a wide range of meanings.  Computer scientists to my way of thinking are defined as theory and design driven.  How can you really understand a theory unless you understand its practical application?  Likewise I think developers create better solutions if they understand the theories that govern the environment that they leverage.

Of course all of this brings us back to traditional argument of users needing to understand software development.  It isn’t the details of each job that you need to be familiar with. You should know enough of how different team members work in order to appreciate when you are told its difficulty or relay requirements at the proper detail level.

In the end I think we all benefit from knowing how our work affects those that we work with.  Living in a bubble only leads to disaster.

Posted on Wednesday, March 14, 2012 1:09 PM Architecture , Rant , Misc | Back to top

Comments on this post: Why Do Computer Scientists Need To Understand Software Developers

# re: Why Do Computer Scientists Need To Understand Software Developers
Requesting Gravatar...
(First Time Post)
Tim, Thanks for your excellent blog post. I want to pivot on that and ask why universities have degrees for computer scientists but not developers. Okay, I don't know about all universities, but NCSU in Raleigh has a certificate program which looks to me like it is just a core subset of of their CS degree. I looked into it, but concluded that I don't need to know things like how to build and insert nodes into a BTree. What I need (for excample) is an understanding of BTrees so I know when to use that verses a list verses a dictionary, and so on. So I took an intro class to C# at Wake Tech. It was okay for people who did not know anything about programming, but it was too low-level for me. It did help me boot-stap my own self-teaching, but it illustrates this, my main point for leaving a comment:

There seems to be a gap in coverage by our education system between scientist and hobbyist. What would the gap be called? How about Designer/Implementers. NC State would make me a scientist, but I still have to buy a book to figure out WPF or Linq. Wake Tech was happy to explain to me what a class is and how to override a virtual function, but said nothing about how to parse an XML file (examples all).

I think there is a need out there for education programs that meet that middle group. Something at the level of Certificate program like NC State offers, but level-adjusted for practical programming concerns, by the end of which we can write fully functioning apps and pages.

Left by Paul Schrum on Apr 11, 2012 11:30 AM

Your comment:
 (will show your gravatar)

Copyright © Tim Murphy | Powered by: | Join free