Hacker News new | ask | show | jobs
by cityhomesteader 2931 days ago
An even better way is to program, program and program some more.

Doing ( creating software ) > teaching/explaining > doing nothing.

Nothing beats solving problems yourself.

8 comments

I'd say I learn different things from each.

I work for Pivotal. Our default mode is fulltime pair programming.

Pairing has forced me to explain myself above a gut feeling level. I can't just say "it's better, my gut says so, trust me" to a pair. I have to explain my reasoning. Which requires me to try and discover what that reasoning is.

I learned a lot from stopping my pair any time I was lost and I've learned a lot from being stopped when my pair was lost. There's no real "teacher" or "learner" roles. You're in it together.

There is a cliche in the martial arts world... that there is a large difference between 10 years of practice, and one year of practice repeated 10 times.

Be careful as you "program, program, program" of which one of those you are doing.

Doing is not strictly better than teaching. You can do a lot without understanding what's really happening. You can't get away with that when you teach.
I agree, having another question your assumptions and explanations forces you to learn it deeper.
> Nothing beats solving problems yourself.

Assuming you understand why you solved a problem, and you solved it well. This is where teaching helps. You have to prove that you understand it, and because you are putting it out there, it will get judged and corrected. Often programmers can solve problems without understanding why their solution works, or whether it actually works and they are just missing something critical.

In fact, I'd go so far as to say that teaching well requires doing, but doing doesn't require teaching well, so one could make the argument that Teaching Well > Doing.

As someone who has done a fair bit of teaching, I agree. Teaching made me learn, but much less than working on actual projects. And the kind of stuff I've learned for teaching isn't very useful for real-world development. It tends to be edge-case trivia useful to reply to "clever" student trying to point inconsistencies in the technology I was teaching.

In my experience, a more valid reason to teach is that it makes you speak and stand up, which can be a kind of physical relief from sitting silently in front of a monitor all day. And also of course the joy of helping students who are interested in the subject.

I agree, but programming over and over will not necessarily make you better, especially if you are solving the same old problems. After a while a webapp is a webapp if all you are doing is basic CRUD. It takes a strong focus and direction to move yourself towards a new direction to grow in the right way. Most people don't know how to engage in deliberate practice, they simple practice their comfort zone over and over again.
If the only thing you're aiming at is to become a better programmer, you may be right.

However, I think you should try looking at the bigger picture: when you teach, you make two people better programmers. And that's when teaching a single person.

Yes and no.