Innovation – Excerpt from Peopleware

Excerpt from Peopleware: Productive Projects and Teams:

Innovation is a subject whose talk:do ratio is even more out of whack than that of leadership. Upper management in most companies talks a good game on innovation. The party line goes something like this: “We need innovation to survive. It is so important. Its importance simply cannot be overstated. No sir. Innovation is reeealy, reealy important. And innovation is everybody’s job. In fact, it is probably the most important part of everybody’s job. Listen up, everybody: Get out there and innovate.” Oh, and by the way,

  • Nobody is given any time to innovate, since everyone is 100-percent busy.
  • Most innovation that happens anyway is distinctly unwelcome because it requires accommodating change.
  • Real innovation is likely to spread beyond the realm of the innovator, and so he or she may be suspected of managing the organization from below, a tendency that upper management tends to view with great suspicion.

The net here is that it takes a bit of a rebel to help even the best innovation achieve its promise: rebel leadership. The innovator himself doesn’t have to be a great leader, but someone has to be. What rebel leadership supplies to this process is the time to innovate–you take a key person away from doing billable work (This may constitute constructive disobedience on your part) in order to pursue a nascent vision–and the hard push for whatever reshaping the organization has to submit to in order to take advantage of the innovation.

Since nobody ever knows how the next innovation may alter the organization, nobody knows enough to give permission to the key instigators to do what needs to be done. That’s why leadership as a service almost always operates without official permission.


Coding Problem: Find out if a subarray exists that sums to a given value

Two years ago, I started this blog with (mostly) a series of posts on the small coding problems that came across my path at the time. Most of these were told to me by my brother-in-law who had been interviewing for his first software engineering position. He had been given dozens of problems such as, “Given a bishop in a given position on a chess board, and a target position, determine the number of moves the bishop would take to arrive at the destination,” or, “Find all pairs of numbers in an array that sum to a given number.”

Recently another one of these crossed my path, and I thought it was a great problem.

Given an array of integers, and a target sum, find out if there is a subarray that sums up to that value.

What I like about this problem is that it is similar to some well-known algorithm problems but tweaked just enough that it is unique. Also, it can be solved in a variety of ways, some more efficient than others. If you enjoy puzzling through coding problems, please try to solve this and see if you can do it in O(n) time. Then, when you are ready, visit the gist of my solution (done in Java since more people know it) and let’s compare notes!

Play Framework Full Stack Development Video Tutorial

I’ve created a set of three videos covering a simplified introduction to Play Framework.

In the first video, we download and setup the Play Framework and build a web service.

In the second video, we add a database and connect our web service to the database so that data can be retrieved.

In the third video, we create a small UI with HTML, CSS, JQuery, and MustacheJS that allows users to look up data and renders a nice result.

First impressions of TypeScript

For a few months I’ve spent a few hours here and there with TypeScript and Angular 2. I have a number of impressions and reactions. These range from “Microsoft made this?” to “This part is pretty good” to “Man, JavaScript sucks.” The last one is because I haven’t really touched Javascript for a few years and I got really comfortable with a concise, elegant language known as Scala.

If you want to see a really good example of why I don’t like JavaScript / TypeScript let me show you a snippet of something I commonly see in these codebases…