About Jay

20 years of development experience in finance and media verticals with the stab wounds to prove. I have been a sales engineer, chief technology officer, project manager, co-founder but what I enjoy is programming using the Microsoft stack and mentoring developers about being a productive software developer. About Me | Contact Me

Blog Index

Follow Us


Follow Jay Janarthanan on Quora

What demotivates me the most as a developer?

Fallingwater a house by Frank Lloyd Wright

I have been developing software over the last 20 years. In this time I faced several things that de-motivated me from my work.  In addition, I passed on that same non motivation to fellow software developers. In my experience, a properly motivated developer can be exponentially more productive than one who has lost their motivation.  I have made a point to keep a list of the things that leads to such a state in an effort to combat it. Today I am writing about the worst of worst.

Matt Wullenweg,  the founder of Wordpress , summed up the aesthetic of coding when he wrote:  “Code is poetry.”    There is something so simplistic in this line.  It has the eerie, erotic fist-punch of a haiku poem satori Certainly there is a rhyme and meter to what we do.  Certainly code doesn't read like a novel.   Topographically, a page of code has the look of a poem.  For the unitiated a page of code looks like carefully constructed chaos, while for the initiated, a page of good code could read like verse from Wordsworth.  


There is a beauty and subtlety which forms images and converts ideas from these multiple lines onto the pixelated screen for users across the world.   In fact, never has there been a poetry so widely read across an audience with no regard for race, creed, color education, social class or religion.  A good coder is truly a universal artist.  So why then is there so little value in what we do?   Why is there so little value in code itself?

When we write code for a client they only see the tip of that iceberg, the ten percent that sits above the water.  These are those little pixels that flash bright and click open windows and drop down menus.  What they don't see is the 90% below the surface, the code that we as architects call our labor.  In reality a client only sees two things:  A. that the code base is operational and B.  That it is cost effective.

Now I have been working as a lead architect & developer on a product for a client for over a year.    Never was I given any concrete requirements.  I was only given a general idea from the client who spoke something like: “we want an e-commerce site.” (It's not an e-commenrce site, but to protect the innocent let's call it that) With such general guidelines I have been developing a version of what I envisioned the client asking for.  Hey, at the end of the day I'm getting paid for what I love and I love working with new tech and ideas and most importantly I wanted to deliver something cutting edge.    

And as it's now years end and I'm cleaning house a bit, I decided to clean up the code base by removing code we're not using any more.  To my surprise I erased almost 90% of the code related to the business logic of the application.  I'm the first to agree that a business in constant state of flux has changing business needs.  The software must be kept fluid so the client can stay competitive.   But in this case the software never had been live.   Never was there user testing, just a guess by product designers on what the market may need or what would make the site look cool.   

And of course as the client could say, based upon the amount of code in the finished product:  “Wow, I essentially paid you nine times more than this site is worth.  Never could the client have known of all the work that led up to what is there now.  They only see the finished product and the bottom line: A. that it's cost effective and B. that it works.

But as I sat in my client’s office last Friday night, I kept thinking about this code that had been erased.  I, for one take great pride in my work.  I'm not just a hack getting paid for a job.  I love what I do.  Personally, I akin writing code to painting.  Each line of code, even every little keystroke that becomes a character is something that I have created.  I still get teased by other developer friends when I am trying to get all the curly brackets to match their indentions or try to name variables in a meaningful way. Maybe it's my OCD, but when you spend hours writing the code, it becomes this piece of art.  That may be the reason I am reluctant to erase the code when new requirements make old code obsolete.

So I kept asking myself that if this were a house being built by Frank Lloyd Wright do you think that the client would ever expect such an architect to tear down what he has built because their living needs have changed.   Of course not!  You would have too much respect for the artist and his art to tear down any precious wall.  Now imagine commissioning a painting from Van Gogh. You tell him you want painted a night scene over a little town with stars in the sky.   And then when he hands you a masterpiece like “Starry Night” you say something like: “I don't know Vinny, these stars are just too BIG.  Could you tone it down a bit” No, you wouldn't, because you have too much respect for the artist and his creation.  

The problem with our medium is just how quickly and easy it is to erase.  Click, highlight, delete.  That's it, and in a puff it could all be gone.  A years’ worth of work in one second.  Unlike a painting or a house,  code is too transmutable. For this reason, clients and consumers have yet to elevate code and see that really: “Code is Poetry.”  And as such, software developers have yet to be elevated to the estimation of poets in the public's eyes. There is an art involved in creating really good software and we should start classifying our developers as artists in their own right.  

Now don’t go on assuming every coder is good, Just like an artist, every one can draw but only few can create masterpieces. For the record I will not hire 90% of the coders I have worked with in my 20 year carrier.

Thus, the very nature of coding, our products erasabilty that is my demotivator.  I almost feel that the next client who would expect me to erase what I have done is not even worth working for.  We developers, as artist, must start taking our work seriouslyso that our clients will as well.  For my New Year's goal, I have decided that any potential client will have to read The Lean Startup by Eric Ries or let me explain it to them.  If I need to throw my code away, there must be good a very good reason.   And of course, I would rather get the hell out of there rather than stay working on a project for clients.  If at once they are not going to change, they will never change.  

And that, folks, is what really demotivates me.

I'd like to hear back from you on this.  Tell me what demotivates you most as a developer and for the managers who manage developers how do you manage a developer’s work when business requirements change, do you explain the reasons for the change or just ask the developer to make the change because the big guy in the top who is paying for every one asked to make the change.  

 


PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments (13)

> when I am trying to get all the curly brackets to match their indentions

> in my 20 year carrier[sic].

About time you got a programming editor. Or was that metaphorical?

With those nit-picks out of the way (I'm sure you'll understand :) ), I agree that it's demotivating that you can work for months and have code thrown away. But, that's really common, though I don't have statistics. Think Buddhist - you create a beautiful mandala out of sand, then blow it away. Also, you will die, and likely leave little behind.

As to what to do, I don't know - personally I just kind of wend my way to more interesting work until I can work for myself.

December 8, 2011 | Unregistered CommenterFritz the Philosophical

Interesting, because I started lead a Zen + Yogi lifestyle few months ago. - Jay

December 8, 2011 | Registered CommenterJay Janarthanan

A very interesting and somewhat funny post. While I can absolutely feel with you about your personal relationship with your code (feeling like an artist, not necessarily understood by the client), I must say, I very much enjoy erasing the crap I've written yesterday. As a matter of fact, I feel like I'm learning so much every day, that I really don't want to look back.

I'm sure the late Pablo Picasso wished he had never published his early work, which must seem quite immature after 50 years of experience...

So my advice to you: Stop being conceited, selfish, and feeling misunderstood. Look forward. Accept your role in business, because frankly, I wouldn't want to work for a customer that admires my code more than their own business.

December 11, 2011 | Unregistered CommenterLukas Eder

May be you misunderstand my article. My point is if a client is going to come up with a list of functions they need developed and after the work if they want to change it, they should have a better reason for it. Just because they pay me should not be the only category.

December 11, 2011 | Registered CommenterJay Janarthanan

I agree that changing client whims results in situations that are very demotivating. And (if you are writing software for money) I don't really see any solutions except to grin and bear it.

As for the artistic beauty of code, I must say I don't believe in it. I would rather have a beautiful application than beautiful code and I think, in the end, all code goes the way of goldfish (down the toilet), so we have to get our love while we can.

cheers.

December 11, 2011 | Unregistered CommenterDennis

Why do we keep comparing writing code to other things? Such as building a house? It is very normal to have fluid requirements in a software project, and it is very normal that these requirements become completely different than the initial requirements once the project is finished. That's the nature of our job.

I think the best thing to do is to charge by the hour though!

December 12, 2011 | Unregistered Commenteritoctopus

Nicely written post but I disagree. You are comparing a functional item (code) to a luxury item (painting, custom built house etc.) The whole purpose behind a Picasso or Van Gogh is aesthetic enjoyment. In such cases, respect is due to the creator since they were able create aesthetic beauty you could not have imagined. In the case of code, the primary purpose is functional. Other coders may look at your code and admire its beauty but it is unfair to expect that from a customer. Btw I've heard surgeons say the same thing about the unappreciated beauty of their incisions.

The one place where code becomes aesthetic (almost) is in UI design. And in this case I think customers do appreciate a well engineered UI such as in the iPhone. They will be reluctant to change it even if the business needs change.

December 14, 2011 | Unregistered CommenterAings

Btw in answer to your question, what demotivates me the most as a developer, is the oft made assumption that accountants, executives and marketers understand the customer needs better than engineers. Evidence seems to suggest the opposite.

December 14, 2011 | Unregistered CommenterAings

I imagine the worst possible outcome of any project is that it is misunderstood and viewed irrelevant. Ultimately each line of developed code builds a better programmer; I think the strength of coding lies in its mutability. Anyone can see a straight line but a carpenter sees whether it is flush, plumb, square, tight and straight. It is like a spectator and an engineer witnessing a space shuttle launch - the realities are completely different and forgivable.

December 19, 2011 | Unregistered CommenterTJ Martin

I hope you still have it in source control, because eventually the requirements will come around to the beginning again.

January 9, 2012 | Unregistered CommenterODB

What demotivates me the most is project management. I'm not referring to a particular individual, but the process itself.

Often our stakeholders will think they know exactly what they want, but then a sprint later want modifications to the same feature because it wasn't as usable as they imagined.

As a software engineer, if I'm not empowered to develop solutions, I'm demotivated.

January 10, 2012 | Unregistered CommenterMike

I understand you. I feel the same about coding, programming is an art. But our very problem is thinking that art would be considered in business. Coding art in business is like making an ice statue in the desert.

September 11, 2012 | Unregistered CommenterEdwin

jjj

February 12, 2013 | Unregistered Commenterjj

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>
« About this blog: Becoming a productive software developer | Main | What I learned from Steve Jobs »