Skip to content

Latest commit

 

History

History
120 lines (95 loc) · 8.32 KB

how-to-become-a-developer.md

File metadata and controls

120 lines (95 loc) · 8.32 KB

How to become a developer

  • A developer is a problem solver, who develops solutions to solve own or others problems, not only a coder!
  • This is not a step-by-step guide.
  • I try to summarize what it imho takes to get the fundamentals as software developer/engineer.
  • I'm not a great coder. But I learned how to carve solutions so I see myself a "solution carver". This has worked quite well for almost 30 years, yet.

Prepare to learn

You will be life long learning. So imho organize your learning and note taking at best from start.

  • Read "Make It Stick: The Science of Successful Learning" by Peter C. Brown, Henry L. Roediger III, Mark A. McDaniel
  • Read "A System for Writing: How an Unconventional Approach to Note-Making Can Help You Capture Ideas, Think Wildly, and Write Constantly - A Zettelkasten Primer": https://www.amazon.de/dp/B0D18J83VB/
  • Read "Building a Second Brain: A Proven Method to Organise Your Digital Life and Unlock Your Creative Potential" by Tiago Forte

I can't emphasise how important it is to build up a sensible note taking system.

"Human interaction"

Many of the devs I got to know became developers because they wanted to have as little to do with other people as possible. This is a mistake! You will have to deal with others often enough. Prepare by reading "Soft Skills: The Software Developer's Life Manual" by John Sonmez

Choose a language

Choose a programming language to start and get fluent with it e.g. Golang, Rust, Python, Typescript. Be open for other languages and concepts. I like Golang a lot so my recommendations for it:

Note

Don't forget to practice: code - code - code
If you need ideas check Five Go Projects: https://github.com/dreamsofcode-io/goprojects
Not only five ideas also includes code!

Version control & Collaboration

  • Git is the standard so read: Pro git: https://git-scm.com/book/de/v2
  • To learn to work together and understand concepts, read "Extreme Programming Explained: Embrace Change" by Kent Beck, Cynthia Andres

Problem solving & critical thinking

Imho the most important skills a dev should develop.

  • Read: "Problem Solving 101: A simple book for smart people" by Ken Watanabe
  • Read: "Critical Thinking (The MIT Press Essential Knowledge series)" by Jonathan Haber
  • Read: "Thinking, Fast and Slow" by Daniel Kahneman
  • Read: "Start With Why" by Simon Sinek

Agile

  • Read: "Agile Manifest": https://agilemanifesto.org/
  • Read: "Scrum Guide": https://scrumguides.org/index.html
  • Read: "Scrum: The Art of Doing Twice the Work in Half the Time" by Jeff Sutherland und J.J. Sutherland
  • Read: "The Scrum Fieldbook: Faster performance. Better results. Starting now." by J.J. Sutherland

There are still a few things outside of Scrum. Scrum is the most widespread. Nevertheless, here are a few keywords with which you can find other approaches: Kanban, Cynefin, Jobs to be done (jtbd), Design thinking, FAST Agile ... don't forget Waterfall and V-Model ...

Devops

  • Read: "The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win" by Gene Kim, Kevin Behr, George Spafford
  • Read "The Unicorn Project: A Novel about Developers, Digital Disruption, and Thriving in the Age of Data" by Gene Kim

General notes

Next steps

Note

Don't be put off by the size, remember to take it step by step, eat the elephant bite by bite.

All books are not language specific, they apply in general, also they may include code examples in languages you don't intend to use. No particular order.

  • Read "Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems" by Martin Kleppmann
  • Read "Code" by Charles Petzold
  • Read "Modern Software Engineering" by David Farley
  • Read "The Pragmatic Programmer: Your journey to mastery, 20th Anniversary Edition" by David Thomas and Andrew Hunt
  • Read "The Mythical Man-Month. Essays on Software Engineering" by Frederick Brooks
  • Read "A Philosophy of Software Design" by John Ousterhout
  • Read "Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation" by Jez Humble and David Farley
  • Read "Fundamentals of Software Architecture: An Engineering Approach": https://www.amazon.de/dp/1492043451/
  • Read "Fundamentals of Data Engineering": https://www.amazon.de/dp/B0B4VH4T37/
  • Read "HTTP: The Definitive Guide": https://www.amazon.de/dp/1565925092/ (dated but still the best I've read)
  • Read "The TCP/IP-Guide: A Comprehensive, Illustrated Internet Protocols Reference": https://www.amazon.de/dp/159327047X/ (also dated but still the best I've read)

TODO:

  • Productivity, self care, self optimization? Not too many titles.