Tuesday, September 18, 2007

THE GOOD BOSS - by: John Maeda

http://weblogs.media.mit.edu/SIMPLICITY/

When a team succeeds at achieving a lofty goal, the good boss credits her team members as being the reasons for success instead of herself. This "boss behavior" enables the team to trust their boss as one who enables their own careers over the boss' own career.

When a team fails at achieving a lofty goal, the good boss owns the failure as her own and doesn't blame the team. This boss behavior enables the team members to take creative risks with their work, and not feel they will be penalized by their boss when/if they fail.

Both boss behaviors require the core attributes of the boss as: 1) being self-assured but not an *sshole about it, 2) keeping the larger goals in mind with priority over the issues that are just local to herself, and 3) facing each day with acceptance of the challenging responsibilities that comes with being the boss.

Reader Aida in Georgia importantly notes, "To me, the qualities of the 'good boss' that you described are the difference between a 'boss' and a 'leader.' Having been a 'boss' and having been a member of team, I make this distinction, and I'd much rather work for a leader than a boss :-)"

Sunday, August 26, 2007

Organizations need managers who definitely understands programming

Holding a Program in One's Head

There is a contradiction in the very phrase "software company." The two words are pulling in opposite directions. Any good programmer in a large organization is going to be at odds with it, because organizations are designed to prevent what programmers strive for.

Good programmers manage to get a lot done anyway. But often it requires practically an act of rebellion against the organizations that employ them. Perhaps it will help to understand that the way programmers behave is driven by the demands of the work they do. It's not because they're irresponsible that they work in long binges during which they blow off all other obligations, plunge straight into programming instead of writing specs first, and rewrite code that already works. It's not because they're unfriendly that they prefer to work alone, or growl at people who pop their head in the door to say hello. This apparently random collection of annoying habits has a single explanation: the power of holding a program in one's head.

Saturday, June 9, 2007

Again, Joel Spolsky's List

1. Do you use source control?
2. Can you make a build in one step?
3. Do you make daily builds?
4. Do you have a bug database?
5. Do you fix bugs before writing new code?
6. Do you have an up-to-date schedule?
7. Do you have a spec?
8. Do programmers have quiet working conditions?
9. Do you use the best tools money can buy?
10. Do you have testers?
11. Do new candidates write code during their interview?
12. Do you do hallway usability testing?

Sunday, June 3, 2007

Python's Design Principles

  • Beautiful is better than ugly.
  • Explicit is better than implicit.
  • Simple is better than complex.
  • Complex is better than complicated.
  • Flat is better than nested.
  • Sparse is better than dense.
  • Readability counts.
  • Special cases aren't special enough to break the rules.
  • Although practicality beats purity.
  • Errors should never pass silently.
  • Unless explicitly silenced.
  • In the face of ambiguity, refuse the temptation to guess.
  • There should be one -- and preferably only one -- obvious way to do it.
  • Although that way may not be obvious at first unless you're Dutch.
  • Now is better than never.
  • Although never is often better than right now.
  • If the implementation is hard to explain, it's a bad idea.
  • If the implementation is easy to explain, it may be a good idea.