The Programmer’s ‘Code’

 

Picture

Reading about programmers in government,
in businesses and start-ups and, being a
programmer myself, I’ve been thinking lately
about the power that programmers have, yet
there are no ethics written down. Medical
professionals have the Hippocratic Oath to
guide them to practice medicine honestly.
Other professions have oaths as well,
perhaps they’re just good intentions. I’m
really not sure how serious people take oaths and vows anymore, but that’s a blog for another day.
I think that when programmers consider their career, they should adopt their own code-of conduct.So, here’s mine:

  1. Stick to moral Principles. I don’t care what they are, but be true to yourself. Think about what guides your life, be it spiritual or not. Don’t trade money or security for your principals, it’s not worth it. I once designed some code that turned out to be ‘not quite ethical’ (the system has not been in production in decades). I was working on well-defined specs and didn’t realize the implication. I ended up ‘technically redeeming myself’ by creating a reversed-engineered version of the code that looked for ‘non-ethical’ transactions for a company that had to handle the processing of the original system.
  2. Purpose. By programming with a purpose, I mean choose projects that are meaningful to you. Do you really want to be programming on a non-value app, or do you want to work on great projects? It’s up to you. I prefer to work on projects that truly do something valuable. 
  3. Problem-solving . This goes along with #2, except it’s specific to working on code that tackles a problem and simplifies a complex process. This also goes with job satisfaction, since doing thought-experiments , working on puzzles, and coding all day is fun!
  4. Intellectual Property. Do you own the code you wrote? If not, is it legally licenced and properly attributed? Be honest.
  5. Avoid Patents. OK, this is personal. I understand patents for defensive purposes, especially in a large company, but if I was a start-up, I’d avoid them like the plague; move fast and let the trolls chase me. If your company requires you to submit patents, think about the value of the time it takes to do so, and whether or not having your name on a patent really has some stature. I’m happy to say that I’ve avoided having my name listed on any patents, yet I have coded some really cool stuff. Think I’m violating your patent? I’ve invested my expertise in understand decades of ‘prior art’, so bring it! Be Proficient. Know your craft, try to constantly get better. You will never know everything, but learn something every day. Focus on quality code.
  6. Be Prolific. Get into a cadence that allows you to produce a lot. Think about good literary writers. They are very disciplined and use their routine to produce. Find quiet time, whether it’s early in the morning (like me) or late at night (like everybody else) to grind out deliverables.
  7. Patience. Let the solutions come to you. We’ve all had that experience of solving our coding problem while showering or driving. There’s enough work to put something aside and let your brain solve it at it’s own pace. This is the essence of good problem-solving.
  8. Performance. Maybe this should be #1. Always think about performance when coding. In my early days I was forced to write performant code because hardware resources were scarce and I had to deal with a lot in the ISO Stack. Things are much easier at the hardware level but there are a lot more opportunities to write bad, non-performing code these days. Educate yourself on good coding, use instrumentation and every tool available and, most importantly, give yourself the time to write code that performs! Want to discipline yourself on performant code? Write an Android app!
  9. People. Computers are our friends, people are jerks. No, be nice, as your mother taught you. Have respect for your peers, empathy for your customers, mentor younger professional, be empowered, but realize that designers, testers, project-managers all have their roles to play in technology success. I know it’s hard, but be especially nice to your Salesfolks. I love sales professionals; they’re fun and they give you a direct line into understand the value you provide to customers.
  10. Professional. I hate to break this to you, but YOU ARE NOT A ROCK-STAR!  Rock stars are rock stars and I know a few, programmers are nicer, have longer careers and (eventually) have more money and fun!
  11.    Meritocracy. This is actually my favorite. I love development environments where the best idea wins and we all rally around it. That’s real teamwork, not “let’s try every idea” or “your idea stinks and I hate you”. Learn how to objectively analye proposed ideas and how to negotiate. Because if another person’s idea doesn’t work, you’ll quickly figure it out during your next sprint and pivot to something better, maybe your idea!
Peace! P-CzAbout Paul Czarnik
Paul is the CTO of Compuware where he provides technology strategy and investment leadership. A venture-technologist and programmer at heart, his hands-on experience and technical diligence model help with M&A activities and incubator/startups. Contact him at @PaulCzrnk to chat about IT Transformation (even though he hates that word), agile delivery, lean startup methodologies or music.

Paul serves on the boards of, iRule, the Motown Museum and the Admission/Retention Committee for Wayne State University.