12 habits of 10x software developers

One of Marc Andreessen’s most quoted statements is “Software is eating the world“.

All that software has to be written by someone (or something in the case of code generation).

There are a lot of software developers and they come in a wide variety of skill levels. The question as a business owner or software development manager is how do you find developers that are 10x better than average? After all, no one wants to pay a beginner developer to learn their craft. The 10x developers are those that can move a project or, in some cases, a whole business forward. They are able to far outproduce average colleagues in both quality and quantity of results. And, for the enterprise that hires them, they are a far better value. To borrow a phrase from the old TV show Kung Fu, they are able to walk on rice paper.

So what are some characteristics and habits of 10x developers?

Here are 12 that stand out to me.

1. They regularly engage their customer

Working closely with the customer is an essential help in avoiding building exactly the wrong thing (and thereby having to re-write it). The 10x developers I have worked with are effective at keeping the customer in the loop of development (even before agile) to make sure that what they implement will meet the customer needs without significant re-work.

2. They are a master of their eco-system

Whether your environment is enterprise Java, embedded systems in C with a custom RTOS, web delivered apps with a PHP or Ruby framework or some .NET application there is an eco-system to consider. That eco-system is the sum total of the environment that your application is built and operates in. For example, when writing real-time embedded software, you had to master the compiler/linker tool chain, the RTOS environment and the specific hardware and sensors that you were working on. The 10x developer understands the pieces of the eco-system, how they work, how they fit together and how they impact the code.

3. They are a native speaker of their language of choice

The 10x developer is a fluent speaker of their language of choice. Bruce Eckel has written a  couple of books where the titles begin with the phrase “Thinking in”, like Thinking in C++ or Thinking in Java. That is literally what 10x developers do. They have the bulk of the core language memorized. When they sit down to code, that language flows out of them like water from a mountain spring.  Native language speakers can be more expressive and idiomatic in their implementations. They know the right built-in function.  They know whether it is …(needle,haystack) or the other way around. They look at the language manual when they need to but that is not often. And, for languages that continue to evolve, like  Go, PHP or Swift for example, they keep up with the changes.

4. They write maintainable, extensible code

The 10x developer writes code that is clear, modular and straightforward to extend. They document consistently. They communicate intent with their classes, methods and variable names. There is little ambiguity in what a method or class member does. They produce code that is usually fairly intuitive. When you open the files produced by one of these folks you can say a professional has been here.

5. They write code that lets you know what went wrong

One of the most time-consuming activities of a developer is trying to figure out what went wrong when code execution fails but does so with no trace, clues, breadcrumbs, log entries, exception stacks or the like. A 10x developer will leverage language features, like exceptions and logging libraries that allow them to communicate what errors occurred and their context.  This leads to quicker resolution of problems.

6. They develop their own stockpile of snippets and utility code

One 10x developer that worked on my team showed up on their first day with a hard drive full of their personal code of libraries and utilities they had written.  That fact allowed them to move very fast. No re-inventing the wheel. No figuring out how to re-write some basic algorithm or library. They brought tools with them.

7. They master the tools they use to produce the code

Maybe you are ‘vi‘ person, or emacs. Or, you could be a NetBeans,  Eclipse, or Visual Studio user. You might be a PHPStorm or PHPed expert. How about Sublime Text or edlin (just kidding)? Notepad++ anyone? Or any of the other hundreds of other great tools. Regardless of their tools of choice, a 10x developer has a toolset they like, have mastered, have customized and that allows them to turbo charge their output. On one team I led, I had a developer that was an emacs guy. He could make emacs slice, dice, julienne and dance on a pin. It was fascinating to watch him code and edit with emacs because he was so fast with it. That mastery gave him a significant advantage over those who were just average with the tools.

8. They leverage frameworks

I know, some of you are thinking, 10x developers don’t need no stinking frameworks. Yeah, well, maybe. Modern frameworks provide so much functionality and give developers so much leverage in speed of creation of complex apps that they cannot be ignored, especially if you care about time to market. 10x developers with mastery of say Ruby on Rails, or Django or Laravel can produce web applications with remarkable speed. Fully functional, complex web apps. The extensive API’s of Java or .NET provide astounding capability that a 10x developer can leverage to further accelerate development speed and leave their parochial, framework-less teammates in the dust.

9. They code idiomatically

Every language has its way of doing things. In the Python community you see mention of doing things ‘pythonic‘ which is a reference to doing things in a native python language way.  When I first started writing python, I came from a C  background. It was amazing how much like C my python looked. But that was not idiomatic python. I had to learn to use the constructs of the language and the libraries natively, the way they were meant to be used. By doing that, I would take what was 20 or 30 lines of code and make it 5 or 6.  10x developers do exactly that with their language of choice. And it accelerates their results.

