1.Gone are the days ofthe “lifer” who would join a big company
and settle in for a fullcareer. This sort of behavior used to be a
sign of dedication. Now it’s a liability.If you’ve worked in only one
place and seen one set of systems, many(smart) managers would see
that as a strike against you when making ahiring decision.
2.Legendary jazz guitarist Pat Metheny has a stock piece of advice for
young musicians, which is “Always be the worst guy in every band
you’re in.”
3.Learn a new programminglanguage. But, don’t go from Java to
C# or from C to C++. Learn a new language that makes you think
in a new way. If you’re a Java or C# programmer, try learning a
language like Smalltalk or Ruby thatdoesn’t employ strong, static
typing. Or, if you’ve been doingobject-oriented programming for
a long time, try a functional language likeHaskell or Scheme. You
don’t have to become an expert. Workthrough enough code
that you truly feel the difference in thenew programming environment.
If it doesn’t feel strange enough, eitheryou’ve picked
the wrong language or you’re applying yourold way of thinking
to the new language. Go out of your way tolearn the idioms of
the new language. Ask old-timers to reviewyour code and make
suggestions that would make it moreidiomatically correct.
4.The way to become ageneralist is to not label yourself with a specific role or technology. We can become typecast in our careers in many ways. To visualizewhat it
means to be a generalist, it can help todissect the IT career landscape into its various independent aspects. I can thinkof five, but an infinite number exists (it’s all in how you personally dividetopics):
? Rung on the career ladder
? Platform/OS
? Code vs. data
? Systems vs. applications
? Business vs. IT
5.And as I’ve started toput in the investment, it builds on itself.
One technique leads to the next, and onebarrier-breaking practice session motivates the next.
We thought our jobs were strictly aboutthose topics that we had devoted ourselves
to. However, how were we supposed tocreatively help the business be
profitable if we didn’t even understand howthe business worked?
6.Go get a book on basicbusiness, and work through it. A trick for
finding a good overview book is to look forbooks about getting a
master’s of business administration (MBA)degree. One such book
that I found particularly useful (andpleasantly short) is The Ten-Day
MBA [Sil99]. You can actually get throughit in ten days. That’s not
a very big investment.
7.It’s OK to depend on someone.Just make sure it’s the right person.
If you want to really learn something, tryteaching it to someone else.
There’s no better way to crystallize yourunderstanding of something
than to force yourself to express it tosomeone else so that they can
understand it. The simple act of speakingis a known elixir for treating
an unclearmind. Speaking to puppets andother inanimate objects as a
method of problem solving is a fairlywell-known element of software
development folklore.
8.When you practicemusic,it shouldn’t sound good. If you always sound
good during practice sessions, it meansyou’re not stretching your limits.
That’s what practice is for. The same istrue in sports. Athletes push
themselves to the limit during workouts sothey can expand those limits
for the real performances. They let theugliness happen behind closed
doors—not when they’re actually working.
9.Use existing code to reflecton your own capabilities.
10. The mind-readingtrick, if done well, leads to people depending on you—an excellent recipe for acareer you can drive the direction of. It’s a skill worth exploring anddeveloping.
11. Your managers’successes are your successes.
12. As a manager, I can tell you that the mostfrustrating thing to deal with is an employee who’s always aiming for the nextrung on the ladder.
13. Be ambitious, but don’t wear it on your sleeve.
14.What about copying? To become a better programmer,anyone will tell you that youshould read good code. Even though they presumably don’t mean it literally (that’sfar too boring), “reading” remains, at heart, the wrong idea: it’s passive.Instead, I think you
have to actively copy, widely and unashamedly. Copyingbuilds muscle memory. You get a feel for the nuance and form of the original—thekind of detail that’s lost in a quick scan. In the case of code, there’s also aless obvious—but significant—benefit. Copying
lets you go further with projectsthat are likely to fail. This can be straightforward transcription of, say, ahash-table implementation
(which made the first interpreter I wrote suck a lot less) ora design that’s just inspired and shaped by the original (as, say, Linux was byMinix).
15. Perceptions are driven by different factors, depending on who the audienceis. Your mother doesn’t much care how well you can
design object-oriented systems, but your teammates might.Understandingwhat’s important in each of your relationships is an important part of buildingcredible perceptions with those you
interact with.
16.You are what you can explain.
17.Remember,you need to make it personal, and to do that you have to remember thenatural human tendency to want to work with other humans—not voicemail, e-mail,or instant messaging but actual people. Try to actually learn about the peopleyou work with. Not
only does it more firmly entrench you into your company,butit’s a more enriching way to live.
18. Google never forgets.Most important, remember that the things you choose to do and associateyourself with have a lasting impact on what your name means to people. And, nowthat so many of our interactions take place via the Internet on public forums,websites,
and mailing lists, a lot of our actions are public record and arecached, indexed, and searchable—forever. Guard your brand with all your might.Protect it from yourself. It’s all you’ve got.
19. Don’t let yourself just be thebest in the bunch. Be the person and do the things that people can’t nottalk about.
20. Your shiny new skills are alreadyobsolete. Many of us are drawn to the IT industry because things arealways changing. It’s an exciting and fresh work environment. There’s always somethingnew to learn. On the flip side, though, is thedisheartening fact that
our hard-earned investments in technology-relatedknowledge depreciate faster than a new Chevy. Today’s hot new item istomorrow’s obsolete junk with a limitedshelf life.
21. We’ve all heard the extrapolations of Moore’s law that say that computing power doublesevery eighteen months
22. The one certain thing is that everything is changing. Theeconomy is shifting. Jobs aremoving offshore and back on. Businesses are trying to figure out how to adapt. Thingshave not reached a steady point in our industry.
23. If you want to hit a moving target, you don’t aim for thetarget itself. You aimforwhere the target is likely to go.
24. Rigid values make youfragile.Pirisig tells this story to illustrate aconcept he calls value rigidity. Value rigidity is whathappens when you believe in the value of something so strongly that you can nolonger objectively question it. Themonkeys valued the
rice so highlythat when forced to make the choice between the rice and captivity or death,they couldn’t see that losing the ricewas the right thing to do at the time.The story makes the monkeys seem really stupid, but most of us have our ownequivalents to
the rice.
25. The important thing to realize is that change isnot only possible in your career but necessary. As a software developer, you would never want to pour yourselfinto developing something your client doesn’t want. Agile methodologies helpprevent you from doing
so. The same is true of your career. Set big goals,butmake constant corrections along the way. Learn from the experience, andchange the goals as you go. Ultimately, a happy customer is what we all want(especially when, as we plan our careers, we are our own
customers)—not acompleted requirement.
26. The secret is to focus on making whatever it isyou’re trying to improve better today than it was yesterday. That’s it. It’s easy. And, as Erik was, it’spossible to be enthusiastic about taking real, tangible steps toward a distantgoal.
27. make your improvements small and incremental but daily.Small
improvements also decrease the cost of failure. If you miss aday,you have a new baseline for tomorrow.
28. But I say to you that when you work you fulfill a part ofearth’s
furthest dream, assigned to you when that dream was born, andin
keeping yourself with labour, you are in truth loving life,and to love
life through labour is to be intimate with life’s inmostsecret.
Kahlil Gibran, The Prophet(預言者,Crowdsourced Security Testing)
29. Ultimately, the most important thing I’velearned over the journey that my career in software development has been isthat it’s not what you do for a living orwhat you have that’s important. It’s how you choose to accept these things. It’sinternal. Satisfaction,
like our career choices, is something that should besought after and decided upon with intention.