RWDevCon Inspiration Talk – Craftsmanship by Chris Wagner

In this inspiration talk, Chris charges you to take pride in your code and go the extra mile to make it not just workable, but clean or even awe-inspiring. By Chris Wagner.

Leave a rating/review
Save for later
Share
You are currently viewing page 2 of 2 of this article. Click here to view the first page.

How Good Code Can Happen

I like this quote by Ken Auer that describes the three phrases that you should take when crafting software,

--Ken Auer

"Make it run. Make it right, and make it fast."

--Ken Auer

  • Make it run is a stage where you're trying things out. You're just hacking away, you're not quite sure what you're doing. You're just playing around and you've got things commented out, all jammed into one method.
  • Make it right is where you take what you've learned, encapsulate that into small methods, classes, using architecture and make it easy to read for "future you" whether future you is actually you or your replacement.
  • Make it fast is where you worry about performance. Now that all your routines are neatly packed away, you can profile them and use instruments like a true craftsman, and you can make isolated changes without breaking things.

Oftentimes we stop after make it run. I think it's time to stop stopping.

Find Balance By Setting Clear Expectations

Now you may complain there's no way that I can make it right and make it fast. My boss is nagging me, deadline's approaching, or if I spend all of my time making it right and making it fast, that's going to take up too much time.

You expect what now?

You expect what now?

You expect what now?

Time is money, and I get it. I've been there. We all have.

Craftsmanship's not just about creating great things. It's about knowing your craft and its limits so that you can clearly understand what can and cannot be done.

Set expectations with:

  • yourself
  • your peers
  • your boss
  • your client or customer

That's all part of the craft.

No one's going to be happy when you ship something and it falls on its face. Be clear with everyone involved about what can and can't actually be done, and if anything changes in the process, make everyone aware.

Craftsmanship Is Appreciated

Let's take a moment to step outside of the computer programming world and talk about consumer retail space. Now over the past few years, I've noticed a trend.

Now this may vary depending on where you're from, but what I've noticed here in the States is people are starting to appreciate handcrafted goods.

  • Craft beer brewing has exploded. The mass beer producers are being hit hard as consumers prefer local brews.
  • Alternate coffee brewing methods are becoming popular.
  • Etsy.com, a website for handmade and vintage goods, reported over $1 billion in sales in 2013.

People are flocking to handcrafted merchandise and they're staying away from the big box stores.

The prices for goods on Etsy are nowhere near as competitive as the big box stores. Coffee typically is 2 times as expensive, and maybe upwards of 10 times as expensive for those special beans.

The craft beers are typically 2 to 4 times as expensive as the mass-produced competitors.

beers

People appreciate craftsmanship and people pay a premium for craftsmanship.

If John Lennon Wrote Code

Let's think about this for a moment. What would a world of craftsmanship as far as programming goes look like?

Consider every library on GitHub that's reached it's self-proclaimed Version 1.0.

Imagine a world where all of those libraries are fully unit tested, a world where 90% of their methods are less than 15 lines of code. Every public API is well-documented, and there's a clear readme with a getting started tutorial.

Imagine a world where the difficult questions on Stack Overflow are answered rather than the simple ones being cherry-picked by point seekers.

Imagine all the coders sharing all the world. You-ooooo-oo-oo-oooo...

Imagine all the coders sharing all the world

Imagine all the coders sharing all the world. You-ooooo-oo-oo-oooo...

Imagine a world where you start at a company and you check out the source code, and you can build and run with a couple of commands.

Imagine a world where every developer on the team consciously respects and follows the style guide.

Imagine a world where craftsmanship programmers are the norm. They

  • Are appreciated by their employers
  • Are paid well
  • Can survive the app store

This is a good world. I like this world and I think you would too.

The Trap Of Thinking Craftsmanship is Optional

Well-crafted things are often considered a luxury and I'll agree with that. What I won't agree with, though, is that shoddy software is acceptable.

Prototype's fine, I won't argue there. Proving a point, again, hack away, but when you're shipping a product that people depend on, give them your best.

I would wager that the reason people are apprehensive to buy apps on the apps store is they're not confident in the developer or the company behind them. They don't know if what they're getting is built with craftsmanship or that it's high quality.

Maybe we can change that perception.

Screen Shot 2015-04-26 at 7.49.26 PM

You may be working on products that have a short life span or have a small amount of users, and you might think it's okay to cut some corners here or there.

But remember that when you do anything, you're building up tolerance and you're creating habits. Eventually you'll have cut that corner 5 times and it went all right so why not just keep doing so?

Our Responsibility as Software Architects

How would you feel if a civil engineer thought that way when they were designing a bridge that you drive your family across?

bridge

How would you feel if corners were cut by an aerospace engineer designing a commercial airliner that your parents might use to fly to you for the holidays?

Engineering is a huge responsibility. Society depends on engineers to do the right thing and to do it well.

As software engineers, we may not building applications that can directly harm somebody or maybe we never will, but we're constantly working with other software engineers that we influence, and someday they might.

As we move further into the future, software is arguably becoming the crux of how our world operates. Just some examples:

  • Robotics are beginning to take over jobs that humans used to do.
  • Cars are starting to drive themselves.

google_car

Engineers of all disciplines are using software to design bridges, buildings, vehicles, what have you. There are so many lives that depend on software now and even more that will in the future.

Software architects are designing and building the pillars for which our society stands on.

pillars

From now on, when you're writing code, I hope that you think of it in terms of craftsmanship.

Whether you're heading down the road, starting a new project, or working on an existing one, take pride in what you're doing. Don't skimp on the parts that you think nobody's going to see.

You'll never know who's going to crack open that Alienware box of your code and walk away inspired.

Note from Ray: Did you enjoy this inspiration talk? If so, sign up to our RWDevCon newsletter to be notified when RWDevCon 2016 tickets go on sale!