Or at least not suck as a developer/coworker
change job
If you have only worked for one company, using only one style of coding and project management, and have seen only your code / your friends code, then do everybody a favor (including you) and get out of there, go see how things happens “in the wild”.
share
Write, mentor someone, or contribute to an opensource project, you need to learn to explain clearly and and easily your ideas and what your code is doing. If you can’t you either:
- don’t really understand what you’re doing
- have sucky communication skills
Both issues are worth working on, as they will improve your life and those of people surrounding you.
read
Read lots of books, blogs, essay on programming, etc that expose different concept and point of view.
code
aka don’t read too much
You should code at least as much as you read, or you risk becoming somebody living in Utopia city, the type of guys who abuse design patterns for hypothetical reasons. Once again, to achieve this you can work on a pet project, contribute to an opensource project (better), or turn to code kata, code dojo or somethings like the EdgeCase Ruby Koans that have been ported for many programming language.
plagiate
and throw away (very important)
Yes, it’s still writing code, but writing code is a really important thing to do while learning. Re-implement existing things as a learning exercise. It’s easy to do because you don’t have to spec the project, you already know the desired outcome and you don’t need to find a killer idea (waiting for inspiration is a good way to kill a learning session). But be careful, do this as a learning exercice only, everybody hates a coworker who constantly reinvent the wheel. You need to throw away this code once it’s done. Learning to let go your code is as important as learning to code, a good developer will delete a lot code in his career…
note:
If you really want to read more than you code, you risk becoming one of these pattern abusers I’ve just mentioned. Please, go read this old blog post right now: Head First Design Patterns
Hey Eric,
Great post. You got me on a few a your points. I worked at the same company for most of my career. And I can feel how it did hurt me. If you don’t look at what’s being done outside your company you will miss a lot. Especially if your company is averse to changes like mine used to be. Luckily, I am curious so I am always looking at what other peoples are doing.
Your don’t read too much rings a bell for me also. I have so many things I want to read. I end up not having as much time practicing as I should. This is something I need to work on. I like the idea of copying something already done for practicing. As long as it’s not used in production.
One thing I would add is to go to tech events. They are great to learn new things. The presentations can help you discover new ideas or technologies. And you can also meet other developers that are trying to improve like you do. It’s a great opportunity to exchange ideas and get a different perspective.
You are right, I totally forgot to mention “social interactions”. Going to tech events and meeting user groups is a huge plus. In fact, it’s probably the single most important thing one can do to improve (with coding of course)
thanks for your input
interesting take on the same subject by Guido Van Rossum (author of the Python programming language)
https://plus.google.com/115212051037621986145/posts/5udvdYs9mXq