4 ms·
I think there is an interesting generalization of this question: How can one get better at debugging in general? (My context is that I know there are two type
by nnq 13y ago
I think there is an interesting generalization of this question:
How can one get better at debugging in general?
(My context is that I know there are two types of programers:
Type 1 programmers, what I call "starters, imagineers and architects" - great at starting things from nothing/scratch/blank-piece-of-paper or at completely rewriting and (re)architecting an existing piece of software, but horrible at fixing/debugging things, and
Type 2 programmers, what I call "uberhackers and master fixers" - great at finding bugs (and either fixing them or exploiting them for good or evil) and at fixing and understanding existing systems, but horrible at starting things from scratch, like they totally "mindfreeze" if you put them in a blank-piece-of-paper situation and desperately search for something that already exists to adapt for solving the existing problem, even if nothing really fits well, or in the end they start but with a very hacky badly-architected design that degenerates into a mess that only other uberhackers and master fixers can use and understand.
And I know that I am a Type 1 guy, but I really want to get better at Type 2 tasks.)
- stinos 13y agoI think you're generalizing too much yourself here, there is no distinct line between the two types you mention. I know enough programmers that are capable of doing both things you mention pretty much equally well, this seems especially the case for those with >10 years of experience. This is already indicated by the description of the first type as being able to "completely rewrite and (re)architect an existing piece of software": that imo implies being able to "fix and understand an existing system" as you describe the second type. If you program long enough, you should be able to both start from scratch and hack into existing code. Unless you're just not good enough or have some weird split personality :]
- nnq 13y ago...you're kind of right, I know that I am getting better at what I call "type 2 tasks", but I'm desperately looking for any shortcut that will allow me to get better at it faster :) (I don't have > 10 years experience)
- rejschaap 13y agoNot really relevant to OP. But I've seen parents distinction being made in companies more than once. They basically let the 'senior' programmers create new products and features (type 1 work). They let the 'junior' programmers do the maintenance on the results (type 2 work). The biggest problem with this organisation is that there is no feedback loop for the 'senior' programmers. They can mass produce garbage code and not worry about the consequences at all. Often the 'senior' programmers even start looking down on the 'junior' programmers for being merely maintenance programmers. Which is obviously messed up. I treat anyone who claims he's a pure type 1 programmer with suspicion. I seriously question anyone can be good at the type 1 work and be bad at the type 2 work. There are a lot of programmers out there who hate doing the type 2 work though. On the other hand there are also a lot of people out there who really shouldn't be doing any programming at all. They usually end up getting stuck in type 2 work and maybe reinforce the idea that a distinction between type 1 and 2 programmers could be made. But the reality is they should probably choose another profession entirely.