Here are the bulletpoints from the ~ 30 minute video What All New Software Developers Need To Know by Dave Farley.
Nobody Knows Everything
Everyone is a junior in something. It’s OK to say “I don’t know”.
Apply “Engineering Thinking” to Solving Problems
Learn from your failures.
Make Progress in Small Controlled Experiments
Get comfortable with not knowing. Always work in small steps.
Be Suspicious of Your Ideas and Guesses
Always test your assumptions.
Seek Mentors
Look to chose your own boss. Interview the organization you apply to.
Seek Out Pair Programming
Find Like Minds
Go to meetups, find open-source projects to contribute to.
Don’t Be Obsessed With Tools
Software development is about understanding the problem we are working on. Develop the skills to analyze problems. Talk to other people, make diagrams.
Focus on the Problem You Are Solving
Your real job is not coding.
Write Lots of Code - Play With It
Explore. Try coding exercises.
It’s About Thinking, Not Typing!
Learn the fundamentals and apply them. Learn test-driven-development.
Fundamentals Are More Important Than Tools
Tools come and go, but the fundamentals stay.
Language & Frameworks Should Be Incidental
Spend some time to learn them, but look for the deeper, profound skills.
Solving Problems > Design > Coding > Language & Frameworks
TDD Focus Maintain Focus on the Problem & Improves Design Quality
Take Coupling/Dependencies Seriously
Concurrency Requires Caution
Optimise for Learning & Discovery
Work Iteratively
Gather feedback.
Work Incrementally
Make progress as a series of experiments.
Be Empirical
Observe. Evaluate ideas in the real world.
Optimise to Manage Complexity
Create modular systems. Improve cohesion. Separation of concerns. Manage Coupling. Use abstractions.
Source
- What All New Software Developers Need To Know by Dave Farley