How to Software, Better - Introduction

How to Software, Better - Introduction

Our world is filled with software. No matter where you are in the world, you would have a hard time looking in any direction and not seeing something touched by software. For everything you experience, with any of your senses, software is required for designing, manufacturing, shipping, monitoring, and repairing it. This is true for effectively 100% of everything made by humans and a growing percentage of our "natural" environment as well. And you paid for it all, somehow. Software developers, and the companies they work for, get paid by convincing other people to share some of their money. So your job, as someone in the commercial software industry, is to do the things that bring that money toward you.

Do only those things. Do them efficiently. And do them consistently.

I began developing software commercially as a teenager and the products I've created have affected the lives of millions of people. My early career was in the software entertainment industry where I developed games on console systems and personal computers. After this, I got into telecommunications working on the products responsible for delivering home internet service. I then got into data analytics (specifically, visual analytics) and machine learning used by governments and Fortune 500 companies. Most recently, I worked in the power industry developing grid stabilization products representing national critical infrastructure in multiple countries.

Through the years of my career, certain philosophies, strategies, methodologies, and tactics have resonated with me. Along the way, I've assembled these into a sort of unified theory of commercial software development (though I'll admit it's not so grand as that sounds). As an engineer, I strove to create valuable software. As a leader, I'm responsible for running the business of software development (just as the rest of the company's leadership has their own businesses to run).

I consider these to be the three first principles of software: Lean, Design Thinking, and Servant Leadership. At its essence, Lean is about doing things efficiently by seeking out, identifying, and eliminating waste wherever possible. You will have happier, more productive employees, more satisfied customers, and more profitability if you don't do wasteful things. Design Thinking has two primary elements: Consumer Engagement and Iterative Development. Design Thinking is inherently Lean because you will build better products faster if you listen to your consumer, build only the most important things to capture revenue, and stop when you've maximized the return on your efforts. Servant Leadership, also called Inverted Leadership, flips the managerial relationship from the more traditional top-down "do what I tell you to" style to one where the leaders are actually led from the bottom up (bottom is sort of a meaningless designation in this approach but, good or bad, this is how we talk about organizations). In a servant leadership environment, objectives are set top-down but execution is led bottom-up. Because of this, I prefer using the term Intent-based Leadership - I tell you what I intend to accomplish and you tell me how you intend to accomplish it.

I consider these to be first principles because they form the basis for everything else I do as an engineering leader. I rely on, blend, and apply elements of each of them to form a coherent and consistent operating platform for the team. No matter what we're building, what our market is, or what size group we are, how we do our jobs can be traced back to these foundational concepts. Many books have been written about these three principles though (see the bottom of this article for some recommendations), so while I will reference them frequently, I will not spend too much time talking about them in depth.


In this series of articles, I will spend most of my time discussing three central pillars of my approach to commercial software: People, Product, and Sustainability. To set the stage, I'll start with Part 1: First Principles. These are the three concepts I mentioned above of Lean, Design Thinking, and Servant Leadership. As I said, there are many excellent books on these topics (see some recommendations below. However, it will be difficult to connect the dots from the pillars to this foundation without spending a little upfront attention.

Three Pillars of Commercial Software

In Part 2: The People, I'll define and discuss the various personae that make up the groups outside and inside a software company and the interface between them. We'll start with those outside; these "outsiders" are the ones with the money, after all. Then I'll talk about the various "insider" disciplines that make up a well-rounded software business, how to lead and manage them, and how they should be orchestrated to build resilient and durable software products.

In Part 3: The Product, I'll talk about how to identify value, how to prioritize implementation order, and how to deliver it all back to the market. I spent many years as a product manager and was introduced to Pragmatic Marketing as an ideal structure for defining and building products that resonate with the intended audience. I consider it to be a manifestation of Lean for product management because using a fact- and data-based methodology for developing a product is so much more efficient than one that relies on someone's intuition.

Finally, in Part 4: Sustainability, I'll discuss how to maintain a software business for the long run. In very few cases do I believe it's best to live only in the moment. Instead, you must keep your eyes to the horizon, consider what's about to come your way, and build an organization to match. It's critical to do what's necessary - no more and no less. You don't want to overbuild anything, but you don't want to under-build either. Doing this right requires honest conversations, rational thought, and deft execution.

I'm looking forward to sharing my thoughts with you and hopefully you find them useful in your own life as a commercial software practitioner. So stick around and let's get started!

Next article: Part 1: First Principles


Recommended Reading

The Goal by Eliyahu Goldratt (Amazon) [The original storybook for Theory of Constraints.]

The Lean Startup by Eric Ries (Amazon) [Measure, Improve, Profit (or Pivot).]

The Phoenix Project by Gene Kim et al. (Amazon) [An adaptation of The Goal for software and IT people.]

The Service Startup by Tenny Pinheiro (Amazon) [My introduction to Design Thinking.]

Turn the Ship Around by L. David Marquet (Amazon) [An excellent example of inverted leadership easily adapted to software engineering organizations.]

Wiring the Winning Organization by Gene Kim and Steve J. Spear (Amazon) [Probably the single best book I've ever read on technology management.]


Justin Wolf wrote his first line of code when he was about five years old. Since then, he's written hundreds of thousands of lines of code for consumer products in assembly language (Intel and Motorola), C, C++, C#, and other languages. In the mid 1990s, he began learning about computer networking while at Cisco Systems and spent a decade working on enterprise and residential networking products. He worked for about eight years at national laboratory on cybersecurity projects and then at a lab spin-out leading product development of a visual analytics platform fusing machine learning with human-in-the-loop analysis. Most recently, he led a large engineering team building massively distributed systems for battery energy storage systems (nearly 100,000 networked devices for the largest deployments). He lives in Southwest Washington state with his family (and pets) and enjoys sailing in the Pacific Northwest inland sea as often as possible.

要查看或添加评论,请登录

Justin Wolf的更多文章

  • Conclusion

    Conclusion

    Previous article: Part 4 - Sustainability We've covered a lot of ground in this series. Hopefully you've learned…

    1 条评论
  • Part 4: Sustainability

    Part 4: Sustainability

    Previous article: Part 3: The Product So far, I've covered the first principles (Part 1), the people (Part 2), and the…

  • Part 3: The Product

    Part 3: The Product

    Previous article: Part 2: The People For many years, I was also the product manager for my engineering team's products.…

    3 条评论
  • Part 2: The People

    Part 2: The People

    Previous article: Part 1: First Principles Your company is a bit like a shapeshifting amoeba. It has a border and some…

    3 条评论
  • How to Software, Better - Part 1: First Principles

    How to Software, Better - Part 1: First Principles

    Previous Article: Introduction For those unfamiliar with the phrase, first principles are the basic underpinnings of a…

    1 条评论

社区洞察

其他会员也浏览了