The Passionate Programmer by Chad Fowler

  • Choosing your market
    1. Lead or bleed - makes the argument to find the next technology going out of style and be the person who gets the new technology to talk to the old technology
    2. Supply and demand - exploit market imbalances or find the places where you can compete at the high end of the market
    3. Coding don't cut it anymore - you need to understand your business
    4. Be the worst - be the worst guy on the team (and therefore learning from everyone else who is better than you)
    5. Invest in your intelligence - be curious
    6. Don't listen to your parents - take risks and experience new things
    7. Be a generalist - software development doesn't follow a nice manufacturing process; there is real value in people who can see across the different dimensions of an organization
    8. Be a specialist - this doesn't mean just not knowing about other things
    9. Don't put all your eggs in someone else's basket - don't build your career around a single technology that someone else controls; makes the point that if you must focus on a technology, focus on an open source technology
    10. Love it or leave it - find the thing you want to learn about just for fun
  • Investing in your product
    1. Learn to fish - take the time to learn to be self-sufficient
    2. Learn how businesses really work - learn basic business finance and how you contribute to P&L
    3. Find a mentor - particularly helpful for guiding what you should invest your learning time in
    4. Be a mentor - you learn best by teaching (and writing)
    5. Practice - be fluent with the tools of your language, practice with additional fake constraints to stretch yourself
    6. The way that you do it - improve your software writing process
    7. On the shoulders of giants - take the opportunity to learn from open source projects
    8. Automate yourself into a job - be solution-centric instead of technology-centric
  • Executing
    1. Right now - treat your project like a race to get it done with speed
    2. Mind reader - work on the things that the organization (or your boss) needs but doesn't quite know they need yet
    3. Daily hit - aim for a noticeable accomplishment every day (or week)
    4. Remember who you work for - align your work with your managers needs
    5. Be where you're at - focus on the present and do that well
    6. How good a job can I do today? - work is boring if we can't be creative and aren't challenged: find ways to add these to your boring tasks
    7. How much are you worth? - think in terms of how much value you create for your employer
    8. A pebble in a bucket of water - remember that you are replaceable
    9. Learn to love maintenance - maintenance is important, undervalued, and an opportunity to really learn the business logic of the organization
    10. Eight-hour burn - work relentlessly for 8 hours; we are more efficient with scarce resources
    11. Learn now to fail - raise issues early, take the blame, offer solutions, and ask for help
    12. Say no - say no instead of not delivering
    13. Don't panic - take a step back to gain perspective to keep from panic if
    14. Say it, do it, show it - publish plans and deliver
  • Marketing
    1. Perceptions - perceptions matter, so learn how to manage them for the various relationships at work
    2. Adventure tour guide - remember that people who don't know how to program are on average just as smart, so learn to communicate in a way that makes them comfortable and not feel dumb
    3. Meet rite reel nice - writing skill is important: you are what you can explain
    4. Be present - people are comfortable with personal interaction, so make an effort to walk over and talk to them or pick up the phone
    5. Suit speak - be able to explain the business purpose for what it is you are working on
    6. Change the world - have a mission
    7. Let your voice be heard - publish and speak to get your name out, and start sooner than you think you're ready
    8. Build your brand - build awareness and positive association
    9. Release your code - contributing to open source software builds your name and demonstrates your passion for software development
    10. Remarkability - make remarkable things
    11. Making the hang - reach out to the people you admire in your field, hang out with them, and learn from them
  • Maintaining your edge
    1. Already obsolete - think of time learning a technology as an investment that depreciates quickly; think ahead to the next technologies
    2. You’ve already lost your job - the job you were hired for no longer exists
    3. Path with no destination - development (the path) is the end, not just the deliverable
    4. Make yourself a map - you need a personal career map to know where you are heading; think about the story your set of skills tells
    5. Watch the market - similar to the stock market, keep an eye on the market to know what personal development investments you should make
    6. That fat man in the mirror - it’s hard to notice change when you see it every day; take the input of others to understand where you are in your career and uncover your blind spots
    7. The south Indian monkey trap - value rigidity from Zen and Motorcycle maintenance: try to avoid value rigidity when it comes to which technology to use for a particular task
    8. Avoid waterfall career planning - be agile and think in terms of constant change
    9. Better than yourself - make today better than yesterday
    10. Go independent