Ed Weissman chemistry
ED WEISSMAN
Programmer • Writer • Teacher
Y in

How Chem Lab Made Me a Better Dev

(It had nothing to do with Chemistry.)

I learned a lot in college. From my classes. From new people. And from being on my own for the first time. But my first lesson? "Never miss a meal."

We didn't have much money in those days, so we bought a meal ticket to cover the whole term. It was pretty simple...Miss a meal? Don't eat.

So I didn't understand when half my freshman class missed dinner every Monday and Wednesday. It didn't make any sense. Where were they?

I was surprised to learn that they were all still in Chemistry Lab, which had started at 1:30, four hours earlier.

ezachOverflow
Pour 20 ml of isopropynal into a medium beaker.
kimLee
What is isopropynal? Where are the beakers?
ezachOverflow
I don't know. This is all so confusing?
kimLee
Let's just do what Amy and Joe are doing over there.

What was so important that caused half of us to miss dinner? And how could it possibly take so long?

I was more surprised when a few friends explained, "You have a hundred things to do. You have to study the lab lesson. You have to assemble all your equipment. You have to do everything just right, taking notes the whole time. Some chemical reactions take a while, so you have to wait. And you have to write a lab report and turn it in before you leave. So no one finishes before six."

None of this made any sense to me. If you had so much to do before dinner in four hours, why wouldn't you plan it out to go smoothly and quickly?

helenWaite
Happy Thanksgiving! I'm ready to start dinner.
Is the turkey thawed? Where's the other stuff?
kimLee
You mean something had to be done before today?
Days Since Last Bug: 0
dunningKruger
We didn't know. Can't you just microwave the frozen turkey?

Half of us were Pre-Med and had to take Chemistry freshman year, but my buddy Pete was in Engineering and I had no aspirations whatsoever, so we took Chemistry sophomore year. When we agreed to be lab partners, I told him, "I hope we get good grades because I do care a little bit about that, but I am NOT missing dinner. Ever."

So we had to come up with a plan to finish by five every time. Others couldn't imagine it was possible but I knew better. I had already worked a difficult high school job and had to grow up early, so I saw possibilities others my age missed. And fortunately we had lots of friends who had suffered the year before, so we would learn from their mistakes.

We started with Johnboy, Pumpkin, and Wodka Joe. "We're NOT missing dinner, so explain to us what you did last year, what would go wrong, and what we should do differently." Together we built a "Knowledge Base" 30 years before any I.T. expert ever babbled the profanity "Knowledge Base".

CLOSED TICKETS
- add Std Cost
- add Box IDs
- add WIP Report
- add AWS API
- add XML feed
- add Dropdown
- add colors
OPEN TICKETS
- fix Std Cost
- fix Box IDs
- fix WIP Report
- fix AWS API
- fix XML feed
- fix Dropdown
- fix colors
paulaNomial
You MUST read the lesson the night before...
or you'll just be stumbling around the whole time.
Get
More
Coffee
Set up
Happy
Hour
Hide
from
Nero
Bet
on
Bears
Bring
some
Donuts
Take
Long
Lunch
scrumBell
Make sure you know every step and have all you need.
Days Since Last Bug: 0
dunningKruger
Do as you oughta. Add acid to watta.

We also had a killer resource: our friends' lab books. These included all the reports from their labs including their professor's mark-ups and grades. We didn't want to copy these. That would have been unethical. And it wouldn't have helped much anyway since half the labs changed each year. We wanted them to have a target. Our approach would be, "Plan Backward, Work Forward".

From the feedback, the lab books, and our own thinking, Pete and I came up with a plan. It wasn't fancy. The only thing surprising about it was that no one had thought of it before.

Rule 1
Anything that can be done before 1:30 on lab day MUST BE DONE THE NIGHT BEFORE.
Rule 2
READ THE LAB LESSON! Understand every molecule. Beat it up until we know what we'll be doing, how, when, and why we'll be doing it.
Rule 3
Write the LAB REPORT SKELETON. Include everything we know now. Tomorrow we'll enter data as we collect it. So the report will be done when we are.
Rule 4
For every Step in the skeleton, write the PLANNED START TIME on a separate sheet. This will force us to visualize exactly how the lab will flow.
Rule 5
BE THE FIRST ONES IN LAB. Get started immediately. Work the plan to the minute. Pay no attention to anyone else.


The #1 problem was that everyone was doing too much during lab that could have been done earlier. Why read the lesson, make lists of tasks, and write the whole lab report after entering lab? You already have everything you need to do those things beforehand.

