Programming Is Like Traveling the World
Software is wonderful. It is literally wonderful and awesome. There are so many languages and communities, each with its own local customs, philosophical stances, secret handshakes, and social norms. Each fitting into larger problem domains in some way. In your lifetime you will never be able to visit all the vast, breathtaking, and sometimes horrifying spaces of computer science. You’ll never get to see all of the central squares, financial districts, houses of worship, and tourist traps.
Some of these places feel like Singapore, where the laws are quite strict, the penalties are severe, and the trains run exactly on time. Public intimacy between functional components is frowned upon. State mutation is forbidden. There is a conservatism here, where every semicolon and object type must be exactly in order. And the coffee is delicious.
Other places have the light and sunny feel of a Italian beach town. You see the locals hanging out, smoking cigars and playing a card game, and reveling in the openness of free expression. This is the good life. There is a relaxed simplicity in the air.
But this initial impression is deceptive. Out in the open water, sharp rocks lie just beneath the surface. There’s a million ways to surf, and most of them will cut you. Detritus lines the beach, and dead creatures wash up at every high tide. Only the most disciplined programmers thrive here.
There are one-horse villages, giant city-states, and ghost towns. There are industry towns that cater to one kind of problem, and there are urban powerhouses with diverse resources and broad-based economies.
Each community has its own character, too. There are the upbeat pragmatists of GitHub. The condescending pedants of Hacker News. The helpful neighbors of Stack Overflow. The anime anarchists of DEF CON and the white-hat wizards of the CCC.
As you develop expertise in your tiny corner of the map, it’s easy to become a pompous blowhard. Resist it. You are forever a beginner. You must remember this, because you have so much to learn. The best programmers I know — and I know some really fucking good programmers — understand that though they have travelled the world, they have still only seen a tiny fraction of its total area.
Software culture is global culture. You represent your home country in a giant ongoing global collaboration. You are extremely privileged if English, the primary language of software culture, happens to be your first language too. Try to be the best ambassador you can be. Stay humble. Stay kind. And try not to drink too much Red Bull.