DEV Community

Iteration Podcast

Steve Jobs teaches us how to wash clothes

Chapter 7 (pt. 2) - Steve Jobs teaches us how to wash clothes

Season 2 Episode 12

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"

56 - Start When You're Ready

You've been building experience all your life. Don't ignore
nagging doubts.

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."

57 - Some Things Are Better Done than Described

Don't fall into the specification spiral - at some point you need to start
coding.

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." -

John:

"natural language is really not up to the job."

  • John: Even if it's just a screen recording and an ugly sketch prototype - manually scrolling around - WAAAY better than a written requriment doc. I rarely define work through written requirments.

more than 1 bullet point alert

  • specs will never capture every detail and nuance of the system and it's
    important to recognize this
  • "A design that leaves the coder no room for interpretation robs the
    programming effort of any skill and art" - you may unearth some insights by
    beginning to code
  • "Distrust environments where requirements are gathered, specifications are
    written, and then coding starts, all in isolation."
    • there should be no artificial boundaries
    • a healthy dev process encourages feedback from implementation and testing
      into the spec process
  • there is a point of diminishing returns when specs get too details
  • this reminds me of the early days of Whiz when I was a designer. everything
    was terribly isolated

58 - Don't Be a Slave to Formal Methods

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,
SCRUM

  • don't get caught up in methodology. this is bad because it encourages
    isolation. "us vs. them" mentality between designers and programmers. the
    process should be more collaborative
  • that's not to say you SHOULDN'T use formal methods. just remember that they're
    another tool

You should work constantly to refine and improve your process

59 - Costly Tools Don't Produce Better Designs

Beware of vendor hype, industry dogma, and the aura of the price tag. Judge
tools on their merits.

  • There are a lot of expensive project management tools. Are they worth it?

John:

Try not to think about how much a tool cost when you look at its output.

Picks

JP:

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
software is?

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
right here.

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

Episode source