The Rules of Real Life Programming

The Rules of Real Life Programming

A closer look at the unspoken rules of developing software in the real world, and the lessons we can learn from them. Begin →

Dave Poole
Senior Web Developer at SiteCrafting, Inc

A little bit about me:

  • Graduated from PLU in 2006. BFA in Art, BA in CS
  • Currently working at SiteCrafting, Inc, a web application development company

Some stuff I've done:

  • Kiosk system for North Coast Electric Company
  • GreenFootJobs.com - searchable jobs site specifically for the green energy sector
  • Automatic deployment system using Subversion
  • Inventory management/rental system including availability calendars
  • Currently: Creating a system to upload videos, convert them to a web-ready format, embed on web pages (youtube, vimeo)

What I want to talk about today:

Stuff that you don't learn in school

Rule 1:

Everything you know is wrong

  • Java patterns are useless to a Lisp application
  • Compiled code is not better than interpreted code
  • It's all a matter of perspective

Rule 2:

You're always responsible

Basically, it's always your fault.

  • Don't have the assets you need? Get them.
  • Notice a bug? Fix it.
  • Don't have the tools you need? Improvise.
  • It's up to you. Ultimately, the quality of the software directly correlates to the quality of the programmers.
  • At the end of the day, it's your job and reputation on the line

Rule 3:

Normalize until it's right, then optimize until it works

  • A technically perfect system that doesn't work is no good.
  • Sometimes, you have to break the "rules".

Rule 4:

All of programming is design

/**
 * Finds all models that are listed within a given section
 */
function getAllModelsBySectionID(sectionID) {
	...
}
  • Well, duh.
  • Good programming + bad design = Not very useful

Rule 5:

To better understand software, you must understand people

  • How people use software, ie how they expect it to function vs. how it does function
  • Murphy's Law — Anything that can go wrong, will go wrong.
  • Make it foolproof, and someone will make a better fool.
  • Besides, for programmers, less typing = better

The Real Rules:

  • Everything you know is wrong
  • You're always responsible
  • Normalize until it's right, then optimize until it works
  • All of programming is design
  • To better understand software, you must understand people

Next: A few lessons to learn…

Lesson 1:

Be smart

  • Write everything down
  • Be a full stack developer
  • Accept that you can't change some things

Lesson 2:

Be faster, better, & stronger

  • If I can only produce 1000 lines of code per day, I want those 1000 lines to accomplish as much as I can
  • Do something more than once: make it a function; refactor often
  • Develop software for fun
  • Never stop learning

Lesson 3:

Your code sucks, but that's ok

  • Pressure to deliver leads to compromises
  • Compromises lead to crappy (hacky) code, ie: it works but it looks nasty
  • The code you hate most is probably going to be your own.
  • Goal: Minimize crappy code that gets into the wild. *
    • If you're not unhappy with it, you waited too long to release it — Jeff Atwood et. al

Lesson 4:

Evaluate, explore, and test other people's code and applications

  • What I really mean is learn from others
  • Good artists copy, great artists steal  — Picasso Bansky*
  • * Original author unknown

My particular area of expertise

Web Development

Everybody thinks...

web developers aren't real programmers

  • Total BS
  • Anything that uses http(s?):// is web development
  • Facebook, Yahoo, Google … and so on

It's not easy

To create good software for the internet, you have to know a lot

  • Coding, databases, server admin, CSS, HTML, JavaScript
  • Design, Typography
  • Usability (HCI), Interface Design
  • Marketing, Communication
  • You have to really care about your software and the community that uses it

Advantages of developing for the web

  • Rapid development and deployment
  • Massive potential userbase
  • Lowest common demoninator - simplest way to market and provide a piece of software

That's it.

Thank you!

Questions?

Dave Poole
http://zastica.com

Dave Poole - SiteCrafting

Next

Previous

Slide of 18