My undergraduate degree from the University of Lousiana is in computer science. I specialized in top-down structured programming with an emphasis on scientific programming (as opposed to business programming). My masters degree from Arizona State University is also in computer science. I specialized in software engineering where my thesis was Software Safety During Program Maintenance. I studied the extra steps one needs to take when developing software that can lead to death, injury, or environmental harm.
When I started coding for what eventually got acquired by Autodesk (i.e., Ithaca Software), I was writing 2D and 3D graphics drivers for a platform-independent graphics system called HOOPS. HOOPS still exists today under the auspices of Tech Soft 3D.
Today at Autodesk, I am a Program Manager. My job does not require much coding. Occasionally I will write some JavaScript as part of web pages I am creating, but for the most part, my job is about managing the technology previews being showcased on Autodesk Labs. I do write everything I create as raw HTML, but that's not really the same as programming.
My neighbor, Doug Logan, is a certified Scrum Master for Agile development. Agile development is a process where software developers create little bits of functionality in sprints where, if it had to, the software could be shipped at the end of each sprint. This is very different from a waterfall software development process where everything is specified before doing any design, everything is designed before any coding, and all coding is completed before release testing starts.
Waterfall model:
In an Agile process, the specification, design, coding, and release steps happen for a limited set of functionality (e.g., a few features) in rapid succession over a one or two week period.
Agile model:
As its name suggests, the result is a more agile process that can respond to customer feedback and a process where fewer surprises show up during development.
When I was in college, we followed a waterfall model. The last time I personally used an Agile process was when we developed Autodesk Showroom — the technology preview that simulated what it would be like for consumers to experience on-demand photorealistic rendering as part of a shopping experience. Now all Autodesk software development follows an Agile model. Wanting to get back in touch with my programming roots, I asked Doug to recommend a book on the Agile process. Doug recommended The Principles of Product Development FLOW: Second Generation Lean Product Development by Donald G. Reinertsen.
I will be reviewing The Principles of Product Development FLOW via a series of blog articles. My goal is to provide a peek behind the Autodesk curtain regarding some of our development practices. The chapters of the book include:
- "The Principles of Flow"
- "The Economic View"
- "Managing Queues"
- "Exploiting Variability"
- "Reducing Batch Size"
- "Applying WIP Constraints"
- "Controlling Flow Under Uncertainty"
- "Using fast Feedback"
- "Achieving Decentralized Control"
I look forward to reading this book and sharing it with you.
Talking about coding is alive in the lab.