I have wasted quite a bit of time in my life learning about things that haven't really helped me in software world. Now I thought about sharing how some of these things may not help much on most margins, but I see some of the problems in SW engineering caused by lack of understanding of things outside SW engineering.

The brutal truth is depth beats breadth every time of the day. At Valve they support T-Shaped people. People who specialise in something but know a little about many other things.

I think Tyler Cowen once remarked that economics has excess specialisation. It makes sense in the field like social science which is as wide as it is deep.

So let's take this to software engineering. For example, if there's a broken piece of software, there's a difference between saying "well you shouldn't do that because [reasons]", and actually observing the process, the people and their real abilities, the market forces behind these things, the ends of the people producing things.

I bought PC some years ago and I was saddened how far behind PC world is from Macs right now. I see this is as a failure of PC world to coordinate properly. There's too many vendors, and each of them have a incentive to stay afloat instead of combining forces to create a good competitor to Apple in laptop world. This is a shame because many of them are quite innovative on smaller margins.

Mac & OS X has few models which means if you have a problem, chances are someone else has it too, it has working packaging solution, high quality of components and aesthetically pleasing outlook. These are called economies of scale. Complexity adds bugs. Apple is still rather customizable, although I wish it were more so. Homebrew is a great addition to this.

When one institution controls hardware, operating systems and major applications it can iron out any integration issues. The problem with one institution controlling everything is that they can do whatever they want, and we're stuck with solutions we don't like. There's always a tradeoff between integration and customization.