On The Insider: Britney's Bikini-Clad Top 10
BNET Business Network:
BNET
TechRepublic
ZDNet

By Jeremy Allison
Posted on ZDNet News: Apr 5, 2007 4:00:00 PM

[The opinions expressed here are mine alone, and not those of Google, Inc. my employer.]

Commentary -- Making a career out of writing software? Remember that the community is more important than your employer.

Working for Google is full of surprises. When I first arrived I started to get to know my office-mate. He's a laid back, rather cool but studious-looking guy with longish hair. I asked him what he did and learned a lot about how students were taught parallel processing in a cluster environment. Politely he responded with the same question and I started to tell him about Samba and what I was currently working on. "You remember around 1988 when AT&T came out with a file-sharing protocol called RFS (Remote File System) to compete with NFS (Sun's Network File System)..." I continued.

"I was eight years old in 1988," he replied.

After I'd finished checking for obvious facial wrinkles in the bathroom, I decided to go on a quest to find other engineers in the building who were at least as old as I was, and felt much better when I found some. But it set me thinking about what kind of advice I would give if I could meet myself at his age, in order to guide the young Allison into a promising engineering career. So, in the best spirit of "The Screwtape Letters," here is some of what I've learned so far about making yourself a career in writing software.

If it's not what you love, don't do it

I've worked with many programmers during my career. Without a doubt, the only ones who are any good at it are those who see writing code as art, a creative process. I know it's an obvious lesson, but it's really important. If you want to make lots of money and retire early, don't start by writing software; learn about business and start a company instead. I've run into so many poor programmers, in both senses of the word, who got into the field because they "wanted to be the next Bill Gates." Bill Gates didn't get rich by programming, he got very rich by being very good at running a company. I've had to fix code created by these people and it isn't pretty. Eventually they usually move into management where they might have a chance to find their true calling.

Learn the architecture of the machine

Many programmers, especially those who write for virtual machines such as Java or the .NET CLI, think that low-level machine architecture and processor instructions don't matter anymore. That's still not true, and I don't believe it ever will be. Someone who understands what the machine is really doing underneath all the modern layers of glop such as virtual machines, garbage collection algorithms, network and threading abstractions, will always be able to solve problems better than someone who lets the compiler or the "execution environment" they're using make all the decisions for them. These days the effects of processor caches and memory bandwidth mean that it's even more important to understand the lower levels of computer architecture than it used to be in order to be a good programmer. The good news is that modern tools like the amazing free software tool "valgrind" can emulate an entire processor in software and make understanding what is going on at each line of code as simple as looking at a visualization of execution time. Using resources efficiently matters when you're dealing with modern clusters containing thousands of machines.

Reputation is important

The days of starting at IBM after college and working there in obscurity until you retire are long gone. Any modern programmer will move between many companies in his or her career. It is very important to be able to show your next employer what you have done, and what you are able to do in a team. Free software/open source is the ideal way of doing this. It's not just a better way of producing software, it's actually better for the reputation of the people creating it. One of the first things I do when evaluating someone is to look for samples of their code out there on the Internet. If you work on proprietary software you can't show anyone anything, and real code speaks louder than any list of projects you claim to have worked on.

Proprietary environments are a trap

I used to be a Microsoft Windows programmer, as well as a UNIX/POSIX programmer. The knowledge I've gained about programming POSIX is still useful, even though I learned a lot of it over 20 years ago. My Windows knowledge is now rather out of date, and getting more so over the years. It isn't worth my time anymore to keep up with each increasingly baroque change to the Windows environment. Just as an example, over this time the latest "hot" communication paradigm that Microsoft recommended developers use in Windows changed from NetBEUI, to NetDDE, then OLE, followed by OLE2, then COM, DCE/RPC, DCOM, and now currently seems to be Web Services (SOAP and the like). Meanwhile, in the UNIX world the Berkeley socket API was useful in the 1980's and is still the core of all communications frameworks in the open standards world. All the UNIX RPC, object and Web Service environments are built on that stable base.

Learn as much about the proprietary environments as you need to be able to help people port programs over to open standards. You'll never be lost for work. The same is true of any proprietary environment, not just Windows. Windows just happens to be the one I know best. What will get very interesting in the future is the effect a fully open Java platform will have on the software environment in the next 10 years. After initially ignoring Java due to its proprietary restrictions, I now believe Java and its associated libraries have the potential to be the next POSIX.

The network really is the computer

There are now no interesting non-networked applications. Standalone computers are devices for watching stored video or listening to music, usually on airplanes. People doing offline email are simply working in an extreme case of a network disconnect, a rather large network latency if you will. The Internet has become the real computing environment of the next century and all programming will become network programming. This is a more challenging environment than programmers have been used to, with connection, latency and concurrency problems making our work much more interesting than it used to be on the standalone DOS box. All entertainment and communications such as television, radio and the telephone network will move onto the Internet. Poor Sun Microsystems were 20 years too early with their "the network is the computer" slogan, but they will eventually be proven right.

The community is more important than your employer

Are corporations fundamentally amoral? If they can make more money by outsourcing your job to India or China, or recycling employees into fertilizer for the rose garden at corporate headquarters, will they do it? I once had to listen to several high-level executives (for a previous company that shall remain nameless) waiting for the private corporate jet complain how inefficient it was that the country was run by democratically elected politicians as "they just didn't understand business."

Corporations are great places to work when things are going well, and I enjoy the perks as well as the next employee, but I'm very careful even in my optimism to not make the mistake of thinking this is the way things will always stay. In the free software/open source community, the people you're collaborating with and creating code with are the people you can really depend on. While you might not get on with all of them personally, they share your common goal of making sure that the code is the greatest, most beautiful work of art that all of you can create together. Smart corporations, at least the ones you'd want to work for, hire from that pool of people, and even though individual corporations may stumble and fall, if you're part of our community you should be able to successfully manage your career between the occasional stormy periods of corporate upheaval.

If you come from a coal mining area as I do, you can't finish a piece like this without paying homage to Merle Travis's wonderful song about really having to work for a living. No matter how much complaining we do, at least we're not "workin' for the man" :-).

You load sixteen tons, what do you get?
Another day older and deeper in debt
Saint Peter don't you call me 'cause I can't go
I owe my soul to the company store
-- Merle Travis

Good luck young Mr. Allison, and let me know if you have any more advice for him. I'd love to hear it.


Jeremy Allison is one of the lead developers on the Samba Team, a group of programmers developing an Open Source Windows compatible file and print server product for UNIX systems. Developed over the Internet in a distributed manner similar to the Linux system, Samba is used by all Linux distributions as well as many thousands of corporations worldwide. Jeremy handles the co-ordination of Samba development efforts and acts as a corporate liason to companies using the Samba code commercially. He works for Google, Inc. who fund him to work full-time on improving Samba and solving the problems of Windows and Linux interoperability.

SponsoredWhite Papers, Webcasts, and Downloads

  • Talkback
  • Most Recent of 88 Talkback(s)
