The Poker Copilot Blog

Tracking the development of Poker Copilot, Mac OS X software for poker analysis and statistics.

Tuesday, 22 June 2010

Programming is Easy? No. It's Really, Really Hard

When I was a greenhorn programmer I felt like a programming superhero.

Every programming task seemed so easy.

Until I started the coding.

Need a form for entering customer addresses? No problems, I'll have that done by lunchtime. Oh wait...it has to cope with addresses for people who live overseas with different address structures...? AND it has to cope with "care of" addresses...? AND some people in rural areas only have the town pub as their address with a note to ask the publican to "keep this under the bar until you next see Graeme"...? AND some people have multiple addresses because they spend six months of the year in Melbourne and six months in Brisbane...? AND we need to note if something we send to a customer comes back as "undeliverable"...?

Instead of hours that takes weeks.

Now every programming task seems too difficult.
 
I've learnt to spend far more time reflecting and designing than coding. I assume any programming task is pretty close to impossible but that with some assumptions and constraints I can produce something kind of useful to some people. When coding I feel most of the time like I am overlooking big potential problems. Sort of like that feeling you have when you can't remember if you turned off the oven.

Which is why I love Patrick McKenzie's Falsehoods Programmers Believe About Names article. It captures perfectly how difficult the most common - and seemingly simple - programming tasks can be.

Computer programmers need things to be orderly. But human society is unorderly, full of exceptions and oddities. 

2 comments:

Russell Thackston said...

Programming is easy. Requirements are hard!

Rob Meredith said...

That's the nature of design, whether it's code, some new device, a car or a building. Understanding the problem is hard, and that's only part of the process. You have to come up with a solution (and there's no such thing as the one right solution) and you also then have to see that the thing you've created has a positive impact on the problem, including any side-effects: intervention kicks off a whole chain reaction of actions and reactions that are hard to anticipate.

There's a great TED talk by Paul Bennett from design firm IDEO that talks about design and design thinking. Personally, it's this aspect of IT that I find the most fun.

 

Poker Copilot

Free 30 Day Trial

Only $69

Order risk free with our 30-day money back guarantee.

  • Poker software for Mac OS X
  • Supports Full Tilt Poker and PokerStars
  • Analyses your opponents while you play
  • On-table HUD for Mac
  • Easy to use, easy to understand

Watch a demo of the major features of Poker Copilot