The Passionate Programmer
Igor Morozov
By Chad Fowler
What the book is about? Not about struggling to maintain the level of
mediocrity required not to get fired; Strategy for creating a radically successful career in
software development; Cultivating the desire to live a remarkable life; 43 pieces of advice, supplied with examples and
comparisons between music and IT;
About author
Chad Fowler
Had an unfinished musician degree;
Brief career of a saxophonist;
Then software developer and project manager;
Made a trip to India for recruiting people;
Currently a Ruby developer
Don’t build your career around a specific technology
Company, that owns this technology, may go out of business;
The technology itself may become obsolete; “Market leader” and “standard” are not synonyms; So invest your time in multiple technologies, better
try out a dozen of them and form your tastes;
Be the worst The people around you affect your performance.
Choose your crowd wisely; When choosing a team to work with, try to be the
worst by level; Due to instinctual herd behavior, people fit in with
superior teammates; Plus, you’ll find out that you’re not as bad as you
thought and this will give you additional inspiration
Don’t listen to your parents Parents usually consider safe variants for their
children: just earn money and stay away from getting the sack;
A generation ago job certainly wasn’t fun, now it can be;
In our industry it’s OK to change jobs;
Practice, Practice, Practice
Explore your language’s APIs and function libraries
Study new programming areas
Practice in writing elegant code (codehunter.com)
Participate in competitive programming (topcoder.com)
Be a Mind Reader Listen carefully to manager’s thoughts of which
features to add to the project; Or anticipate them if you can; However, don’t implement mind-read feature if it
will somehow limit the system; Or if it requires much of the company’s resources;
Learn to love maintenanceWhy is maintenance work not attractive? Lack of funding Dealing with bad legacy codeAdvantages of maintenance: Just a few responsibilities Freedom to refactor code and unexpectedly
implement something new; Ability to directly interact with users;
Stop working after-hours It’s better to think “I have only 8 hours! Go, go,
go!” Having more time to work reduces the value of
time, which results in laziness at work and reduced productivity;
The end of a working day should be a strict deadline for the piece of work, otherwise it nags the worker afterwards;
Learn how to make mistakes Raise the issue as soon as you know about it; Take the blame for it; Offer a solution (or a way to find a solution); Don’t refuse help out of pride; Remember: you’re showing your true face when
dealing with errors.
Learn when to say ‘No’ Saying “yes” to avoid somebody’s disappointment
is as good as lying; And at work lying tend to cost much money for the
company; Refusing to do the work with objective reasons or
at least saying “I don’t know” is much better; Although you should keep balance between “yes”
and “no”;
Other advice: at work Remember who you work for and match your goals
to his/her Live in the present, don’t think about promotion as
an ultimate goal; Think about how much money you deliver to your
company vs. how much you cost Don’t feel irreplaceable Don’t panic
Other advice: beyond work Know your business domain Invest in your intelligence Mine existing code for patterns and tricks; Be a generalist and a specialist; Find a mentor and be a mentor to someone
Thanks for attention!