Hacker News new | ask | show | jobs
by zer0gravity 4808 days ago
Tesla said that he could simulate the behaviour of his contraptions to the smalles detail in his head and without exception, they ran that way once he built them for real.

I think that a good programmer should be able to do this with his programms, and without flattering myself I can say that in 99% of the cases when an error happened, the answer occured to me almost instantly or after a few moments of thinking and trying to simulate what happened in my head. I have to confess that these were instances when the whole code was mine. Working on code you don't really understand is a major mistake. But this is another issue..

Sure it remains the 1%.. but my point is that developing the thinking abbilities instead of debugging tools is a far better alternative.

9 comments

This is just an observation and not meant to be an insult. I am just using your comment as an example of why I believe you are incorrect in your final statement.

In your post you have several misspelled words (smalles, programms,abbilities). In only a small number of lines of text you have many errors. A spellchecker is a wonderful tool too and you would have benefited from it. Imagine this now being hundreds, thousands, even millions of lines of code. A simple misspelling in code may lead to a compile error. It may actually be a call to a different function or perhaps just the wrong seed value was set. Saying that only thinking about something rather than using a tool that can help you is just a strange and dangerous advice. Not to mention quite expensive. I don't believe the point of this tool is to "debug your way into a new application".

Again, this I just my opinion and I used your comment as my example of how tooling is important. Your misspellings could have caused confusion or a complete misunderstanding of what you were trying to convey. The same problem exists in the programming world. If you say the wrong thing it's very difficult to find out what happened without digging in. Any tool that can help you achieve the answer faster than yourself is a good tool.

As for the actual Scala tool, I like the monster graphics. I think I need to ask them for a shirt.

Darn, even I have errors in there and I proofread it, argh.
So you don't need any tools. Good for you.

For the rest of us, having a tool to step through complex things like threaded recursion is really convenient (not that I would ever consider threaded recursion in any situation).

Tesla was a genius; he often bemoaned the way Edison would perform a hundred experiments to discover something which was (to him) obvious if he just thought about it for a bit. But you know what? Edison succeeded where Tesla failed, and a good part of that can be attributed to reducing the art of inventing to an almost mechanical process, leaving his intellect free to concentrate on more important matters.

It's the same with debugging. I've worked with many programmers who took your attitude; some of them were more talented than I. But I fixed bugs faster than them, and got more done, because I let the tools take care of figuring out what was happening in a program to cause a bug, leaving me more time to think about other things.

I'm not shunning tools. I'm just stating that taking time to really understand the overall architecture, and allowing yourself some time to think at the problem before jumping into debugging can take you very far.

Now, depends what you understand by success, but for me success != productivity, and I would say it has more to do with the real long term value you deliver...

"Edison succeeded where Tesla failed" Edison was probably a better businessman, but a better inventor? Are you sure?
Of course, everyone would prefer to know the answer to their issues without any tools. As your code base becomes contributed to by more people, grows in size and leverages libraries you don't write, it becomes less feasible to always divine the state of the entire program. As component of a programmers skill set as a whole, better tools produce better results.
you haven't seen aged code base with 3000+ JSP with many ways of accessing different data sources and no coherent paradigm in general.
I must confess, I'm a coward. If I would ever see something like this I would run like hell. Programmers all over the world are taking too much bulshit.. seriously..
I was feeling all smug thinking that I could one-up you, but in the end you win:

find -name "*.jsp" | wc -l

1344

Wow, I didn't know about the down votes. Nice lesson.

I guess I could have formulated this differently. Attempt 2:

"Sure more powerful debugging tools is a great thing but the best ones are those you never use".

I can see you've never had to debug multi-threaded code or use 3rd party software ever or a project too large for one person to understand or a misconfigured webserver on the other end.
Why require me to think like a computer when the computer is right there and can think for me? Just because I can do math in my head doesn't mean I should.
Tesla was also nuts. So, there is that.