So we decided to do all that the night before. This accomplished two things. It cut our lab workload in half. And the process of planning reduced the remaining work by another half. So we only needed one fourth as much time as anyone else before we even started.

By understanding exactly what was going to happen and giving ourselves a chance to sleep on it, we would eliminate tasks of confusion, looking for things, and getting help from others. We could split the work to get two things done at once. We could knock off a bunch of other tasks while waiting for chemical reactions. And most importantly, we could write the report "as we went".

Without even realizing it, we did two things years before hearing the buzz words ad-nauseum: "multi-tasking" and "gantt chart".

"I love it when a plan comes together"
- Hannibal Smith, The A-Team

Our plan worked beautifully! The best part was writing the lab report before doing the lab. Born out of necessity, it seemed like genius. The night before, Pete and I grabbed a couple of beers, opened our graph-paper lined lab book, and tried to figure out what we would need to report.

Need a bunsen burner and a thermometer? That's a chart. Need to compare that to something else? That's a graph. What's the x-axis? What's the y-axis? How about the scale? We wrote down everything except the measurements we would be taking later. Need to explain what happened? The write it down now! We already knew what the result would be (if we did it right). Why save that paragraph for tomorrow?

Chemistry 101Lab ReportPete & EddieSynthetic CondomsStep 22Measuring Heat per Unit Time1  2  3  4  5  6  7  8  9  10minutesdegcel12010080604020

Are you starting to see how easy it was for us to visualize the next day? How easy it was to execute the lab once we got there? And how shocked everyone else was when we finished hours before them? (The scariest thing was that no one ever asked us how we did it, a lesson that should have prepared me for a life of dysfunction in I.T.)

My favorite lab was one of the most complex: making synthetic rubber. We finished that one by 3:00, giving us an hour to celebrate with beer before 4:00 touch football on the Oddfellows lawn. These are the things you never forget.

Our strategy resulted in something like this:

CHEMISTRY LAB SCHEDULEEddie & PeteEveryone ElseSundaynightMonday1:304:005:007:009:00Review LessonVisualize LabCHEM LABStep 1, Step 2Step 3, Step 4..., Step 47Touch FootballDinnerBeer & Music(synchronously)Girls & Sex(asynchronously)CHEM LABRead LessonDiscussionStep 1, Step 2ConfusionStep 3, Step 4Screw UpsStep 5, Step 6Rework..., Step 47Write Lab Rpt

How to Build Software like we did Chem Lab

1. Recognize there's a problem.

floChart
Everything is
so confusing and disorganized.
yogeshV
And we don't seem to know what we should be doing.
helenWaite
We used to miss dinner. Now we miss deadlines.
Days Since Last Bug: 0
dunningKruger

So?
 

I read once about an experiment where fleas who could jump six feet were put into three foot high containers with lids. So now they could only jump three feet. When they were released from the containers, they never jumped more than three feet again.

My Chem Lab classmates were like those fleas. They never questioned missing dinner because they didn't believe they could make it. Sadly, most of my I.T. managers have been fleas too. Projects cost five times as much as they should and take five times as long because they've never done any better. But don't let your fleabosses discourage you. Recognize the problem and jump six feet over them to find the solution.

2. Paint your target. Plan backward. Work forward.

wandaWant
Start with the answer, then work back.
kimLee
The secret in Chem Lab was having a Lab Lesson.
Get
More
Coffee
Set up
Happy
Hour
Hide
from
Nero
Bet
on
Bears
Bring
some
Donuts
Take
Long
Lunch
scrumBell
But we don't
get that from our users today.
garyRiggs
Then go get the Requirements! We need the target first!

Pete and I were amazed how easy it was to refactor Chem Lab. But don't forget, we had two huge head starts handed to us on a platter: the Lab Lesson from our professor and old Lab reports from our friends.

Today it's not so easy. No one hands things on a platter to programmers, at least not anywhere I've ever worked. But our target is out there. We're big kids now, so we have to go get it. And that's hard. So hard that many I.T. fleabosses don't believe it's possible and seek the Holy Grail Methodology du Jour: agile, scrum, 5S, magic, whatever.

Paint your target. Plan backward. Work forward. If you have what you need to do that, it'll work with any any methodology. If you don't, no methodology can save you.

3. Know exactly what will happen.

