Monday, September 12, 2011

Our Approach to Rigor

Of all there is to teach, teaching people to think is the hardest, but the most rewarding.

The good part of this profession is that I get to do it every day. If I had my druthers, I would have my guys go through Knuth and solve all the problems in there - unfortunately, we are not in the business of paid sabbaticals. So I do the next best - I train them to think on the job.

So here goes a typical conversation - the subject in question is one of developers "D" - a really smart kid, and soaks up stuff like a sponge. Again, paraphrased conversation, and I've added color, but the gist of it stays.
-------------------------------------------------------------------------
D> I'm trying to measure perf on this app - and TFTP (the perf monitoring tool that comes bundled with eclipse) is slowing down the app - so I don't know if performance problems are because of the app, or the tool I'm using to monitor it.
Me> You know the specific things that you want to track, right?
D> Yup
Me> Use AspectJ
D (4 hrs and some back and forth later)> Ok, got it working - this is good stuff! How does it work?
Me> It does byte code injection
D> Where can I learn more about it? Are there books?
Me> Decompile the damn thing
D> What?
Me> Decompile the generated binaries
D> Why?
Me> You'll see
D (1 hour later)> Wow, I get it!
-------------------------------------------------------------------------


For those whose head this went over, my apologies. But here are a few things that any decent developer should be doing..
  1. If you use a framework, walk through its source - most stuff that we use today is open source anyway - Tomcat/JBOSS, Spring, Hibernate, Flex. There is no excuse for someone who's spent a year using a framework, and hasn't walked through its source.
  2. Know the concept of a control. Most folks trouble-shoot without creating a minimal representation of the problem. Basic science.
  3. Think and write down stuff before you code. A lot of developers are notoriously bad at abstract thinking and writing. Practice.

No comments:

Post a Comment