Pretty image

Advice is easy; examples are hard.

You should learn a new language every year. That’s good advice. But how, exactly, do you go about learning a new language?

Do you dive right into the deep end of the pool, taking on a commercial assignment with a serious deadline and tackle it in a language you’ve never used?

Do you read the manual and write some simple “Hello World” programs to try to get the feel for the language and then conclude that you’ve “learned” it? Or, more honestly, that you haven’t?

Alexander Demin loves learning new languages, and he was eager to dive into Google’s Go language, but he wanted a real problem that would take him deeply into the character of the language, yet be possible to write in a reasonable amount of time.

His real problem is something he calls TCP/IP Proxy, and he shares it with you in this issue of PragPub. When you’ve worked through it, you’ll have a good sense of how Go handles strings, file and network I/O, and concurrency.

We use the word “team” when speaking of developers working together on a project, and the parallels with sports teams are real. Peter Varhol points out one more way in which software teams are like sports teams in his article on Moneyball and software teams. He argues that the kinds of insights Oakland Athletics General Manager Billy Beane brought to baseball can improve the efficiency of software teams.

We have a team here at The Pragmatic Programmers, and in this issue you’ll meet another member of that team in the latest installment of our series of Staff Profiles. Venkat Subramaniam has a new installment of his series on the Scala programming language, too. And Brian Tarbox and Heather Mardis offer some thoughts on retrospective velocity that your team may find helpful.