Top products from r/ExperiencedDevs
We found 25 product mentions on r/ExperiencedDevs. We ranked the 24 resulting products by number of redditors who mentioned them. Here are the top 20.
1. Domain-Driven Design: Tackling Complexity in the Heart of Software
Sentiment score: 0
Number of reviews: 2
2. The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change
Sentiment score: 1
Number of reviews: 2
3. Becoming a Technical Leader: An Organic Problem-Solving Approach
Sentiment score: 1
Number of reviews: 1
4. How to be a Productivity Ninja 2019 UPDATED EDITION: Worry Less, Achieve More and Love What You Do
Sentiment score: 1
Number of reviews: 1
7. Soft Skills: The software developer's life manual
Sentiment score: 1
Number of reviews: 1
8. The Linux Programming Interface: A Linux and UNIX System Programming Handbook
Sentiment score: 1
Number of reviews: 1
No Starch Press
9. Exercises in Programming Style
Sentiment score: -1
Number of reviews: 1
CRC Press
10. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Sentiment score: 1
Number of reviews: 1
11. Stalling for Time: My Life as an FBI Hostage Negotiator
Sentiment score: 1
Number of reviews: 1
12. Cracking the Coding Interview: 189 Programming Questions and Solutions
Sentiment score: 2
Number of reviews: 1
13. Crucial Conversations Tools for Talking When Stakes Are High, Second Edition
Sentiment score: 1
Number of reviews: 1
McGraw-Hill
14. Remote: Office Not Required
Sentiment score: 1
Number of reviews: 1
Crown Business
16. Java Concurrency in Practice
Sentiment score: 1
Number of reviews: 1
Addison-Wesley Professional
18. Design Patterns: Elements of Reusable Object-Oriented Software
Sentiment score: 1
Number of reviews: 1
Great product!
19. The Pragmatic Programmer: From Journeyman to Master
Sentiment score: 1
Number of reviews: 1
Save up to 15% when buying these two titles together.The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process--taking a requirement and producing working, maintainable code that delights its users.It covers topi...
Yes, you should. Working at Google is awesome. The interview process can be intense but the benefits are worth it, and honestly I love the culture here.
Please get Cracking the Coding Interview if you don't already have it. Do the problems on paper and eventually time yourself to see if you can fit a solution into ~35 minutes.
I'd also recommend watching MIT OCW 6.006 Introduction to Algorithms if it's been a while since you did a Data Structures and Algorithms course (or, if like me, you never actually took one!)
Once you've got a few CTCI problems under your belt and have a wide enough range of knowledge, you can try some free practice interviews through interviewing.io (referral link). They'll match you up with interviewers from e.g. Google, Facebook, Amazon, AirBNB, etc. for free, anonymous mock online interviews, where (importantly!) you'll get full feedback from the interviewer afterward. They'll tell you if they'd move you to the next step, what you did well, and what you could improve. Notably, real interviewers are often barred from giving this feedback for legal reasons, so this can be very valuable.
One thing to note is that if you're interviewing for e.g. SWE, you can usually delay your interview as long as you need to in order to study. I delayed my phone screen for like a month and my onsite interviews for a few months.
Also note that many people who got hired here got rejected on a previous round. You can almost always try again later if you don't get through this time (usually after a year).
Good luck!
It sounds like you're in a position of an ad hoc decision maker / prioritiser. Ad hoc decision making, and attempting to satisfy everyone, is very stressful and ultimately impossible. Here's a step by step of how to get some clarity, if possible:
Some notes:
I remember reading a story about Dalai Lama, who recommended meditating for 1 hour a day. When asked what a busy person should do, he recommended meditating for 2 hours a day.
Context switching generates overhead. Your manager may be not experienced enough, or trained enough, to understand that. They may also not be able to visualise the extent of the things you are asked to do, because the requests aren't coming through them. That's what you need the log and pie chart for.
"I don't have the authority to..." is a common negotiation tactic - it works wonders when you're a line employee, but it will backfire if you're trying to increase your authority in the company and aiming for a promotion. In which case you will need to find some other ways to say "no" in a polite way.
All this is designed to take emotions out of decision making as much as possible, while still allowing you to express empathy for the person asking for help. People in need of help are often in distress, and are not thinking rationally, and they will do what they can to resolve that distress ASAP. The task is not necessarily as urgent or important as they portray it - but they will describe it so that you share their feelings and thus their distress, to motivate you to help. So you have to find a way to empathise with them (because people do not take it well when you tell them "you're over-exaggerating") while not letting them make you solely responsible for solving the problem. "I can see it's urgent, and I'd love to help, but my boss..." is one way of doing that.
In general, you have a limited amount of decisions your brain can make every day. Reserve them for the important stuff, and introduce as many routines into your life as possible. There's a number of books about that, for example "How to be a productivity ninja"
(If possible, organise rotating "on call", "tech support" or "bugfix" roles - but this requires buy in from your manager and your team.)
If you really want to push the envelope on TC, especially as a more experienced dev, you're going to need to ace the system design interview(s).
I'm still learning this myself, but a good book you might want to check out is Designing Data-Intensive Applications. I've also heard good things about Grokking the System Design Interview.
Good luck! I'm going through the studying process as well, it's brutal.
The Clean Coder is pretty great as it talks about being a professional developer and all that that entails. Very opinionated though (as all of Uncle Bob's books are). "If you don't do TDD, fuck you" is a fairly accurate paraphrasing of one chapter. Still, I found a lot of value there.
I recently read Rework which is a very quick read, but very dense with information on how Basecamp runs their business and many ideas of things that you should or should not do. If you do any freelancing or are thinking of starting your own business at some point, I'd recommend it.
Probably going to read Remote next as I'm working with remote business partners myself.
you could probably just read one good book about code architecture, the truth is no architecture is perfect, you always make trade offs between time, money, readability, performance.
I hear this one mentioned very often on the podcast coding blocks
pragmatic programmer
But i would definitely ask around before dropping $50 on a book. Maybe read some of it at a book store and see if you like it first.
I've read this and "Stalling for Time: My Life as an FBI Hostage Negotiator." They are both very good companion pieces.
https://www.amazon.com/Stalling-Time-Life-Hostage-Negotiator/dp/1400067251
What I enjoyed most was how it changed my perspective on negotiating. Especially hearing stories where someone gives a hard deadline that is essentially meaningless, it's hard to create a mental model to map the Stalling for Time into real life scenarios, but Never Split the Difference does create these models and they are very useful.
Java Concurrency in Practice
Not only does it cover the specifics of the java concurrency packages and how to use them, but discusses lots of good programming practices that are essential to being a good programmer and not covered in many other books.
I'm going to assume that there are no actual differences between this interview and the interviews at other places other than the change in behavior you described for this answer. Keep in mind this could be a bad assessment.
Human nature does play in to the dynamics of an interview and negotiation. Perhaps you were to eager in your previous interviews and that ended up coming off wrong to the interviewers. What you might have done is made the interviewer think that they need to convince you to join them instead of you convincing them to let you join. Coquettish behavior can be very powerful when used correctly, assuming you have something people want. This book helped me understand a bit more about the various types of behaviors people tend to build for their personas either consciously or unconsciously.
https://www.amazon.com/Laws-Human-Nature-Robert-Greene/dp/0525428143
Obviously its very grain-of-salty, but these behaviors are definitely part of human nature in a general sense.
I have heard good things about The Linux Programming Interface but cannot verify it is as specific as you are looking for.
I think some of Julia Evans stuff is good for this.
Radical Candor is good. Extreme Ownership also. I had an old CEO recommend Wooden, by John Wooden, but I didn't get a ton out of it at the time.
https://www.amazon.com/gp/product/0932633021/ref=ox_sc_saved_title_4?smid=ATVPDKIKX0DER&psc=1 Becoming a Technical Leader came highly recommended to me, but I haven't gotten into it yet.
Is this your first role as a lead? You're adjusting to both a new company and a new job.
Some of these problems are just kind of "welcome to leadership" - for example, managing your meeting load is now a decent part of your job. You do need to be in a lot of meetings. You will also get invited to meetings that don't exactly need you. Figuring out what's important, and performing well in those meetings, is a big part of the lead's job.
I highly recommend the book The Manager's Path which has a section on the "tech lead" role. There is a sidebar that addresses almost your exact situation - a first-time lead that doesn't like the job. The author's answer was (very roughly) "yup, it sucks in some ways - that's the job." But the experience as a tech lead is necessary to get promoted beyond an individual contributor role.
Of course, there are also problems with the company. Every company is dysfunctional in some ways. You need to decide whether this company's problems are ones that you can fix and/or tolerate. It might be a good challenge if you want to level up your career.
Crucial Conversations
https://www.amazon.com/Crucial-Conversations-Talking-Stakes-Second/dp/0071771328
A Seat at the Table: IT Leadership in the Age of Agility
https://www.amazon.com/Seat-Table-Leadership-Age-Agility/dp/1942788118
Soft Skills
https://www.amazon.com/gp/product/1617292397
Trust
https://www.amazon.com/gp/product/184046531X
I found this book to be very helpful:
https://www.amazon.com/Managers-Path-Leaders-Navigating-Growth/dp/1491973897
I’m fairly certain (sorry if I’m wrong) he means the book by Eric Evans:
https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215
The most famous book for Domain Modeling is this one (not an affiliate link)
https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215
I haven’t read it because I have no time and 2 young children, but I badly want to read exercises in programming style