Tip 32Never Stop Learning
Brown Belt[​​Brown Belt] You already have a ton to learn on the job; focus on those near-term needs first. However, don’t put off sharpening your skills for long—they’ll get dull faster than you think.

You might puzzle over the title of this tip, thinking “I’ll always keep on learning.” However, it’s easy to lose this in the shuffle. The job gets busy, you have family and hobbies after work, and next thing you know it’s been five years since you put effort into learning a new skill.

It’s up to you to keep learning. Do it on company time, do it on your own time, or do whatever it takes to keep fresh. Part of the goal is to keep yourself marketable in an ever-changing industry, but an even larger part is to keep up your ability to learn.

Learn How You’re Wired

The right way to learn varies from person to person; some learn best by reading books, others do well in the classroom, and still others need to get hands-on. If you struggled in school, consider that the way they taught may not match the way you naturally learn.

You owe it to yourself to pick up a copy of Andy Hunt’s Pragmatic Thinking and Learning [Hun08] to discover your optimal learning style. Unlike the force-feeding nature of school, this learning is driven by you so you can do it in the style that suits you.

If you don’t already know your learning style, consider a personality test like Myers-Briggs (described in Tip 21, Grok Personality Types ). There are also less-formal surveys floating around the Internet. Or, simply take the empirical approach: grab a book, download some podcasts, find a video or screencast. Which one do you gravitate to?

Keep Current

It’s said (a bit too often, admittedly) that “You need to run just to stand still” in the technology world. It’s true. If you get cozy in a job and stop keeping abreast of new developments, your next job hunt could prove very difficult. It makes sense to dedicate time to exploring new technologies simply for risk mitigation.

Since you can’t keep abreast of everything, how do you prioritize? On the one hand, you want to track new technologies while they’re still trending up. On the other hand, some fads come and go without making a dent in industry. So you want to find technologies that have reached a tipping point[49] of critical mass.

My personal bellwether is watching recently published books—the paper kind—since publishers are looking for the same sweet spot. They want to keep their books on the leading edge but need a large enough audience to offset the cost of making a book. Blogs aren’t as reliable because you’ll always find someone who will blog about anything, making it hard to tell the difference between critical mass and passing fads. Job listings follow much too late, because they’re usually written by managers who don’t keep close tabs on technology.

Broaden Your Thinking

Where keeping current is mostly about risk mitigation, there’s also tremendous merit—and fun—to learning technologies that have nothing to do with economic interests. Sometimes you should step out of the world of commercial tech and flex your brain muscles.

Do a gut-feel check: are there things you’re curious about but never spent the time to research? Maybe it’s Scheme. Or microcontrollers. Or even learning a new text editor. Make a weekend project out of one of these and dive into it. If you’ve been brought up on C++ and Java, I assure you that diving into Scheme with Structure and Interpretation of Computer Programs [AS96] will make your head spin.

The real magic is that digging into Scheme with SICP won’t just make you a better Scheme programmer. Forcing yourself out of your comfort zone and reasoning about code in a different manner will improve your ability to reason about all code, not just Scheme.

Community

School provides a tremendous support structure for students. It has your peers, professors, and a huge library to help back you up. Your day job, on the other hand, is geared toward shipping it. It’s up to you to build the support structure you need for learning.

Look around at your programmer friends. Do any of them have the same learning style as you? If you’re a reader, form a book club. Visual learners can have a lot of fun problem solving at the whiteboard. Auditory learners need to talk and listen, which is a lot more fun when you have someone to talk to.

Next, cast your net wider. Most technologies have some combination of blogs, forums, news groups, IRC channels, and user groups. Where available, an in-person user group often has the best signal-to-noise ratio. Websites like MeetUp[50] can help you find a local user’s group.

Then you need some motivation. Open source projects are a great way to give purpose to your learning. You obviously can’t jump into a project without building up some skill, but even at junior skill levels you can find ways to contribute, for example by writing documentation. By working in the open, you build ad hoc peer groups that keep you engaged and active.

You can find tons of open source projects on websites like GitHub[51] and SourceForge.[52] Many programming languages also have directories of projects written in that language, for example RubyForge[53] for Ruby projects.

Conferences

Technology conferences range from expensive weeklong affairs in exotic vacation spots to one-day freebies at a local hotel. (Your company will occasionally pay for an expensive one.) These are great opportunities for learning and meeting programmers from other companies.

Many conferences have multiple tracks with sessions of a similar theme. Pick a track or just cherry-pick the sessions that look interesting. All conferences also have an additional track—the hallway track. That’s all the interesting stuff you learn just by chatting with folks in the hallway between sessions. Often the hallway track is more interesting than anything else at the conference.

(Keep in mind that conferences are partly for your benefit but largely for the benefit of the vendors sponsoring the thing. The email address you use to register for the conference will forever be a target for vendors’ promotional emails.)

Bill the Company

While learning is primarily for your benefit, don’t forget that your current employer has some self-interest, too. As you learn new skills, the company is getting a more skilled programmer. Thus, they’ll often foot the bill. Books, classes, and conferences are all fair game—ask your manager.

Many managers, in fact, have an ongoing task to send their employees to training. Much like your own learning, it’s easy for this to get lost in the shuffle. Therefore, when you take the reins, you do your manager a favor as well as yourself.

Actions

Make a mind map of the skills you have right now: programming languages, platforms, tools, and so forth. Some of your map’s branches will look sparse. Identify a couple areas where you’re lacking—and you’re motivated to improve​—and commit to improving them over the next six months.

Set aside some money each month as a self-improvement fund. This could be for books, software, or other resources you need. (Beer does not count as a self-improvement resource.) Then you won’t need to worry about shelling out some cash when you have time to pick up something new. You have the money ready to go.

Research a programming language that is as different as possible from the language you use at your day job. For C++ (statically typed, compiled, object-oriented), this might be Scheme (dynamically typed, interpreted, functional); for Ruby, it might be Haskell. Buy a book or two (Bruce Tate’s Seven Languages in Seven Weeks [Tat10], for example), dedicate some time, and flex those brain muscles.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.191.202.177