- 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.
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.
- Watch: Everything Starts with a Note-taking System: https://www.youtube.com/watch?v=Xw3SkhB4dMk
- Watch: Note-taking Apps for Command-line People: https://www.youtube.com/watch?v=L1ALavX0pKo
- Watch: Note-taking with Zettelkasten - An Introduction: https://www.youtube.com/watch?v=o1NJYnZCfmY
- Watch: Zettelkasten: Note-taking & the UNIX Philosophy: https://www.youtube.com/watch?v=vXkyGgp2HWM
- Watch: Note-taking with the PARA method - Best for Beginners: https://www.youtube.com/watch?v=oxUVn37-Igk
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 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:
- Read tour of go: https://go.dev/tour/welcome/1
- Read go by example: https://gobyexample.com/
- Watch: https://www.youtube.com/playlist?list=PLoILbKo9rG3skRCj37Kn5Zj803hhiuRK6 imho the best free video course
- Visit "Go go-to guide": https://yourbasic.org/golang/
- Visit "Golang tutorial series": https://golangbot.com/learn-golang-series/
- Read effective go: https://go.dev/doc/effective_go
- Read Uber Go Style Guide: https://github.com/uber-go/guide/blob/master/style.md and Google Go Style: https://google.github.io/styleguide/go/index
- Read "Organizing a Go module": https://go.dev/doc/modules/layout
- Read Go Wiki: Common Mistakes: https://go.dev/wiki/CommonMistakes
- Read Go Wiki: Go Code Review Comments: https://go.dev/wiki/CodeReviewComments
- Read Making Regex From Scratch in Go: https://lewismetcalf.com/series/making-regex-from-scratch-in-go/
- Read Golang documentation: https://go.dev/doc/
- Read: "Let's go" by Alex Edwards: https://lets-go.alexedwards.net/
- Read: "Let's go further" by Alex Edwards: https://lets-go-further.alexedwards.net/
- Read: "100 Go Mistakes and How to Avoid Them" by Teiva Harsanyi. It's one of the best books to deepen your knowledge in Go.
- For cli projects don't miss https://charm.sh/libs/
- Take a look at Rob Muhlestein aka rwxrob "My Personal "Awesome" Go List": https://github.com/rwxrob/awesome-go
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!
- 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
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
- 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 ...
- 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
-
Watch "Basic computer skills for IT": https://www.youtube.com/watch?v=ZeKEUgHW3dE
-
Watch "Write it down (and run it)": https://www.youtube.com/watch?v=jD_MAEKMOQo
-
Watch "Q: What app do you use to take notes?": https://www.youtube.com/watch?v=26X2onaKGc0
-
Watch "I Suck." ... "I Rock!": https://www.youtube.com/watch?v=cFIF46j59LY It's "a lengthy description of the two extremes: impostor syndrome (undervaluing your skills) and Dunning-Kruger effect (not knowing that you don't know)."
-
Watch "Beginner Boost 2021" a great playlist where you learn what you really need: https://www.youtube.com/playlist?list=PLrK9UeDMcQLre1yPasCnuKvWvyXKzmKhW
-
Avoid tutorial hell -- start with "fun" projects write a cli etc. help for ideas: https://goodfirstissue.dev/language/go.
-
You won't learn to be a developer by only reading books, watching youtube videos etc. do projects
-
Visit: "The Missing Semester of Your CS Education": https://missing.csail.mit.edu/
-
Watch "Alex Martelli - "Good enough" is good enough!": https://www.youtube.com/watch?v=gHG9FRSlPxw
-
Start to write down your achievements e.g. what you learned today, what you did today. This helps you to document your progress, and you don't even get the feeling of not moving forward.
-
Take time, learn, take notes. Get experience by doing projects. Practice and experience, is important. Improve have fun.
-
If you are criticised don't take it personally!
-
If you criticise don't get personally!
-
It's all "Bloom's Taxonomy: Remember - Understand - Do / Apply - Analyze - Evaluate - Create": https://en.wikipedia.org/wiki/Bloom%27s_taxonomy
-
Iterative approach, communication, getting feedback, giving feedback and common sense.
-
Watch "Ron Pressler - Why Writing Correct Software Is Hard and Why Math (Alone) Won’t Help Us - Curry On": https://youtu.be/dWdy_AngDp0
-
Watch "Can I put it on my resume if I'm still just learning it?": https://www.youtube.com/watch?v=JuZztAYpoSo
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.