Wednesday, February 28, 2007

Jolt awards

http://www.joltawards.com/2007/

The nominees are -

Books (Practical/General Developer Interest)

Agile Software Development: The Cooperative Game (Addison-Wesley) by Alistair Cockburn
Catastrophe Disentanglement (Addison-Wesley) by E. M. Bennatan
Eric Sink on the Business of Software (Apress) by Eric Sink
Practices of an Agile Developer (Pragmatic Bookshelf) by Venkat Subramaniam and Andy Hunt
Software Creativity 2.0 (DeveloperDotStar) by Robert L. Glass
Software Estimation: Demystifying the Black Art (Microsoft Press) by Steve McConnell
Weinberg on Writing: The Fieldstone Method (Dorset House) by Gerald M. Weinberg

Books (Technical)

Code Quality (Addison-Wesley) by Diomidis Spinellis
How to Break Web Software (Addison-Wesley) by M. Andrews, J. Whittaker
Java Concurrency in Practice (Addison-Wesley) by Brian Goetz et al
Rails Recipes (Pragmatic Bookshelf) by Chad Fowler
Refactoring Databases (Addison-Wesley) by Scott W. Ambler and P. J. Sadalage
Head First Object-Oriented Analysis and Design (O'Reilly) by B. McLaughlin, G. Pollice and D. West
Ruby Cookbook (O'Reilly) by Lucas Carlson and Leonard Richardson
CSS: The Missing Manual (O'Reilly) by David Sawyer McFarland
I should get my hands on atleast some of these.

Sunday, February 11, 2007

Bad dress sense

I get quite an earful for my dress sense. Now I dont have to feel bad about it, since I have an authority like Paul Graham backing it up! :)
the less energy people expend on performance, the more they expend on appearances to compensate.

Suits, for example. Suits do not help people to think better. I bet most executives at big companies do their best thinking when they wake up on Sunday morning and go downstairs in their bathrobe to make a cup of coffee. That's when you have ideas. Just imagine what a company would be like if people could think that well at work.

Thursday, February 01, 2007

Advice to freshers

I have been interviewing a lot of freshers for internship at my company. The more I talked to these people the more I felt that the lads are being misled. So this is an effort of trying to put a list of things that freshers might want to keep in their mind. Actually this list will hold good for the inexperienced as well. Most of this is locale specific, Bangalore, India to be more specific.

1. If you are not in the field of computers already, then there are a certain set of basics that you might want to learn first. OK, we, comp.science graduates spend about four years learning it. So even though you think that you can become a developer by taking a course in Java at one of the centers in Amirpet or NIIT within couple of months, there are certain things you ought to know and understand. Basics are important, rather most important. Its not just enough knowing a language. I agree that you dont have to know how the engine of a car actually works in order to drive a car, but you should atleast know how and when to use the brake or the clutch.

2. Programming is like painting. This is not just my view. So what would you do if you want to learn painting? You paint. The first one might come out quite different from what you expected, but as you keep on practicising it, without worrying about throwing away your work (actually this is important), you will surely reach a point where you can create something that you had in your head. Now having something worthwhile or beautiful in your head is altogether different ball game.

3. On the same analogy, there are painters who just paint walls. And there is Da Vinci. And there is a whole range in between. At some point, there is genetics I guess which will give an unfair advantage to the very few. We had only one Da Vinci, but thats something you cannot help. What you can help to climb up the ladder is to associate yourself with the best and improve your skills by helping the master do his/her job better. OK I dont want to sound like a the head master in your school who is using a cane, but what we lack in our profession is the apprenticeship. Our trade needs it more than any other form of engineering discipline. So go find a good master or guru or mentor. These dont have to always be only people. They can be groups (esp. open source projects) too.

4. The mindset that most freshers have with respect to programming is that they can read the manual of a programming language say Java, know the syntax of the language and they are masters of Java all of a sudden. All they are is at the max half compilers who cannot convert the source into bytecode. I am not declining the importance of keeping the syntax in the head. All I am saying is that reading the manual of how to use a screw driver is not the same as knowing to use a screw driver. And programming is a hundred times more complex than this task. Like the great Morpheus says - "Walking the path is different from knowing the path"

5. Find the area that you might love to work in. Actually this is easier said than done. This is something that you want to explore while you are in school. For that matter, this should be the reason why people should go to school. Trying your hand in a masters course might also help. Its also not necessary to declare it to the world and stick with an area forever. You might simultaneously work in multiple areas like one in your office and one at home. Sounds like a dumb suggestion, but people ignore the most obvious things. Whatever happens dont let go until you find what you love. Now is the time when you have a lot of energy and enthusiasm to explore. So dont let it go waste.

6. Prestige kills creativity. It hampers learning. "It causes you to work not on what you like, but what you'd like to like." - Paul Graham.

7. This field is like research to a large extent. If you are not ready for lifelong learning better not get into this mess. Ofcourse five to ten years from now you will be a project manager or in some management position. For that you dont have to become a developer, you could always get in through an MBA or something of such sort. Dont become a developer half-heartedly and screw it up for the rest of us.

I hope this will give atleast some direction to you. If you have more thoughts or criticisms please feel free to express them.

Founders at work

In Jessica Livingston's own words -
"Founders at work is a collection of interviews with founders of famous technology companies about what happened in the very earliest days."
This is a book by Jessica Livingston who is a founding partner at Y-Combinator. A must read for geeks who want to someday start on their own. Some of the interviews are online. Found this through Joel's post.