ezachOverflow
We knew lab's 47 steps would take 2 hours and 15 minutes.
helenWaite
That's because we wrote the Skeleton Lab Report.
Get
More
Coffee
Set up
Happy
Hour
Hide
from
Nero
Bet
on
Bears
Bring
some
Donuts
Take
Long
Lunch
scrumBell
But we don't have that when we build software.
CLOSED TICKETS
- add Std Cost
- add Box IDs
- add WIP Report
- add AWS API
- add XML feed
- add Dropdown
- add colors
OPEN TICKETS
- fix Std Cost
- fix Box IDs
- fix WIP Report
- fix AWS API
- fix XML feed
- fix Dropdown
- fix colors
paulaNomial
Yes we do. They're called Tech Specs.

When I first became an offshore coordinator, I sent the programmers Technical Specs, much like our old Skeleton Lab Report. I detailed exactly what needed to be done. Changes to the data base, forms, and programs, with reference to utilities and similar programs. Sometimes I even told them which lines of code to work on. I wanted people I hadn't met to have a clear path to their target. My peers here in the U.S. accused me of making their jobs too easy with "Code by Numbers". I just said, "Thank you."

4. "Work by Numbers"

alGorithm
What's the most straightforward way to get a job done?
kimLee
As a child, I did "Paint by Numbers".
yogeshV
In college, I did "Chem Lab by Numbers".
CLOSED TICKETS
- add Std Cost
- add Box IDs
- add WIP Report
- add AWS API
- add XML feed
- add Dropdown
- add colors
OPEN TICKETS
- fix Std Cost
- fix Box IDs
- fix WIP Report
- fix AWS API
- fix XML feed
- fix Dropdown
- fix colors
paulaNomial
Today, we do "Dev by Numbers".

Sitting down at your computer is just like entering Chem Lab. Do you know exactly what you're going to do like Pete and me? Or are you going to flail around like our classmates?

The biggest problem in Chem Lab was starting before you were ready. We still do that today when we build software. And just like our classmates in lab, it's hard to tell what's wrong with the boiling pot when you're immersed in it. We tend to blame others and accept poor performance as the norm. We need to understand...

When you don't know exactly what will happen,
it probably won't happen.

I approach every software project with the same mindset I used to approach Chem Lab. In those days I refused to miss my dinner. Today I refuse to miss my deadline.

How would you approach your work differently if you knew you would starve if you were late? Good. Then why aren't you doing that?

"I didn't know I couldn't do it, so I did it."

wandaWant
Why is every ticket taking 3 extra months to finish?
Days Since Last Bug: 0
dunningKruger
Because so many programs are locked in git.
xavier127.0.0.1
Why not give every developer their own virtual machine?
MISSION STATEMENT
If you're reading this, you're the first person who ever did.
ORG CHART
I'm the boss. You're not.
OPEN DOOR POLICY
lol lol lol lol
neroFiddler

You can do that?
 

As I.T. Director at Russellstoll, I was troubled that our ERP system seemed to be dropping about 5% of our orders, just enough for accounting to raise an alarm. I researched everything I could imagine, but I couldn't solve a problem I hadn't found. This continued for months.

Then Henry Thomas, Director of Operations, came by and said, "This is out of hand. Tomorrow, you and I will stay all night until we figure this thing out." So we did. Together we continued exploring everything, looking for the secret. I finally fell asleep at 3 a.m.

When I woke up, Henry had printed a thousand orders and spread them out all over the office, classifying them by different rules. I couldn't believe he went to all that trouble. When I found him sitting on the floor, he looked up and cried, "I found it! When two orders are entered within three seconds of each other the second one never gets dropped. There must be a bug in the API."

Incredulous, I asked, "How did you know to do that? No one in the U.S. has been able to figure this out for months?"

Henry replied, "I didn't know I couldn't do it, so I did it."

I used to think that way in college when I did Chem Lab with Pete, but something got lost along the way. I guess that years of corporate I.T. lunacy can take the wind out of anyone's sails, even the biggest optimists.

I posted what Henry said on my bulletin board and never forgot it. That one sentence probably solves half the world's problems.

"Start with the answer, then work back."

Get
More
Coffee
Set up
Happy
Hour
Hide
from
Nero
Bet
on
Bears
Bring
some
Donuts
Take
Long
Lunch
scrumBell
When will it be done?
TAROTAGILEVOODOOeeddieWeissman
What do you want?
Get
More
Coffee
Set up
Happy
Hour
Hide
from
Nero
Bet
on
Bears
Bring
some
Donuts
Take
Long
Lunch
scrumBell
When will it be done?
TAROTAGILEVOODOOeeddieWeissman
What do you want?

