Book excerpt: Herding Cats and Coders by Greg Ross-Munro

ATTN: non-techies.

Local tech ecosystem leader and entrepreneur Greg Ross-Munro, CEO and Partner at Sourcetoad, recommends you read his new book, ''Herding Cats and Coders: Software Development for non-Techies''  to help bridge the communications gap between those who don't know how to do programming and those who do.

"And to avoid boring you to death by turning this book into a dry, technical treatise, I've kept things lighthearted -- and irreverent at times,'' says Ross-Munro, who started programming at age 8 and sold his first software consultancy at age 24.

His bio describes Ross-Munro as "an expert in large-scale system design for enterprise organizations. He also works on human systems interaction, business process design and optimization, the software development life-cycle, and software startups and business models.''

Ross-Munro, a global traveler, whiskey aficionado and resident of Tampa, has helped over 300 companies take digital products to market. His book is available at Barnes & Noble, Amazon and independent bookstores.

Here is an excerpt:


In the broadest sense, software development includes all aspects of the process of developing software. That includes the conception, the research into how to do it, the initial design on paper, the prototyping of the system, the maintenance of the system once it’s built, and the management of the actual processes involved. However, at the end of the day, it’s mainly about the programming of the system you seek to build.

So, What Is Programming Anyway?

At the core of all software development, whether you’re creating a simple website or a multimillion-dollar game, is programming. Programming is the process of creating a list of instructions for the computer to execute. A programming language allows the programmer to turn words and numbers into something the computer can understand.

In the lousy old days of computers, programmers created software by directly manipulating the instructions on the processor. They wrote sets of instructions for the processor to run, including the order they wanted them to run in to get their results. Using binary code, programmers communicated with the machine to tell it which instructions to run against what variables—they would pass the computer some numbers and tell it to add, subtract, print, or do whatever they wanted it to do. This took an incredibly long time, and, as a modern-day programmer, is pretty difficult to even comprehend.

In my grandfather’s day, programmers created software using assembly code. Assembly is a human-readable language, where the programmer can refer to an instruction by a number and pass it human-readable values, like 1, 2, 3, 4, “add 1 and 2,” “Hello, my name is Bob,” and so on. Assembly is still used today when advanced programmers need to code something that operates at a very basic level (like running your graphics card drivers) or something that needs to be very fast. Most modern coders have likely never even seen assembly languages, and most likely will never need to see it.

Programmers today write software in higher-level languages. The programming tools they use translate more human-readable code into lower-level code that the computer can ultimately understand. For example, a modern programmer working with C++ (one of the world’s most popular programming languages) could type: 

a = 1;
b = 2;
c = a + b;

And because 1 plus 2 is equal to 3, “c” would be 3. 

Today, most modern programming languages have tons of features included to make the developer’s life much easier. For example, Visual Basic (a very popular language for Windows programs) could give you the name of the month with a simple command:

response.write(MonthName(8))

Would output: August

Clearly, that’s a lot less work than writing the code needed to have an index that associates the names of the months, along with the number of months in a year (which you would have to do if you didn’t have that clever function).

Modern languages are full of these kinds of nice shortcuts. Some specialized languages have functions to do very complicated tasks with one line of code. For example, the Wolfram programming language can do things as complex as pulling out all the education details from your friends’ Facebook pages with one or two lines of code.

How does all that computer code get turned into something the CPU can understand? If you remember, computers only understand binary code (or machine language), and not lines of text in a programmer’s toolkit. Well, all modern programming languages are either “compiled” or “interpreted.” These are the two methods of translating lines of programming into machine language.

Compiled Languages

Compiled languages use something, surprisingly, called a compiler. A compiler is a special program that converts the programmer’s code to a lower-level format the computer can understand. In other words, it will take something like “1 + 2 =?” and convert it to a set of instructions and binary data that the computer can run. Compiled programs are the kind you are likely most familiar with in your day-to-day dealings with a computer. Microsoft Word, Adobe Photoshop, and most of the apps on your smartphone are all examples of compiled software. They are complex and fast. Here are some compiled languages you may encounter:
C++
Objective-C
Swift
Go 
Java
Delphi
Fortran
COBOL

Interpreted Languages

Interpreted languages, on the other hand, work a little differently. In the most basic sense, programs written in interpreted languages run inside other programs that “interpret” what to do with that code. Websites are the most common example of this today. When a programmer codes up a website, they don’t compile their code. The web browser itself has a set of rules that takes the given code and then does what the code tells it to do. Your web browser is a good example of a compiled program, and the website inside it is an interpreted program.

Here are some interpreted languages you may encounter:
Ruby
PHP
Perl
Python
JavaScript

There are hundreds of programming languages out there. Web applications and mobile apps can be built with both interpreted and compiled languages, so don’t worry too much about which is better; your development team should be able to help you decide on the right tool for the job. At the end of the day, all programming languages are doing the same thing: providing a number of shortcuts for software engineers to string together recipes of instruction sets to create something useful.

Herding Cats and Coders is published by Sourcetoad, a software consultancy firm based in Tampa. This excerpt is reprinted in 83 Degrees with permission from the author, Greg Ross-Munro. Comments? Contact 83 Degrees.
Enjoy this story? Sign up for free solutions-based reporting in your inbox each week.