I have always thought that as a software developers, we make products. I have taken
pride in this, the idea that we actually create something. The something that we create
varies from project to project; it may be a web application, a smart client application,
databases, middle ware components, whatever. Further, I also believe that the things
that we create add value by solving problems. Software can makes things easier, it
can improve work flow, it can automate repetition, it can entertain.
I have had several experiences lately that have caused me to reconsider the basic
work that we do.
It’s All About the Marketing
During a discussion with a project manager on a recent project, I was explaining how
we could implement a particular feature in a cleaner, better way than another company
had done in a competing product. He shrugged at the extra 2 days that this technique
would incur and said, “It doesn’t matter, really. Do it if you want to, it’s
all about the marketing.”
I recently posed
an idea about software ultimately automating its own production. If there is one
and only one way to solve a problem correctly, then why not just have software build
the solution? Personally, I think that we developers add creativity and personalization
to our projects that can be a differentiating factor in the ultimate product. If the
solution is bland and disengaging, how can it all really be about the marketing?
India and Such
I recently heard a description of a major company from a team of its visiting representatives.
They were describing the company’s departments and the functions of each. When they
reached the part where they were describing their IT assets, the lady making the presentation
said in a very flippant, off-handed way, “All of our software development occurs
offshore. We have around 300 developers, all 4 year degreed CS types, who can churn
out software solutions based on requirements defined here in the states.”
Does the MBA crowd really think so little of us? Have I truly been reduced to a commodity?
While I understand the temptation to see any employee as a replaceable resource, I
do not understand the inclination to reduce making software to a factory model. This
is a bit like saying that the people who built the Golden Gate Bridge were “just“
steel workers. True, but snotty.
So Now What?
If I that post was right, if software can write perfect software, then I really am
a commodity that can be automated. If however, my gut is right and we as developers
bring a personality and a flavor to our products, then we are more than factory workers.
What do you say? Are we artisans, artists, or laborers?