published on wuwei.ca
first published on rolia.net, 2009-11-21 09:06
The first part of this article generated too many comments so I started the second part as a new topic. I copied over the first part at the end.
Two things helped me build confidence. One is reading books. The other is thinking. I talked about reading in the first part. Here I talk about thinking.
In the comments following the first part, one Rolian seemed to suggest that a few week's experience in EJB is definitely inferior to N year's experience. I disagree. I believe thinking makes a big difference in how good you are. Majority of people don't think much, just like they don't read much. If you think a lot about what you do, in a few weeks, you could understand a subject much better than those who've worked on it for years but never bothered to think.
Only thinking can give you ideas of your own. And you're confident if you talk about your own ideas. Recently, there's a topic about bad code on Rolia. Quite a few people insist that bad code is mostly caused by the desire for job security. I bet these people don't think much. If you think a little, you might discover other, more likely causes of bad code . Things like incompetent managers who hire incompetent team leaders who hire incompetent programmers, frequent requirement changes, new features, bug fixes, deadlines, on and on. If you think more, you might conclude that job security isn't much of a cause at all. Then next time you're asked the question in an interview, you'd be able to talk about it for an hour without stop. And with confidence.
I am passionate about software development. I used to think about it a lot. As a result, I have ideas for just about anything. From requirement gathering to design to coding to testing. From user interface to database. From source code control to editors. From Windows to UNIX. From CMM levels to Extreme Programming. From frameworks to code generation. Many of my ideas are uncommon. They may be surprising but they're all well thought out. And I talk about them with enthusiasm. With confidence. Non stop. The enthusiasm and confidence can easily convince my interviewer that I'm genuine and not fake. After that, nothing would matter, not even a few missed questions.
Thinking internalizes knowledge - it makes the knowledge your own. Years ago, I was one of the first to read the Design Patterns book when it came out. Even though the book easily drove me into sleep, I finished it and thought I understood the patterns. A year or so later, I found that I never even used one pattern since I read the book. Why? Because the knowledge wasn't my own. I didn't think enough about the patterns. So I read the book again. This time, I thought about how I could use them in my own work. One piece of my code had been very buggy. I tried to fix it quite a few times but each time new bugs would come up. I thought about it in terms of design patterns. Easily I realized it's a good fit for the Strategy Pattern. I cleaned up the code with the Strategy Pattern and it never bothered me again.
Thinking also distills knowledge. One way to test if someone really understands something is to ask him to summarize it in one sentence or two. If he hasn't thought enough about it, he'd probably have to use many sentences. And chances are he'd still miss the point. During one interview, I told the interviewer that all design patterns are really just ways to reduce coupling and improve cohesion. In one sentence, I summarized the whole Design Patterns book. Whether or not the interviewer agrees with me, it's clear to him that I thought a lot about design patterns.
I conclude this part with a good example of thinking. Recently, a real-estate agent came to see my house when I was just about to go out with my baby. "Are you the owner?" he asked. "Yes." I replied. In the car, my baby asked a strange question: "Daddy, why did you say you're the owner?" I said: "Because I AM the owner." Then my baby said: "But you're daddy!"
A lot of people probably just want to make a living. They don't want to read books or think too much. Nothing wrong with this at all. In following parts of this article, I'll explore other ways to make oneself more confident during interviews.