Matt Raible has been building web applications for most of his adult life. He started tinkering with the web before Netscape 1.0 was even released. For the last 16 years, Matt has helped companies adopt open source technologies (Spring, Hibernate, Apache, Struts, Tapestry, Grails) and use them effectively. Matt has been a speaker at many conferences worldwide, including Devoxx, Jfokus, ÜberConf, No Fluff Just Stuff, and a host of others. Matt is a DZone MVB and is not an employee of DZone and has posted 148 posts at DZone. You can read more from them at their website. View Full User Profile

The Passionate Programmer by Chad Fowler

  • submit to reddit
Today I'm attending Developer Day in Boulder, Colorado. The opening keynote was done by Chad Fowler and below are my notes from his talk.

Chad recently wrote a book called The Passionate Programmer. It's about Creating a Remarkable Career in Software Development. Why is it important to do this? Because the average adult spends 53% of their time working, so it's really about creating a remarkable life. What is remarkable. For Chad, it was driving around the country in a 1986 Tioga motor home for two months. He worked the whole time and got to enjoy a lot of beautiful scenery along the way. He just returned from "working" in Hawaii for the last two weeks.

One of the things that motivated Chad to take control of his career was The Pragmatic Programmer book. It taught him you should always try work with people that are smarter than you. What we all really strive for is freedom, especially creative freedom. The whole idea of a remarkable career is it's different for everyone. Some folks want to get rich, some want to take a lot of vacation, some want to travel the world.

The process of developing a remarkable career is fairly easy - you just need two things. You have to have the intention and a system for getting it done. Most people do their careers by coincidence, but they don't drive it. In the music world, no one gets into it for the paycheck. Everybody gets into it because they think they're going to be the best. When Chad became a programmer, he thought the same thing - that he wanted to be a rock star.

When you have a plan, it makes hard things easy. A good example of a helpful planning technique is training for a running race. In September, Chad completed the Indian Summer Half Marathon and he used a training program that introduced mileage in a systematic way. Because of this, training never felt difficult. Another system that Chad recommends is the Seinfeld Calender, where you have a calendar that you X the days when you completed your training (or steps toward a goal). An interesting open source version of this is Calendar About Nothing.

One good way to look at your career is to think of yourself as a product. Choose your market, invest in yourself, execute and market your skills. You should hang out with people you want to be like and work with people you want to become. Chad recommends not only learning a new language every year, but also learning a new domain. You should decide if you want to be a generalist or a specialist. Being a specialist does not mean only knowing one thing, it just means you know one thing very well. If you do both, it's the best path towards awesomeness.

The thing that most programmers don't do enough of is practice. CodeKata is an example of how you can practice. Don't just practice programming, understand how your business operates. One of the best ways to do this is learn how to read a balance sheet. Don't be a Partial Person. Don't be someone who says I'm not a UI programmer. Learn how to do it. If you say "I've always wanted to", you should do it (unless it's illegal of course).

Execution is a mindset. The best person is not always the smartest person. People who struggle have to come up with systems to make them stronger. People who get things naturally (fitness, brains, etc.) tend to not keep perfecting their skill. Always think about how much you cost per hour and try to do something you can tell your boss everyday. Another way to execute impressively is to do an 8-hour burn (similar to the 40-hour work week)

The best way to market yourself is to be remarkable. When you do networking events, try to help people. We can all get stuck in the trap of saying I am an X programmer. This happens a lot when you're successful at X. Don't limit yourself by tying yourself to one technology. As a programmer, your job doesn't suck. If what you're doing is not fun, then you're probably doing the wrong thing. Ruthlessly cut out the crap you don't enjoy.


Published at DZone with permission of Matt Raible, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)



Developer Dude replied on Mon, 2009/10/12 - 12:35pm

I agree that working with people smarter than you are helps you learn, but I believe that for many people, a more important criteria of your work environment can be that your employer allows you to grow and work in areas of development that helps your skill set and knowledge-base grow.

For example, MS (and many other companies) is notorious for not letting s/w QA people migrate to development. This is a problem for many people in many work environs, whether they are in test/QA or in dev; they get pigeon holed and they are not allowed to grow outside of their current realm of expertise. Often the only way they can grow is to leave that company and work elsewhere, but even then it is hard because other companies pigeon hole you before they even hire you - they only look at what you have done in the past, and not what you want to grow into - so it is the old chicken/egg conundrum.

Of course this goes to the issue of 'generalist' v. 'specialist'. One of the dangers of being too specialized is that your area of expertise can become irrelevant. For example, search on Indeed or Monster for 'Java Swing' and then search only for 'Java' jobs. The results show that someone who specializes in Swing only has now largely become irrelevant in the Java dev world because only about 1 to 2% of the jobs out there (when you eliminate duplicate entries) require Swing expertise. At one time that percentage was much higher. At one time it was enough to just know Java period (when it was a 'new' language).

As for having a remarkable life via my career. Well, I really like what I do, and much of the time I am indeed passionate about some aspect of it, but I have a life outside of work, and I would rather make that remarkable than my career. I would rather be a remarkable father than a remarkable programmer. I am not saying doing both isn't possible, just putting a perspective on the issue.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.