In 1931, at the height of the Great Depression, there was little technology, little money, and no computers. But it only took 10 months to build the Empire State Building, then the tallest building in the world. Today it takes longer to add a checkbox to a form. Why?

The first reason is obvious: impotent management. I talk about that in the Management Diseases section. I'd rather talk about the second reason: no target. Less than 1% of the software assignments I've ever received had sufficient Business Requirements. Most had none. Instead, "You're senior. You figure it out." Do you think they built the Empire State Building that way?

Think about what they had to do. They had thousands of people in the exact right place at the exact right time. They had perfectly made-to-measure components arrive from all over, long before some academic coined the term "Just in Time". And they did it all right in the middle of the most populous place in the United States. Do you think, that maybe, just maybe, someone had actually bothered to put some thought into the project beforehand and defined the end product?

Today we have unimaginable resources: money, mind-numbing technology, and educated people willing to walk through fire to get the job done. But none of that can overcome fleaboss mentality. Where nothing is possible so we invent things like "Agile", which really means, "We don't know how to define the target, so we'll just write stories as we go. It can't be any worse." (They're right: it isn't any worse.)

Two stupid frat boys could have never refactored Chem Lab years ago without a target. Nothing has changed. And our fleabosses still don't get that. Why?

"I'm going to kick you in your left ear with my right foot and there's nothing you can do about it." - Billy Jack

ezachOverflow
Unbelievable! He caught the ball with one hand
and lept over 2 guys to get into the end zone.
alGorithm
Was that an accident or did he really plan to do that?
garyRiggs
You should have seen last week. He lept over 3 guys.

My favorite stories about visualizing exactly what will happen have always been from sports.

I remember an interview with former Los Angeles Lakers basketball player Brian Shaw describing defending Kobe Bryant in practice. "He would dribble, take two steps to his left, rise up, and nail a 24 footer every time. There was nothing I could do to stop him. When I asked him how he did it, he said, 'I've done it a thousand times in the gym and a million times in my head. I know my spot. I don't even think about it. My muscle memory takes over and knows exactly what to do.'"

I've been building software at least as long as Kobe played basketball and I like to think that maybe I have just a little bit of his mamba mentality. When a fleaboss yells at my customer, I reflexively know how to stop her and get right back to painting the target. When I go to a meeting with no agenda and no one else shows up for ten minutes, I leave. And when a leader with Org Chart Inversion Disease says, "I will request that from upper management and report back down to you," I stop him and straighten him out.

Athletes' muscle memory makes them great. Programmers' muscle memory makes them "not a team player". Welcome to I.T.

"Follow the Yellow Brick Road"

MISSION STATEMENT
If you're reading this, you're the first person who ever did.
ORG CHART
I'm the boss. You're not.
OPEN DOOR POLICY
lol lol lol lol
neroFiddler
I just got the
OK for Project Useless. Let's get going now!
CLOSED TICKETS
- add Std Cost
- add Box IDs
- add WIP Report
- add AWS API
- add XML feed
- add Dropdown
- add colors
OPEN TICKETS
- fix Std Cost
- fix Box IDs
- fix WIP Report
- fix AWS API
- fix XML feed
- fix Dropdown
- fix colors
paulaNomial
OK. Where are the 6 offshore programmers & BAs I need?
xavier127.0.0.1
And the 2 dev servers for the new databases and APIs?
garyRiggs
How about the Requirements, Test Cases, & UAT Team?

The biggest mistake our classmates made was entering Chem Lab unprepared. They were already behind before they even started. So they failed to hit their deadline (dinner) every time. Pete and I witnessed this firsthand and made sure we did everything we could to prevent it. We knew exactly what we were going to do, so completing the lab was as straightforward as "following the Yellow Brick Road".

Today, few of us are like Pete and me. We're more like our classmates. Even if we do Recognize the Problem, Paint the Target, and Visualize the Execution, our efforts are still wasted if we start the project unprepared.

It's hard to visualize our course if we're doing something for the first time ever. But then again, how many other Empire State Buildings had been built before they built ours in ten months? Ignorance, laziness, and deferring to fleabosses are the only real excuses for flailing aroung instead of following our proven path. Now you know what to do and what to say to your fleaboss. So don't be lazy. Remember, it's not how soon we start. It's how soon we finish.

In order for programmers to follow the Yellow Brick Road, someone needs to pave it first. That someone is often ourselves.