10. They code with secondary effects in mind

Any code written will eventually have to be executed. It will take up memory, use system resources and impact other programs in shared environments. 10x developers write code with these secondary effects in mind. How long a transaction should take, how much extra memory an algorithm extension will use or what additional cpu will be taken if we increase the message throughput are sample considerations in this area. A 10x developer will gain insight through testing and experiments that will build intuition for future projects. They code so as to eliminate as many secondary effect surprises as possible.

11. They don’t repeat themselves

You can spot the code of an amateur easily.  Repetition. You see a lot of cut and paste evidence throughout the code body. When noobies need to do the same operation they cut and paste the few lines of code needed instead of stopping to make a method or function to do the job. This practice adds bloat, decreases maintainability and reduces readability in many cases. 10x developers modularize their code and have effective class structures so they don’t repeat themselves.

12. They make effective use of SCM tools

Software configuration management tools are the backbone of any successful longer term development effort. Tools such as Clearcase, GitHub, SVN, or Perforce are essential to tracking, releasing and maintaining any software project. Features such as tagging, branching, merging, and finding the accurate delta between two releases are crucial to a high quality developer and nonnegotiable for a quality software team. A sure sign of a beginner is keeping code in their home directory or desktop and making a new file or folder copy each time they make changes.  A 10x developer understands the SCM tools they use and leverages them to precisely know what they did, when they did it, what it affected and where it went, very quickly.

Certainly these habits alone won’t make you a 10x developer. However, they will take you a long way down the path. If you incorporate these habits and characteristics in your coding practices you too may one day walk on rice paper.

So what happens to radio?

For years I have been a commuter. I have driven 15-20 miles each way, back and forth to work for over 20 years, averaging probably an hour a day. For much of that time I was a radio junkie. I listened to music radio, talk radio, sports radio and local radio for traffic and weather  and news updates.

Then a few  years ago a colleague suggested some podcasts that he thought I would enjoy.  That started a fundamental change in the way I consumed media during my commute. Since I started listening to podcasts I don’t listen to radio at all, except when my kids want to listen when they are with me.

I now only listen to podcasts. I choose the host, topic or guest that interests me that day. I now subscribe to around 30 or so podcasts and they occupy my commute time. Now I am educated on topics I choose, rather that whatever the radio host chooses to talk about or play.

So what about traffic reports? I used to rely on local radio for that. Now with mobile apps like Inrix, Waze or just Google Maps with traffic I don’t need traffic reports.

What about local sports? I used to rely on radio for that. Now I just rely on Twitter and selected apps like the ESPN Sportcenter app.

What about local news? Again radio was my almost sole source for news. Now, Twitter. I just follow the news organizations I want and don’t have to wait for the radio announcer to tell me what is going on.

What about local weather? Again I was relying  heavily on local radio for that. Now, I have selected weather apps such as Weather Bug, Weather Channel and Yahoo Weather.

And music? Pandora, Spotify and others provide augmentation to the music I have downloaded to my phone.

If my personal experience is any indication then radio has tough times ahead without changes. Media strategist Mark Ramsey agrees. I am not sure what those changes would look like. What do you think?

 

 

The coming small business glut

If you are someone who is a purchaser of small businesses or one who may be so in the future then you need to read this.

According to a Pew Research Center article:

On January 1, 2011, the oldest Baby Boomers will turn 65. Every day for the next 19 years, about 10,000 more will cross that threshold.

That tidal shift will lead to, as INC Magazine stated:

An estimated 65 percent to 75 percent of the small companies in the U.S. — some 10 million — will likely hang up a “for sale” sign over the next five to 10 years. Why? Retiring baby boomers.

For those who are future buyers of small business this will lead to more opportunities, deals and inevitably price pressure on small business prices. It will also present more opportunities for those employees to transition to their own business.

Private equity is already gearing up for this sea change as discussed by Carl Doerksen and Billy Fink among many.

If you are a person that eventually seeks to own a small business or add more to your portfolio, planning now will put you in a position to profit from this historic demographic change.

How do you fascinate?

I recently had the pleasure of listening to Sally Hogshead on John Lee Dumas’ podcast Entrepreneur on Fire. Very interesting. But I took no action.

I then heard her again, a few weeks later, on Dave Ramsey’s podcast Entreleadership. Again, really engaging but I took no further acton.

Then, after a prod from a colleague, I finally Continue reading How do you fascinate?

Will they come back if the coupon is expired?

Expired Coupon - SadNew Customers for a Small Business

Recently I went with my family to try a new restaurant in our town. It was a dreary Saturday afternoon and the gang was hungry for dinner and since we were already out running errands we decided to try this new restaurant while we were out.

The place was Continue reading Will they come back if the coupon is expired?