Feel like a geek and get yourself Ema Personal Wiki for Android and Windows

28 April 2010

Joel on Software - a summary: 2006

This is a summary for the blog by Joel Spolsky, Joel on Software, volume 2006. The summary for the years 2000-2010 can be found on the Joel on Software summary index page.

If you start a software company, 1. be clear about what problem you are solving, 2. find a partner, 3. don't expect much at first, be patient. -- Micro-ISV: From Vision to Reality.

If code is to be successful, it needs an organization that takes the code and turns it into products. Your first priority as manager of a software team is building a "development abstraction layer". This layer makes that the only thing programmers have to care about is coding. -- The Development Abstraction Layer.

Using AJAX is a huge advantage over traditional full page request / response methods, because it makes the user feel being in control. -- FogBugz 4½ and Subjective Well-Being

Non-programmers will never be good at running software companies because they can't tell the bunglers from the real programmers. -- My First BillG Review.

Programming languages with first-class functions let you find more opportunities for abstraction, which means your code is smaller, tighter, more reusable, and more scalable. -- Can Your Programming Language Do This?.

Three management models
The Command and Control Management Method is best summarized as "do it or I'll shoot you". Programmers don't like this. And in a software company you can't just tell everybody exactly what to do because it would simply be too much and the manager is often the person with the least information.

Econ 101 management assumes that everyone is motivated by money. One big problem is that it replaces intrinsic motivation (the natural desire to do things well) with extrinsic motivation (getting paid if you things well), which reduces the desire to do a good job. Another problem is that people will be trying to game the system instead of doing things well. Econ 101 is abdication of management: management simply doesn’t know how to teach people to do better work, so they force everybody in the system to come up with their own way of doing, which they can't because that is a management job.

The Identity Management Method is making people identify with the goals you’re trying to achieve, which creates intrinsic motivation. Be open about your own goals and don't have a hidden agenda.

How do you decide between C#, Java, PHP, and Python? The only real difference is which one you know better. -- Language Wars.

Guerrilla Guide to Hiring

To get great programmers: 1. go to conferences and events and talk to the people there, don't post on a general purpose job board. 2.get great kids a year or two before they graduate (internships) 3. build a community to recruit from. 4. Employee referrals is one of the weakest sources of new hires. -- Finding Great Developers.

Programmers are more likely to take the job that offers them a nice private office with an Aeron chair and good hardware. Treat developers as the experts, regardless of politics. Programmers will be happy if they work on a cool project with cool technologies. Managing your corporate brand is just as important for recruiting as it is for marketing. -- A Field Guide to Developers.

Criteria for sorting resumes (!= hiring). 1. Applicant is passionate about computers and loves programming 2. It has a cover letter customized for this particular application. 3. The applicant can communicate. 4. Is smart. 5. Has experience with difficult technologies. 6. Adds diversity to the team. 7. Don't look for experience with particular technologies if you're not looking for a guru in a particular technology. -- Sorting Resumes.

Type declarations are one of those accidental difficulties that good programming languages can eliminate. -- Book Review: Beyond Java.

A phone interview can save a lot of time when hiring. Smart people can generally tell if they're talking to other smart people by having a conversation with them on a difficult or highly technical subject. -- The Phone Screen.

Agile is not supposed to be about swapping out one set of bureaucratic, rigid procedures for another equally rigid set of procedures that still doesn't take customer's needs into account. -- From the "you call this agile?" department.

We need to rethink the misconceived notion that lots of choices make people happy. Each additional choice makes complete sense until you find yourself explaining to your uncle that he has to choose between 15 different ways to turn off a laptop. -- Choices = headaches.

Lego programming does not exist and never will. -- Blog post 2006/12/05.

"Simple Sells" is a myth. -- Blog post 2006/12/09

Poeple most often don’t really care about software itself. The more they notice it, the more annoyed they’re going to be. Elegant software gets out of the way and only presents choices to support the task they are trying to accomplish. -- Elegance.

Whatever. -- Explaining Steve Gillmor 23 Dec.

Gifts from vendors to bloggers are ethically indistinguishable from bribery and reduce the credibility of all blogs. -- Bribing Bloggers.

No comments: