Archive for April, 2009

Should I switch jobs to learn better development processes?

April 30, 2009

A reader who wishes to remain anonymous wrote to ask:

I’m a programmer from the Philippines. I’m kind of a latebloomer since I didn’t take up Computer Science or a similar course in college, but I learned programming on my own. I tried to save money so I can buy a couple of books (although I would love to read more), so I can continuously learn software design and development. For almost two years now, I’ve been landing jobs in companies that really don’t have good processes for developing quality software. I have recently started a job. I’m not an expert, but I know when legacy applications have been built by engineers that also aim to produce quality software. The applications uses an object-oriented programming language, but all of them looks procedural. I still want to continuously learn and be a good software craftsman someday. Should I leave and apply for another job in which I think there is more potential to learn great software development processes?

Thanks for writing. Let me preface my suggestions with the caveat that they’re from the perspective of a programmer in the United States. I don’t know how applicable they are to business life in the Philippines. You’ll have to look at them through the lens of your own culture and understanding.

First, that you are wanting to improve yourself, to improve your skills, to improve your job prospects, means that you have the drive that will make you a better employee and programmer. Being able to write good software is only half of what it takes. The other half is having the drive to apply those skills day in and day out. (The third half is being able to be part of a team.)

It’s good you have that drive, because it sounds like you’re going to have to do much of the learning you want on your own. I would not rely on an employer to teach those skills to you. If your only reason to leave your current job for another is to learn better software development techniques, think twice. Chances are, the company you go to will have the same problems, perhaps with a different flavor, as your current company.

Instead, keep reading constantly. Read books like The Pragmatic Programmer by Hunt and Thomas, and Code Complete, 2nd ed. by McConnell. Read websites like StackOverflow for comments and ideas on how to be a better programmer. There will be much to sift through, but that’s how it goes.

Apply those skills by working on projects outside of work, preferably open source projects. Working on open source lets you work with other programmers around the world who have the same drive you do. You’ll learn and practice, while creating code that you can bring to your next interview to show as an example of your programming skills.

You may also want to try to bring some of these ideas to work with you. As you learn how to write great documentation, apply it to your daily life at work, even if nobody else in the company does. When you learn about test-first development, use it as your software methodology, even when you’re the only one who does. You’ll have better code, better projects, and people will notice. You’ll be leading by example.

Finally, don’t let the bad code get you down. The world is filled with it, especially at work, and it’s just part of life as a programmer. Consider it a test bed for your refactoring skills.

If other TWL readers have suggestions, I’d love to hear them in the comments below. Good luck!

What can go in a sysadmin’s work portfolio?

April 20, 2009

A portfolio of your work is a great way to show at the job interview that you are able to produce work that the hiring manager wants. Anyone can make claims as to his skills and abilities, but producing tangible evidence of those skills makes it clear, and reduces the risk for the interviewer. Bringing a portfolio also puts you above other candidates who don’t.

For programmers, code samples are the most obvious work product to bring, but what about sysadmins? Jeffery Land writes:

I was curious about what you suggest for a systems administrator to bring in a portfolio? Most of the work revolves around resource management and troubleshooting issues. At the end of the day this pretty much just leaves you with the experience and nothing you can really point to. I’ve been putting together a blog with my experience that I point out to potential employers but that’s pretty much that best I’ve been able to come up with for a sample.

There’s plenty you do that has a trail. I’d start with just about anything you’ve created that gets put on paper:

  • Network diagrams
  • Policy manuals
  • Documentation
  • Checklists
  • Project schedules
  • Training materials
  • Budgets

You can also include electronic files and code:

  • Significant shell scripts
  • Configuration files

Before you snicker at how silly a config file might be, consider the research and care and feeding that goes into it. For example, tuning PostgreSQL’s memory and disk usage can be a huge challenge. My postgresql.conf files at work have been tweaked and tuned and comments explain why different settings are set as they are. Some places have links to pages that give the reasons for each parameter’s value. It shows the history and reasoning behind it all.

One caution, though, is that while these documents and files are great evidence of your skills, they may well be considered confidential by your company. You certainly don’t want to include any proprietary information or passwords in your portfolio. You should plan on leaving your portfolio at the interview, and don’t want to say “I can only leave certain documents.”

Whether or not you can get existing work products, Jeffery’s blog idea is a great one. It allows him an easy way to show that he has experience and know-how, even without a final work product to show. Take a look at his blog entry called “Configuring DNS Zones in Core”, where Jeffrey explains configuration details for DNS under Windows. He’s created a helpful resource out on the net that will likely improve his blog’s Google page rank, and anyone checking him out online can get an idea of his sysadmin skills.

Your portfolio is a powerful selling tool at the interview, and every techie can create one, no matter the type of work she does.