I just completed a search for a new job. In these economic times, finding a job can be daunting, even in the software industry, which has fared better than most. (Today, it was announced that the official unemployment rate in the U.S. is 10.2%, the highest level in 25 years.) A job search can be harder if you're a software developer of a certain age (I turn the big Five-Oh in January).

Despite these obstacles, this was the easiest and most rewarding job search of my career. I had the good fortune to receive several excellent job offers. I regret that I had to turn down all but one of the opportunities. (I start at DRW Holdings after Thanksgiving.)

The job search was easy because of investments I've made in my career over the years, investments that paid dividends this Fall. Let me share some of the lessons I've learned about keeping your employment prospects bright, despite your age or experience. My remarks mostly apply to those of you who want to "stay technical", rather than move into management or other roles. However, some of the points are more broadly applicable.

The elevator pitch is this: I made myself interesting to potential employers by developing a public reputation for software craftsmanship. I kept my skills up to date. I developed a local network of colleagues through active participation in user groups and local conferences. I developed an international reputation by speaking at larger conferences, blogging, tweeting, and writing Programming Scala.

Not everyone can do all these things, so I'll offer suggestions for making the most of what opportunities you have. I owe a great debt to Object Mentor and Uncle Bob Martin, in particular, for encouraging conference participation, blogging, writing, etc. My skills as a craftsman grew enormously at Object Mentor.

Cultivate Your Skills

I've met older developers who struggle to stay employed. In particular, there are many ex-telecom developers who lost their jobs at Lucent, Motorola, etc. here in the Chicago area. Most of these guys (and they have all been guys...) wrote C++ code for many years, even decades, on telecom switches, radios, and so forth. Justified or not, they are perceived as stale by web companies and IT teams.

Our industry is evolving at an extraordinary pace. Staying current with newer technologies and development practices is difficult.

Most companies aren't willing to invest in career development for their employees. Yes, it's short sided, but easy to understand. They also make conservative technology and process choices. They avoid risking failure on ideas they think are unproven when what they know seems good enough.

So, how do you stay current? How do you avoid growing stale? How do you become expert in Ruby on Rails if you work in a Java shop, for example?

