14 Habits of Highly Productive Developers

5 min read
The 14 Habits of Highly Productive Developers bookPhoto by Zeno Rocha

The Fear of Missing Out (FOMO) vs. The Joy of Missing Out (JOMO)

  • Accept the fact that you simply can’t learn everything. Remember, desires are endless; needs are limited.
  • Self-awareness is super important: you need to understand what are the signals and what is the noise
  • Priority
    • 1 yes ≠ 1 no
    • 1 yes = many noes
  • With time being finite, it’s good to find a balance in what you choose to learn to keep yourself effective.

The fundamentals

  • If you decide to become a great developer, it’s important to understand core concepts such as algorithms, logic, network, accessibility, security, and user experience.
  • Research your field and divide the fundamental skills into two columns
    • skills already acquired
    • skills to be acquired
    • work on those new skills
    • refine the already acquired ones

Teaching Equals Learning

  • Do a presentation
  • Write blog posts and share them online
  • Learn and teach, teach and learn

Be Boring

  • play the infinite game. play the long term game. invest time in long-term outcome
  • think about consistency, discipline, and persistency

Do It For Your Future Self

  • Think about the industry trends and the progression of where I believe technology will be in 3–5 years
  • keep the codebase future-proof
    • Write simple code with meaningful variable/method/class names
    • Have good automated testing: unit testing, integration testing, performance/benchmark testing
      • No code should be added without unit tests, and no bug fixed without a regression test.
    • Have good code and architecture documentation

Your 9-to-5 Is Not Enough

  • The answer lies in the nature of our work.
  • Our regular jobs are probably not enough to show our full potential. What usually happens is that we are bound to the technology constraints of the company we work at. We have a determined set of languages, frameworks, and code styling we have to follow. Sometimes these technologies change and we have the opportunity to learn the new ones at work, but if you’re just starting your career, you’ll probably need to expand your horizon with other technologies in your free time.

Master The Dark Side

  • Business is the “dark side”
  • Start with the industry vocabulary
  • Start reading and consuming more content about your industry, you will naturally develop more domain knowledge
  • Save time: The better you understand the business, the more capable you will be to solve those problems yourself.
  • Prevent complex code: We always want to build the most abstract, flexible, extendable, and reusable code possible. We want that so much that sometimes we develop an excessively complex application. More often than not, these implementations will never be extended or reused, generating a graveyard of code.

Side Projects

  • Gain better knowledge of technologies you are already using
  • Gain familiarity with other technologies you want to learn
  • Learn new skills and about yourself on how to be more productive

Specialist vs. Generalist

  • Work on self-awareness and understand what's best for you
  • Use this matrix to help you in your decision making process
  • Specialist – Pros
    • You can achieve very good compensation in that specific field
    • You can typically gain a lot of technical authority in a particular subject
    • You need to keep up to date in only one platform/language
    • Companies are always searching for specialist people in that specific field
  • Specialist – Cons
    • It can be hard to find a position if your specialization is too narrow
    • If the chosen technology has a risk of becoming obsolete, it will be hard to start from the bottom again
    • It’s possible that your knowledge may be too company-dependent, which will make it difficult to apply the same skills somewhere else
    • If there’s an urgent need to use another technology, there’s a chance you will take longer to complete a certain task
  • Specialist – Work Opportunities
    • Senior positions, especially at big companies
    • Research projects at universities
    • Freelancer in a specific field
  • Generalist – Pros
    • You are used to learning new technologies fast
    • There’s a wide variety of opportunities that you can pursue in different industries
    • If you need a new job, you are flexible and easy to transition
    • If you need to switch context to a different type of task, there’s a chance you will find a solution faster than others
  • Generalist – Cons
    • It’s hard to stay updated in a lot of different languages and technologies
    • It’s possible that you’ll take a long time to solve very complex and technology-specific problems
    • It’s difficult to reach a leadership position if you’re changing fields constantly
    • Even though it's easier to find a new position, it may be arduous to show that you’re the best candidate
  • Generalist – Work Opportunities
    • Startups/Early stage companies
    • Consultancy opportunities
    • Start your own business

Control Your Variables

  • Separate things into what you can control and what can't control
  • Stop wasting time on variables that are out of your control. Focus on the variables that you can change.

Stop Waiting

  • The only thing that prevents you from achieving something is yourself.
  • Do you want to change jobs? If so, what are the main companies that you would like to work for? How many times have you interviewed in each of them? What kind of skills do you need to learn in order to get that job? What books are you reading to fill that gap?
  • Do you want to live abroad? If so, how many days of the week are you investing to learn the language of that country? How much money per month are you saving to pay for moving costs? What type of visa do you need to live in that country? What documents do you need?
  • Do you want to invest in an idea? If so, how many hours are you dedicating to this project? Can you wake up 1 hour earlier? Can you sleep 30 minutes later? What about lunchtime, can you make it shorter?


Twitter Github