As developers, we're always striving to upskill technically, but we can't forget about those critical soft skills too. After reading 40 or so of these kinds of books, I wanted to share some top takeaways that we can apply to level up as programmers and managers. You can also browse the full list of my book recommendations.
If you're looking for a quick tl;dr of learnings:
- Master the art of deep focus. Schedule uninterrupted blocks for key work and reduce distractions.
- Optimize for high-leverage activities. Prioritize the 20% of work that drives 80% of outcomes vs. reacting to every notification.
- Cultivate a growth mindset. View challenges as learning opportunities, not failures. Embrace constructive criticism and feedback.
- Continuously iterate and validate assumptions. Rapidly build MVPs, get user feedback, measure data. Pivot early.
- Proactively level up leadership skills. Coach teammates, set clear goals, foster psychological safety and authentic communication.
These books aren't specifically about code or systems design, but the insights on leadership, productivity, team dynamics and more are highly relevant to our world. I've compiled my favorite bits that have helped me become a better eng leader and I think they could help you too. Some light reading for the weekends perhaps! Let's dive in.
- Minimize distractions and shallow work. Carve out long stretches for intense focus and complexity.
- Build rituals and routines to regularly do deep work. Protect this time.
- Be mindful of your time spent on social media, Slack, too many meetings to preserve mental capacity.
- Break down big goals into small, manageable habits. Focus on processes, not outcomes.
- Create obvious cues and routines for habits to make them easy to start.
- Build habits in environments that reinforce them. Control cues and reward good behavior.
The Effective Executive:
- Identify the few major areas where you can make the greatest impact vs. just doing busy-work
- Manage your time effectively - focus on priority tasks without interruptions. Schedule thinking time.
- Make effective decisions - consider alternatives, weigh risks, consult with others, make clear choices.
- Empower and challenge team members instead of micromanaging. Get people thinking and taking initiative.
- Create space for people to contribute beyond their official roles. Draw out their skills.
- Avoid accidentally diminishing people - belittling ideas, overcontrolling, underutilizing talent.
Thinking, Fast and Slow:
- Understand the two systems driving decisions - fast intuitive vs. slow analytical thinking. Know their biases.
- For complex analysis, create space from intuitions and emotions. Slow down and use structured reasoning.
- Watch for overconfidence, confirmation bias, anchoring, and other common mental errors when evaluating.
Getting Things Done:
- Maintain comprehensive to-do lists and calendars to stay organized. Break projects into next actions.
- Regularly review inboxes, projects, someday lists - process information into action.
- Create reminders and triggers to stay focused on your priorities and not slip on commitments.
The Culture Code:
- Build psychological safety on teams so people feel comfortable taking risks.
- Encourage small signals of inclusion and caring between members.
- Define core values and principles to guide decisions and norms.
- Directly challenge people when their work needs improvement - be caring personally but candid professionally.
- Praise good work clearly and sincerely. Show you notice and appreciate their efforts.
- Listen attentively and ask questions to understand issues fully before judging.
Five Dysfunctions of a Team:
- Build cohesion and trust between team members. Take time for personal connections.
- Encourage constructive conflict and open debate instead of forced consensus.
- Ensure commitment to decisions, roles and plans. Involve the team in choices.
- Hold each other accountable for behaviors and results. Call out issues respectfully.
- Focus on collective results, not individual goals. Prioritize team success.
The Innovator's Dilemma:
- Disruptive innovations often come from outsiders and new entrants, not incumbent leaders.
- Focus on customers' evolving jobs-to-be-done, not existing product categories. Be ready to cannibalize your own products.
- Separate disruptive teams from legacy business constraints. Empower them to experiment.
- Question your core assumptions and beliefs regularly. Be willing to change any view with new evidence.
- Seek dissenting voices and have productive arguments to stress test ideas.
- Update your beliefs incrementally as the world changes. Don't cling to old narratives too long.
- Look for process and communication problems before blaming people. Ask why before who.
- Rotate team members between positions to build empathy and avoid silos.
- Codify tribal knowledge and assumptions. Make work visible to spot gaps.
High Output Management:
- Set clear, measurable goals. Break down strategy into specific, concrete tasks.
- Give frequent coaching and feedback focused on performance, not the person.
- Delegate responsibility, but follow up on results. Inspect what you expect.
The Lean Startup:
- Launch MVPs to validated learning vs. elaborate products. Test critical assumptions quickly.
- Get out of the building. Interview customers, observe users, collect real data.
- Use innovation accounting to evaluate progress. Pivot if needed.
The Power of Habit:
- Habits form through cue, routine, reward loops. Identify the cues to change habits.
- Make new routines easy to start and satisfying to do until they stick.
- Keep early cues and rewards consistent as you change routines.
- Widen options before deciding - don't default to obvious choices. Consider more.
- Reality-test your assumptions and stories to avoid biases and blind spots in choices.
- Prepare to be wrong. Have plans to quickly recognize and recover from mistakes.
- Praise efforts, strategies and processes, not intelligence or talent. Foster a growth mindset.
- Embrace challenges to learn and improve. Don't avoid failure.
- Focus on personal improvement vs outperforming others. Measure progress against past performance.
How to Win Friends and Influence People:
- Show genuine interest in people - ask about their lives, listen intently, and remember details. Make them feel valued.
- Let people save face when wrong - don't criticize publicly. Help them fix issues without embarrassment.
- Encourage others sincerely. Appreciate their strengths and efforts. People crave recognition.
- Get people saying "yes" early in conversations. Build momentum and rapport for bigger asks.
- Start tough conversations calmly. Make it about issues, not attacking people. Clarify intents.
- Share your story and perspective early. Explain why you see things as you do.
- Ask open-ended questions to understand others' views. Listen first, don't judge prematurely.
- Agree on a mutual purpose and goals upfront. Stay focused on resolution, not winning.
- Take complete responsibility for team performance. Don't make excuses - take action to fix issues.
- Audit your operations and processes first when problems arise. Look for process issues before blaming people.
- Encourage team members to exercise disciplined initiative within a decentralized command structure. Empower daily decision making at the edge.
The Manager's Path:
- As a new manager, focus on 1:1s, feedback, and coaching over fancy frameworks. Build trust.
- For directing managers, align your org to strategy through OKRs, not top down orders. Enable autonomy.
- For VP+ roles, actively nurture the culture and values. Set the tone at the top.
- Develop broad perspective and strategic thinking as you advance. Zoom out beyond the immediate.
Here are 5 more detailed book takeaways from your list that I think would be highly relevant for programmers:
Start with Why:
- Clearly define your team's purpose and reason for existing beyond profits. Align teams to a shared mission.
- Communicate from the inside-out. Start communications by explaining why you do what you do.
- Hire those who connect with your purpose, not just skills. Passion for the mission is critical.
Good to Great:
- Get the right people on the bus first. Great vision and plans only work if the team is highly capable.
- Confront brutal truths about your company's situation and capabilities. Make data-driven decisions.
- First Who, Then What - build a cohesive team of self-motivated people before cascading directives.
- Focus on excellence in your core business before diversifying. Master something before moving to adjacencies.
First Things First:
- Prioritize work based on importance instead of just urgency. Focus on high-leverage activities.
- Schedule weekly planning to be proactive vs. reactive. Align tasks to key roles and goals.
- Batch similar tasks to optimize time. Build routines and habits for efficiency.
The Lean Product Playbook:
- Rapidly test demand by pre-selling MVPs or crowdfunding instead of overbuilding.
- Talk to customers early and often. Iterate based on qualitative insights, not just data.
- Validate risky hypotheses first - focus testing on the biggest assumptions and unknowns.
- Avoid stagnation by revisiting vision regularly. Plan pivots when needed.
Welp, those are just a few of the many gems I picked up across these fantastic books. Expanding our thinking into diverse subjects like biz, psychology and leadership brings so much back to our day-to-day as devs. Technical skills are table stakes - being an awesome teammate, manager and leader is so much of the sauce.
I'd encourage you to pick up a few of these titles that caught your eye (disclaimer - I do use affiliate links but please feel free to directly seek the books). We can all get better at programming and soft skills by learning from other fields. No book has all the answers but they provide tons of food for thought. Alright, code on my friends.