sixteen tons - then and now
"Sixteen Tons" (as quoted in the article) is an interesting song, and it WAS a big hit by the 'ole pea-picker "Tennessee" Ernie Ford in the 1950s. Quite possibly it has been recorded by many other cou... (Read the rest)
Posted by: dmennie Posted on: 05/02/07 You are currently: a Guest | | Terms of Use
Art? Since when is that part of so-called 'corporate culture',  HypnoToad72 | 04/05/07
Oats  Yagotta B. Kidding | 04/05/07
code a lot to the point...  Voodoo187 | 04/05/07
Working for The Man? Advice to a young programmer  Loverock Davidson | 04/05/07
Not keen on programming then? Not surprising  BanjoPaterson | 04/05/07
How clever  Loverock Davidson | 04/05/07
Ha, ha!  Zeppo9191 | 04/05/07
don't dis vacuums like that!  B.O.F.H. | 04/05/07
Be a problem solver  jfp | 04/05/07
Truth  Chad_z | 04/06/07
Keep it simple, make it secure, no nipple rings  intrepi@... | 04/05/07
Yawn  jackbond | 04/05/07
JERMEY, YOU BIG FAT LIAR  zzz1234567890 | 04/05/07
You know, the nice thing about advice...  Zeppo9191 | 04/05/07
When zealots preach on the street coner,  No_Ax_to_Grind | 04/05/07
Rule of law  Yagotta B. Kidding | 04/05/07
No zealts in this corner.  No_Ax_to_Grind | 04/06/07
Happen to you often?  B.O.F.H. | 04/05/07
Only when  No_Ax_to_Grind | 04/06/07
What is your obsession with my mother?  B.O.F.H. | 04/06/07
In case anyone is wondering  zkiwi | 04/05/07
sadly its your comments that are not worthy of consideration  zzz1234567890 | 04/05/07
Nah, I'm not wasting everyone's time  zkiwi | 04/05/07
His post looked spot on...  No_Ax_to_Grind | 04/06/07
Presume away  zkiwi | 04/06/07
Don't look now  xuniL_z | 04/05/07
It doesn't take a rocket scientist  zkiwi | 04/05/07
Grow up and post some FACTS  No_Ax_to_Grind | 04/06/07
So what have you done?  B.O.F.H. | 04/05/07
Message has been deleted.  No_Ax_to_Grind | 04/06/07
Message has been deleted.  B.O.F.H. | 04/06/07
Message has been deleted.  No_Ax_to_Grind | 04/08/07
Message has been deleted.  B.O.F.H. | 04/08/07
Chill dude  balsover | 04/06/07
90% of Windows IT organizations also support Linux  mighetto | 04/06/07
I don't pigeon hole myself into one platform  balsover | 04/06/07
Didn't sound like he addressed his post AT you  Ole Man | 04/06/07
Thank You  ProgramminNoob | 04/07/07
chillin  zzz1234567890 | 04/08/07
If you're so good at it...  Justin Carmichael | 04/09/07
listening to others can be educational  ckelly@... | 04/05/07
What are you smoking???  No_Ax_to_Grind | 04/05/07
Straw men, part two  Yagotta B. Kidding | 04/05/07
Finally someone gets the "Strawman" right.  Cayble | 04/05/07
Sorry, in yer dreams...  No_Ax_to_Grind | 04/06/07
And your interview  TtfnJohn | 04/06/07
Aw, is wittle boy jealous...  No_Ax_to_Grind | 04/08/07
Interestingly enough, your answer would not cut it.  B.O.F.H. | 04/05/07
CPM was also popular at one time  balsover | 04/06/07
He is actualy doing other stuf now.  B.O.F.H. | 04/07/07
Mitch Kapor is currently an angel investor.  B.O.F.H. | 04/07/07
that was hilarious  zzz1234567890 | 04/05/07
Nope, just honest and  No_Ax_to_Grind | 04/06/07
Oh COME ON  Justin Carmichael | 04/09/07
Someone's art is another persons...  THEE WOLF | 04/05/07
Speed isn't ll that  zkiwi | 04/05/07
Remind Me  Mr. Big | 04/05/07
lol  CobraA1 | 04/06/07
You are confused  balsover | 04/06/07
He didn't say that did he?  TtfnJohn | 04/06/07
The world was turning before FSF  balsover | 04/06/07
Novell and Samba.  JeremyAllison | 04/06/07
Yeah, but.....  Ole Man | 04/06/07
Computing, happiness, ethics.  miyojim | 04/07/07
Art and programming  steeleweed | 04/06/07
Great article Allison.  p_msac@... | 04/06/07
Great if your dumb enough to swallow it...  No_Ax_to_Grind | 04/06/07
Get into Nanotechnology  Dilberter | 04/06/07
I got reprimanded for...  blackfalconsoftware@... | 04/06/07
Progress is built upon experiences not higher level tools in vacuum  ajitorsarah@... | 04/06/07
young programmers  cigar364@... | 04/06/07
Overcoming US Labor Slavery Fraud  bcroner | 04/06/07
Technology vs. Values  me-a@... | 04/06/07
Couple more things I didn't have space for happy.  JeremyAllison | 04/06/07
Right, the fear of asking questions is one of the biggest inhibitors to  DonnieBoy | 04/11/07
Working for the Community, not your employer  irisa | 04/06/07
Not "working for the community"  JeremyAllison | 04/06/07
Working for the Community  irisa | 04/07/07
Well, the best programmers like open source because it empowers them, they  DonnieBoy | 04/11/07
And, you sir, you are a _____, the best programmers will not work for you.  DonnieBoy | 04/11/07
So that is why you ran out...  No_Ax_to_Grind | 04/08/07
He still helps the people at Novel with Samba.  DonnieBoy | 04/12/07
Executives vs. Politicians  simplulo | 04/07/07
merle?  elbillo_2000@... | 04/07/07
sixteen tons - then and now  dmennie | 05/02/07
Great article Jeremy!! I am still smarting over a lot of code I wrote that  DonnieBoy | 04/11/07
Spoken Like a True...  etkinsd@... | 04/12/07
Helps you in the long run  mikifinaz1@... | 04/13/07

What do you think?

advertisement
advertisement

White Papers, Webcasts, and Downloads

SmartPlanet

Click Here