Professional Development for Professional Developers: Part I

What makes a “good” web developer?
Is it encyclopedic knowledge of every programming language?
Sharp technical prowess and a sweet neck beard?
Would you rather work with a developer who can write passable code quickly or the programmer that consistently churns out museum-quality code art but has never met a deadline?

When someone asks me what I do for a living I like to tell them “I’m a problem solver;” you can call me a developer, hacker, code monkey, or rock star ninja but ultimately my job is to take apart a problem, evaluate the components, and find a solution. There’s nothing magical about what programmers do; the code we write is merely a tool for implementing solutions in a language that computers can understand that, at its core, comes down to a series of true or false assertions ( e.g. “If a equals b then do x, otherwise do y”).

What Makes a “Good” Developer?

Objectively stating “Bob is a bad developer and Alice is a good developer” is tough; some clients and managers favor quick turn-around over quality code whereas others appreciate that doing something right the first time takes longer but typically means fewer bugs and lower maintenance costs. These subjective definitions of a “good” developer can be difficult to navigate for a programmer, especially one early in his or her career. I’ve talked to and worked with dozens of developers over the years and, as a result, can offer the following advice based on personal and anecdotal experience:

Programming Should Be Your Passion

In my last few jobs I’ve been in positions where I had no direct decision over staffing, but was asked to participate in interviewing developer candidates. I learned very quickly that the attribute most common in “good” developers is passion. It can’t be taught or learned and it’s hard to fake (for long, anyway).

Do you have side projects that you do just for fun?|
Are you reading articles on Smashing Magazine before you go to bed?
Do you have an extra computer around the house just to tinker with (hardware or software)?

Congratulations, you may have what it takes to work in the exciting field of programming!

The best developers I’ve met are the people who couldn’t imagine doing anything else. We all take different routes to get here; some people study computer science in school with the goal of becoming a programmer while others may teach themselves on the side because they think it’s interesting. Programming has a very low cost of entry – all you need is a computer, patience, and the will to learn.

Unfortunately, the industry demand for programmers paired with a low barrier of entry means there is an increasingly large number of junior-level developers coming out of universities, trade schools, and certification programs right now that are only interested in programming because it can be a lucrative career. You’ll likely feel the pressure to stand out among your peers the first couple years. Passion, consistently high-quality code, and the ability to communicate effectively with project managers and other non-development staff are probably the best ways to get noticed while excelling far past your 9-5 code monkey brethren. (a successful, high-profile project or two won’t hurt either).

Keep An Eye on Your Stress

When you like what you do it’s very easy to spend 12+ hours a day doing it. When deadlines are closing in and those long days become a necessity, you tell yourself, “well, it’s just a few more days/weeks/months – I can do this.” Before long you’re skipping meals, getting little-to-no sleep, and becoming constantly irritable. It’s bound to happen sooner or later and when it does you’ll feel like every minute you spend sleeping, eating, or being with loved ones is just another minute you don’t have to get your work done. Don’t put yourself in this position! Find ways to unwind, carve out time for your family, and be up-front with your client/project manager about potentially adjusting timelines. Learn what a comfortable number of hours a week is and do what you can to stick to that number!

When you start a new job there’s always pressure to “prove yourself,” especially on your first project. This is normal and admirable, but it’s crucial that you understand that the first few projects you do will set the tone for how managers perceive you as an employee. If you establish yourself as the developer who puts work in front of everything else, management will continue to “challenge” you until you either quit or get reprimanded for your “drop” in productivity after you finally dial it back to a more normal workload. Set managerial expectations early and often and don’t be afraid to talk to someone when the workload becomes too much.

Dilbert strip from 2008-09-11

Burn-out can be a career-ending condition but it can be prevented. Take vacations, find time for yourself, and strive for your ideal work/life balance. If you’re able, consider taking your work email off your phone and personal computer. After-hours emergencies will come up at least once in your career but that’s no reason to be tied to your work email at all times. Make sure managers and other developers have your phone number in case of emergencies, but otherwise try to leave work at the office. Conversely, if your company expects you to be on-call 24/7 then be sure you’re being compensated accordingly.

To be continued…