I was introduced to programming by a friend. He came to my house and while we were playing with the Linux computer (it was 1997 or something), he said "you don't know how to program the computer"?
And I said "no", followed by a nice tutorial on compiling C code on Linux.
That was my first introduction to real programming, excluding the MIRC mods and themes which were still programming, but more scripting actually.
I was a noob, and seeing this very knowledgeable person made me realize how much I didn't know. Like I didn't know nothing. All I knew was on another planet, like using a computer, not programming it.
Then at the University I was the worst student in my group. Keep in mind this was an engineering school, and I was not a grade A student, so I learned a lot from people around me, and also I learned how to optimize myself to be at their level. Much better than going to a school that's not so demanding and being the best among mid or average students. I think.
But when I finished the University and started working, since I was a freelancer sometimes I found myself in situations where I was the best developer in the room. I actively tried to avoid such situations.
My favorite gigs were the ones I had to work with a team, and especially the ones where each team member was better than me in specific skills. Like technical skills. Or being a good team member.
Now I am not part of a team anymore since 2+ years, and working alone I have to find my team of people to learn from.
Here's my group of people I learn from:
- Blogs. I read a lot of blogs on many kinds of topics
- Twitter. I follow wise and incredible people on Twitter by direct follow or using lists.
- Books. I read lots of books on many topics.
That's a lot. I did not list conferences or events, since I rarely go at those. But I am also forgetting in-person contact, of course, one of the most effective ways to learn.
I tend to have a ratio of
- 1/3 learning new things
- 1/3 practicing the things I learn
- 1/3 teaching the things I learn
Sometimes with the things I learn I just store them in a long term storage or just keep them in the back of the mind for future usage (as I might not need them right now).
This applies to me as a solo worker, as I have no team members. This apply also to freelancers, or to people just trying to improve in some areas where they don't know people in, yet.
I guess the gist of what I'm saying is, don't just be content with being the best person you know in a particular field or just be better than the others around you, that's dangerous.
Thanks to the Internet, there's no shortage of access to an infinite number of people that do the things that you do better than you.