4 ms·
I noticed that when at work, I usually end up doing one of the following three things: 1. Explain things - either to my co-workers or to the computer. 2. E
by 10098 12y ago
I noticed that when at work, I usually end up doing one of the following three things:
1. Explain things - either to my co-workers or to the computer.
2. Explore - navigate the codebase figuring out how different pieces connect to each other, building an adequate mental model of the system.
3. Debug - search for the root cause of a problem by examining the state of a system in between steps.
Sometimes my mental model ends up being insufficient and I have to do 2 and 3 together to "update" it.
Thus, I think that to become a better programmer, you need to get better at these three things.
"Explanation", I think, is the most difficult one. I have found that studying math has improved my explanation skills dramatically, and it helps not only when talking to computers, but also when talking to people. Of course, not everyone has the opportunity or desire to study things like calculus or differential equations, but I think that reading computer science books is a nice way to exercise that math/logic muscle.
To get better at things like debugging, I had to tear down some mental barriers. Sometimes you'll have to go out of your comfort zone. Never think "oh, this is too hard for me". For example, if you're writing something in Python, you must be mentally prepared to dive into the internals of a 3rd party C module. The key is to approach it with a "we must get to the bottom of this!" mentality.
Don't worry too much about technology. Your "goodness" as a programmer isn't defined by how many languages you know. It's better to know a few very different languages than a lot of similar ones. For example, I think that knowing Java and Lisp is better than knowing Java and C#, because you can quickly pick up C# using your previous knowledge of Java, but knowing Lisp may teach you something you wouldn't know if you decided to stick only to enterprisey languages that give you higher employability.
- mindcrime 12y ago> 1. Explain things - either to my co-workers or to the computer. That is SO true. Explaining things to others is a great way to make sure you really understand something. Hence the old saying "to truly understand something, you must teach it". I'm ashamed to have forgotten to include this point in my response, but I think people looking to learn new things should make it a point to look for opportunities to teach / lecture / explain / whatever, as much as they can. What has worked well for me is volunteering to present at the local Linux User's Group or Java User's Group or something like that. It forces you to really do a deep dive into a very focused area for a while, to make sure you can do it justice.