What are the books all junior devs should read in 2022?
Refactoring by Martin Fowler, Design Patterns by the Gang of Four, Test Driven Development by Example by Kent Beck, Clean Code by Uncle Bob.
There's others like Pragmatic Programmer but I want to keep this list short to simplify the discussion.
My question is, are these books still relevant? Should any of them be replaced by more relevant books for 2022?
Refactoring is still one of my favorite tech books of all time, and I see it has recently been revised in 2018 to include javascript examples. I think this remains a solid recommendation.
Test Driven Development by Example is probably timeless as a historical record, but I'm wondering if there's a more recent work that covers the same content but also goes into Behavior Driven Development and Acceptance Test Driven Development.
Clean Code I would say is certainly still relevant, but I am wondering if there is any book that covers the same content with more recent code examples.
Design Patterns is the one I'm struggling with the most. Back when I first read it, it changed my life. But in 2022, with OOP looking increasingly dated and more and more people realizing they shouldn't make everything a noun, I wondering if there isn't a better choice out there? In many ways Design Patterns were created as a way for Java programmers to emulate useful tools from functional programming by nounifying them. I'm wondering if there isn't any good book to cover instead basic patterns from functional programming, stuff you see regularly in languages like javascript and python. Stuff like function composition, applying a closure to a container, that kind of thing. Any good options?
14 comments
[ 3.7 ms ] story [ 18.1 ms ] threadThe Pragmatic Programmer is still my favorite all-around book on programming. Gang of Four is good for folks with a few more years of experience and a critical mindset. I also really like POODR, it shows you that designs should be extracted and it’s great for any level, and it touches on a lot of functional concepts.
I read a bunch of technical and self-help books when I got my first job because I thought it would help my career, and it was AWFUL. I barely used anything I learned. It was so boring.
Now, I read purely for fun. I would say the split is 70% fiction, 20% technical, 10% anything else. Even though I read less technical books, they are immensely more useful because I find them interesting enough to actually apply the concepts.
> I'm wondering if there isn't any good book to cover instead basic patterns from functional programming, stuff you see regularly in languages like javascript and python.
I liked Eloquent Javascript. It's JS specific of course, but has a chapter on higher order functions: https://eloquentjavascript.net/05_higher_order.html plus more.
My only advice would be to look for a coupon code. They run a lot of them. Here's one they sent me for 40% off before Mar 22: SXSW22
Cheers!
Cristian Salcescu, Functional Programming in JavaScript
https://www.amazon.co.uk/Functional-Programming-JavaScript-R...
Not enough managers push their junior devs to work on developing their soft skills early on, so they're left figuring these things out later in their career, but those are some of the most important things that will help them grow into an effective engineer.
Here are the general topics my book covers:
1. Choosing a career path (IC vs. Manager, generalist vs. specialist)
2. Qualities of a senior engineer
3. How to deal with imposter feelings
4. Working with your manager
5. What to do when you make mistakes
6. How to ask good questions
7. How to read unfamiliar code
8. Adding value
9. Managing risk
10. Delivering results
11. How to communicate effectively
12. Work life balance
13. How to ask for a promotion to a senior role
I also started a substack newsletter to cover these topics are more. [1]
[0]: https://www.holloway.com/b/junior-to-senior [1]: https://newsletter.beginner.dev/
Initially it will be published on the web, but eventually the plan is to release a print copy as well.
- Designing Data Intensive Applications