Code Complete - Introductions

Why I'm doing this, what I hope to get out of it, and how you might benefit from following along.

Code Complete - Introductions

As this is the first original article written for this site, I feel some introductions are in order. If you're one of the few who have elected to start this journey with me at the moment of its founding, then please accept my heartfelt thanks for lending me some early encouragement. If you are a more recent reader, then thank you too and I hope you'll read on and discover plenty of value in the posts to come. I am not by nature an outspoken person; the idea of publishing my thoughts on the internet for all to see (much less asking people to actually sign up to get this stuff sent to their inbox!) does not come easily.

A little about me: I am an American computational designer, trained as an architect, and working in the architecture industry in New York. Before I studied architecture as a graduate student, I studied art and art history in college. The time between my two educations was spent pursuing a few different things, from graphic design to art to physics and math. I founded an all-ages punk venue in Portland, Maine with a buddy of mine. I spent countless hours cutting oval holes in paper with an X-Acto blade as an artist's assistant in Brooklyn. My decision to go to architecture school came from a restless seeking of more structure to my artistic pursuits. I suppose I'm what most technical or financial workers would (rather derisively, I think) call a "creative."

That said, my career as a computational designer is soundly rooted in the realm of logic and process. As I've delved into the world of design technology, I've discovered a part of me that always lurked beneath the surface but perhaps never found fertile ground from which to sprout. Studying architecture led me to Grasshopper, visual programming, and parametric design. Learning Grasshopper taught me computational thinking. Applying computational thinking to my labor made me want to go further and learn to code. Teaching myself to code made me realize how very little I know about software design and how very interesting it all is.

A sketch of increasingly taller and taller mountains.
Just when you think you got somewhere... (sketch by author).

To that end, I have decided to take a step away from the usual mishmash of knowledge that is the hallmark of most self-taught programmers and give myself some formal education. I will read all 914 pages of Code Complete by Steve McConnel and write about what I learn, and how I can apply it to my work. If you are a computational designer or architect who knows a thing or two about coding and are interested in applying some rigor to your work, I suppose this is the blog for you. I came to the idea after talking to a software engineer named Andy le Bihan at the Rhino User Meeting in Berlin, in October 2024.

Rhino Meetups (BER + CPH ’24)
My thoughts from the Rhino User Meeting in Berlin (Oct ’24) and the Rhino Developer Meeting in Copenhagen (Sep ’24). Copied here from LinkedIn for posterity.

Andy has worked at McNeel as a software engineer for over twenty years, though like me he studied architecture in school. I had a nice conversation with him about the difficulties of teaching oneself correct, rigorous programming without any formal education in computer science. As a follow-up, I asked Andy via email what book he might recommend to someone in my position. His recommendation was Code Complete, a thick software development tome originally written in 1993 and revised in a second edition in 2004:

For me, it’s the best book on software engineering there is, and no matter what language you are programming in, the advice in that book can – and should – be applied.

 So, there you have it. I figure that if I can manage one chapter a week, I should finish up sometime around the beginning of October, give or take. If you're interested in following along and charting my progress, you can sign up on this website to receive a newsletter. Subscribers can also comment on posts—maybe we can build a little conversation around programming in architecture—and will be able to download whatever example files I come up with through this whole process. Even if you don't have an interest in coding, you might have an interest in design technology and how architects and engineers are going to cope with the intense technological and economic upheaval of the coming decades.

I am, after all, a "creative." this project is aimed at making me (and you, perhaps) better at understanding and navigating the very complex world of digital design. I know so many architects who are totally overwhelmed by the soul-deadening complexity of the design software the market compels us to use. People designed beautiful, durable, useful buildings long before the first CAD program crawled out of whatever IBM mainframe it gestated in. Now the software completely rules our labor, even as it has allowed for wonderful design opportunities that were the stuff of imagination mere decades ago. Knowing a thing or two about how software is designed and how it works is a useful thing for anyone to be aware of, whether you are actually interested in coding or not. We are all consumers of these programs, but only by truly knowing something can you hope to master it. To that end, I'm going to read this book and learn a thing or two about proper software engineering. Each week I'll summarize one chapter, condense what I've learned, and try to apply it to my own domain of computational design. I hope that you, dear reader, will join me and also contribute as well. Sign up, get the newsletter, and let me know what you think. Next week we'll cover the preface and Chapter 1: "Welcome to Software Construction."