by Matt Slot
While my column is typically about programming, topics such as design and project management, sometimes it's important to talk about non-programming things which are still important to the programmer. I know, I know, if it's not twiddling bits, then its probably not going to be of interest -- but actually, this is one of the coolest things you can do.
I'm talking about networking. Not computer to computer, but programmer to programmer. Idle banter, demoing your software, and talking about technical nitty-gritty details -- all these offer a sense of community and provide an avenue for professional growth at the same time.
With all these people, you might think computer programmers might just want to close and lock the door all day -- and often they do. If it wasn't for the other people on the project (and the boss), it would be easier just to shut out distractions and focus on the task at hand.
This is, of course, with the biggest exception of their peers. Programmers love to show off their technical accomplishments, rant or rave about upcoming software, and complain about users, technical support, or clueless managers. It's this connection that I'm talking about.
The first place a coder receives his feedback is with the coders around him. Those people on the same project or in the same organization provide the most relevant information, because they are so handy and already know what he is trying to do.
Heated sessions spent scribbling on a whiteboard let one brainstorm a design or work out the kinks in your implementations. A chat with a colleage in the next cubicle or walking down the hall might give a prod in the right direction when stuck on a problem. Even better, they provide a pool of experience to draw from: ramping up on a new language or API, pointing out possible pitfalls in a project, or just to keep one informed of new technologies as they become popular.
ListServs and UseNet are popular locations for question and answer, or long running discussions about specific topics. Often mailing lists will crop up around specific products or services, as a simple technical support channel, while others come from small groups of people who know each other in real life and want a common way to discuss programming topics without constant face-to-face meetings.
Internet chat and other real time discussion places are another way to receive gratification. Design strategies, problem analysis, or "remote debugging" sessions are common topics that you'll find. Because it is realtime there is more interaction, but it also means that it's limited to the members who are actively paying attention -- while other "static" services like mail are slower, but can address a relatively large audience.
While local programmers are convenient because they are local, these secondary communities let one find experienced programmers and well-tested tutorials and references. Not only that, but they are great places to meet new people, demo software to fresh victims, and share your experience with larger audience.
While large and formal conventions (like WWDC and CGDC) are popular because they disseminate information to alot of people, I prefer a smaller and more informal settings where it's not a marketing droid giving the talk but the actual engineer who wrote the code! That's why I like the MacHack conference.
It's the nature of small conferences that one tends to know more people, that it's much easier to grab a bunch of folks and head out for food, or just to gather in clusters and chat about nothing. Product demos, code clinics, and round tables supplement the lecture-style sessions to give a well-rounded experience for everyone, speakers and audience alike.
These gatherings also provide another thing that the others don't -- a chance to rub elbows and make contacts with peers throughout the industry. Having a good supply of business cards, demo software, and perhaps even a resume is a good idea if you actively hunting for a job. Even if you aren't you never know when your company may downsize and you may be looking on short notice.
In an industry with such tremendous turnover (the latest statistic was that the average stay at a company was 2 years -- that's about 2-3 projects!), a smart engineer will keep his technical skills sharp and his contacts database full. Headhunters and the cold call are fine, but nothing beats a friend on the inside who knows your abilities.
And even if you aren't looking for a new job, maybe you are looking for a hot new programmer for your team or a promising college student to fill an intern position. Programming contests are an excellent way to winnow talent from hot air -- and the chance to win T-shirts, mugs, or other periphenalia will draw out even the most shy of geeks.
The most important about conferences is actually doing something when you get there. Jump into conversations, haul out the laptop and play with your cool multimedia demo, and generally just get involved. Even software engineers, who are notoriously poor socializers, are easy to draw into conversations about the very thing they love.
Basically, you'll go much farther if you leverage the experience of the coders around you than just consulting reference manuals. Meeting new people is a necessary evil in an industry that moves this fast -- so that you can stay ahead of the trends, and keep yourself marketable when that ideal programming job opens up. Software engineering is more about people than we like to admit.
Matt Slot, Bitwise Operator