Andrew Huberman has a great podcast episode on the effects of alcohol on the body and brain[1]. Huberman is a professor of neurobiology at Stanford and he does a great job of explaining things in layman’s terms.
I recently cut back on my drinking significantly after listening to this podcast. Give it a listen and maybe you’ll find something that resonates with you as well.
There are certainly many people that show signs of trouble, but don’t become mass shooters. And yes, availability of firearms, specifically high capacity rifles, was found to be a significant factor to the rise in the number of victims.
The Violence Project makes the argument that it’s not just mental health and availability of firearms that causes mass shootings. It’s a confluence of many contributing factors that all need to be addressed.
This is why I found the book so enlightening given the typical mental health and gun control debate that is going on now. This is not a simple problem to solve in my opinion.
For me, the most surprising takeaway was how many shooters exhibit signs of trouble prior to the shooting and how difficult it is for teachers and law enforcement to do something about it.
For those interested in learning more about this topic, I recommend checking out the Violence Project by Jillian Peterson and James Densley [1]. This book opened my eyes to how complicated and multivariate this problem really is. It's much more complicated than simply guns and mental illness.
Here’s a 15 min clip about her record deal [1]. TL;DR: She didn’t take a big advance even though she was broke and ended up making a lot more money from residuals.
Things get really interesting when she talks about how her mom stole all her money and now she’s basically starting over (in the original link).
If you liked this article, check out the Joe Rogan podcast with Jewel[1]. She talks a lot about her rise to stardom and how she was able to maintain creative freedom with good financial decisions. This is far from a happy ending though. Jewel is an incredibly fascinating person. I highly recommend checking this one out.
It’s all about your time versus money in my opinion. Do you have more time than money, do it yourself. Do you have more money than time, hire someone.
I found the hourly rate of tradesmen to be comparable to software engineer rates ($150-$200 per hour). But because I work on salary, one hour or my time does not directly increase my cash flow. Also, I’m senior enough in my career that effort alone does not equate to salary increase.
YouTube is an amazing resource for learning. There are so many professionals making high quality DIY videos. And they’re actually entertaining. I recently installed a Mini Split AC in my garage and these two channels were invaluable.
@ineptech knows what he's talking about. Follow this advice.
Here are some more ideas to consider. Source: 18+ years of experience as an engineer, manager, and director.
The theme is make your manager's life easy and he/she will do whatever they can to help you out.
Depending upon the size of your company, your manager may have more or less discretion with WFH. Whatever you do, don't put him/her into a corner with an all or nothing demand. Be clear with what you want, but be willing to negotiate how it happens.
If you've consistently delivered in the past, you have a tremendous amount of leverage. Believe me, the last thing a manager will want to do is lose one of his/her top engineers especially given this job market. Make sure they know you have options and you're willing to exercise them, but you really want to stay put.
Be patient, but hold a hard line. Most managers are inundated with bureaucracy which means almost nothing moves fast. Don't be surprised if your request gets pushed down the stack due to the latest fire that needs attention. Keep offering up options that make their life easier. I know, I know, this is about you not them, but trust me on this one. Make whatever solution you want easy for them. HR says no? Talk to HR, find the loop hole (private healthcare decision sounds perfect).
Alright, this one may be a bit more out there. Reader discretion advised. Just do it. Don't come back in the office. Don't make a lot of noise about it, make sure your productivity stays up, and have numbers to back it up. If your manager catches heat, do whatever is necessary to relieve him or her then go back to WFH.
Before deep diving into CS theory, I would go deeper into programming first to better understand how a computer really works. The best intro on this topic I found is "Programming from the Ground Up" by Jonathan Bartlett [1].
"Programming from the Ground Up" starts at the bottom with CPU architecture and goes up from there to how functions work, dealing with files, code libraries, high-level languages, etc. Having a solid understanding here will provide immediate benefits in coding and serve as a strong foundation for some of the other recommended texts.
If you're interested, I recommend buying directly from Bartlett Publishing [1]. Bartlett published the book under the GNU Free Documentation License and there are multiple copy-cat versions on Amazon.
Will Durant puts this very succinctly in "Lessons of History" [1]:
"History reports that the men who can manage men manage the men who can manage only things, and the men who can manage money manage all."
In my experience, a management role has typically come with 10-20% more compensation versus a comparable individual contributor role, but 100% more responsibility and accountability. I wouldn't worry too much about parity between the two tracks, focus on what you truly enjoy doing. Besides, the money guys can fire us all ;-)
Not gonna lie, I have pissed some people off with this approach myself even when it was handled properly. Diplomacy and collaboration should be used first. Maybe even let someone else take the win. Use the get shit done approach as a last resort.
This is a tough situation to be in. I've been there myself and it's not fun. If I were in this same situation again, I would ask myself a few questions:
* Who is my customer in this situation? It could be your boss, your boss's boss, an important stakeholder, end users, etc. Make sure you have clarity on your customer so you can focus on their problems first. If you have find you have multiple "important" customers, then prioritize the most important first. This is likely the person who has the most influence on your immediate success.
* Are any of the problems you identified "your" customer's problem? If so great, time to get to work. If not, consider reprioritizing. You should reach out to your customer and get their feedback on priority. Be careful not to lose sight of the big picture.
* How do I know the other engineers aren't right? If you work with smart people who know how to get things done, then you should take their feedback seriously. Maybe they're right and you're wrong. Always validate your assumptions.
* What would happen if I just solved the problem myself? If you can then do, seriously. Submit a PR with your solution or build a proof of concept. Default to taking action. Don't wait for someone else's approval to get shit done.
* How can I measure and bring transparency to these problems? You'd be surprised how powerful emails with data are. If you can measure the problem (e.g., MTTR, rate of failure, response time) and more importantly the impact on customers, then you may be able to indirectly "motivate" others to solve their own problems. Send regular updates to managers, Directors, VPs, Execs, anyone important who will listen.
* At what point should I just let this go? Time box your efforts and once that time period has been reached, just let it go. This very well could be a situation where the "problem" is not the top priority. You may have to let this one burn so you can focus on other things.
Camille Fournier literally wrote the book on Engineering Management so when she speaks, I always listen [1]. Every technology leader will reach a point where there are just too many problems to solve and OPP is a great mental model for prioritization.
OPP is also a forcing function for leadership. It forces true leaders to step up and make the hard choices.
If you're faced with OPP, here are a few things I found useful in my career.
## Do Important Work for Important People
The best way to be successful in any organization is to do important work for important people. Important work for unimportant people will get you no where. Same is true for unimportant work for important people.
Take a look at your OPP and ask yourself:
* Is this work for someone important?
* Is this work important to that person?
Both answers should be yes, otherwise it's just OPP.
## Let Fires Burn
Once you decide the work is OPP, then you need the courage to say no. You must let that fire continue to burn without it distracting you. Masters of Scale has a good episode on this topic [2]. Easier said than done of course. I found Stoic practices to be very helpful here [3].
## Customer Obsession & Ownership
OPP should always be evaluated through the lens of the customer. Bottom line, the customer is always the most important person and they trump all. True leaders are obsessed about providing a better customer experience and they're willing to pay the price in order to do so.
If you have OPP that's important work for someone important, but it's not important to the customer, then you may just have to let that one burn too. And once you make that call, you have to own it. Always take responsibility for the decision and defend it on the customer's behalf.
I've found Amazon's leadership principles to be invaluable when making these type of tough decisions [4]. It's no coincidence that Customer Obsession and Ownership are #1 and #2.
One of the key findings is positive thinking can increase serotonin. “Self-induced changes in mood can influence serotonin synthesis.”
For those interested in a practical approach to positive thinking, check out “How Full is Your Bucket” by Tom Rath and Donald Clifton [1]. They discuss the 5:1 ratio of positive to negative interactions and how it’s the key to a happy relationship [2].
I have a production service running on AWS Lambda and I haven't run into any major challenges. The Lambda service is responsible for authenticating to a downstream third party service and proxying requests along with an access token. I would consider this a simple use case.
CloudWatch have provided me all the visibility necessary to troubleshoot issues. I think the important thing here is to have a good logging strategy (logs are only as good as what you put in them). In my case, I made sure info messages were logging for the start and end of use cases (e.g., "reseting password", "password reset successfully"), warn messages for non-fatal errors (e.g. "username not found"), and error messages for fatal errors (e.g. "unable to connect to database").
The only frustrating limitation I've run into is when the Lambda function times out before receiving a response from the downstream service. At one point, the downstream service was having major performance issues and responses times were crazy high. This meant I couldn't get a response code and had to run the downstream calls locally to troubleshoot.
Performance is not great (most requests are in the 400-500 ms range), but it's more than adequate for my use case. A large portion of the response time is likely due to the downstream service, but there are cold starts that spike response time way out of normal range.
Overall, I'm really happy with AWS Lambda and it's definitely top of my list when taking on a new project. I'm really interested in experimenting with AWS Mobile Hub in the future. It doesn't get much better than one-stop serverless shopping.
The author references Cal Newport's Deep Work [1]. I recently read this book and I can't recommend it enough. It's not just a productivity fluff piece about the importance of focus. He brings an academic rigor to the debate and backs up his claims with legitimate evidence. Best of all, the book is not just theory, it's 100% actionable.
I used Newport's recommendations to reclaim 4+ solid hours of deep focus and it's had a tremendous impact on my productivity and general quality of life.
Here are a few strategies I found successful:
* Create a TODO list each day and separate tasks into shallow and deep categories
* Block off each hour of the day and and fill it with one of the TODO items
* Restrict shallow work to 2 hours (after 2 hours, say no to everything shallow)
* Create a scorecard and track the number of deep hours each day (this number should increase)
* Experiment with Newport's recommendations for two weeks and see which ones increase your deep hours