What it Takes
Cory Foy recently blogged about how little developing software has to do with technical skills, and how much more it has to do with dealing with people… and he couldn’t be more on the point! Good software is never developed in a void, it is instead a process of collaborating with other developers, end users, and people familiar with the domain logic that is represented in an application.
A developer today is not some anti-social person who only speaks in binary, locked away in some cubical or back room hiding from the sunlight writing code madly without meeting the end users. The truth is quite different. Today, a developer is required to be a social as possible and is required to be able to level with end users and domain experts. As Eric Evans illustrates quite amusingly in his book Domain Driven Design, not using domain language during discussions with users results in much confusion:
User:So when we change the customer’s clearance pint, we need to redo the whole routing plan.
Developer:Right. We’ll delete all the rows from the shipping table with that cargo id, then we’ll pass the origin, destination, and new customs clearance point into the Routing Service, and it will repopulate the table. We’ll have to have a Boolean in the Cargo so we’ll know there is data in the shipment table.
User:Delete the rows? Ok. Whatever.
Domain Driven Design, Tackling Complexity in the Heart of Software - Eric Evans, pp.28 - 29
The most important part of a developer’s job today is to understand the domain of the application they are building, and the ability to create software that represents that domain. But it takes much more than understanding the domain, it takes understanding the domain from the context of the end user. Even if you model the domain of your application to perfectly reflect the real world, it may hold true that all the end user needed was a small subset of it, or it needed to be done from their point of view, not how it exactly is in the real world.
A developer is also required to be quick on their feet, and to be very agile. You have to meet ever changing requirements, and you must be adaptable enough to change anything to meet those requirements. To quote Thomas L. Friedman from The World is Flat, a Brief History of the 21st Century,
“As the playing field is leveled, and the world becomes flatter, you better become flat, or you’re going to get flattened.”
If you're new here, you may want to subscribe to my RSS feed. Thanks for visiting!








May 12th, 2007 at 9:11 am
[...] In What it Takes James Carr reminds us of the value of using domain vocabulary when communicating with customers and users [...]
August 18th, 2008 at 1:51 am
[...] stated several times in the past that being a software developer today involves so much more than just being able to whip up [...]