Here I collect the most useful resources and update them regularly. I want to highlight the most important advices, cheat-codes, tools, books, videos, and articles that can help you to grow as a Software Engineer. If you have any suggestions, please, let me know. I will be happy to add them here.
- Software Engineering at Google: Lessons Learned from Programming Over Time by Titus Winters
- The Manager's Path by Camille Fournier
- Mindset: How You Can Fulfill Your Potential by Dweck Carol
- Engineers Survival Guide: Advice, tactics, and tricks by Merih Taze
- Learning How to Learn by Barbara Oakley
- Deep Work: Rules for Focused Success in a Distracted World by Cal Newport
- My Career Advice For Anyone Feeling Stuck In Life
- This is the key to consistently Winning
- Making errors tells your nervous system that something needs to change
- Learn faster in 4 steps
- The Science of Setting & Achieving Goals
- Using Failures, Movement & Balance to Learn Faster
- Learn the soft skills that will make you a productive and effective software developer
- 7 Years of Software Engineering Advice in 18 Minutes
- Career advice that no one asked me for
Ownership
: Ownership is everything. Ownership is never saying "My job is done. Now people need to do theirs."; it's saying "My job is not done until THE job is done".You should manage your manager
. Your manager shouldn't be managing you. This has been written enough but it needs to be said again. Because people (esp junior-mid folks) expect their managers to tell them the next steps/what to do.Work backwards
. Always: People default to 'working forward' from the status quo. But it's better to work backwards from an outcome/deadline. The people who do the latter tend to find creative ways to overcome roadblocks and find it easier to project manage stuff.Speaking of project management
, if you can't get your own work/calendar in order, it's going to be massively hard to win. As you grow senior, you're going to be worrying about 28 things at once. Learn to manage threads (GTD is a good framework; GTD also is working backwards).Learn to write well
. Even if you aren't good at anything else, you'll still be a P75 worker. Good writing skills are underrated and people who're really good at what they do can still struggle to progress because they can't articulate well. (On Writing Well is a killer book)Nobody likes people who whine
. Or people who optimize only for themselves. I have NEVER seen these two types of people get very far. You want to bring positive vibes and you want your company, broader team, your team, and then you, to win.Politics is real
. Optics matter. But there's two kinds: positive projection of your work and undermining of others' work. Again, there's a way to rise above politics (see pt 5) and focus on positive optics. Because people who undermine others don't get too far.Do serious work without being a serious person
. Taking yourself and your pretty little charters/domains too seriously simply shows you are insecure in your skin.Processes are good
. Rituals are good. Don't be fooled into thinking you are any different and can get by without processes. For yourself, for your team, for cross-team work - there's no substitute to good process.But good process != good outcomes
. Working backwards from an outcome + Having good processes/rituals to guide you can be a powerful combo.Growth comes from working on problems that matter to the business
. If your charter is not in the top 3 priorities of the org, you're going to find it hard to grow even if you excel in your role. It's an unfortunate reality.
- Як ставити цілі та досягати їх 🇺🇦
- The Trimodal Nature of Tech Compensation Revisited
- The Amazon Leadership Principles - A Complete Interview Guide
- As a Software Engineer, you don’t need to know everything
I did not know any linux commands
when I started my first job as a programmer.- When I joined Amazon, I
did not fully understand Git
. - At Amazon, my first project was in Python but
I had never written a single line of code in Python
. - When I joined Google,
I could not program in C++
but most of my work was in C++. - Later when I changed team, I built a feature in Dart but
I had never used Dart
before. - As a Software Engineer, you don’t need to know everything. You just need to know where to find it when you need it.
- Practical Advice for New Software Engineers
Ask For Feedback Early
. Try to get feedback on code as soon as it makes sense.Be a Rubber Ducky, Find a Rubber Ducky
. Thinking out loud gives you clarity around a problemGet End-to-End First
. When working on a new problem or feature, it's easy to dive right into the nitty gritty details. Instead, I've found it’s better to get end-to-end as quickly as possibleStep Away From the Keyboard
. When you're having a tough time managing a complex design or problem, you need to stop looking at your screenAutomate To Get More Done
.You Can DRY Off Later
.Stay Active
. Get a good stretch in a few times a day and walk around from time to time. Sitting for long periods of time causes a lot of developers back and shoulder pain.Read Ahead
.Take Meticulous Notes
Plan for Tomorrow, Today
- Productivity Cheat Sheet by Andrew Lokenauth
2-Minute Rule
. If a task takes less than 2 minutes to complete, do it right away.5-Second Rule
. This helps to overcome the initial resistance to starting.- Count backwards 5-4-3-2-1 and just force yourself to take action.
1-3-5 Rule
. At the start of each day, identify:- 1 big thing to accomplish,
- 3 medium things, and
- 5 small tasks.
Pomodoro Technique
. This is based on the idea that frequent breaks improve mental agility and maintain your focus on the task at hand.- Set a timer for 25 minutes and focus on one task.
- After the timer rings, take a 5-minute break.
- Repeat this cycle four times, then take a longer break of 20-30 minutes.
80/20 Rule
. By focusing on high-impact tasks, you can achieve more with less effort.- 20% of your efforts give you 80% of the results.
- So focus on that 20% of super important stuff first.
Break Tasks Into Pieces
. You'll feel less overwhelmed and more motivated to tackle each part of the task.Eat the Frog
. By completing your hardest task early, you build momentum for the rest of the day.- Tackle your most challenging task first thing in the morning.
Not To-Do List
. This frees up time and energy for more important tasks!- Identify tasks or activities that are not essential or that can be delegated, and stop doing them.
Eliminate Multitasking
. Focus on one task at a time to improve concentration.
- How I Received $800,000 Compensation as a Meta Staff Engineer
- Manage Up To Accelerate Your Career
- Are You an Architect?
- How I got to 200 productive hours a month
- The Ultimate Guide to the Ivy Lee Method
Rule 1
- Make a list of your six most important tasks—in order of most important to least important—for the next day.Rule 2
- Never start the next task until you have fully completed the one before it.Rule 3
- Move unfinished tasks to the next day, maintaining the prioritization you have set. Their priority will always be higher than that of the tasks in the new list.Rule 4
- Repeat this process every day.
- 100+ Resources to become a great engineering leader