Category: Books

  • Inspiring Books for Writing Software

    A rapidly-growing website for helping readers find books they want to read reached out to me. The deal was that I would write about one of my books and review several books that I liked. It seemed like a win-win. I dove into thinking about the books that most inspired me as a programmer and wrote them up. Here is my page on the site. These are the books that, when I look back on my decades of programming, were the most inspiring.

    Blank

    C Programming Language by Kernighan and Ritchie

    This is the defining book on the C language, written by the authors of the language and published in 1978. By the early 1980’s it became the standard for writing systems software, helped by the fact that the UNIX operating system was written in it. UNIX grew to become the world’s dominant operating system, running over 90% of the world’s web servers.

    By the time I encountered the language I already had programmed extensively in assembler, COBOL, FORTRAN and other languages. I had written a commercial FORTRAN compiler in assembler language. The C language changed my world, and this book was unique then and now for being written by the creators of the language that changed the world of programming forever. Nothing about all the languages since C makes things better – yes, including C++. All they do is add complexity and put unnecessary constraints on language, along with continuing the focus on language when your goal as a programmer should be to write as little code as possible, putting everything you can into easily editable metadata.

    The Art of Computer Programming by Donald E. Knuth

    This is a multi-book series. It is the definitive source on algorithms and the core of computer programming. Unlike most such book authors, Knuth is a real programmer, deep into the details of the craft, to the point of creating his own assembler language and typesetting generation system. It’s partly the substance of the algorithms and their analysis, but even more is the way he models a way of thinking about and solving complexity that makes this a must-read series.

    Here is a post about software, art and music that features Knuth, shedding light on his depth.

    Principles of Compiler Design by Aho and Ullman

    Attending Harvard College gave me the opportunity to collaborate with great programmers in creating the early ARPA-net. But the best course I took was on compiler theory and construction, using an early draft of the material in this book. Of course I learned how to build a compiler, which I did as my first job after graduating. But more important, I learned that a well-built compiler is a small amount of language-independent code with two major parts. First the input part that realizes the content of the lexical and grammatical metadata, like today’s LEX and YACC, to turn the program being compiled into a language-independent semantic model. Second the code generator that reads the semantic model and, based on generative model metadata, turns the semantics of the program being compiled to whatever form you want, whether executable code, assembler language, byte code or whatever. This approach, while indispensable for compilers and interpreters, is also the model for taking a meta-data-driven approach to building software applications of any kind.

    Godel’s Proof by Ernest Nagel

    Nagel’s book is the most understandable explanation I’ve found about one of the most cosmically seminal math proofs: Godel’s incompleteness theorem. It takes the idea of recursion and self-reference to the ultimate conclusion about truth, understanding and the boundaries of existence. This may sound hootie-tootie, but think of the sequence of abstraction in math: arithmetic, algebra, calculus, etc. Once you add in recursion (self-reference), you’ve got the most important concepts underlying true understanding and productivity in software – something never discussed in computer science, and certainly not in practical programming. Think about the so-called Von Neumann computer architecture, which underlies all modern computers – instructions are data, stored in the same place as ordinary data, and some instructions write data that are instructions. This is recursion taken to the next level.

    Godel, Escher, Bach: an Eternal Golden Braid by Douglas Hofstadter

    This book explains fundamental concepts of recursion, symmetry, intelligence, focusing on math, art and music. It’s full of wonderful tales, amazing facts, little-talked-about relationships among math, art and music (and by reference computing), not to mention puns and amusing language. If you want to become a better person, this is a good book to read. If you want to understand and succeed in life, ditto. If you let this book lift your mind to its space and height, you will find yourself vastly more capable of creating and understanding software. It’s a wonderful companion of the Ernest Nagel book. Hofstadter also helped edit the second edition of the Nagel book. In the foreword, Hofstadter explains that the book (originally published in 1958) exerted a profound influence on him when he was young.

     

  • Summary: David B Black Books on Software

    This is a brief description of the Building Better Software Better series of books. I wrote the books to explain the non-standard methods of producing great software that I first discovered over a couple decades of writing code in various environments, and then observed in small groups of programmers over a couple decades of VC investing. It's the only way to explain how tiny teams can beat industry giants at their own game. It's not about everyone being a so-called 10X programmer — it's about working smarter.

    Here is the story of the background of writing the books.

    https://blackliszt.com/2015/10/secrets-of-software-super-developers.html

    Software Business and Product Strategy

    Here is a summary with links to my posts on software innovation and growth strategies.

    https://blackliszt.com/2023/07/summary-software-innovation.html

    Here are some of the business and product strategies described in the book, including links to the book:

    https://blackliszt.com/2016/07/innovation-stories.html

    https://blackliszt.com/2016/04/software-business-and-product-strategy-book.html

    https://blackliszt.com/2016/05/innovation-from-startup-to-success.html

    Wartime Software

    Building bridges for civilian use takes years and thousands of people. Building bridges in wartime takes hours – it’s done under enemy fire, and the load and quality requirements are higher. Most software is built the way bridges are in peacetime. Some groups  — those who are “under fire” or just don’t have time or money to do it the “right way” — build software using wartime rules – software that is better than peacetime software. They do this not by cutting corners, but by following a different set of rules and methods.

    Best to start: https://blackliszt.com/2012/03/bridges-and-software-in-peace-and-war.html

    Summary of posts with links: https://blackliszt.com/2023/07/summary-wartime-software-to-win-the-war.html

    Book: https://blackliszt.com/2013/05/wartime-software-book-available.html

    Project management

    The title is the Disease of Software Project Management, because project management has in fact been a disaster for software. The idea that software development should be managed by generic project management techniques is accepted nearly universally — the only disputes are about which of the many minor variations to choose. This book is a deconstruction of project management, its origins and its application to software development. If phrases like "that will probably take us three sprints to get done" spring from your lips without sarcasm, you need to read this book. The core idea is that all forms of project management optimize for expectations, while in wartime you optimize for speed.

    Best to start: https://blackliszt.com/2010/10/software-project-management-dates-are-evil.html

    https://blackliszt.com/2013/03/software-comparing-waterfall-and-agile.html

    Summary of Posts: https://blackliszt.com/2023/04/summary-software-project-management.html

    Book: https://blackliszt.com/2012/10/software-project-management-book.html

    Software QA

    Things are done faster in wartime, but that's only possible if they're done differently. QA is one of the key areas of difference. There are core ideas to understand, and detailed methods that are different, involving different skill sets than are normally involved in QA.

    Best to start: https://blackliszt.com/2012/04/a-simple-framework-for-software-quality-assurance.html

    Summary of Posts: https://blackliszt.com/2023/04/summary-software-quality-assurance.html

    Book:  https://blackliszt.com/2012/10/software-quality-assurance-book.html

    People

    Managers tend to apply the same templates to managing software people that they apply to everyone else. They foolishly think they can manage people who are doing something they don't understand and can't even see. This book covers some of the things that are unique to software people.

    Best to start: https://blackliszt.com/2014/10/joe-torre-and-software-development.html

                   https://blackliszt.com/2014/01/who-makes-the-software-decisions.html

                   https://blackliszt.com/2013/11/people-and-substance-in-software-management.html

    Summary of posts: https://blackliszt.com/2023/05/summary-software-people.html

    Book: https://blackliszt.com/2015/03/software-people-book-just-published.html

     

  • Innovation Stories

    I worked at Oak Investment Partners for a long time until retiring from it at the end of 2015. Here is part of my page on the Oak website in 2015:

    2015 12 17 David B. Black - Oak Investment Partners

    During that time, I had the opportunity to dive into hundreds of tech companies over many cycles, and the further opportunity to be an insider at dozens in which we invested. I learned that what most people tell you about how to be a successful entrepreneur often doesn't match up well with the winning companies I saw.

    So what's a person to do?

    One thing you can do is read my book. It won't tell you how to win (that's on you), but it will clearly identify some of the most important success patterns to follow, and some of the popular failure patterns to avoid. It has dozens of examples from real life to illustrate the points.

    Here are some of the companies in the book and the points or patterns they illustrate.

    CRM co., OpenData, Sybase: Do NOT make your execution match your strategy! If you're going to invade a country, don't attack everywhere, pick a beach.

    Captura/Concur: Don't let perfection get in the way of making your product usable.

    Web services company: Pick something that you can finish, well and quickly.

    Smartdrive: When you think you're really focused, try making the focus even narrower.

    Inktomi: Don't move on to the next battle until the current one is totally wrapped up; mostly wrapped up may not be good enough.

    Workflow companies, collections: The customer defines the problem, not you.

    HNC/FICO: Using a platform to attack a narrow but important problem set.

    US Auto Parts: Does the customer have a problem right now?

    G-Market/E-Bay: Cross-border issues are more than language.

    Bank processors e.g. Fiserv: Customers aren't fond of risk.

    Nextpage: Are your benefits tangible?

    Fastclick: Can you deliver results quickly?

    Rebelmouse: Make each step towards a vision be usable.

    Athena Health: Adding a whole new service can be 1+1=3

    Radisphere to Candescent Health: Giving your customers to someone else can be a great idea!

    Company A: Using end-user products in a product/service can save time and money.

    Video Ad Network: Sell it first, then build and deliver it seems backwards, but it beats everything else in the right situation.

    Maestro Health: You don't always have to program everything; sometimes having people do some of the work is a big win.

    Evident: Methods that are great in one domain maybe be failures in a different one.

    The Innovator’s Dilemma book: Listening to your customers can hold you back.

    Smartdrive: Picking the right group of customers to listen to is key.

    TxVia, Feedzai: Building a tool and delivering an application or service with it can be an overwhelming advantage.

    MobiTV: Do you have large customers? The power relationship determines the outcome.

    Huffington Post: Pick a direction, go quickly, stop for nothing.

    Conclusion

    I'm kind of slow. It took me more than ten years to start noticing the patterns I've written about, and another ten years testing the patterns against the companies my partners looked at and/or invested in. But they've held up. I know I haven't discovered all the relevant patterns or explained the success of every company, but I also know that I don't read about the things I wrote in the book, which is why I took the trouble to write it. I hope new generations of innovators will improve their odds of success by following the path of the winners.

     

  • Innovation: From Startup to Success

    I've recently published a book whose subtitle will soon become the title: "From Startup to Success." It's a tiny voice in the hurricane of books, conferences and attention paid to Innovation. Anyone doing something new that somehow involves computers and software would benefit by paying attention to this book. It identifies success patterns that aren't found elsewhere.

    1

    Software-fueled Innovation

    We currently benefit from more than 150 year's worth of general-purpose innovation. Trains, planes, cars, phones, refrigerators, prepackaged ice cream, etc. The innovations are now a broad array of products and services offered by major organizations. You go to business school to learn how to run and staff such organizations.

    A sizable fraction of today's innovation is built on and using computer hardware and software: the internet, smart phones, Amazon, Google, Facebook, Uber, and a host of others. The new generation of innovation is software-fueled innovation. It's still innovation, but it's different because of the software.

    Software makes it different

    Airplanes were invented by the Wright brothers, who were experts in bicycles. Anyone could see everything important about the device they built, and even basically understand it. The same holds true for all the innovations up to and including early computers: you could see the card readers, the plugs, and the vacuum tubes. But then things got tough.

    Once complex circuits could be built on a chip, you could see the chip, but not the millions of electronic devices on it. Even worse, you can't see the software that may process billions of instructions on the way to getting something done. You can view the "source code" of a piece of software, but how many people can read it with understanding? Software has piled up over the years, so that today, new software is built on the foundation of millions of lines of code that is in older software, the foundation without which the new software could not operate. Even most modern software "experts" have never seen that code that's "under the surface" of what they write. They don't understand it and couldn't write it themselves.

    Software is a new world, invisible to the majority of normal people, and only partly visible to the vast majority of people who call themselves programmers. Software is a new world, and startups that are fueled with software have new rules for success. Well, not entirely new rules. But they're different enough that most startups don't understand them. Why?  No one is teaching the rules of success for software-fueled startups — least of all business schools!

    That's why I wrote the book. I don't know all the answers. But I have figured out a bunch of them from twenty years of closely examining software-fueled startups, partly as a programmer, but mostly as a technically-oriented investor.

    Applied common sense

    Many of the things I point out in the book sound like simple common sense. But it's not common at all. For example, "solve a problem a customer knows he has" sounds like the dumbest of not-needed advice. But in practice, it's one of the least-commonly-followed dicta you can imagine! Here's an excerpt from the book on that subject.

    Solve a problem the customer knows he has

    This one is so obvious it may sound like a joke; why would a company try to sell a solution to a problem a customer doesn’t know he has? It sounds insane! But it happens over and over again.

    People who come up with new things are often pretty smart. They tend to be imaginative, and see past the here-and-now. They can create abstractions easily, and find the commonalities among apparently unrelated things. They’ll see an obstacle or limitation in a business, or a way to make it much better. They’ll put together a way to remove the obstacle, overcome the limitation or implement the enhancement. They will typically be pretty excited about what they’ve accomplished. Then they’ll try to sell it, get frustrated, and before long they’ll be venting about stupid customers who can’t see past their noses, who will refuse an offer to pay a dollar to get five in return and who are otherwise mentally damaged. This is the typical result of solving a problem a customer does not know he has.

    The problem and the solution may be clear to you, with your skills and ability, and having walked the path of analysis and understanding that you have. But is it clear to the average customer, without either injecting him with brain-enhancing drugs or putting him through a multi-week education course?

    Should you be smarter than your customers? Maybe. But if you are so far "ahead" of them that you insist on selling them a scratching service for an itch they don't feel, maybe you're "too smart," and should get over it.

    This is one of the dozens of things that are obvious in theory, but hard to get in practice. The book has lots more.

    Common sense that doesn't work

    On the other hand, there are some widely accepted practices that are sure-fire ways to fail at a startup. Here are a couple that are described in detail in the book:

    • Understand the market. Bad idea. The "market" is what is there today. You're building something new.
    • Make your tactics match your strategy. One of the worst commonly-accepted notions. It seems to make sense, but it leads to failure.
    • Assure that you have a sound strategy. "Strategy" is a time sink that sucks valuable resources away from the effort to win. "Step Theory" (read the book) explains why.

    Conclusion

    I've had an insider's view of hundreds of software-fueled startups over multiple technology cycles. One of the most striking things I've learned is the winners do things the "wrong" way in the eyes of most experts. That's how they win! Of course, it's got to be the right "wrong" way that wins, not just any old wrong way; there are plenty of wrong ways that are losers…

  • Software Business and Product Strategy Book

    My book on Software Business and Product Strategy is now available, in Kindle and  paperback formats.

    It went through dozens of drafts as two separate private circulation papers on the way to its current form. Here's the front cover:

    Book front

    Here's the back cover:

    Book back

    It's the fifth book in the on-going Building Better Software Better series of books. Here is a description of the origins of the series, and here is a description of each of the earlier books, with links to blog posts with highlights.

    Most of my experience is with computer-based businesses, but there's a rumor, to which I give credence, that the principles described apply to all kinds of small business.

    I recognize that there are piles and piles of books on building businesses and creating product strategies. You can get degrees in it from eminent tenured professors at fancy schools who have publications and honors trailing after them. You can participate in all sorts of programs that teach "innovation" and provide fledgling innovators with access to all sorts of seasoned help. So why another book?

    Pretty much for the same reason that I wrote the earlier books in the Building Better Software Better series: the vast majority of the books and articles I read tell you to do one thing, and the people I see who start and build software-based businesses to success do something different!

    I spent a couple decades creating or working for young, innovative software-based businesses. I have spent a couple more decades investigating, following and investing in software-based businesses — hundreds of them! In multiple technical and business domains. I've worked closely with the leaders of these companies, and with many of the techies in them. I knew and they knew what you're supposed to do, and what's supposed to work. As time went on, I began to notice how the usual "success" rhetoric played out in reality. Patterns began to emerge.

    One of the patterns I describe as "Step Theory." It's a core pattern that is highly correlated with success. There are vertical steps and steps to the side that are often cornerstones of success. Among the dozens of examples I use are Athena Health and Huffington Post.

    Another important pattern is the relationship between strategic positioning and tactical execution, which I illustrate with a CRM company, a beach umbrella service and the invasion of Europe.

    A few other points, each illustrated in the book with examples, are:

    • everyone knows they have to "focus," but knowing how to actually do it is rare
    • everyone knows how important strategy is, but trying to make tactics match strategy screws things up
    • everyone wants to foster creativity and be creative themselves, but it's often too much creativity that sends young ventures off the tracks
    • paying attention to what "the market" tells you frequently dilutes your efforts and prevents success
    • starting a great new business requires looking into the future; but unless you then concentrate on what's in front of your nose and ignore the future, you're doomed.
    • simple things like minimizing customer risk and delivering fast, hard-dollar benefits are crucial
    • shifting company strategy while following success patterns is often crucial to success
    • feedback loops and continuous improvement beat "perfect" plans every time
    • listening to the "wrong" customers can be as bad as listening to none of them
    • …and lots more!

    Each major point in the book is a general pattern I've noticed. Most of the points are not generally talked about in places that are supposed to teach these things. Each has been reinforced in my mind by some of the amazing entrepreneurs I've had the pleasure of working with over the years. Each of the patterns is illustrated by examples I've encountered in real life, sometimes by people who just did the right thing, or by groups that encountered issues and responded by doing the right thing.

    To everyone in the book and everyone else I've worked with, please know that you have my gratitude. It is in part to thank you for teaching me that I have tried to put your lessons into this book, lessons I hope will help others on their path to making the world a better and more productive place.

     

  • Software Business and Business School

    What they teach you in business school does NOT help you running a software business. In fact, it probably cripples you.

    The good news, sort of, is that most businesses are run by b-school principles and values, if not actually by b-school grads. So as a b-school grad running a software business, you won’t be a stand-out; you’ll be limping slowly along with the rest of them.

    But what if you want to excel? Hit it out of the park? Then, I suggest, it would be worth your while to go against the grain, ignore the mainstream “wisdom,” learn what makes a software business different from other businesses, and execute on it.

    Software CEO’s

    Forget about what academics say. Let’s look at some prime examples.

    Larry Ellison

    330px-Larry_Elllison_on_stage
    Larry Ellison is a co-founder and CEO of Oracle. He’s one of the richest men in America. He didn’t graduate from college, but worked as a programmer. No formal business training.

    Bill Gates

    Bill_Gates_June_2015
    Bill Gates is a co-founder of Microsoft. He’s the richest person in the world. He started programming in high school, and didn’t graduate from college. No formal business training.

    Mark Zuckerberg


    330px-Mark_Zuckerberg_at_the_37th_G8_Summit_in_Deauville_018_v1
    Mark Zuckerberg is a co-founder and CEO of Facebook. He’s very, very, seriously rich. He started programming in middle school, and dropped out of college. No formal business training.

    And so on

    I could go on and on.

    Enter the MBA

    For some of these companies and many others, MBA types eventually enter and run the company. If you’ve gotten really big and successful and just want to coast along, it’s not a bad idea to hire a fancy-pants nanny to come in and keep your children from getting into too much trouble. Why not? You’ve earned it!

    But to start the company? Do you hire the nanny to sleep with your husband to get pregnant so “you” can have kids? Not on purpose, anyway! Starting the company, innovating, doing the heavy lifting of hiring and leading the team and building an exciting new company is not something you hire out to an MBA. What’s worse, the MBA has all the wrong skills and applies inappropriate “management techniques” to getting this crucial job done.

    The anti-MBA techniques

    It’s far easier to be a programmer and figure out the best methods for building a software company on your own than to somehow un-learn, one at a time, all the stuff you learned in business school that just doesn’t work. In addition, you have to have the discipline to just shelve all the lessons you’re dying to apply that are probably good for most businesses – but are somewhere beyond the left-field fences in terms of a software business.

    This is a BIG subject … and I’ve written a book about it! Which I’m going to publish! Soon! Yes, I’ll let you know…

    Update: It's available. See here for a description, and here for the book.

  • Secrets of Software Super-Developers

    Outstanding software development groups are truly outstanding. In many sporting events, the winner is often determined by a margin of a fraction of a percent. In software, the best teams are at least 10X more productive than the competition, and sometimes 100X. Here's the most amazing thing of all: the way the super teams do it is not secret!

    Discovering the secrets

    For most of my software development career I was only vaguely aware of productivity differences. My job was rarely to judge and evaluate — it was to get stuff done, quickly and well. I figured out some basic stuff to the extent it helped me get stuff done, and hired people who would contribute. I quickly realized that education was irrelevant, as was experience in a particular technology or tool set. What mattered most was raw horsepower, ability to concentrate, willingness to work and the drive to learn.

    I think my first wake-up call was a consulting project I did for Sallie Mae during the early 1990's, when I was one of three groups advising the company on a massive re-engineering project using document imaging and workflow technologies. One of the groups was me; the second was a local group with 5 people on the project full time; the third was a national consulting firm that had at least 15 people on the project full time with various senior people and "experts" floating around. I was the only person involved with any of the groups who had not only used the technologies, but created them.

    To make a long story short, the other groups performed standard analysis and vendor evaluation, and proposed an expensive process that would result in a 30% productivity gain, if all went well. I dove into the actual work Sallie Mae was doing, noticed some things about the work, and proposed an inexpensive process that would result in a 5X productivity gain. I called the method I used "zero-based re-engineering," combining two fashionable-at-the-time concepts, "zero-based budgeting" and "process re-engineering." They put it to the test and demonstrated that it worked! I tell the whole story here.  Did it catch on? Did the dramatic advantages of the approach lead to widespread use? Nope.

    It took years for me to figure out that what I had experienced with Sallie was the tip of the iceberg, both with giant bureaucracies like Sallie Mae and with the "technology expert" consulting firms.

    It's developer's gold — but you can't give it away

    About ten years later (yes, I know, I'm slow), I started noticing similar stark contrasts among groups of technology companies and the way they built software. The things I noticed were at heart simple — but compared to existing practice, radical. And I now finally realize, revolutionary. Man, I'm really getting the formula for the secret sauce here! I've got to be really careful, and make sure I only whisper these secrets to our portfolio companies. I can't let them get out; if one of our company's competitors got wind of the methods and rolled them out before we did, we'd get killed.

    So for the first couple of years, I was really careful with these "secrets." It was only spoken, never written, and only on a need-to-know basis. Some of the companies I would visit wouldn't say they had "secrets" — but they did things differently from most groups, and I eagerly learned from then. I'd visit other companies which could really benefit by employing one or more of these "secrets." I whispered to the smart, motivated people who are leaders in companies in which we've invested where the gold is — and it's really close, right over there!! — and they're ho-hum, thanks a lot, so glad you let me know, please tell me when you plan to visit again, good bye. In other cases, there was apparent enthusiasm, followed by nothing. I thought the problem might be understanding. So I followed up the verbal with e-mails to solidify the ideas.

    Learning more and revealing the secrets

    Meanwhile, I'm getting a broader knowledge of how the super-developers get it done. It appears there's a spectrum of techniques. Some people use lots of one and little of another, but they all optimize for speed and quality instead of expectations.

    I did notice that putting the ideas in writing helped. So I graduated from over-long emails to PDF papers. I told people the ideas, then gave them the papers. Or the other way round. Having the papers seemed to increase the chances that our companies would take the ideas seriously. I kept augmenting and editing the papers as I learned things, and peppered them with real-life examples. Some of the papers went through a couple dozen editions. By about 5 years ago, I had over ten papers comprising over 800 pages.

    Why won't people grab the gold?

    As I saw more examples of great results, I became ever-more mystified about the laggards who just don't get it.

    Now, to be clear, these "laggards" are so only in relative terms. Most of them are way smarter and more accomplished than their compatriots are in the giant legacy companies. In the eyes of the world, the vast majority are leading edge. I started noticing that what I saw as laggards were nearly universally practicing methods that the software industry as a whole has labelled "leading edge," things like unit testing, Extreme programming or Agile. So on a bell curve of established practices, they were definitely leading edge.

    My dim light bulb finally started flickering on. Almost no one decides important things like software methods on their own! They pick whatever brand of recognized external authority they're most comfortable with and which best matches their self-image, and try to follow the established method.

    Understanding the resistance

    But these are programmers, darn it! The methods aren't exotic, requiring a thorough grounding in quantum string theory — in most cases, they're simpler than the standard stuff. So where does the reluctance come from?

    This is a BIG subject. There are lots of aspects of it, and I'll return to the subject in future posts. But the bottom line is simple: if programmers want to advance in their careers, for the most part they have to accede to the demands of non-technical managers. The non-technical managers have no clue what programming is about, except that it's full of incomprehensible gobbledygook. Understandably, they want to feel confident of what's going on in the department they're in charge of, most of whose people are engaged in activities that are opaque to them. So they absolutely require the use of standard methods, measures and goals that are entirely consistent with other disciplines in which things get built, like buildings and cars. Anything else feels like a "lack of discipline."

    Most of the "secret" methods did not follow the "makes managers comfortable" formula. So the vast majority of organizations would reject their use, regardless of their provable power and effectiveness. For me, keeping things secret was not the problem — it was getting the ideas acted on. There are indeed amazing methods used by software super-developers to get things done 10X or more better than anyone else. But because the methods are not among those talked about by the public "experts" in the industry and do not resemble how houses or cars are built, they aren't a candidate for being used by the vast majority of developers, who do not make decisions for themselves based on substance.

    Going fully public

    That's when I decided there was no harm and possible benefit in going fully public with the things I'd been noticing over the years. That's when I decided to fix up the papers, turn them into books, and publish them in paperback and on Kindle. Here is a little more background, some illustrative blog posts and links to the books that I've already published.

    I am working on book versions of the remaining papers, some of which are more revolutionary than what I've already published. Going through the process of crystallizing what I've learned over the years has taught me a great deal about knowledge itself and innovation, since part of what I've done is observe dramatic advances and seen how the knowledge is acquired and spread.

  • The Building Better Software Better Books

     I've been releasing the Building Better Software Better series of books for the last 3 years. Four are currently available. Another will be released in early 2016, and two more will follow. I'd like to briefly describe the origins and content of the books.

    Writing lots of software

    My first job, at 16, was pressing sweaters in a knitting mill during the summer for minimum wage. It was a motivating experience. Later in high school, I started programming computers. Before graduating with honors from Harvard College, I wrote code for oil refinery optimization and the ARPA-net. I then wrote code for compilers, composition systems, operating systems, DBMS internals and applications, large scale financial transaction processing, document processing, workflow and more. You can find details in my LinkedIn profile.

    I was hands-on at each job, writing lots of code. I was often dragged into management, but struggled to rise to the level of mediocrity. I did fine interacting with customers and creating marketing stuff. And of course writing code.

    Being on the Investor Side

    I started working in the technology side of venture capital in the early 1990's. After helping to generate good returns for the fund, I became a GP at Oak Investment Partners in 2000, where I worked to improve the outcomes of our computer-based investments, from infrastructure and tools to the consumer internet. I saw lots of companies we didn't invest in, and of course spent lots of time with the ones we did. I concentrated on health care and financial technology investments with the Oak HC/FT fund, where I was a GP.

    Like everyone else, I wanted our investments to succeed. But unlike most everyone else, I dove into the products and services, the code behind them, and the people who built the code. Sometimes the code made little difference. But other times, it really mattered. Regardless of its impact, I got to see how things went with the software and the business, sometimes over a period of many years.

    Noticing the patterns

    As I matched my own experience with that of the companies we invested in, I started to notice patterns. I first discussed the things I noticed with people in the companies. I found that writing them down was useful, so I put them into long e-mails. As the e-mails grew, they evolved into private-circulation papers. I made many additions and corrections based on feedback and new experience. I started posting about the ideas at my www.blackliszt.com blog. I'm finally releasing the material as the Building Better Software Better series of books.

    The book series

    Building Better Software Better describes how winning software people actually do what they do. It is often contrary to widespread practice, what is believed by many professionals, and what is taught in computer science and business school. In all too many organizations, failure to build the right software, quickly and well, is a major impediment to business success. Using even some of the methods described in these books can make software into a major driver of business success.

    Wartime Software

    Building bridges for civilian use takes years and thousands of people. Building bridges in wartime takes hours – and it’s done under enemy fire, and the load and quality requirements are higher. Most software is built the way bridges are in peacetime. Some groups screw up building bridges in peacetime, and their bridges fail, typically because they don't follow the established methods. Some groups  — those who are “under fire” or just don’t have time or money to do it the “right way” — build software using wartime rules – software that is better than peacetime software. They do this not by cutting corners, but by following a different set of rules and methods.

    Best to start: https://blackliszt.com/2012/03/bridges-and-software-in-peace-and-war.html

                   https://blackliszt.com/2014/02/lessons-for-software-from-the-history-of-scurvy.html

    General posts: https://blackliszt.com/warfare/

    Book: http://www.amazon.com/Wartime-Software-Building-Matters-Better-ebook/dp/B00CUGHDT8/

    Project management

    The title is the Disease of Software Project Management, because it has in fact been a disaster for software. The idea that software development should be managed by project management techniques is accepted nearly universally — the only disputes are about which of the many minor variations to choose. This book is an extensive deconstruction of project management, its origins and its application to software development. If phrases like "that will probably take us three sprints to get done" spring from your lips without sarcasm, you need to read this book. The core idea is that all forms of project management optimize for expectations, while in wartime you optimize for speed.

    Best to start: https://blackliszt.com/2010/10/software-project-management-dates-are-evil.html

                   https://blackliszt.com/2013/03/software-comparing-waterfall-and-agile.html

                   https://blackliszt.com/2012/10/software-project-management-book.html

    General posts: https://blackliszt.com/project-management/

    Book: http://www.amazon.com/Disease-Software-Project-Management-Disaster-ebook/dp/B009RQ6PUC/

    Software QA

    Things are done faster in wartime, but that's only possible if they're done differently. QA is one of the key areas of difference. There are core ideas to understand, and detailed methods that are different, involving different skill sets than are normally involved in QA.

    Best to start: https://blackliszt.com/2012/04/a-simple-framework-for-software-quality-assurance.html

                   https://blackliszt.com/2012/10/software-quality-assurance-book.html

    General posts: https://blackliszt.com/software-quality/

    Book: http://www.amazon.com/Software-Quality-Assurance-Building-Better-ebook/dp/B009TAMNHA/

    People

    Managers tend to apply the same templates to managing software people that they apply to everyone else. They foolishly think they can manage people who are doing something they don't understand and can't even see. This book covers some of the things that are unique to software people.

    Best to start: https://blackliszt.com/2014/10/joe-torre-and-software-development.html

                   https://blackliszt.com/2015/03/software-people-book-just-published.html

                   https://blackliszt.com/2014/01/who-makes-the-software-decisions.html

                   https://blackliszt.com/2013/11/people-and-substance-in-software-management.html

    General posts: https://blackliszt.com/people/

    Book: http://www.amazon.com/Software-People-Human-Building-Better-ebook/dp/B00VDIFP3U/

    Future books

    Three more books are in the works. The next one, Software Business and Project Strategy, will be published in 2016.

  • Software People: Book just Published

    I've just published my book on Software People — an insider's look at what programmers are like. It's got the same tacky cover design as the three books already publicly available:

    BBSB cover People

    I attempt to cover material in the book that I haven't seen elsewhere. Here are some of the topics:

    • A description for outsiders of all the stuff you've got to know in order to be a programmer — learning a language is just a tiny bit of it!
    • A statement of the programmer's dilemma — how all-consuming mastering even a slice of software usually is, and the difficult trade-off's you're then faced with involving the other skills you need to succeed in an organization and in life.
    • A discussion of how there are levels and levels of software skill — it isn't like learning to drive a car. Similarly with productivity.
    • A extensive discussion of the cultural divisions and wars that blaze through the software community, with mutually incompatible "religions" living in separate colonies, looking with disdain and pity at those who follow false gods.
    • How people who are excellent at software, far from being honored, are often diminished and marginalized.
    • Lots of material about hiring. Who decides, on what basis, common mistakes.
    • A discussion of the deep-seated cynicism that infects a large number of programmers.
    • Technology organizations, managers and decision making.
    • Typical patterns I've seen in software people.
    • An extensive discussion, with examples, of the flaws that are characteristic of high-IQ programmers.
    • Finally, a discussion of the role of the CEO in a company where software plays a key role.

    I've been at work for a long time on my series of books on how to Build Better Software Better. The books in the series have circulated in draft form, and each has undergone multiple revisions over a period of years. I've already released my basic books on Software QA, Software Project Management and Wartime Software. The one on People underwent 9 major revisions. Software People is less technical and more readable by civilians than the others.

    I have a couple more that are no longer undergoing revisions and are about ready for general circulation. They are:

    • Software Business Strategy. There are some things that are unique to running a software business that apparently are not taught in business schools, and are common errors in the software businesses I see. I spell out the problems and solutions in this book.
    • Software Product Design. You'd think we'd have it down by this point. But I see software product design happening all the time, and mistakes made over and over. In this book I describe the best methods for creating successful software products and avoiding the common mistakes.
    • Software Evolution. When you see software built over decades and decades, patterns emerge — and it's far from just onwards and upwards! These software patterns are strong and they repeat, like the well-known Innovator's Dilemma, only much more software-specific. They have amazing predictive power.

    I will publish the rest of the books as time permits. Meanwhile, I'm pleased that I've finally released the Software People book for Kindle, more than 12 years after I circulated version 1.

  • Wartime Software Book Available

    I've been threatening to release my book on Wartime Software. It is now available as a Kindle book.

    BBSB cover WTS
    Wartime Software is all about writing software when competition and speed matter. It's about releasing more often. It's about using new methods, as different as building bridges in peacetime and in time of war.

    Here is the introduction, which should give you the idea.

    Most people assume there is one “right” way to build software, and that’s that. While there are various fashion trends that infect software from time to time, none of them are as different as they like to think they are.

    There are some important but little-discussed facts about the mainstream consensus of software development:

    • It is mostly organized to give non-technical people confidence that things are OK, meaning on-time and on-budget. Its highest principle is predictability. Not speed.
    • It mostly doesn’t work. Studies support what everyone in the field knows: most projects fail outright, or have their goals changed to avoid admitting failure.

    So what we have are methods that are slow – and produce crappy results! What happened to slow but sure, or slow but steady? What we’ve got is slow and stupid.

    If everyone you compete against uses the same crappy methods, you’ll be OK. Your projects will be perpetually late and disappointing, but so will everyone else’s, so you’ll be performing “up to standard.”

    But what if you’re not? What if you’re competing against a group that gets way more done in much less time? I’m not talking 10 or 20% here; I’m talking many whole-number factors, like 10, 50 or more. What’s going to happen? It’s simple: you’re going to lose! If that’s OK with you, stop reading right now, close your eyes, and get lost in your muzak. You’ll be happier.

    If your goal is to learn the standard, accepted techniques of software as widely practiced, don't waste your time with this book. But if you're pioneering or really under the gun and need to find a way to program the way software ninjas program, you'll find some useful information in this book.

  • Software Quality Assurance Book

    I've written quite a bit about software quality over the years. In addition to quite a number of posts on this blog, I've written a short book about it. Currently, I just distribute it in PDF form to work-related people, but I'm thinking about releasing it on Kindle as an e-book.

    Background

    Anyone involved in software who's, like, alive, gets real involved with software quality. Many years ago, I discovered it was useful to follow up meetings I had with software groups with an e-mail summarizing the ideas. As common themes emerged, I found myself with a small library of e-mails, cutting and pasting them. Then the collection turned into a document, since the ideas were so inter-related.

    I started giving the document to groups before meeting with them. I got feedback during and after meetings, everything from mistakes I'd made to important issues I had ignored. So the document grew as it went through at least 15 revisions.

    The document/paper/book is pretty long and comprehensive, and I haven't been discovering new things to add to it recently. So it must be "done." I've even taken the time to throw together a crappy-looking cover:


    BBSB cover SQA

    Mainstream Thinking

    There are literally hundreds of books on software quality. There are tools. There are certifications. There's a huge body of work out there. Why did I put this book together? Does the world really need another book on software quality? What more can there possibly be to be said?

    First of all, let's notice that in spite of all the books, methods, quality software and certifications, software quality still stinks. It stinks in big, process-laiden corporations. It stinks in cool young web start-ups. It stinks all over this land!

    So what's the problem? Do people simply ignore best practice? Do they not understand it? Do they try to apply it but screw up?

    The answer is pretty simple: mainstream software quality methods are no good. They cost a lot, take a lot of time, slow down development and modification, and don't improve quality much to speak of. What's more, most people in the industry who aren't completely asleep at the wheel know it — which is the origin of the typical complaint of quality groups, that they're understaffed, underfunded, and never given enough time to do their job the "right" way. This complaint is generally justified! And it's likely to stay that way, because whenever those groups get what they want, cost and time goes up and quality stays roughly the same.

    So that's why I wrote what I wrote — I wrote what you couldn't read elsewhere, about ideas and methods that were ignored by the mainstream. Who knows why? I've stopping caring.

    Validating the ideas

    I'm only comfortable talking about stuff I know personally. The origin of the book was a large software project, comprising over 7 million lines of code. It processed credit card transactions. I was CTO, and Y2K was rapidly approaching. It was too late to do things the "right" way. We couldn't afford it anyway. Doing nothing was not an option.

    So I dredged up some methods I had used in systems software testing that I realized no one knew about in applications. Because there was no other option, everyone rallied to this one. We got the job done and passed Y2K with flying colors.

    Later, as I became more involved with Oak companies, I noticed that the short cycle times of web development forced small groups of desperate programmers to re-invent a subset of the ideas I was beginning to systematize. When things were really bad in companies not already using the methods, I could sometimes get them to try them, and the ones that really shifted to the new methods found success. By "success" here I mean simply that they got higher quality software with less time and effort and shorter cycle times, with less "tax" on development.

    For a few years, I thought it was important to keep this magic bullet secret. Hah! Glaciers will melt before most software development groups try anything that challenges the way they've done them for years.

    The Down Side

    There's a down side to pretty much everything. Down side to publishing the book? Can't think of one. Down side to using the methods? Definitely. Here are two big, fat problems that emerge when using the new methods, quoting from the book:

    With no big, formless, unproductive but “necessary” QA group, there is
    no place to put weird new hires in hopes that they’ll get bored and leave.
    There’s also no place to send people who are just too stupid or lazy or
    socially skilled to make it as programmers, but you don’t have the heart to
    fire them.

    There are no big, fire-breathing, invective-filled meetings populated
    exclusively with overhead jobs (managers and marketing) who argue about
    “pulling things in” and “risks” and what happened last time and “competitive
    pressures” and elaborate project management charts in 4 point type that someone
    made up last night but everyone makes believe actually have a relation to
    reality other than “not.” Meetings like this raise everyone’s heart rate way
    more than hours in the gym and supply anecdotes providing amusement and smarmy
    edification for weeks. They would be missed.

    Conclusion

    Will I push the "publish" button? Probably. I'm thinking about it. Update: I've thought about it. The button has been pushed. The book is here.


  • The Disease of Software Project Management

    There are a lot of books on the market about project management in general and software project management in particular. More than 6,000 of them.

    They all appear to think that software project management is a good thing — at least the brand they preach.

    I've threatened to publish a book saying that it ain't so. Giving details, arguments and examples. Sounds radical — but it's not. Most sensible, productive software people know that software project management's effectiveness is best compared to the fineness of the emperor's new clothes:


    Emperor_Clothes_01

    In publishing this book, I'm not doing any more than the little boy in the story, who cried out "But he's not wearing anything at all!" In other words, I'm just saying what everyone who isn't blind already knows.

    The book is now available on Amazon for Kindle. I even made a nerdy cover for it:


    BBSB cover SPM
    My hope with this book is to assure the people who know there's something deeply wrong with project management orthodoxy that they're sane people. but living in an asylum which the inmates have taken over. I hope the book will arm them with the concepts they need to make a break for it, so they can experience the fresh air and freedom they deserve.


  • Software Project Management Book

    I've written a fair amount about software project management in this blog. I've also written a short book about it. Like the software quality book, so far I've only distributed it privately. But also like that book, I'm thinking of publishing it as a Kindle book.

    Tid-bits on the blog

    It's hard to be seriously involved with software and avoid run-in's (not to mention complete co-option) with project management. You can hardly start to think about writing some code without someone popping out with "how long do you think it will take," the question of estimates. If you resist or act uncomfortable, you're put on the spot. Everyone, you see, wants their software group to be as predictable as though it were a software factory. The people who talk this way clearly don't understand that dates are evil, but there are so many of them, it's like you live in a land of zombies.

    Background

    While many programmers resist it, they most often accept project management as a necessary evil, as something that they can't avoid. As they age, sadly, most programmers accept this perverse thought as though it were a natural accoutrement of adulthood: wild young programmers may resist the bridle, but mature ones accept that it's part of life.

    I too resisted it, and I too came to appreciate some of the rhetoric of software project management. But then reality intervened.

    A bit more than 20 years ago I ran a small software group doing pioneering work in document imaging and workflow. A new management team took over, and were appalled that we just wrote code. I was guilty of about the worst thing a manager could be accused of (in their eyes): running an out-of-control, seat-of-the-pants operation in which people just did stuff, without the comfort and support of project management.

    Things changed. Expensive project management software got bought.
    Tour-tasks
    Expensive consultants came in and lots of formerly productive people sat in excruciatingly long training classes. For days! Then we settled into a regimen in which lots of reports and dense charts
    Tour-dashboard
    were generated regularly, and we threw around terms like "critical path."

    Well, we "got under control." And stopped writing much code. And fell behind the market.
    Tour-report
    As we became more predictable, we became more inflexible. Timelines stretched out so far that sales people lost heart. It was sad.

    After that baptism by torture, which was followed by many more, I really began to think about what was going on when I got involved with Oak. I had a chance to see lots of companies producing software with varying doses of project management involved.

    I noticed that the Indian Outsourcing companies were pushing project management big-time, and winning business with it. It must be a good idea, right? When you dove into the details, they did not win by being faster and more flexible. They were completely rigid and slower. But predictable and marginally less expensive. Here's the bottom line: they won business by costing less. They cost less because they paid their programmers only about one tenth of the equivalent programmer in the U.S. But their methods had so much overhead that they staffed every project so much that the final bill to the customer ended up being only about 30% less than doing it in-house. So, oddly enough, the Outsourcers with their devotion to project management proved the point of how bad it is.

    On the positive side, I saw entrepreneurial companies doing more work with less, having more flexibility, less overhead, and shorter cycle times. Had they found clever new ways to implement project management? No. They just found better ways to develop better software with fewer bugs, more quickly. That's all!

    Systematic Thought about Project Management

    These experiences led me to try to understand what project management was really all about — why everyone kept trying to apply it to software, why it never works (except if you don't care about time or money), and what the alternatives are.

    It was a long journey, and I was surprised that I ended up with a short book. As I state in the book:

    “Project management” is as effective at guiding
    software projects to success as hopping and grunting is at helping pool balls
    to drop in the intended pockets – it may be entertaining to watch, but it has
    no constructive impact on the outcome. More important, to the extent that we
    focus on our hopping and grunting technique, we fail to pay attention to what
    really matters – hitting the ball correctly with the queue. Similarly, in
    software projects, the more things get off track, the more we seem to focus on
    project management hopping and grunting activities, so much so that the shaking
    floor actually makes things worse.

    Project Management needs to be taken down a few notches

    Part of the problem is that it just doesn't work. Another part is that everyone with experience knows it doesn't work. The crowning part of the problem is that even people who know it doesn't work and put it to the side when they really have to get something done, continue to kow-tow to it. This is illustrated by a story I personally experienced that I tell in the book.

     I recently spent some time with the seasoned,
    non-technical leader of one of our portfolio companies, and some of his lead
    technical people. We discussed one of their most successful products. The CEO
    described how he got involved with a couple customers who had a problem that no
    one could solve, how he promised them a solution and got his programming team
    to throw something together that sort of worked. They then scrambled, fixing
    problems and coming out with a flurry of new releases, always listening to the
    customer and evolving their code until things settled down, the customer’s
    needs were met and the company had a new product line.


    “Of
    course,” said the CEO, glancing over at his technical people, “that was the
    wrong way to do things. Later, we settled down and got back to proper project
    management.” Of course – the CEO had to intervene and make sure something
    important actually got done. Later, “project management,” i.e., doing very
    little but trying hard to do that little on time and on budget, could be
    allowed to return.

    Conclusion

    Again, I'm thinking of pulling the trigger on the Project Management book. But first I need to finish formatting it.

    Update:

    Trigger pulled. Book available.

Links

Recent Posts

Categories