During his talk at the recent Software Craftsmanship North America conference, Uncle Bob said it's your responsibility to grow your career, not your employers. You'll have to find a way to stay current, balancing a 40-hour work week, family, and other obligations. Note that I said a "40-hour work week". If your employer isn't investing in your career, they certainly can't expect more than 40 hours of your time each week (but it's in your best interests to give them a productive 40 hours...).

Here are some ideas to help you stay current.

Keep Your Finger on the Pulse of Change

Find good sources for news and trending topics. Can you name three of the new "NoSQL" database projects?

These days, I use Twitter for keeping informed. Almost all the people I follow are other technologists. Websites like Digg and Reddit can be useful. So can blogs and trade magazines. The hard part is knowing how to drink from the fire hose of information without wasting your time.

I discuss conferences below. They are also invaluable for staying informed.

Master Something New Each Year

In The Pragmatic Programmer, Andy Hunt and Dave Thomas say a developer should learn a new language each year. It's hard to underestimate how learning a new language broadens your perspective and informs your work in whatever languages you use. Note that the new language should be very different from languages you already know. Otherwise, what's the point?

You can generalize this advice; learn a new technology or set of development practices each year. It might be Agile if you've never worked on an Agile project (or Kanban if you have). It might be Functional Programming if you know Object Oriented Programming (or vice-versa).

Because it's unlikely your employer will give you the time for learning new things (at least on a consistent basis), you'll have to do this on your own time.

Develop "Resumé Quality" Experience

It won't mean a lot to potential employers if you say you learned Rails by playing around with it at home, for example. How do you get real experience worth adding to your resumé?

  • Try to use it at work: You might sometimes succeed in convincing management to adopt a new technology or set of practices. Write an objective report that analyzes the pros and cons of the idea, targeted for a particular need in the organization. For the cons, develop mitigation strategies, such as using a prototype or trial of some kind to demonstrate viability and develop confidence in the idea. Can you use the new idea in a non-production role, e.g., as a testing tool, before committing to it for production use?
  • Get involved in an open-source project: Many people who work full-time on a particular open-source technology started working with it in their spare time and one or more events led to full-time work. For example, Charles Nutter and Thomas Enebo worked on JRuby in their spare time before Sun hired them to work on JRuby full time. Note that involvement in open-source not only demonstrates viable skill in that area, but it provides code samples of your work. (Of course, the potential employer has to judge whether or not you actually did that work.) Few things provide more street cred than having a key role in a successful open-source project.

Read books

When was the last time you read a technical book? If you're not reading several books each year, you're not getting the deep content that the "pulse of change" sources can't provide.

Several Things to Know

Okay, I can't list everything a software craftsman should know or be capable of doing, but here is a grab bag of items that are either historically underrepresented or they are growing in importance. I'll throw in a few general skills you should develop, too.

  • SQL Databases: It seems that most developers just hate working with databases. (I've been guilty of this.) So, we write lots of boilerplate code to hide the database from our sight, often resulting in bloated and suboptimal applications, but I digress...
  • Functional Programming: FP is no longer just for academics. All of us need to get good at concurrency and FP is the best foundation for it. Also, FP ideas make our code better in other ways.
  • Concurrency Models: Multithreading, The Actor model, dataflow parallelism, software transactional memory, etc.
  • Agile Methods: It's past time for everyone to be skilled in XP and/or other Agile methods.
  • Business: This one hurts, I know. Most of us developers don't like dealing with business issues and business people, but years ago, I got tired of burning away years of hard work on projects that failed for business reasons, not technical reasons. Understand the business and you'll be less likely to get involved in bad projects.
  • Writing and Public Speaking: I'm fortunate to have good writing and speaking skills, and I enjoy doing both. However, I've also worked hard to cultivate those skills. Remember my elevator pitch above? I wouldn't have the reputation I have without some ability to communicate by writing and public speaking.
  • Interviewing: Have you ever choked in an interview? We all have. Interviews are artificial and not very good at determining actual value, but it's a gate through which we all must pass. Even when you're not looking, consider interviewing occasionally for the practice. Or, practice with friends. Expect to write code and perhaps pair program in the interview. If the organization doesn't have you write code, then go elsewhere. Organizations that don't test you on what you'll actually be doing let in a lot of mediocre people.
  • Any Areas of Personal Weakness: We all have facets of our jobs that we do poorly or reluctantly. If you're shy or lack public-speaking skills, try doing informal talks for your team or local user group. If you don't write well, write blog posts and ask your colleagues to help you improve them. If you have trouble communicating with customers or other stakeholders, spend more time with them. A craftsman is well-rounded.

Cultivate a Reputation

A third to a half of the people who interviewed me during this job search were people I already knew! My active involvement in the Chicago tech community got me in the door and made the interviews less stressful. My experience and reputation made the interviews successful.

Here are some public speaking ideas that will cultivate your reputation:

  • Conferences: Speaking at conferences is one of your best options. They are also great for networking. These days, the slides and even the videos for talks are available on the web, so the reach of a conference talk extends far beyond the physical confines of the venue and those who were there. However, it can be hard to get the opportunity to speak at a conference. You might not be working on anything that can be discussed publicly and your company might not pay for the trip, forcing you to pay and to consume limited vacation time. Look for local conferences, some of which meet on Saturdays, for inexpensive, yet often excellent alternatives to the big conferences.
  • User Groups: If you live near a major metropolitan area, it's easy to get involved in the local user groups that are there. Most user groups meet once a month, so they don't consume too many evenings when your family expects you to be home. Don't be a passive participant; get involved. Talk about what you've been learning in your spare time. Help organize the group. Get to know the other people in the group. If you can't find a group that interests you, start one! Your employer might let you meet in the office. When I started the Chicago-Area Scala Enthusiasts, I had no idea if anyone else would come, but we always have 15-25 people for each meeting.
  • In-Office Seminars: Organize brown-bag lunch seminars at work and speak at them occasionally. If you can't talk about your work outside the office, you don't have that limitation inside!

Post the slides for public talks. Use SlideShare if you don't have a personal site and the slides aren't publicly available from the conference or user group web site. (Even if you have your own site, you might get better traction at SlideShare.)

Writing is another way to establish a reputation with a broad audience:

  • Blogging and Tweeting: Search for people who are good at writing technical blogs and tweets. Follow their examples.
  • Write for Magazines, Web Sites, etc.: Many websites and magazines welcome submissions for publication. For example, Michael Swaine just posted a request for contributions for PragPub.
  • Write a Book: Obviously, this is a big project to take on, but if you write well and you have expertise in a particular topic, writing a well-regarded technical book can't be beat for building your reputation.

Stay Desirable

Put yourself in the shoes of an interviewer and ask these questions:

  • Why should I hire you?
  • What makes you unique?
  • Why are you more valuable and worth a higher salary than a fresh college graduate or someone with a few years of experience?

What's so great about a craftsman? He or she offers the wisdom that comes from a lifetime of experience. That wisdom guides strategic decision making (like design decisions for software). However, a craftsman can still create the products of his or her craft. When a craftsman mentors novices and apprentices, he or she teaches by example.

Your best position is one where you have unique, desirable skills or a unique combination of desirable skills (including maturity). The contrast between generic and exceptional is nicely captured in this presentation.

There are plenty of other developers who know more than me about various software topics and many of them are young and willing to work insane hours. What I offer is a wide range of skills and experience, combined with mature judgment (correct me if I'm wrong!! ;), that I believe are unique and compelling.

What makes you indispensable?

Final Thoughts

You'll still encounter age bias in software development shops. You'll still encounter shops that treat developers as commodities. The organizations worth pursuing know they need to work "smarter". They value experienced people with sound judgment and wisdom who can guide and mentor less experienced team members. They also want their experienced people to provide technical advice to the business team as they weigh business decisions.

If you find that you're going through the motions, that you have no passion for the career growth that will keep you employable, then you should find something else to do. Do it now, on your own terms, before a layoff forces you to pick a new career.

But if you are passionate about software, if you cultivate your career each day, there should always be a place for you in our industry, no matter what happens in the larger economy.

24 Responses to “If You Want a Job Tomorrow, Cultivate Your Career Today”

  1. Dave Briccetti Says:

    Excellent, Dean. Here in the SF Bay Area, there are many opportunities to be visible and build a reputation. I give presentations and lightning talks as often as I can at meetups and user group meetings. SuperHappyDevHouse (tomorrow) is a great venue for that, and for networking. Online, I’ve gotten a lot of great response from a video podcast I do, the Young Programmers Podcast. It lets potential clients see me at work, coding, talking, explaining, and being pleasant and sometimes amusing. In cover letters to potential clients I always direct them to my Twitter stream, LinkedIn page, blog and the podcast.

    I’ve met you, Dean, and you are very pleasant. I’m sure that helped you. Congratulations on your new job!

  2. R.J. Lorimer Says:

    Dean,

    Excellent write-up. Just yesterday, I volunteered to rejuvenate the developer focus groups in my company; at the time I thought I might be a little crazy because of the work involved in getting people motivated to participate and share knowledge, particularly given my less-than-favorable feelings about public speaking and meeting strangers.

    Your blog article sheds light on what part inside of me triggered this action, and why I know its the right thing to do for me (aside from the obvious benefits to my colleagues); just like it describes why I keep a blog.

    I have to agree with Dave: you are a very approachable individual, and have some great positive views about the future of programming… and every time you order a thai iced tea I have to follow suit ;)

    I’m glad you got hooked up somewhere good (although I had no doubt) – keep up the great work, and I hope to see you present again soon!

    PS: Programming Scala is turning out to be a very good book – WTG. You’re right, it definitely covers Scala differently from the Artima book – they complement each other well.

  3. arun Says:

    Nice Article. Very much like The Passionate Programmer by Chad Fowler. Have you read that book?

  4. Debashish Brahma Says:

    Absolutely Great. With Warm Regards

  5. Juan Medin Says:

    Thank you for the post. It’s really, really good: with good ideas, sincere, and with experience to back it. I’d love to see more posts like this in the net.

    Regarding learning many languages, sometimes it’s a warning signal. When I had to select among many resumes for a project, I discarded those that had a lot of languages on them. The problem is that if someone says he knows “Visual Basic, PHP, C, C++, Java, Perl, ...” usually you don’t know which one they actually know in deep and usually means they only have studied them or have some kind of ‘casual’ knowledge. If you know just an example Java, you are aware that it’s not only the language itself. It’s the HUGE ecosystem it has: tools, libraries, frameworks, servers, “side languages”, etc, etc. All of them evolving all the time by a huge community. It’s really hard to stay current.

    And many people also adds many languages because they have a high self-confidence: they only know a little bit about them but they believe they can “learn over time as they develop the project”. Well, if he/she is going to take a senior position in the project, and not a junior’s one, that’s a poisonous member for me: he can learn along the way and that’s going to be good for him, but the project will suffer.

  6. Dean Wampler Says:

    @Dave, one of things you’re great at is working with young people. Me, not so much ;)

    @R.J., glad you like the book. Leading change within your current workplace is a great way to get started on the “public facing” experience I’m talking about. It can also help make the day job better, of course.

    @arun, I have the original “My Job Went to India” version of Chad’s book. Need to upgrade! Sage advice there.

    @Dabashish, glad you found it useful.

    @Juan, your remark about the potential downside of listing lots of languages is a good one. There’s a balance needed in a resume. I commit that “sin” in my resume (which I’m thinking about changing), but I think the descriptions of my work history fill in the details. On a per page basis, writing a good resume is harder than writing a book, I’ve found!

  7. Thor Says:

    Dean,

    Good to hear you don’t have 3 young children to care for and can devote so much of your after hours time to your career.

    Regarding your comment: “If your employer isn’t investing in your career, they certainly can’t expect more than 40 hours of your time each week”

    At my last employer, you put in less than 60hrs per week in the office, you were as good as gone. Ultimately it didn’t matter anyway as they shipped the job to India this past year.

    Since I worked at a global company and traveled extensively, I didn’t have a local network, and my global network has not been very useful to find positions in the U.S.

    I often hear such advise from neighbors who have a grandparent or two (sometimes a nanny) literally raising their children, taking them to school, shopping, cooking, cleaning, helping with homework while both parents work full time.

    I’m glad it works out for them, but the reality is that for tens of millions of Americans this is simply not possible. Children under 8, can’t take care of themselves (and we have 3). What remains of our living family is across the country.

    As a result, one of us must work part-time at best, often times the kids school schedule is so erratic that it’s impractical for even part time work.

    Our 3 children start school at 3 different times in 2 different locations. They get out of school at 3 different times as well.

    I know all about hard work as I obtained all of my degrees while holding full time jobs and attending full time school, but once children are in the picture, it’s a different story.

    My friends say they had kids and they “did it”. Yes, they had support, or a stay at home mom, or their kids were all in school at the same times, etc.

    In some states school for all grades starts at a particular time and ends at a specific time.

    Where we live, kindergarten is 2.5hrs, 1st grade isn’t much longer, and “full time school” ~8 to 2:30 doesn’t begin until 3rd grade.

    Parents do most of the teaching here as the teachers send the kids home with more work than they do in the schools.

    Besides the numerous holidays, there are “minimum” and “super minimum” days (means the kids are in school only a few hours).

    So between employers demanding 60+ hrs a week for 40hr a week pay, and the demands of a family on the other end, there is little time or money to take course work.

    We’ll figure it out, like everyone else will, but lets not oversimplify what is a very complex situation for most people.

    Some have elderly family in addition to a young family they have to care for; some are single parents; others have immediate family with personal illness; the list goes on.

    Our current system with the elimination of pensions, medical benefits, taxation, increased work hours (for less real pay), feels more like a full scale assault by government, education, corporations, and healthcare on the family than anything else.

  8. Thor Says:

    Almost forgot to note that unemployment varies by different variables. See for yourself.

    http://www.nytimes.com/interactive/2009/11/06/business/economy/unemployment-lines.html

    If you’re a college educated, white male older than 45, it’s 4.1%

    The only groups that are even better off are younger college educated white males and white females.

    So yes, it’s a very complex subject that is grossly oversimplified.

  9. Developer Art Says:

    A very good set of advice. I support most of your ideas.

    Writing and blogging works especially well. You learn a great deal when you try to structure your thoughts to put them into words to explain or teach something.

    However I get impression lately that a wide range of skills and mature view of the things are no longer in demand. Why else would then companies outsource the projects knowing in advance they would be of terrible quality? Because the savings they are going to make outweigh any kind of trouble with the project afterward.

    One more trend which I fear will turn reality is that people seeing what’s happening in the IT will be less and less inclined to choose IT studies and IT career in the future. We may end up losing new minds coming to IT while those who love programming and have passion for it will be working elsewhere pursuing their programming interests as a hobby. Hope it will never happen though.

  10. Igor Says:

    Hi Dean,

    Well done. Excellent coverage of the problem.

    Thank you, Igor

  11. karthikeyan Says:

    Hi Dean,

    A Sincere piece of advice, straight from the heart to all of us here.

    I am pretty much sure that anyone who follows your advice in both letter and spirit will ever have to worry about their job.

    Thank You Very Much for sharing your expertise and saving the day for people like me here

    Warm Regards, D.Karthikeyan.

  12. Adorable Says:

    It’s highly recommend post, I really appreciate your thoughts & very much useful to sharpen your career! But I do agree with Juan Medin at some extend that, showing plenty of technology on your resume may create negative impression, isn’t it? Dean, please share your view on this.

  13. Dean Wampler Says:

    @Adorable, I replied to @Juan’s comment above. I agree that you have to use these lists wisely and I’m rethinking how I present this information on my resume (which, by the way, I always keep current, even when I’m not looking).

    Currently, my resume shows a laundry list of skills, but the work experience also says what technologies and practices I used for each project I worked on.

    One more thought, I suspect that potential employers would be suspicious to see a long list of technologies on a resume for someone who has only a few years of work experience. If you’re like me, and you’ve got some miles behind you, it’s more typically that you’ve encountered a lot of stuff over the years. Still, an employer will need to understand which technologies you know well and which ones you’ve used recently so you aren’t “rusty”.

  14. Andy Maleh Says:

    Great write-up Dean. Thank you.

    I’ll remember to take it into consideration when I reach my big five oh! ;) (j/k)

    Seriously though, very inspiring. I like the idea of exploring a new “very different” language every year as opposed to just any language every year. I’ve been guilty of the latter.

  15. ThorIsNotAlone Says:

    @Thor – Thor is not alone, folks. I like many others agree to Thor’s view.

    Kind of oversimplified advice.

  16. Dean Wampler Says:

    @Thor, et al. There is no one true way. Blog your own experiences! I’m curious what “oversimplified” is supposed to mean. It sure hasn’t been a “simple” path to follow, but it has worked for me.

  17. Pooria Says:

    Hi Dean,

    In your “Several Things to Know” part, you listed “Business”. Can you recommend any good books to get me started?

    Thanks.

  18. Dean Wampler Says:

    @Pooria, I was thinking more along the lines of learning about the business side of the organization you’re in, as well as observing trends in the industry at large. However, here is an idiomatic selection of books. I’d love to hear other people’s suggestions

    • The Innovator’s Solution, by Clayton Christensen and Michael Raynor. (Christensen wrote a more technical book before this one called “The Innovator’s Dilemma”.) This book uses examples to show how disruptive innovations can gain market share against established players in markets, often overtaking them over time. (Think of Microsoft and PCs in the computer industry.)
    • The Black Swan: The Impact of the Highly Improbable, by Nassim Nicholas Taleb. As the title blurb says, “A black swan is a highly improbable event with three principal characteristics: It is unpredictable; it carries a massive impact; and, after the fact, we concoct an explanation that makes it appear less random, and more predictable, than it was.” He also wrote a highly regarded book called “Fooled by Randomness”, which I haven’t read.
    • The New How by Nilofer Merchant. It’s about creating business strategies, not from the top down, but by engaging everyone in the organization. O’Reilly has a few other business-oriented books that take a different tack compared to the cookie-cutter business books you often find.

    Hope this helps (a little bit).

  19. Adorable Says:

    @Dean,Many thanks for your reply/view on plenty of techinology on ur resume.

  20. mitchmcc Says:

    This is good advice, but does not really help those of us who are the aforementioned “telecom programmers” (yes, I was one) who find themselves at 50+ and unable to find a job. The age factor is huge. I have applied for jobs I was 100% qualified for, and not received any reply at all, as if I didn’t exist. While I should have done more to keep my skills up-to-date, I am fully capable of quickly becoming a productive engineer in any environment, just as I became a top developer in the greater Boston telecom area with a B.A. in Philosophy. The overall state of the economy is not helping matters, but there are plenty of jobs out there who are simply not willing to hire a 50+ year old engineer at any price.

    Any FWIW, I did invest a year in learning both C# and Java, but with entry-level or junior jobs asking for 3-5 years of experience, it didn’t help.

  21. Sam Says:

    Excellent write up. But once you cross 40+ age you have to be very proactive about staying updated with technology. I often find people in 40s and 50s saying about new tools or technologies that its not good etc and they tend to stick more to the world of mainframes or C days..It is also understandable because how can you suddenly start “decoupling” yourself from thought process of those languages/technics/tools? But one has to do it..if someone thinks of taking break after losing last job to learn Java/C# or AJAX or whatever other things – and then start looking for job in those it won’t work out. Better approach is when you are comfortable in your shoes, and working, to push yourself harder to learn.

    Not easy but thats the only way out.

  22. Dean Wampler Says:

    @mitchmcc, I’m sorry you’ve had that experience. It’s terrible to be stereotyped. I hope you’ll try some of the things I’ve suggested, especially if you have time while you look for work. For example, networking at user groups and contributing to open source projects now might pay off sooner or later. (I know another guy who’s been working the user group angle recently.)

    You might also consider contracting for short gigs. That’s a less risky proposition for the hiring manager, it gets you in the door where you can demonstrate your abilities, and it gives you good experience. Of course, you still have to get in the door. It could be that a contractor placement agency would help.

    In general, for people in your situation, I’m not sure what technologies are best to learn first. Java is still in wide use, but it’s somewhat mundane now. C# and .NET are seeing more growth. F# is getting interesting. Lots of web-based startups are using Ruby on Rails. Cloud computing and “NoSQL” databases also have a lot of “buzz”. But again, I don’t honestly know what’s best and it would depend on local demand, too. (Feedback welcome.)

    Another thought, pitch your mature experience when applying for jobs with a QA or software-maintenance focus. They aren’t as “glamorous”, especially if you prefer development, but maybe a hiring manager will appreciate someone who understands the importance of quality and maintainability, no matter what technologies they have used in the past. Once you’re in, you can work you way into a role you prefer.

    A final thought: when I started, I went from a Ph.D. in Physics to an entry-level SW dev job. It took me a long time to find that first job. What finally did it for me (and few of my other science friends…) was playing up the smart, eager, and willing-to-learn-on-the-job angle. That may not work so well in this economy; you’ve probably already tried it, but if nothing else, it helps to focus on selling to your strengths.

    Good luck.

  23. Chandra Shaker Avvaru Says:

    Excellent Post. Thanks for the advice.

  24. sheapymmere Says:

    Lots of of people blog about this issue but you said really true words!

Sorry, comments are closed for this article.