I’ve shied away from the word “programmer” for a long time because I
don’t think it accurately represents what I do. It implies that the most
important thing about the job is the magic words that come out of our
fingers, and not where those magic words came from. This couldn’t be
further from the case.
It’s been said by many that in order for programmers to improve, they
should focus on communication. When you communicate more effectively
with other people with aligned interests–that is, members of your
project and organisation, as well as your customers and potential
customers (ignoring business politics for the time being), you become
better at your job. The software craftsmanship crowd talk about building
the thing right, but more effective communication will help you build
the right thing. This is so much more important, in my view, that if
you only have time to focus on one thing, you should drop new
programming skills and just try to improve your ability to communicate
That’s not what I want to talk about.
This is a great way to deliver more “value” (if, for once, I’m
interpreting “value” correctly—I can never tell). Bonus points if you
enjoy it. My last post was about having fun, though, and I want to
continue with that above all else. In software, the things that I enjoy
are the things that challenge me. This is great; we can always find more
challenges. After a while though, this isn’t enough—the solutions have
to mean something past telling me I need a degree in mathematics.
It turns out there’s a solution to this problem, and it’s better
communication. Not with the rest of the business or your customers,
though, but with other programmers. Surrounding yourself with smart
people in the same field as you is something academics are great at, but
industry is seriously lacking.
By constantly meeting new people in your field, you are exposed to new
ideas and skills you may not have even thought about, as well as new
ways of thinking you previously won’t have considered. You also find
more of those challenges I mentioned I’m so fond about, except these
ones matter more, because other people care about them too.
Sure, all of that’s available on the Internet too—you don’t have to have
a conversation. There’s one thing you’ll get out of meeting new people
that you really can’t find on the Internet, though: when you talk to
people, especially about topics they’re passionate about, you’ll share
your ideas too. Some of them will help influence their thinking for the
rest of their lives, but some will get shot down immediately. Most will
be somewhere in between. This feedback will help you figure out which of
your ideas are good and which are bad, and in the future, enable you
to easily differentiate between good and bad ideas. The importance of
this across all disciplines cannot be overstated.
Oh, and as a bonus, when you converse with other programmers, you’ll
improve your ability to communicate precisely and clearly, which
will drastically help with that whole business communication stuff I
mentioned earlier, all for free.
So how do you do this? Find out where other developers hang out, and go
there. Doesn’t matter if they’re all node.js coders or really into
Arduino. Go, watch, learn and, when you feel the time is right,
contribute. If you’re in London, come to the LSCC
pretty damn friendly.