This is a great essay in which Paul Graham sees hackers as having more in common with painters than mathematicians and scientists in the field of Computer Science. He extols the practice of tinkering and making rather than rigidly formally designing everything ahead of any code writing. He also talks about big companies often crushing hacker creativity through designing by committee and layers of product managers that ends up with mediocre software.
In his book Creative Selection, Ken Kocienda describes a software development process that seems compatible with the hacker ethic. The book focuses on the latter years of Steve Jobs’ time at Apple, and in particular during the early iPhone development. Ken describes a system of Directly Responsible Individuals (DRIs) that were responsible for particular pieces of functionality. Steve Jobs, the Apple CEO, would talk directly to the DRI of features and their opinions would be most important. There was a remarkably thin hierarchy and no product managers. At that early stage, there were about 8 software engineers that would be paired up with designers. Above that there was a manager that oversaw the software engineers and a manager that oversaw the designers. And then above that there was Steve Jobs. The development process involved a lot of prototyping and frequent demos. I’ve seen a few interviews with Ken but this is my favourite:
My own personal angle on this, which I don’t see getting talked about a lot, is related to the effects of having developers being passionate about their software and loving what they do. In my experience this makes all the difference. When a developer is passionate about their software, they will put more effort on the little details that turns good software into great software. Obviously there needs to be the correct environment to cultivate this passion for the work. In my opinion good software development requires dedicating large blocks of time without distraction to get in “the zone” where productivity is high. In my experience, most individuals that reach an elite level in their field (be it software development, entrepreneurism, science, sports or anything) have an almost obsessive mindset where the pursuit of their goals consumes their life.
Regarding the DRI concept, I will add that leadership is important for a software developer. Not necessarily leadership as in managing other people but leadership as in taking responsibility for your area of code/functionality and using initiative to be proactive in the evolution of that area.
In the last few years I’ve had two hard drives fail. As a last resort each time I put the drive in a freezer for about half a day and then managed to recover most of the data.
WARNING: If the data on the failed hard drive is very valuable to you then get professional data recovery advice. I tried numerous software recovery tools and none of them worked. I was not prepared to pay out for physical hard disk recovery, so I decided to try freezing.
On the most recent HDD failure I noticed that it made a clicking noise. The PC displayed a “no operating system found” message and the drive was inaccessible on other PCs. First I tried putting the drive in a freezer for a couple of hours but this did not work. I then left it in the freezer for about 14 hours and then it worked. Note that if this works there will probably be a limited time in which you will be able to use the drive, so copy the most important data first. The first time I had long enough to copy the entire drive but the second time I only managed the get about half of the data. Don’t forget to put the drive in a plastic bag or two before putting it in the freezer.
The current header image for this blog is based on the “Earth and Sun” photo from NASA:
The Setting of the Sun Over the Pacific Ocean and a Towering Thundercloud, July 21, 2003 As Seen From the International Space Station (Expedition 7); Image Science and Analysis Laboratory, NASA-Johnson Space Center. “Astronaut Photography of Earth – Display Record.”
Docbook is a specification for writing documentation in XML*. Once an XML document containing the data content of the documentation has been created, it can be processed by XSL transforms to produce an output format (pdf, html, chm and more…). This proved particularly useful for a project at work, where I generated a set of output formats from a single XML data source.
The Ophiocordyceps unilateralis fungus infects carpenter ants and then somehow makes the ant move to a leaf at a specific height (out of the ant’s normal habitat). The ant will then clamp on to the underside of the leaf and will then die. The fungus then erupts a long stalk out of the ant’s head. This then sprinkles spores that can infect more ants and the cycle starts again.
One last interesting fact: The human body carries around 10 times more bacteria cells than our own body cells. However, the bacteria cells are much smaller than our own cells. Without these bacteria, we would be in big trouble. http://www.wired.com/medtech/health/news/2004/10/65252