"They took the world's greatest archer, blindfolded him, spun him around, and asked him to attempt a bullseye. Of course he couldn't. So what makes you think that you can hit a target you can't even see?"
- Zig Zigler

When I was a child, the four words I said the most were, "I didn't do it." Now it's, "What do you want?" I feel like a broken record, repeating this mantra because Zig was right.

I suppose if you're building art or doing improv, trying to build something for the first time ever, Planning and Building Forward may be the default approach. But for the rest of us, Painting the Target, Planning Backward, and Working Forward is clearly the way to go.

Call it waterfall, agile, scrum, prototyping, or 5S, it doesn't matter. Call your target Business Requirements, Functional Specs, the Big Fat What, or "stories", that doesn't matter either. This is what works, pure and simple. I learned this by accident when I was young, stupid, and too cheap to miss dinner.

One day of "Plan Backward" and one day of "Work Forward" are better than five+ days of "Work Sideways".

Remember the Chemistry Schedule from years ago? Here it is now. Same schtick. Different labels...

SOFTWARE DEV SCHEDULEEddieEveryone ElseMonTuesWedsThursFriReqments, SpexTest Plan, SchedDEVELOPMENTCode Code CodeRefactor TestUAT QA DeployHacker NewsLearn with LeonTwitter DiscordTwitch UdemyFoosball BeerDEVELOPMENTCode Code CodeDebug DebugCode Code CodeInterruptionCode Code CodeConfusionMeet Meet MeetIt's All Wrong!Rework ReworkDebug DebugMeet Meet MeetTo be ContinuedNext Week

Whether it's Chemistry Lab or Software Development, the best High Tech is often built with the best Low Tech. It's so logical, it smacks you in the face. But it's not intuitive, so our industry and our fleabosses never give it a shot.

You may already be building software the way Pete and I did Chem Lab. Perhaps you are and don't even realize it. Or maybe you're still flailing around like our classmates, suspecting there's a better way but never getting to it. Now is your chance. I know you can do this.

I'd bet my dinner on it.

Study Questions

1. Which recent Software Development project of yours was closest to the way Pete and I apporached Chem Lab? What was similiar? What was different? How did it go?

2. Who in your organization would benefit the most from my little Chem Lab story? Send them the link. If you're still employed, let me know what they said.

3. What in your process would be the most difficult to implement in a "Paint the Target, Plan Backward, Work Forward" environment. What would you change to make it better? (Tempting as it is, "fire your boss" doesn't count.)

4. What do you do that you know you have to do that Pete and I didn't do? (Example: "Sometimes we have to write some code to show something to the user the help Paint the Target.") How would you do that with our strategy?

5. What valuable lessons did you learn in school, but not in class that would help you build software years later? Email me your story and maybe I'll post it here. It would be nice to know that I'm not the only one.

Quiz

1. How is a good Business Requirements document like the Lab Lesson?
 a. It paints a picture of the expected result.
 b. It tells you exactly what to do.
 c. It enables you to "Plan Backward, Work Forward".
 d. It's routinely ignored.
 e. all of the above

2. Even though Pete could afford to miss dinner, why did he play along?
 a. It was a good experiment to try.
 b. He hoped it would improve his grades.
 c. He was a high achiever.
 d. All his other friends were drunk or high.
 e. He wanted to impress the lab assistant at the beaker station.

3. How did our grades compare to our classmates?
 a. higher because we were on top of it
 b. lower because we rushed too much
 c. about the same
 d. We'll never know because they hated us and wouldn't share.
 e. Who cares? We still couldn't get dates.

4. What mistakes did Johnboy, Pumpkin, and Wodka Joe make the year before?
 a. inaccurate data
 b. missed steps
 c. mistaken conclusions
 d. inadequate communication on the lab report
 e. all of the above

5. How have most I.T. managers responded to this story?
 a. "We already have good processes in place. Use them."
 b. "That's nice, but I.T. is different from Chemistry."
 c. "Senior programmers shouldn't need Business Requirements."
 d. "This approach isn't realistic and won't work."
 e. They didn't pay attention long enough to answer me.

You May Also Like

Eddie's Law of Empathy
The best way to understand the other is to have been the other.

Eddie's Law of Depth
Understanding is directly related to the square of the distance below the surface.

Eddie's Law of Pulse
Deep Awareness is inversely related to the square of the distance from the source.

Insidious Bug or Comedy of Errors?
Just another day in the nest

It Takes 6 Days to Change 1 Line of Code
I love programming. It's the process I can't stand.


edw519 at gmail
Y in