Here are some notes on Dave Farley’s video on Youtube.

Avoid These Common Mistakes Junior Developers Make!

  1. Software Developers Is All About Coding

Software development is about solving problems, not about code.

  1. If Only the Business Would Get the Requirements Right

This sentences completely misses the point. It assumes that developers are paid to code, and that someone else will tell them what to do.

Nobody really knows what users want. Everyone is guessing. The job of developers is to build systems in a world of uncertainty.

The goal is to protect against bad guesses and to incrementally evolve solutions to problems, so that we have freedom to make mistakes.

  1. Speed Is All That Matters

Take the time to think. Once the problem is clear, the coding is easy.

Optimize for learning, not for feature production

  1. My Job Is to Code, Not to Understand the Problem Domain

You don’t have to be a domain expert, but you need to have a surface level understanding. Try to see the real problem in the real world.

  1. I Can’t Ask for Help. It Shows That I Don’t Know Enough.

Smart people ask questions. Get comfortable with uncertainty.

Give yourself the freedom to ask twice. If you have to ask a third time, go to the person answering and explain that you didn’t understand it and ask for help.

  1. Software Architecture Is for the Experts

You should be able to explain how the system works. Could you explain it to your (non-technical) friend?

What are the organizing principles that really matter?
What ideas help you to decide where to place behavior in your system?

  1. Testing Is Someone Else’s Job!

Developers should write tests. Developers are responsible for building the system, sothey should be able to test if it works.

  1. I Would Like to Do a Better Job, but My Boss Won’t Let Me!

This could be a cultural problem. But at some point, we must take responsibility for our own work.

Focus on the stuff that you can control, and take ownership of it.