This week we finish up Chapter 7- All About Starting Projects. Start when you're ready, somethings are better done than described, don't be a slave to formal methods, costly tools don't produce better designs and a special excerpt from Steve Jobs.
John: Welcome to Iteration: A weekly podcast about programming, development, and
design through the lens of amazing books, chapter-by-chapter.
JP: Welcome to PART 2 of Chapter 7: "Before The Project"
You've been building experience all your life. Don't ignore
JP: Follow your instincts when starting a project - but don't
procrastinate - you can do this by prototyping. Proof of concepts are nice
when you tackle the "hard" thing first. Prototype to discover
John: Prototype, prototype!
"as the prototype progresses you may have one of those moments of revelation when you suddenly realize that some basic premise was wrong."
Don't fall into the specification spiral - at some point you need to start
JP: "Program specification is the process of taking a requirement and reducing
it down to the point where a programmer's skill can take over." -
"natural language is really not up to the job."
more than 1 bullet point alert
Don't blindly adopt any technique without putting it into the context of your
development practices and capabilities
This shows how dated the book is. examples of formal methods: CASE tools,
waterfall development, "the spiral model", to today's UML diagrams.
If this were written today, we'd talk about lean methodology, agile development,
You should work constantly to refine and improve your process
Beware of vendor hype, industry dogma, and the aura of the price tag. Judge
tools on their merits.
Try not to think about how much a tool cost when you look at its output.
If you're an Apple fan boy/girl, you might be interested in what Steve Jobs had
to say about Object-Oriented Programming. This is an excerpt from a 1994 Rolling
Stone interview where Steve (not a programmer) explains OOP in simple terms.
Jeff Goodell: Would you explain, in simple terms, exactly what object-oriented
Steve Jobs: Objects are like people. They’re living, breathing things that have
knowledge inside them about how to do things and have memory inside them so they
can remember things. And rather than interacting with them at a very low level,
you interact with them at a very high level of abstraction, like we’re doing
Here’s an example: If I’m your laundry object, you can give me your dirty
clothes and send me a message that says, “Can you get my clothes laundered,
please.” I happen to know where the best laundry place in San Francisco is. And
I speak English, and I have dollars in my pockets. So I go out and hail a
taxicab and tell the driver to take me to this place in San Francisco. I go get
your clothes laundered, I jump back in the cab, I get back here. I give you your
clean clothes and say, “Here are your clean clothes.”
You have no idea how I did that. You have no knowledge of the laundry place.
Maybe you speak French, and you can’t even hail a taxi. You can’t pay for one,
you don’t have dollars in your pocket. Yet, I knew how to do all of that. And
you didn’t have to know any of it. All that complexity was hidden inside of me,
and we were able to interact at a very high level of abstraction. That’s what
objects are. They encapsulate complexity, and the interfaces to that complexity
are high level.
John: Time Timer - https://www.timetimer.com/ - Pomodoro - Physical Device