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.
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
Subscribe to:
Post Comments (Atom)
Poker Copilot Translation Project
Want to use Poker Copilot in your language? Then help with the Poker Copilot Translation Project.
About This Blog
In May 2008 I started working on Poker Copilot, initially as a product to help me with my own poker playing. Soon I joined a "30-day Challenge", where the participants each aimed to launch a software product in 30 days. As a result of this challenge, Poker Copilot version 1.0 was launched in July 2008.
This blog tracks the ongoing development of Poker Copilot. Who would find this blog interesting? People interested in 1-person software development, in Poker, or in both.
Contact me via email at steve at pokercopilot dot com.
This blog tracks the ongoing development of Poker Copilot. Who would find this blog interesting? People interested in 1-person software development, in Poker, or in both.
Contact me via email at steve at pokercopilot dot com.
Blog Archive
-
►
2012
(31)
-
►
January
(29)
- Coming in the Next Update: Ignore Old Hand History...
- Coming in the Next Update: Poker Copilot can forma...
- From the "It's About Time, Too" Department
- Poker Copilot Business Cards
- Playing on Entraction Network?
- Unofficial Update for Ongame Players
- One Person with Two Accounts Playing on Ongame?
- Small Tweaks in Poker Copilot Preferences
- Ongame Network and Poker Copilot
- Buy Poker Copilot via Bank Transfer
- Improvement to Appearance of HUD Popup
- Improvement for Poker Copilot Translators
- Coming in the Next Update: HUD Layout has an extra...
- Unofficial Poker Copilot Update for Ongame Network...
- Poker Copilot Demo Video in French
- Reason I Like My Mac #17,823
- Updated Poker Copilot Demo Video
- Poker Copilot 3 Coming...
- News for Poker Copilot Translators
- Updated Poker Copilot Translations
- New Poker Copilot Screenshots Reveal How Version 2...
- Poker Copilot Translation Project: Update
- PokerStars now has built-in Auto-Hotkeys
- Reflection on the PokerStars Update that Broke Pok...
- Poker Copilot 2.101 Now Available
- Poker Copilot Website in French
- Spanish Website Translation
- Poker Copilot Website in Spanish
- Update for PokerStars Denmark Users (PokerStarsDK)...
-
►
January
(29)
-
►
2011
(154)
-
►
December
(10)
- New Unofficial Update
- Poker Copilot Discussion Forum in French
- Coming in the next update: multiple HUD layouts
- Poker Copilot Fact of the Day
- Unofficial Poker Copilot Update for the Brave
- Coming in the next update: All-in Equity in $ or B...
- Who uses BarrierePoker.fr?
- Coming in the next update: Filter tournaments by t...
- Help Wanted: BlazingStars or AHK for Merge Network...
- Coming in the next update: choose a language for P...
-
►
November
(13)
- MacKeeper's "Real-time protection" breaks Poker Co...
- PokerStars Playing History Audit CSV Problems with...
- Poker Copilot 2.99 Now Available
- HUD not working on PokerStars in update 2.98?
- PartyPoker support in Poker Copilot
- End of a Troublesome Week
- Poker Copilot 2.97 Problem Fixed?
- Desperately Seeking Help to Solve the Crashing Pro...
- Is Poker Copilot 2.97 Crashing For You?
-
►
December
(10)
-
▼
2010
(247)
-
▼
June
(9)
- A Poker Copilot Update for PokerStars users in Fra...
- New Poker Copilot Discussion Forum
- Poker Copilot 2.46 Now Available
- HUD in Poker Copilot's Hand Replayer
- Programming is Easy? No. It's Really, Really Hard
- Keyboard Controls for Poker Copilot's Hand Replaye...
- Poker Copilot 2.45 Now Available
- France's New Online Poker Laws
- Changes coming for Winamax Poker
-
▼
June
(9)


2 comments:
Programming is easy. Requirements are hard!
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.
Post a Comment