<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>sglavoie.com – Tag: Career</title><link>https://www.sglavoie.com/tags/career/</link><description>Posts and writings by Sébastien Lavoie. Customization setups and articles on productivity for developers who like minimalism.</description><language>en</language><atom:link href="https://www.sglavoie.com/tags/career/feed.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Sun, 16 Apr 2023 14:49:00 -0600</lastBuildDate><item><title>Book summary: The Effective Engineer</title><link>https://www.sglavoie.com/posts/book-summary-the-effective-engineer/</link><description>After reading Letters to a New Developer, one of the next logical steps on this learning path was to read [The Effective Engineer][effective-website]. I hope you enjoy this simple yet effective book summary!</description><content:encoded>&lt;hr&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This wonderful, mostly non-technical book is a compilation of the best practices and lessons learned by the author, &lt;a href="https://edmondlau.co/"&gt;Edmond Lau&lt;/a&gt;, during his impressive career as a software engineer. It is a must-read for anyone who wants to improve their skills and become more effective at what they do. The following are short excerpts from the condensed knowledge found in the book, sprinkled with some minor comments of my own along the way. These are extracted from the book’s takeaway sections and headings: I wholeheartedly recommend &lt;a href="https://www.effectiveengineer.com/"&gt;reading the work&lt;/a&gt; in its entirety for an immersive exposure to the fantastic storytelling capabilities of Edmond!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="book-summary"&gt;Book summary&lt;/h2&gt;
&lt;h2 id="part-1-adopt-the-right-mindset"&gt;Part 1: Adopt the Right Mindset&lt;/h2&gt;
&lt;h3 id="focus-on-high-leverage-activities"&gt;Focus on high-leverage activities&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Leverage = Impact produced / Time invested&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Leverage is the ROI for the effort put in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Meta-skills&lt;/strong&gt; are important to know where to focus one’s time and energy to translate more of one’s efforts into impact.&lt;/li&gt;
&lt;li&gt;Leverage your time by always finding ways to perform activities quicker and making sure those activities will have a &lt;strong&gt;meaningful impact&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="optimize-for-learning"&gt;Optimize for learning&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Make your learning rate a priority&lt;/strong&gt;: it compounds like interest over time.&lt;/li&gt;
&lt;li&gt;Study code for core abstractions written by the best engineers at your company.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write more code&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Go through any technical, educational material available internally.&lt;/li&gt;
&lt;li&gt;Master the programming languages that you use.&lt;/li&gt;
&lt;li&gt;Send your code reviews to the harshest critics.&lt;/li&gt;
&lt;li&gt;Enroll in classes on areas where you want to improve.&lt;/li&gt;
&lt;li&gt;Participate in design discussions of projects you’re interested in.&lt;/li&gt;
&lt;li&gt;Work on a diversity of projects.&lt;/li&gt;
&lt;li&gt;Make sure you’re on a team with at least a few senior engineers whom you can learn from.&lt;/li&gt;
&lt;li&gt;Jump fearlessly into code you don’t know.&lt;/li&gt;
&lt;li&gt;Learn new programming languages and frameworks.&lt;/li&gt;
&lt;li&gt;Invest in skills that are in high demand.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read books&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Join a discussion group.&lt;/li&gt;
&lt;li&gt;Attend talks, conferences, and meetups.&lt;/li&gt;
&lt;li&gt;Build and maintain a strong network of relationships.&lt;/li&gt;
&lt;li&gt;Follow bloggers who teach.&lt;/li&gt;
&lt;li&gt;Write to teach.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tinker on side projects&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pursue what you love&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="prioritize-regularly"&gt;Prioritize regularly&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Track to-dos in a single list.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Focus on what produces value directly&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Focus on the &lt;em&gt;important and non-urgent&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Limit the amount of work in progress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use implementation intentions&lt;/strong&gt; (if-then planning).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prioritize&lt;/strong&gt; routinely.&lt;/li&gt;
&lt;li&gt;Write down and &lt;em&gt;review&lt;/em&gt; to-dos.&lt;/li&gt;
&lt;li&gt;Reduce &lt;em&gt;context switches&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="part-2-execute-execute-execute"&gt;Part 2: Execute, Execute, Execute&lt;/h2&gt;
&lt;h3 id="invest-in-iteration-speed"&gt;Invest in iteration speed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Move fast to learn fast.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invest in time-saving tools&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Shorten your debugging and validation loops.&lt;/li&gt;
&lt;li&gt;Master your programming environment.&lt;/li&gt;
&lt;li&gt;Get proficient with your favorite text editor or IDE.&lt;/li&gt;
&lt;li&gt;Learn at least one productive, high-level programming language (&lt;em&gt;scripting&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;Get familiar with UNIX (or Windows) &lt;em&gt;shell commands&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Prefer the keyboard&lt;/em&gt; over the mouse.&lt;/li&gt;
&lt;li&gt;Automate your manual workflows.&lt;/li&gt;
&lt;li&gt;Test out ideas on an interactive interpreter.&lt;/li&gt;
&lt;li&gt;Make it fast and easy to run just the unit tests associated with your current changes.&lt;/li&gt;
&lt;li&gt;Don’t ignore non-engineering bottlenecks.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="measure-what-you-want-to-improve"&gt;Measure what you want to improve&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use metrics to drive progress.&lt;/li&gt;
&lt;li&gt;Pick the right metric to incentivize the behavior you want.&lt;/li&gt;
&lt;li&gt;Instrument everything to understand what is going on.&lt;/li&gt;
&lt;li&gt;Internalize useful numbers (e.g., number of active users, requests per second, amount of data accessed and written daily, etc.).&lt;/li&gt;
&lt;li&gt;Be skeptical about data integrity.&lt;/li&gt;
&lt;li&gt;Log data liberally, in case it turns out to be useful later on.&lt;/li&gt;
&lt;li&gt;Build tools to iterate on data accuracy sooner.&lt;/li&gt;
&lt;li&gt;Write end-to-end integration tests to validate your entire analytics pipeline.&lt;/li&gt;
&lt;li&gt;Examine collected data sooner.&lt;/li&gt;
&lt;li&gt;Cross-validate data accuracy by computing the same metric in multiple ways.&lt;/li&gt;
&lt;li&gt;When a number does look off, dig into it early.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="validate-your-ideas-early-and-often"&gt;Validate your ideas early and often&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Find low-effort ways to validate your work.
&lt;ul&gt;
&lt;li&gt;Approach a problem iteratively to reduce wasted effort.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Continuously validate product changes with A/B testing.
&lt;ul&gt;
&lt;li&gt;Reduce the risk of large implementations by using small validations.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Beware the one-person team (you need feedback early to make sure you’re working on the right thing!).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Be open and receptive to feedback&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Commit code early and often&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Request code reviews from thorough critics.&lt;/li&gt;
&lt;li&gt;Ask to bounce ideas off your teammates.&lt;/li&gt;
&lt;li&gt;Design the interface or API of a new system first.&lt;/li&gt;
&lt;li&gt;Send out a design document before devoting your energy to your code.&lt;/li&gt;
&lt;li&gt;If possible, structure ongoing projects so that there is some shared context with your teammates.&lt;/li&gt;
&lt;li&gt;Solicit buy-in for controversial features before investing too much time.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Build feedback loops&lt;/em&gt; for your decisions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="improve-your-project-estimation-skills"&gt;Improve your project estimation skills&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Project estimation is one of the hardest skills that an effective engineer needs to learn. &lt;em&gt;But it’s crucial to master&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;To produce accurate estimates:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Decompose the project&lt;/em&gt; into granular tasks.&lt;/li&gt;
&lt;li&gt;Estimate based on how long tasks will take, not on how long you or someone else wants them to take.&lt;/li&gt;
&lt;li&gt;Think of estimates as &lt;em&gt;probability distributions&lt;/em&gt;, not best-case scenarios.&lt;/li&gt;
&lt;li&gt;Let the person doing the actual task make the estimate.&lt;/li&gt;
&lt;li&gt;Beware of anchoring bias (e.g., hearing about a low estimate from someone else may skew our own estimate later to be too low).&lt;/li&gt;
&lt;li&gt;Use multiple approaches to estimate the same task (e.g., estimate from past experiences, decompose a larger task into smaller ones and estimate each one).&lt;/li&gt;
&lt;li&gt;Beware the mythical man-month. Having more people on a project doesn’t necessarily mean it will be completed faster. Communication overhead, context switching, and other factors can slow down the team as much as $O(n^2)$ considering the number of people involved.&lt;/li&gt;
&lt;li&gt;Validate estimates against historical data.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;time-boxing&lt;/strong&gt; to constrain tasks that can grow in scope.&lt;/li&gt;
&lt;li&gt;Allow others to challenge estimates.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Allow buffer room for the unknown in the schedule.&lt;/li&gt;
&lt;li&gt;Define measurable milestones.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Do the riskiest tasks first&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Know the limits of overtime.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="part-3-build-long-term-value"&gt;Part 3: Build Long-Term Value&lt;/h2&gt;
&lt;h3 id="balance-quality-with-pragmatism"&gt;Balance Quality with Pragmatism&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Establish a culture of reviewing code.
&lt;ul&gt;
&lt;li&gt;Catch bugs or design shortcomings early.&lt;/li&gt;
&lt;li&gt;Increase accountability for code changes.&lt;/li&gt;
&lt;li&gt;Provide an avenue for sharing best practices.&lt;/li&gt;
&lt;li&gt;Increase long-term agility.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Invest in good software abstractions to simplify difficult problems.
&lt;ul&gt;
&lt;li&gt;Reduce the complexity of the original problem into easier-to-understand primitives.&lt;/li&gt;
&lt;li&gt;Reduce future application maintenance and make it easier to apply future improvements.&lt;/li&gt;
&lt;li&gt;DRY principle: solve the hard problems once and re-use the solutions multiple times.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Scale code quality with &lt;em&gt;automated testing&lt;/em&gt;.
&lt;ul&gt;
&lt;li&gt;Make large refactors with confidence.&lt;/li&gt;
&lt;li&gt;Offer executable documentation.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Don&amp;rsquo;t test everything&lt;/em&gt;: focus on the most important parts of the code and make sure everything critical is covered.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Manage your technical debt.
&lt;ul&gt;
&lt;li&gt;Pay it periodically. Incur it when necessary to meet deadlines.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Repay the debts with the highest interest rates first&lt;/em&gt; (i.e., focus on what produces the most leverage).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="minimize-operational-burden"&gt;Minimize Operational Burden&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Embrace operational simplicity.
&lt;ul&gt;
&lt;li&gt;Increased complexity introduces more potential single points of failure.&lt;/li&gt;
&lt;li&gt;New engineers face a steeper learning curve when learning and understanding the new systems.&lt;/li&gt;
&lt;li&gt;Effort towards improving abstractions, libraries, and tools gets diluted across the different systems.&lt;/li&gt;
&lt;li&gt;Do the simple thing first.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build systems to fail fast&lt;/strong&gt;.
&lt;ul&gt;
&lt;li&gt;Pinpoint the source of errors.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Make debugging easier&lt;/em&gt; by not masking your errors and by not deferring failures until later.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Relentlessly automate&lt;/strong&gt;.
&lt;ul&gt;
&lt;li&gt;Don&amp;rsquo;t underestimate the future frequency of the task.&lt;/li&gt;
&lt;li&gt;Internalize the time savings over a long time horizon.&lt;/li&gt;
&lt;li&gt;Automate mechanics over decision-making.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make batch processes idempotent&lt;/strong&gt;.
&lt;ul&gt;
&lt;li&gt;At least, make processes &lt;em&gt;&amp;ldquo;retryable&amp;rdquo;&lt;/em&gt; if they cannot be made idempotent.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hone your ability to respond and recover quickly.
&lt;ul&gt;
&lt;li&gt;Plan and practice failure modes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="invest-in-your-teams-growth"&gt;Invest in Your Team’s Growth&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Make hiring everyone’s responsibility.
&lt;ul&gt;
&lt;li&gt;Identify which qualities you care about the most in your colleagues: &lt;em&gt;keep the bar high&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Make sure the recruiting process is effective.&lt;/li&gt;
&lt;li&gt;Adapt interview problems to different levels of difficulty based on the candidate&amp;rsquo;s experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Design a good onboarding process.
&lt;ul&gt;
&lt;li&gt;Ramp up new engineers as quickly as possible (e.g., with &lt;em&gt;codelabs&lt;/em&gt;).
&lt;ul&gt;
&lt;li&gt;Help the people around you be successful.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Impart the team’s culture and values (e.g., have &lt;em&gt;onboarding talks&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;Expose new engineers to the breadth of fundamentals needed to succeed (e.g., with &lt;em&gt;mentorship&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;Socially integrate new engineers onto the team (e.g., give them starter tasks to feel they&amp;rsquo;re part of the team faster).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Share ownership of code (increase the &lt;em&gt;bus factor&lt;/em&gt;).
&lt;ul&gt;
&lt;li&gt;Avoid one-person teams.&lt;/li&gt;
&lt;li&gt;Review each other’s code and software designs.&lt;/li&gt;
&lt;li&gt;Make sure the team is exposed to different types of tasks and responsibilities regularly.&lt;/li&gt;
&lt;li&gt;Focus on readable and high-quality code.&lt;/li&gt;
&lt;li&gt;Share software decisions and architecture clearly.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Make sure code and workflows are documented properly&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Invest in teaching and mentoring&lt;/em&gt;.
&lt;ul&gt;
&lt;li&gt;The more effective the team becomes, the more freedom there is to work on new projects.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Build collective wisdom with post-mortems (e.g., at NASA, these become the user manual).&lt;/li&gt;
&lt;li&gt;Build a great engineering culture.
&lt;ul&gt;
&lt;li&gt;Optimize for iteration speed.&lt;/li&gt;
&lt;li&gt;Always automate.&lt;/li&gt;
&lt;li&gt;Use the right software abstractions.&lt;/li&gt;
&lt;li&gt;Nurture a respectful working environment.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Allot experimentation time&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Foster a culture of learning&lt;/em&gt; (CI/CD: &lt;em&gt;continuous improvement, continuous delightfulness&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hire the best&lt;/strong&gt;!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Edmond opened my eyes to the importance of being an effective engineer, showing what that entails and how to concretely achieve it. His extraordinary technical journey and knowledge of the field are evident throughout the book, and I found myself nodding in agreement with many of his points. He made me think about how I could apply his advice to my own work. Notably, the key concept of &lt;strong&gt;leverage&lt;/strong&gt; resonated deeply with me and ended up being the cornerstone of &lt;a href="https://www.sglavoie.com/posts/building-task-planner-react-native/"&gt;the final project I built for my bachelor&amp;rsquo;s degree&lt;/a&gt;: &lt;em&gt;ProductiviDo - An efficient task planner focusing on high-leverage activities&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id="resources-and-references"&gt;Resources and references&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://edmondlau.co/"&gt;Edmond Lau&lt;/a&gt; - The author&amp;rsquo;s personal website.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sglavoie.com/posts/building-task-planner-react-native/"&gt;ProductiviDo&lt;/a&gt; - A simple and efficient todo-app built with React-Native.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/book/show/25238425-the-effective-engineer"&gt;The Effective Engineer: How to Leverage Your Efforts In Software Engineering to Make a Disproportionate and Meaningful Impact&lt;/a&gt; - goodreads.com.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.effectiveengineer.com/"&gt;The Effective Engineer&lt;/a&gt; - by Edmond Lau.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><dc:creator>Sébastien Lavoie</dc:creator><pubDate>Sun, 16 Apr 2023 14:49:00 -0600</pubDate><guid isPermaLink="false">https://www.sglavoie.com/posts/book-summary-the-effective-engineer/</guid><category>learnings</category><category>advice</category><category>best practices</category><category>books</category><category>career</category><category>skimming-notes</category></item><item><title>What it took to propel a career in tech in five years</title><link>https://www.sglavoie.com/posts/what-it-took-to-propel-a-career-in-tech-in-five-years/</link><description>Learning is an eternal path. I have been sharing my own adventure primarily for the following practical reasons: to help me remember what I have been working on technology-wise and to help me practice a technique known as spaced repetition. This has been a summary to motivate myself to keep on track, to practice consistent self-reflection and to be reminded as often as possible to stay a bit more humble. In the process, I hope you may found some inspiration too.</description><content:encoded>&lt;blockquote&gt;
 &lt;p&gt;After having kept a concise (and incomplete) log of my technical learnings for five years at this point, I can see I&amp;rsquo;ve come a long way, yet this is only the beginning. From now on, it is time to focus on taking concrete action, build on the foundation that has been laid out over time and start appreciating life from a broader perspective, too, as there are of course many aspects that have contributed to put me at this exact spot on this journey. Theory leads to a deeper understanding in any field, but in the end, the results being produced are what matter most and spending quality time getting good at one&amp;rsquo;s craft is key to making real progress. I think the most important steps to take in this context are &lt;em&gt;getting into the habit of learning constantly&lt;/em&gt; and &lt;em&gt;working towards generating a profound desire to excel&lt;/em&gt;, just for its own sake.&lt;/p&gt;
&lt;p&gt;To glory and beyond!&lt;/p&gt;

&lt;/blockquote&gt;&lt;hr&gt;
&lt;p&gt;The output below was formatted automatically with a tool that converts the content of a Google Sheet into Markdown. If you&amp;rsquo;re curious, you might enjoy reading &lt;a href="https://www.sglavoie.com/posts/using-google-sheets-as-a-database-to-extract-data-converted-to-markdown/"&gt;this article&lt;/a&gt;!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="2022"&gt;2022&lt;/h2&gt;
&lt;h2 id="april"&gt;April&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Articles&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Google Cloud Platform&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/storage/docs/access-control/lists"&gt;Access control lists (ACLs)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/compute/docs/oslogin/set-up-oslogin"&gt;Set up OS Login&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;React&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/docs/jsx-in-depth.html"&gt;JSX In Depth&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Technology&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://shift.infinite.red/flutter-is-better-than-react-native-fed10c92a768"&gt;Flutter is better than React Native&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Web development&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kentcdodds.com/blog/how-i-built-a-modern-website-in-2021"&gt;How I built a modern website in 2021&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;University of London&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;3D Graphics and Animation&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;Computer Graphics: From Pixels to Programmable Graphics Hardware (book)
&lt;ul&gt;
&lt;li&gt;Lighting models and shading&lt;/li&gt;
&lt;li&gt;Transforms in 3D&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://unityatscale.com/unity-version-control-guide/how-to-setup-unity-project-on-github/"&gt;How to set up a Unity project in GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=pwZpJzpE2lQ"&gt;LEARN UNITY - The Most BASIC TUTORIAL I&amp;rsquo;ll Ever Make&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.unity.com/tutorial/essential-unity-concepts#"&gt;Unity&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Orientation&lt;/li&gt;
&lt;li&gt;Coordinates&lt;/li&gt;
&lt;li&gt;3D models&lt;/li&gt;
&lt;li&gt;Components&lt;/li&gt;
&lt;li&gt;Lights, Prefab&lt;/li&gt;
&lt;li&gt;Essential Unity Concepts&lt;/li&gt;
&lt;li&gt;Basic movement, building a scene&lt;/li&gt;
&lt;li&gt;Types of light&lt;/li&gt;
&lt;li&gt;Script communication&lt;/li&gt;
&lt;li&gt;Physics and collisions&lt;/li&gt;
&lt;li&gt;Movements and forces&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Mobile Development&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/adaptivity-and-layout/"&gt;Adaptivity and Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.reactnative.express/app"&gt;App Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactnative.dev/docs/components-and-apis"&gt;Core Components and APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dark patterns&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.reactnative.express/core_components"&gt;React Native Express&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Core Components&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactnative.dev/docs/flexbox"&gt;React Native flex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;React Native – Programming UI elements&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactnavigation.org/docs/getting-started/"&gt;React Navigation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Read documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Skeuomorphism, minimalism and neumorphism&lt;/li&gt;
&lt;li&gt;Universal Access in Human-Computer Interaction (book)
&lt;ul&gt;
&lt;li&gt;User Interfaces in Dark Mode During Daytime – Improved Productivity or Just Cool-Looking?&lt;/li&gt;
&lt;li&gt;Impact of Sentence Length on the Readability of Web for Screen Reader Users&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Wireframing&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;YouTube&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Bash&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=VIUoHnFwEH4"&gt;bash quoting is really not that difficult!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Git&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=p0eVyhv2rbk"&gt;Git Annex Is The Coolest Program You&amp;rsquo;ve Never Heard Of&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Graphic Design&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=2rMbRW2zU7E"&gt;Logo Design Process Overview EP 2 44&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=bDILg149lvE"&gt;Perfecting Colour Palettes For Logo Design EP 29 44&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=oZ9QdBWLgIE"&gt;Project Design Brief - Design For a Music Festival EP 1 44&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;NFTs&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=C7plHMKIFcU"&gt;You&amp;rsquo;re Wrong About NFTs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;React Native&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=0-S5a0eXPoc"&gt;React Native Tutorial for Beginners - Build a React Native App&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Software design&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=8GONv6jJsG0"&gt;How To Avoid Big Upfront Design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Software engineering&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ElMnHDSFaCw"&gt;What Software Architecture Should Look Like&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;TDD&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ln4WnxX-wrw"&gt;How To Perfect Software Design With Test Driven Development&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Unity&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=gB1F9G0JXOo"&gt;Learn Unity - Beginner&amp;rsquo;s Game Development Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="march"&gt;March&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Articles&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Data science&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://towardsdatascience.com/the-complete-guide-to-time-series-analysis-and-forecasting-70d476bfe775"&gt;The Complete Guide to Time Series Analysis and Forecasting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Django&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.codingforentrepreneurs.com/blog/how-to-create-a-custom-django-user-model"&gt;How to Create a Custom Django User Model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.djangoproject.com/en/4.0/intro/tutorial05/#test-a-view"&gt;Writing your first Django app, part 5&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Testing in Django&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Docker&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/network/network-tutorial-standalone/"&gt;Networking with standalone containers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;JavaScript&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://javascript.plainenglish.io/immer-js-101-making-redux-state-updates-in-react-predictable-62efe93e03dc"&gt;Immer.js 101 — Making Redux state updates in React predictable&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Security&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://auth0.com/docs/get-started/identity-fundamentals/identity-and-access-management"&gt;Introduction to Identity and Access Management (IAM)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/cloudflare-one/identity/users/validating-json/"&gt;JSON web tokens&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/cloudflare-one/tutorials/share-new-site/"&gt;Share development environments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://auth0.com/docs/authenticate/single-sign-on"&gt;Single Sign On&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cloudflare.com/learning/access-management/what-is-saml/"&gt;What is SAML? How SAML authentication works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cloudflare.com/learning/access-management/what-is-sso/"&gt;What is SSO? How single sign-on works&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Streamlit&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/artefact-engineering-and-data-science/visual-time-series-forecasting-with-streamlit-prophet-71d86a769928"&gt;Visual time series forecasting with Streamlit Prophet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentation&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Django&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.djangoproject.com/en/4.0/topics/signals/"&gt;Signals&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;University of London&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Databases and Advanced Data Techniques&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;Review course concepts (see past entries)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;YouTube&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Django&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=F4nwRQPXD8w"&gt;Build an Asynchronous Chatroom with Django and Channels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=5rh853GTgKo&amp;amp;list=PLJRGQoqpRwdfoa9591BcUS6NmMpZcvFsM&amp;amp;index=9"&gt;Django &amp;amp; React Authentication&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Password reset&lt;/li&gt;
&lt;li&gt;Sign Up &amp;amp; Account Activation&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=oBQxFn1CDno"&gt;Docker - Django, Celery &amp;amp; Redis Docker Compose setup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;React Native&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=1hPgQWbWmEk"&gt;Build an Instagram Clone with React Native, Firebase Firestore, Redux, Expo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="february"&gt;February&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Articles&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Python&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://python-course.eu/oop/count-function-calls-with-help-metaclass.php"&gt;Count Function calls with the help of a Metaclass&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://realpython.com/python-debugging-pdb/#printing-expressions"&gt;Python Debugging With Pdb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://eulertech.wordpress.com/2018/06/10/the-pitfall-of-eval-function-and-its-safe-alternative-in-python/"&gt;The pitfall of eval function and its safe alternative in Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://towardsdatascience.com/using-class-decorators-in-python-2807ef52d273"&gt;Using Class Decorators in Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Terraform&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://willianantunes.medium.com/the-easiest-way-to-run-a-container-on-gce-with-terraform-139b2ec8f03d"&gt;The easiest way to run a container on GCE with Terraform&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Books&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Terraform&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.manning.com/books/terraform-in-action"&gt;Terraform in Action&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;ch. 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Courses&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Google Cloud Platform&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://app.pluralsight.com/library/courses/google-cloud-platform-fundamentals-core-infrastructure/table-of-contents"&gt;Google Cloud Platform Fundamentals - Core Infrastructure&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Python&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://app.pluralsight.com/library/courses/build-web-apps-python-streamlit/table-of-contents"&gt;Build Web Apps in Python with Streamlit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Terraform&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://app.pluralsight.com/library/courses/terraform-google-cloud-platform-implementing/table-of-contents"&gt;Implementing Terraform with Google Cloud Platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://app.pluralsight.com/library/courses/terraform-getting-started-2021/table-of-contents"&gt;Terraform - Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentation&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Google Cloud Platform&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/functions/docs/running/direct"&gt;Calling Cloud Functions Directly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/compute/docs/disks/add-persistent-disk#format_and_mount_linux"&gt;Creating and attaching a disk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/iam/docs/creating-managing-service-accounts"&gt;Creating and managing service accounts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/storage/docs/resumable-uploads"&gt;Resumable uploads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/compute/docs/disks#disk-types"&gt;Storage options&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Terraform&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learn.hashicorp.com/collections/terraform/gcp-get-started"&gt;Get Started - Google Cloud&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;University of London&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Advanced Web Development&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=a2pcXvZG8Pc"&gt;Learn React &amp;amp; Django - Chatroom Concept - React Django+Channels Chatroom Heroku Deploy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;YouTube&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Blender&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=OqMLfMXVhhI&amp;amp;list=PLjEaoINr3zgFX8ZsChQVQsuDSjEqdWMAD&amp;amp;index=17"&gt;Blender 3.0 Beginner Donut Tutorial&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;whole series&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Django&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=j4Yzfh3qIKU&amp;amp;list=PLPSM8rIid1a3TkwEmHyDALNuHhqiUiU5A&amp;amp;index=20"&gt;Building a Social Media App With Python 3 and Django&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Replying to Comments&lt;/li&gt;
&lt;li&gt;User Notifications&lt;/li&gt;
&lt;li&gt;Adding Images to Posts&lt;/li&gt;
&lt;li&gt;Sending DMs&lt;/li&gt;
&lt;li&gt;Finishing DMs&lt;/li&gt;
&lt;li&gt;Sharing Other Posts&lt;/li&gt;
&lt;li&gt;Tags&lt;/li&gt;
&lt;li&gt;Finishing tags&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=sZxxU9zqCGU&amp;amp;list=PLJRGQoqpRwdfoa9591BcUS6NmMpZcvFsM&amp;amp;index=7"&gt;Django &amp;amp; React Authentication&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Navbar and check authenticated status&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JD-age0BPVo&amp;amp;list=PLzMcBGfZo4-kCLWnGmK0jUBmGLaJxvi4j&amp;amp;index=2"&gt;Django &amp;amp; React Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=tYKRAXIio28"&gt;Django + React Notes App&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=cw8-KFVXpTE"&gt;Django Channels &amp;amp; WebSockets Oversimplified&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=U3CGt9jFGOI"&gt;Django REST Framework Tutorial Class Based Views Pt. 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=XpUe0XnK7Gk"&gt;Django REST Framework Tutorial Class Based Views Pt. 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Python&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=rdlQzhP71pQ"&gt;Python lists remember what you did to them&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="january"&gt;January&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Articles&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Docker&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://phoenixnap.com/kb/how-to-ssh-into-docker-container"&gt;How to SSH into a Running Docker Container and Run Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sleeplessbeastie.eu/2021/09/17/how-to-squash-docker-image/"&gt;How to squash Docker image&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Mastering the craft&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://betterprogramming.pub/what-makes-a-senior-developer-senior-bb37f5a861fc"&gt;What Makes a Senior Developer… Senior?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Python&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://realpython.com/python-logging/"&gt;Logging in Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;SSH&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://monovm.com/blog/how-to-access-a-linux-server-using-an-ios-device/"&gt;How to access a Linux Server using an iOS device&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Books&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Docker&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/en/book/show/36411996-docker-deep-dive"&gt;Docker Deep Dive&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;ch. 1-6 (&lt;em&gt;Docker engine, images&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;ch. 7 (&lt;em&gt;Containers&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;ch. 8 (&lt;em&gt;Containerizing an app&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;ch. 9 (&lt;em&gt;Deploying apps with Docker Compose&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentation&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Cloud&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/ses/latest/dg/send-email-api.html"&gt;Amazon SES API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/code/docs/vscode"&gt;Cloud Code for VS Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/compute/docs/reference/rest/v1"&gt;Compute Engine API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/artifact-registry/docs/integrate-compute"&gt;Deploying to Compute Engine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/functions/docs/calling/storage"&gt;Google Cloud Storage Triggers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.min.io/docs/python-client-api-reference.html"&gt;MinIO - Python Client API Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://googleapis.dev/python/storage/latest/index.html"&gt;Python Client for Google Cloud Storage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Django REST framework&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.django-rest-framework.org/api-guide/schemas/"&gt;Schemas&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Python&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.python.org/3/library/logging.html"&gt;Logging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.python.org/3/howto/logging-cookbook.html"&gt;Logging Cookbook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.python.org/3/library/shutil.html"&gt;shutil — High-level file operations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Slack&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api.slack.com/methods"&gt;Web API methods&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;University of London&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Advanced Web Development&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;Asynchronous Web Services (&lt;em&gt;Celery, Django, Pillow&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Attacks on websites (&lt;em&gt;XSS, CSRF, SQL injection, clickjacking&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Consuming WebSockets&lt;/li&gt;
&lt;li&gt;Deployment automation&lt;/li&gt;
&lt;li&gt;Django authentication and administration&lt;/li&gt;
&lt;li&gt;&lt;a href="https://channels.readthedocs.io/en/stable/introduction.html"&gt;Django channels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Introduction to production deployment&lt;/li&gt;
&lt;li&gt;Introduction to web sockets&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tools.ietf.org/id/draft-loreto-http-bidirectional-07.html"&gt;Known Issues and Best Practices for the Use of Long Polling and Streaming in Bidirectional HTTP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenAPI&lt;/li&gt;
&lt;li&gt;Profiling and performance&lt;/li&gt;
&lt;li&gt;Scaling and load balancing&lt;/li&gt;
&lt;li&gt;Tutorial Pillow (Python)&lt;/li&gt;
&lt;li&gt;Web APIs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Databases and Advanced Data Techniques&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;Distributed Relational Databases&lt;/li&gt;
&lt;li&gt;Document databases and MongoDB&lt;/li&gt;
&lt;li&gt;Introduction to Linked Data and the Semantic Web&lt;/li&gt;
&lt;li&gt;Introduction to semantic databases&lt;/li&gt;
&lt;li&gt;Linked Data in a Graph Database&lt;/li&gt;
&lt;li&gt;Multimedia databases and Information Retrieval&lt;/li&gt;
&lt;li&gt;Using XML&lt;/li&gt;
&lt;li&gt;XML Schemata&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;YouTube&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Django&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=L3kgyBERw04"&gt;Building a Social Media App With Python 3 and Django&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Landing Page and User Authentication&lt;/li&gt;
&lt;li&gt;Posts and a Social Feed&lt;/li&gt;
&lt;li&gt;Get a Post and the Comment Model&lt;/li&gt;
&lt;li&gt;Edit Posts, Delete Posts, Add Comments&lt;/li&gt;
&lt;li&gt;Profiles&lt;/li&gt;
&lt;li&gt;Followers&lt;/li&gt;
&lt;li&gt;Likes and dislikes&lt;/li&gt;
&lt;li&gt;User search&lt;/li&gt;
&lt;li&gt;Final improvements Part 1&lt;/li&gt;
&lt;li&gt;Final improvements Part 2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Linux&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=HbgzrKJvDRw"&gt;Linux File System Structure Explained&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href="https://www.sglavoie.com/learning-progress-2021/"&gt;2021&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sglavoie.com/learning-progress-2020/"&gt;2020&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sglavoie.com/learning-progress-2019/"&gt;2019&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sglavoie.com/learning-progress-2018-earlier/"&gt;2018 and earlier&lt;/a&gt;&lt;/p&gt;</content:encoded><dc:creator>Sébastien Lavoie</dc:creator><pubDate>Sat, 18 Jun 2022 14:22:00 -0500</pubDate><guid isPermaLink="false">https://www.sglavoie.com/posts/what-it-took-to-propel-a-career-in-tech-in-five-years/</guid><category>learnings</category><category>career</category></item><item><title>Book summary: Letters to a New Developer</title><link>https://www.sglavoie.com/posts/book-summary-letters-to-a-new-developer/</link><description>If you are still early in your career as a software developer (or not so much!), I think you might enjoy reading Letters to a New Developer: What I Wish I Had Known When Starting My Development Career written by Dan Moore, who also features a very insightful blog.</description><content:encoded>&lt;hr&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve taken quite a few notes while devouring that book, which is a quick and easy read. It&amp;rsquo;s not the typical non-fiction, technically-oriented manual: this book makes you feel like having an older family member taking the time to sit right next to you to openly share all sorts of golden nuggets from a lifetime of rich and varied experiences so you can get prepared to face the challenges that lie ahead in your own career and avoid some of the more common mistakes during the journey. It is the kind of publication you can read literally five minutes at a time thanks to the convenient format it adopts.&lt;/p&gt;
&lt;p&gt;Some of the following notes are verbatim and reading the whole title will be worth it! Nevertheless, you will find below some passages that deeply resonated with me, reflecting the gist of this prose from my perspective. Beware! There are numerous gems to be gleaned from this excellent author.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="book-summary"&gt;Book summary&lt;/h2&gt;
&lt;h2 id="first-month-at-a-job"&gt;First month at a job&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;See problems as opportunities to contribute.&lt;/li&gt;
&lt;li&gt;During the &lt;strong&gt;onboarding&lt;/strong&gt;, figure out:
&lt;ul&gt;
&lt;li&gt;All the &lt;strong&gt;HR stuff&lt;/strong&gt;: benefits, agreements, bonuses, interacting with different departments, meetings, requesting vacation, raises/reviews cycles.&lt;/li&gt;
&lt;li&gt;And the &lt;strong&gt;technical stuff&lt;/strong&gt; too: who to ask questions to, how to ask them (batch them, chat, meeting, etc.), how long to work on a problem before asking for help, how to communicate progress, how to set up a local development environment, CI/CD and branches process, when do you know you&amp;rsquo;re done working on a task, how are tasks managed (manager, issue tracker, etc.).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Questions that arise and have no answers → See where to document them (e.g. wiki).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;First impressions&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Be there early.&lt;/li&gt;
&lt;li&gt;Say what you&amp;rsquo;ll do, then do it.&lt;/li&gt;
&lt;li&gt;Research before asking questions (and record answers).&lt;/li&gt;
&lt;li&gt;Volunteer to take extra work (don&amp;rsquo;t become a punching bag, though).&lt;/li&gt;
&lt;li&gt;Own your mistakes but don&amp;rsquo;t make the same ones twice.&lt;/li&gt;
&lt;li&gt;Be polite and professional, always.&lt;/li&gt;
&lt;li&gt;Make sure with manager we&amp;rsquo;re on the same page, working on the right stuff, at the right cadence with appropriate updates.&lt;/li&gt;
&lt;li&gt;Write docs to make the next hire easier.&lt;/li&gt;
&lt;li&gt;Have the reputation to be a hard, smart worker: it will follow you.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Be ready for the trepidations: &lt;strong&gt;celebrate successes&lt;/strong&gt; (&amp;quot;&lt;em&gt;today I [fixed, learnt&amp;hellip;]&lt;/em&gt;&amp;quot;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;To excel&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Communicate what you&amp;rsquo;re working on.&lt;/li&gt;
&lt;li&gt;Ask questions.&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t make the same mistake twice: write down what went wrong and plan to avoid repeating them.&lt;/li&gt;
&lt;li&gt;Show up consistently.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Know the team&lt;/strong&gt;: their names, their roles, their behaviours (who posts what, who is in which meetings, who seems funny and approachable on Slack, etc.).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read code and take notes&lt;/strong&gt;: dig into a section of the system, follow data flow, make diagrams of how things are connected.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="questions"&gt;Questions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ask prepared questions&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Research before asking.&lt;/li&gt;
&lt;li&gt;Find where to search (Slack, issue trackers, YT, internal docs or wiki, etc.).&lt;/li&gt;
&lt;li&gt;But also be mindful of how long you should spend time searching (Is there a tight deadline? Are you wasting your time?).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ask good questions&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Specify the problem in detail, narrow the scope as much as possible.&lt;/li&gt;
&lt;li&gt;Show you&amp;rsquo;ve done &lt;em&gt;research&lt;/em&gt;. Links, videos, posts, logs (without sensitive info), etc.&lt;/li&gt;
&lt;li&gt;Follow up after a day or so to share additional research.&lt;/li&gt;
&lt;li&gt;Express gratitude.&lt;/li&gt;
&lt;li&gt;If you have the answer, add it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don&amp;rsquo;t be afraid to ask questions&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;If it&amp;rsquo;s a learning experience, spend more time figuring out the answer.&lt;/li&gt;
&lt;li&gt;The more time you have before the task is due, the more time you should spend looking for an answer.&lt;/li&gt;
&lt;li&gt;How busy is the rest of the team? If they can&amp;rsquo;t help, you&amp;rsquo;ll have to do it yourself.&lt;/li&gt;
&lt;li&gt;If there&amp;rsquo;s a bug that&amp;rsquo;s really specific to the internal project, asking for help from coworkers is probably best (be careful not to disclose business knowledge!).&lt;/li&gt;
&lt;li&gt;Have you tried working on other aspects of the task? It may unblock you.&lt;/li&gt;
&lt;li&gt;Put in the effort before asking: research, list hypotheses, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ask why&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;It may help prevent mistakes down the line (e.g. wrong choice of tech) and get more perspective, understand better.&lt;/li&gt;
&lt;li&gt;Document findings in wiki or similar (could be in a question/answer format).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If you don&amp;rsquo;t know something&lt;/strong&gt;, don&amp;rsquo;t guess or make an incorrect decision: admit it and say you&amp;rsquo;ll find out the answer (may have to ask others in the process too).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="writing"&gt;Writing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Read your texts out aloud&lt;/strong&gt;: spot typos, awkward sentences, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document the intent behind what you&amp;rsquo;re doing&lt;/strong&gt; (code, reason for change, who asked what&amp;hellip;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Emails&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;As &lt;em&gt;short&lt;/em&gt; as possible. Otherwise, add &lt;em&gt;executive summary&lt;/em&gt; at the top.&lt;/li&gt;
&lt;li&gt;Is it sensitive? Maybe have face-to-face instead.&lt;/li&gt;
&lt;li&gt;Add &lt;em&gt;links&lt;/em&gt; to supporting documents rather than attaching them. Email chains are hard to follow: may put them in a document instead.&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t use &lt;em&gt;relative time references&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Keep them &lt;em&gt;focused&lt;/em&gt;: go into &lt;em&gt;one topic&lt;/em&gt;. New topic = new email with different subject line.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Real-time messaging: Default to &lt;em&gt;public&lt;/em&gt; channels to benefit the organization.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Write a technical ebook&lt;/em&gt;: working on a complex project over time and being able to see the high-level and details, all presented in a coherent way for the readers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write and update technical documentation&lt;/strong&gt;: you save time in the long run, it&amp;rsquo;s useful for you and the rest of the organization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blog&lt;/strong&gt;: this is the process of clarifying your own thoughts. You&amp;rsquo;ll be a better writer and thinker for it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Motivation about writing&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;It crystallizes thoughts, make them clearer;&lt;/li&gt;
&lt;li&gt;Builds credibility;&lt;/li&gt;
&lt;li&gt;Helps others;&lt;/li&gt;
&lt;li&gt;Illustrates an ability to convey technical information and context.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools-to-learn"&gt;Tools to learn&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Leverage for increased productivity&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Test suite&lt;/em&gt;: living documentation. Can evolve code base without fear.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Libraries&lt;/em&gt; and &lt;em&gt;frameworks&lt;/em&gt;: saves time.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;IaaS&lt;/em&gt; (infrastructure as a service, e.g. AWS EC2): can use APIs to manage.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Paas&lt;/em&gt; (platform as a service, e.g. Heroku): Allows to focus on business logic.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Saas&lt;/em&gt; (software as a service, e.g. Google Apps): integrate with existing software.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Command-line&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Typing is quicker&lt;/em&gt; than using GUIs for many tasks.&lt;/li&gt;
&lt;li&gt;Can automate &lt;em&gt;recurring tasks&lt;/em&gt; easily.&lt;/li&gt;
&lt;li&gt;Can easily &lt;em&gt;share task scripts&lt;/em&gt; with others.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;jq, awk, sed&lt;/em&gt;: put them to good use.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Version control&lt;/strong&gt;: if in doubt, use it, except for large files and other scenarios that don&amp;rsquo;t make sense.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Text editor&lt;/strong&gt;: learn one well.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IDEs&lt;/strong&gt;: Use them when it makes sense (programming in Java with a text editor? Probably a bad idea).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Standard library&lt;/strong&gt;: get a good overview of what&amp;rsquo;s available, leads to transferable skills, more idiomatic code, better tested, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automated testing&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Prevents bug regression.&lt;/li&gt;
&lt;li&gt;Serves as live documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Network engineering&lt;/strong&gt;: Learn about it, it will pay off. Know:
&lt;ul&gt;
&lt;li&gt;Basics of routing;&lt;/li&gt;
&lt;li&gt;Basics of DNS;&lt;/li&gt;
&lt;li&gt;Rundown of the OSI model;&lt;/li&gt;
&lt;li&gt;TCP/IP, HTTP, what a proxy is;&lt;/li&gt;
&lt;li&gt;Answer questions like How do CDNs work, what&amp;rsquo;s the difference between HTTP and WebSockets, how does SSL work, what can nginx be used for&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL&lt;/strong&gt;: this is fundamental knowledge as it&amp;rsquo;s almost everywhere.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debuggers&lt;/strong&gt;: learn how to debug in your IDE, on the command-line and in a web browser (your IDE won&amp;rsquo;t always be available).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Benchmarking&lt;/strong&gt;: do not optimize prematurely and use benchmarking tools when performance matters to see if the code is fast enough.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search engines&lt;/strong&gt;: learn to be an expert Googler.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="practices"&gt;Practices&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Solve problems, don&amp;rsquo;t just write code&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Use library/framework.&lt;/li&gt;
&lt;li&gt;Use third-party SaaS tool.&lt;/li&gt;
&lt;li&gt;Make sure tasks need to be done. (Why are you doing it? Does it provide value?)&lt;/li&gt;
&lt;li&gt;If a task isn&amp;rsquo;t recurring often enough, manual work may be the best way to go (time to automate vs. actual savings).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Think ahead, envision all paths (not just the happy one) before taking a decision.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read code&lt;/strong&gt;: scan it; dive down; use the &lt;em&gt;scientific method&lt;/em&gt; to make changes and debug.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Get good at estimating your work&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Opportunity cost&lt;/em&gt; (can&amp;rsquo;t do everything: prioritize and do the tasks that &lt;em&gt;bring the most value&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Scheduling&lt;/em&gt;: software is not built in a vacuum, hard and soft deadlines will occur.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Discussing requirements&lt;/em&gt; first can save a lot of troubles and money: building the wrong thing quickly is of no use. Use lightweight prototyping tools instead of building the whole software.&lt;/li&gt;
&lt;li&gt;Recommended reading: &lt;a href="https://www.goodreads.com/book/show/93891.Software_Estimation"&gt;Software Estimation: Demystifying the Black Art&lt;/a&gt;, by Steve McConnell.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&amp;rsquo;s one way to keep track of your estimates in a spreadsheet:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Task&lt;/th&gt;
 &lt;th&gt;Low estimate&lt;/th&gt;
 &lt;th&gt;High estimate&lt;/th&gt;
 &lt;th&gt;Notes, questions, research&lt;/th&gt;
 &lt;th&gt;Final estimate&lt;/th&gt;
 &lt;th&gt;Estimate in days&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Requirements definition, research, development, testing, deployment, estimates on bug fixes&amp;hellip;&lt;/td&gt;
 &lt;td&gt;Everything going smoothly.&lt;/td&gt;
 &lt;td&gt;Facing obstacles, having to rebuild part of the system, etc.&lt;/td&gt;
 &lt;td&gt;Answer questions and verify assumptions to complete the estimate.&lt;/td&gt;
 &lt;td&gt;(low + high) * 1.2 (add 20%, &amp;ldquo;fudge factor&amp;rdquo;)&lt;/td&gt;
 &lt;td&gt;Total hours estimated divided by number of ideal hours per day&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Tracking the actual accuracy of tasks&lt;/em&gt; can be insightful too.&lt;/li&gt;
&lt;li&gt;Always tell people who are depending on the completion of a task &lt;em&gt;if it&amp;rsquo;s going to take longer than expected&lt;/em&gt;. Share alternative solutions if you have any.&lt;/li&gt;
&lt;li&gt;Even for side projects or when working on open source projects, it may be useful to &lt;em&gt;practice estimating&lt;/em&gt; (and users like seeing a roadmap).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debug systems&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Make the problem as &lt;em&gt;simple&lt;/em&gt; as possible.&lt;/li&gt;
&lt;li&gt;Begin with an &lt;em&gt;hypothesis&lt;/em&gt; and either prove it or refine it.&lt;/li&gt;
&lt;li&gt;Determine the &lt;em&gt;desired end state&lt;/em&gt;: fix the root problem but if it&amp;rsquo;s too costly, find a workaround if possible.&lt;/li&gt;
&lt;li&gt;Pay &lt;em&gt;attention&lt;/em&gt; if anything seems amiss.&lt;/li&gt;
&lt;li&gt;Keep &lt;em&gt;notes&lt;/em&gt; about what you&amp;rsquo;ve tried.&lt;/li&gt;
&lt;li&gt;If there&amp;rsquo;s a new bug, &lt;em&gt;inspect recent changes&lt;/em&gt; in the log.&lt;/li&gt;
&lt;li&gt;Write an &lt;em&gt;automated test&lt;/em&gt; before fixing the bug so it doesn&amp;rsquo;t reappear and you&amp;rsquo;ll be sure when the bug was fixed.&lt;/li&gt;
&lt;li&gt;Follow the &lt;em&gt;flow of data&lt;/em&gt; (e.g. in a three-tier application, start with the browser or with the database).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Minimize impact&lt;/em&gt; for users if the bug is in the production environment. Ideally, test on the &lt;em&gt;staging&lt;/em&gt; environment.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Test the right thing&lt;/em&gt;. Make sure that what&amp;rsquo;s being tested mirrors as closely as possible where the bug appears.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Assume positive intent&lt;/strong&gt;: be solution-focused.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;ROI on trust&lt;/em&gt;: about 4% of the population are sociopaths; meaning 96% of the population has some working conscience and could be trusted by default to reap great benefits. This may speed decision making, for instance.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Express gratitude&lt;/strong&gt;: it will make you feel better and showing appreciation to others will make working with colleagues a breeze. Thanking people and writing a &lt;em&gt;gratitude journal&lt;/em&gt; will be helpful.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cultivate the skill of undivided attention&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;To produce your best output, you need to &lt;em&gt;commit to deep work&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;To thrive in today&amp;rsquo;s economy, you need to &lt;em&gt;be able to quickly master hard things&lt;/em&gt; and be able to &lt;em&gt;produce at an elite level&lt;/em&gt; in terms of both &lt;em&gt;quality&lt;/em&gt; and &lt;em&gt;speed&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;To learn hard things quickly, you must &lt;em&gt;focus intensely without distraction&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Add routines and rituals to your working life&lt;/em&gt; to limit the amount of willpower required to get started.&lt;/li&gt;
&lt;li&gt;Book recommendation: &lt;a href="https://www.calnewport.com/books/deep-work/"&gt;Deep Work: Rules for Focused Success in a Distracted World&lt;/a&gt;, by Cal Newport.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build empathy&lt;/strong&gt;: Remember your own frustrations. Your users are people who can struggle on tasks you&amp;rsquo;d find simple yourself. They&amp;rsquo;re trying to make something work, just like you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don&amp;rsquo;t complain about the code&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;It&amp;rsquo;s not helpful.&lt;/li&gt;
&lt;li&gt;It displays a lack of empathy.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avoid jargon&lt;/strong&gt;: If you can&amp;rsquo;t explain it to a non-technical user, you don&amp;rsquo;t understand it well enough (good framework: try the &lt;a href="https://en.wikipedia.org/wiki/Feynman_Technique"&gt;Feynman Technique&lt;/a&gt;). You gain clarity for yourself, the ability to teach others and you can influence your organization. (Personal additional: get good at critical thinking and use &lt;a href="https://untools.co/"&gt;frameworks for better thinking&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time is money&lt;/strong&gt;: &lt;em&gt;buying services from others gives you time&lt;/em&gt;.
&lt;ul&gt;
&lt;li&gt;Buying a book or video instead of reading free documentation.&lt;/li&gt;
&lt;li&gt;Buying and using exceptional tools (e.g. JetBrains IDEs).&lt;/li&gt;
&lt;li&gt;Paying for support.&lt;/li&gt;
&lt;li&gt;Buy commercial software.&lt;/li&gt;
&lt;li&gt;Pay for consulting or training.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Say no&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;If there are pending tasks, ensure they are worked in the &lt;em&gt;right order of priority&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Life is short&lt;/em&gt;: if you end up working 90 hours per week, make sure you&amp;rsquo;re happy doing it and are not sacrificing other important aspects.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build on your own&lt;/strong&gt;: pick a project you can envision yourself sticking to for more than six month and learn.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistency is key&lt;/strong&gt;: learn by showing up every day. Becoming great at something takes time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="understanding-the-business"&gt;Understanding the business&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Software is about people, not code&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Software is created for people.&lt;/li&gt;
&lt;li&gt;Users need to be heard to buy in.&lt;/li&gt;
&lt;li&gt;Most people don&amp;rsquo;t care about the code. &lt;em&gt;Their goal is to get things done&lt;/em&gt;. Beautiful code that doesn&amp;rsquo;t solve the right problem is useless.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Outcomes over output&lt;/strong&gt;: the end-goal for the business is more &lt;em&gt;revenue&lt;/em&gt;, more &lt;em&gt;profit&lt;/em&gt;, more &lt;em&gt;users&lt;/em&gt;, more &lt;em&gt;product availability&lt;/em&gt;, happier users, etc. Your contributions should be holistic in nature and work towards achieving these goals.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Understanding the big picture&lt;/em&gt; of why money is spent on certain projects or services pays off as you can better contribute to the bottom line of the company by knowing why things are done the way they are.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Business model&lt;/strong&gt;: know how money is being made. Get a good understanding of the domain in which the business operates.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Knowing how software is used at the company&lt;/em&gt; helps you to understand the business.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The size of a company impacts how it solves problems&lt;/em&gt;: a bigger company will usually move more slowly towards its goals when change is required, attacking possibly bigger problems with powerful tools and teams. A smaller company may pivot more quickly and shift focus, but it may not work on problems of comparative scales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Starting a company&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;As a new developer, starting one wouldn&amp;rsquo;t be wise. Learning to become a software developer and learning how to run a business all at once can lead to a huge amount of stress.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;It will take longer than you think&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Know your &lt;em&gt;financial runway&lt;/em&gt; (&amp;ldquo;burn rate&amp;rdquo; vs. what you have in the bank). Extend it by lowering the burn rate.&lt;/li&gt;
&lt;li&gt;Consider your &lt;em&gt;emotional runway&lt;/em&gt;: how are things going for you outside of work? Are there any trying events like moving or having a new baby?&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Talk to your customers&lt;/em&gt;: learn from them. Get feedback.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Provide value to customers&lt;/em&gt;: you won&amp;rsquo;t have time to make everything go as smoothly as you&amp;rsquo;d like, but the customer must still be served.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Know your market&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Be ready to move away from code and focus more on a position of &lt;em&gt;management&lt;/em&gt; as the company grows.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Learn from your customers&lt;/em&gt;:
&lt;ul&gt;
&lt;li&gt;Digging into a ticketing system will be informative to understand how a product is being used and may reveal flaws or bugs.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Focus on the problems mentioned, not on the solutions proposed&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Ask them about their pressing problems, not only those that have been reported so far. This may inform about issues with related systems.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="learning"&gt;Learning&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Never stop learning&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Be clear about &lt;em&gt;why&lt;/em&gt; you want to be learning.&lt;/li&gt;
&lt;li&gt;Once you have the why, determine the &lt;em&gt;what&lt;/em&gt; that will take you there.&lt;/li&gt;
&lt;li&gt;Once you have both of the above, find the &lt;em&gt;how&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Execute.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build expert intuition&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;It&amp;rsquo;s the difference between a junior and a senior developer.&lt;/li&gt;
&lt;li&gt;A regular world + many opportunities to learn + frequent feedback + expert intuition.&lt;/li&gt;
&lt;li&gt;Regular world: gives a chance to find out whether you&amp;rsquo;d prefer to specialize in a specific branch of the software development tree or remain a generalist.&lt;/li&gt;
&lt;li&gt;Many opportunities to learn: write code, work on technical projects and observe those who are more senior than you.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Frequent feedback&lt;/em&gt;: code reviews and one on ones with the manager. Reflect on your performance with a daily &lt;em&gt;journal&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Know what to learn&lt;/strong&gt; (i.e. general skills vs. specific technology and techniques):
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Domain knowledge&lt;/em&gt;: understand the business you are in, who the major players are, etc. If you stick in a given domain long enough, you become more valuable as this kind of knowledge tends to last a long time. Talk to experts and read books.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Theoretical expertise&lt;/em&gt;: data structures and algorithms, HTTP and best practices fall within this category. It serves for years as a solid foundation for everything else. Books are a fine source to delve deeper.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Practical knowledge&lt;/em&gt;:
&lt;ul&gt;
&lt;li&gt;React, Kubernetes, Rails are some examples of specific technologies that belong in this category.&lt;/li&gt;
&lt;li&gt;Have a good understanding of the underlying technology whenever possible (e.g. learn the language in depth, not just the framework).&lt;/li&gt;
&lt;li&gt;This type of knowledge &lt;em&gt;tends to age quickly&lt;/em&gt; and can be learnt through &lt;em&gt;videos&lt;/em&gt;, &lt;em&gt;conference talks&lt;/em&gt; and &lt;em&gt;tutorials&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Leadership knowledge&lt;/em&gt;: This will pay dividends through your career. Books and experience in the real-world are useful here.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avoid being an expert beginner&lt;/strong&gt; (an authority with nontransferable skills):
&lt;ul&gt;
&lt;li&gt;Never believe you have all the answers.&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t bend tools to do something they weren&amp;rsquo;t meant to do.&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t ignore best practices (but don&amp;rsquo;t blindly apply them everywhere either!).&lt;/li&gt;
&lt;li&gt;Keep in touch with the larger software community: you may temporarily be at the top somewhere technically speaking, but that won&amp;rsquo;t remain true in a bigger context.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Pair with people that are more experienced than you&lt;/em&gt;: ask them questions, read the pull requests they submit.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pattern match to be a just-in-time learner&lt;/strong&gt;: explore by pattern and analogy (e.g. compare terminology that&amp;rsquo;s similar to tools you&amp;rsquo;ve used before) and learn just enough to get the task done. Learn the nuances as you go.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learning boring stuff&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Focus on the big picture. &lt;em&gt;Why&lt;/em&gt; are you learning this?&lt;/li&gt;
&lt;li&gt;Notice the &lt;em&gt;fun&lt;/em&gt; parts.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Take breaks&lt;/em&gt; when needed. If no strict deadline is in sight, you might cross off a different task on your to-do list for now.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Automate&lt;/em&gt; what you can but consider clearly the time savings when doing so.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Learn relevant things&lt;/em&gt;: this applies once you have a base to lean on, but accumulating random concepts that aren&amp;rsquo;t often applicable after that isn&amp;rsquo;t useful (unused knowledge rots and gets forgotten).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your team will teach you&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;They can teach you more than you can learn on your own: tools; languages; frameworks; business domain knowledge; approaches to problem-solving; understanding of the problem; stakeholder empathy.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Observe how senior people work&lt;/em&gt; (face-to-face, read their code and pull requests).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use an RSS reader&lt;/strong&gt;: for blogs, online community discussions, tags in Stack Overflow, news sites.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Listen to podcasts&lt;/strong&gt;: good to gather ideas about high-level concepts while doing other things (dishes, exercise, watering plants, cooking, etc.).
&lt;ul&gt;
&lt;li&gt;Listen to those that are &lt;em&gt;domain specific&lt;/em&gt; to help you at work.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Technology specific&lt;/em&gt;: expose yourself to tools, techniques and libraries.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;General software development&lt;/em&gt;: those are broadly applicable to software engineering and will work across different jobs you have within the industry.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subscribe to email newsletters&lt;/strong&gt;: great to get curated content on a given topic. These could include software development practices, security, AWS and career skills.
&lt;ul&gt;
&lt;li&gt;Find them with searches like &lt;code&gt;&amp;lt;subject area&amp;gt; weekly/email newsletter&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Read the archives&lt;/em&gt; first to get a sense of whether you&amp;rsquo;ll enjoy the content.&lt;/li&gt;
&lt;li&gt;Like with podcasts, focus on what&amp;rsquo;s interesting and &lt;em&gt;skim&lt;/em&gt; the rest.&lt;/li&gt;
&lt;li&gt;When sources lead to more articles of interest, those can be captured in your &lt;em&gt;RSS reader&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Good to &lt;em&gt;explore new technologies and frameworks&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;To start your own, &lt;a href="https://tinyletter.com/"&gt;TinyLetter&lt;/a&gt; is a great option.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read great books about software development&lt;/strong&gt;: don&amp;rsquo;t look for cutting-edge information but rather for a source of timeless practices.
&lt;ul&gt;
&lt;li&gt;Good examples include &lt;a href="https://archive.org/details/mythicalmanmonth00broo"&gt;The Mythical Man-Month&lt;/a&gt;, &lt;a href="https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/"&gt;The Pragmatic Programmer&lt;/a&gt;, &lt;a href="https://martinfowler.com/books/refactoring.html"&gt;Refactoring&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Ask great engineers&lt;/em&gt; you respect for recommendations.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Listen actively&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Do not multitask&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Take notes of&amp;hellip;&lt;/em&gt; salient points; ah-ha moments; terms to review in the future (those concepts you may not understand). Note the date of the conversation as well.&lt;/li&gt;
&lt;li&gt;If it is a video chat, see whether it can be &lt;em&gt;recorded&lt;/em&gt;. Turn on video if possible to get contextual clues.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn two programming languages&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Lets you see the strengths and weaknesses of your first language.&lt;/li&gt;
&lt;li&gt;May support concepts that weren&amp;rsquo;t there before (e.g. classes in Java vs. their absence in Perl).&lt;/li&gt;
&lt;li&gt;Makes it easier to learn a third language.&lt;/li&gt;
&lt;li&gt;Illustrates &lt;em&gt;different approaches&lt;/em&gt; to common problems.&lt;/li&gt;
&lt;li&gt;Teaches you how languages fit certain problems better than others.&lt;/li&gt;
&lt;li&gt;Makes you less passionate about your first language. &lt;em&gt;Programming languages are only tools&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Makes it clear what you understand about language #1.&lt;/li&gt;
&lt;li&gt;Tutorials are great to get started and &lt;em&gt;side projects&lt;/em&gt; even better to cement the learning.&lt;/li&gt;
&lt;li&gt;Generally, &lt;em&gt;learn at least two of &amp;ldquo;everything&amp;rdquo;&lt;/em&gt; (e.g. databases, frameworks, development methodologies, etc.).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mistakes"&gt;Mistakes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Get used to failure&lt;/strong&gt;: learning something new is difficult. &lt;em&gt;Document internal knowledge&lt;/em&gt; as best as you can so the same mistakes do not repeat themselves. Look around (online, colleagues&amp;hellip;) to make sure the problem you are trying to solve hasn&amp;rsquo;t been worked on already and take any new information into account.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Making mistakes is okay&lt;/strong&gt;:
&lt;ol&gt;
&lt;li&gt;Find out what the &lt;em&gt;oversight&lt;/em&gt; was so you don&amp;rsquo;t repeat the same mistake.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Acknowledge&lt;/em&gt; you made an error.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Clean up&lt;/em&gt; the mess, with or without help.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Avoid making the same mistake again&lt;/em&gt;. You might keep notes around, write a blog post, etc. Document it or create a script to solve the issue from now on if applicable and share your new knowledge with the rest of the team.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mistakes are forgiven, hiding them is not&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Make sure you did a mistake to start with.&lt;/li&gt;
&lt;li&gt;The people who need to know about your errors should be told. &lt;em&gt;Transparency and honesty are important&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Think of a plan to fix the mistake (both short-term and long-term).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don&amp;rsquo;t make the same mistake twice&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Make sure you understand what the mistake was.&lt;/li&gt;
&lt;li&gt;Dive deeper when it makes sense. For instance, it is worth mastering a version control system as this is a tool that&amp;rsquo;s going to be used all the time and is critical to understand when working with other software engineers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don&amp;rsquo;t be afraid to &amp;ldquo;fail&amp;rdquo;&lt;/strong&gt;: the only true failure is to quit working towards success.
&lt;ul&gt;
&lt;li&gt;Failures don&amp;rsquo;t stop happening when you become a &amp;ldquo;better&amp;rdquo; developer.&lt;/li&gt;
&lt;li&gt;The more you fail, the more you learn.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You don&amp;rsquo;t know what you don&amp;rsquo;t know&lt;/strong&gt;. Doing pattern matching and recognizing concepts at a high level will help when there&amp;rsquo;s a need to dig deeper.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you see someone else making a mistake&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Make sure you have all the necessary context&lt;/em&gt; (you usually don&amp;rsquo;t have it) before jumping in to shine a light on how you think things could be done or fixed.&lt;/li&gt;
&lt;li&gt;Make sure you &lt;em&gt;fully understand the issue at hand&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Think about the ramifications of a poor decision&lt;/em&gt;: the higher the stakes are, the more likely it is that you should/could intervene.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Contemplate your role&lt;/em&gt;: depending on the relationship you have with that person, tolerance levels will change (personal note: ask questions early as needed, but make sure you show progress as stagnation won&amp;rsquo;t lead to joyful relationships with your colleagues and may get you fired).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It&amp;rsquo;s OK to fail and it&amp;rsquo;s OK to feel bummed about it&lt;/strong&gt;. See how core/important the task is for the company, whether somebody else would be better positioned to do it, how long it would take you to become good at it, whether you enjoy it, whether there&amp;rsquo;s another way to solve the problem, if there&amp;rsquo;s someone else at the company who could teach you. Don&amp;rsquo;t beat yourself up with despair: be strategic about the way you spend you efforts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Admit your weaknesses&amp;hellip; and own them&lt;/strong&gt;.
&lt;ul&gt;
&lt;li&gt;Is it something innate, like bluntness, or is it something you can learn, like Python?&lt;/li&gt;
&lt;li&gt;If a weakness is related to a core competency needed for your job, be proactive in overcoming the obstacle or find another job that&amp;rsquo;s better suited to your skills.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="your-career"&gt;Your career&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Favor learning over earning&lt;/strong&gt;: take the job with the highest learning potential.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Beware of stunting your growth by working alone&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;You will become more valuable to your future employers and have a better idea of what you like.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You will never be in a better position to leave a bad job than before you start&lt;/strong&gt;: interviewing is a two-way street.
&lt;ul&gt;
&lt;li&gt;Do your research before accepting a job offer.&lt;/li&gt;
&lt;li&gt;Investigate through your network, e.g. LinkedIn, if you have a connection that worked at that company and ask about the good and bad of this organization.&lt;/li&gt;
&lt;li&gt;Ask good questions about the company during the interview.&lt;/li&gt;
&lt;li&gt;As an exception, you might want to consider getting your feet wet in the industry with your first job by being less picky, especially if the job market is bad. Experience will prove useful.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pick a flaw&lt;/strong&gt;: no company is perfect.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;You don&amp;rsquo;t want an indifferent team&lt;/em&gt; just punching the clock and waiting for the week to be done.&lt;/li&gt;
&lt;li&gt;Avoid nonsense: ask how a typical day goes, who makes decisions about priorities, in what kinds of projects does the company shine and what the best and worst parts of a job are.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preparing for a recruiting event&lt;/strong&gt;. Have: a resume; a good intro to yourself; a good conversation you can have; be well presented.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Resume&lt;/em&gt;: make sure you have the address, phone, email, GPA and graduation date (for students) at the top. It should show you&amp;rsquo;re motivated, skilled, passionate, adaptable, collaborative and articulate. When you have less experience, projects should be the centerpiece of your resume. Project descriptions should be brief and focus on the &lt;em&gt;what&lt;/em&gt;, &lt;em&gt;why&lt;/em&gt; and the outcome, avoiding mentions of tech stack unless it adds to the narrative. These can be side hustles, open source, personal interest or hackathons. Have more than one resume for different audiences.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Practice programming&lt;/strong&gt;: &lt;em&gt;you learn by doing&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Start at a consulting company if you&amp;rsquo;re looking to gain experience across technologies, domains and businesses. Work for a small one if you want to have an impact. This will provide contacts and set you up for future work. Seek out mentorship, request conference attendance and pursue assistance as formal education programs tend to be lacking in those environments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Potential vs. delivery&lt;/strong&gt;: Ask smart questions, show you&amp;rsquo;ve learned stuff. Say what you&amp;rsquo;re going to do, then do it.
&lt;ul&gt;
&lt;li&gt;The more experienced you become, the more you are assessed on your &lt;em&gt;ability to deliver&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Expect to demonstrate your experience during interviews.&lt;/li&gt;
&lt;li&gt;Periodically, or when you complete a project, take a few minutes to &lt;em&gt;write some lessons you&amp;rsquo;ve learned&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Take risks early&lt;/em&gt; as pivoting later on in your career becomes more difficult.&lt;/li&gt;
&lt;li&gt;Book recommendation for more senior developers when switching domains, tech stacks or employers: &lt;a href="https://www.parachutebook.com/"&gt;What Color Is Your Parachute&lt;/a&gt;, by Richard N. Bolles, with Katherine Brooks.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Maintain work-life balance&lt;/strong&gt;: preserve a firm boundary. &lt;em&gt;Work is a marathon, not a sprint&lt;/em&gt;.
&lt;ul&gt;
&lt;li&gt;Get clear on how the employer expects you to handle unplanned work with conflicting priorities.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Listen to the voices when they help and ignore them when they don&amp;rsquo;t&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Be willing to do things you didn&amp;rsquo;t think you wanted to do&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Connect with non-tech people outside of work to take a break and experience life from their point of view too.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manage your career&lt;/strong&gt;: &lt;em&gt;know your goals&lt;/em&gt;; &lt;em&gt;communicate your goals&lt;/em&gt;; &lt;em&gt;progress towards them&lt;/em&gt;.
&lt;ul&gt;
&lt;li&gt;Knowledge: pick an interest and follow it. Plan for a decade or more, with some milestones in between.&lt;/li&gt;
&lt;li&gt;Communication: communicate your desires and ambitions. Good companies want to see their employees grow.&lt;/li&gt;
&lt;li&gt;Progress: study for a certification, read a book, go to a meetup. Be active.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Know your runway&lt;/strong&gt;: this is the time you have at your current spending until you have no money. Calculate it once a month and know how long it would take to get a new job (guess).
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Get a job before you need to&lt;/em&gt; to avoid accepting an ill-fitting job due to desperation.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Cutting expenses&lt;/em&gt; is hard but it&amp;rsquo;s where you usually have the most control.&lt;/li&gt;
&lt;li&gt;Spending savings for a career transition is an &lt;em&gt;investment&lt;/em&gt; in yourself.&lt;/li&gt;
&lt;li&gt;Activities that draw down your savings should lead to new opportunities and valuable personal knowledge.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Managing one on ones&lt;/strong&gt;: for remote ones, it&amp;rsquo;s best to have a &lt;em&gt;great Internet connection&lt;/em&gt;, a &lt;em&gt;quiet space&lt;/em&gt; and &lt;em&gt;video turned on&lt;/em&gt; (personal note: you do lose visual clues without video, but you can connect deeply without anyone being too self-aware with voice-only communication).
&lt;ul&gt;
&lt;li&gt;Regular ones (weekly or bi-weekly) are preferred so you don&amp;rsquo;t dread feedback only when you ask for a raise or do something wrong. Knowing your manager beyond these scenarios will help.&lt;/li&gt;
&lt;li&gt;Reasons to schedule them: understand where we are headed so I know what to learn; know how I can best help the manager and the company; understand your priorities better.&lt;/li&gt;
&lt;li&gt;The direction of the one on one should be &lt;em&gt;determined by the employee&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Shoot for &lt;em&gt;regular&lt;/em&gt; ones that &lt;em&gt;do not get re-scheduled&lt;/em&gt;. Otherwise, propose having them less frequently if needed.&lt;/li&gt;
&lt;li&gt;If one-on-one meetings aren&amp;rsquo;t desirable, go for an asynchronous &lt;em&gt;weekly status report&lt;/em&gt; and get feedback from your manager this way: &lt;em&gt;it is critical for your career growth early on in your career&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Come with a &lt;em&gt;prepared agenda&lt;/em&gt; to make the most of them. A shared document in reverse chronological order works well. Example questions to add:
&lt;ul&gt;
&lt;li&gt;How should I have handled situation &lt;code&gt;X&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;I would like to learn more about &lt;code&gt;Y&lt;/code&gt;; what are the opportunities?&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;m struggling with &lt;code&gt;&amp;lt;problem&amp;gt;&lt;/code&gt;, do you have any suggestions?&lt;/li&gt;
&lt;li&gt;What are the challenges you see facing our team during project &lt;code&gt;Z&lt;/code&gt;?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;You should be able to &lt;em&gt;trust and rely on your manager/boss&lt;/em&gt;. If not, improve the relationship or go elsewhere: being constantly under threat and not knowing what to expect is mentally draining.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write a brag document&lt;/strong&gt;: show everything you&amp;rsquo;re proud of so they know you&amp;rsquo;re a great team member. It should be thorough yet easy to read. Along with the agendas from your one-on-one meetings, it will serve to highlight your accomplishments for your next performance review.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be adaptable and authentic&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Working remotely&lt;/strong&gt;: you need a &lt;em&gt;fast Internet connection&lt;/em&gt;; &lt;em&gt;iron discipline&lt;/em&gt;; be okay with &lt;em&gt;solitude&lt;/em&gt; and have the &lt;em&gt;ability to work through communication obstacles&lt;/em&gt;.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;If you are comfortable asking a dumb question, remote work can work well for you&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;You will need to &lt;em&gt;get used to asking questions and interrupting others&lt;/em&gt; as you more often than not won&amp;rsquo;t have enough context to infer whether it&amp;rsquo;s a good time to ask or not. It&amp;rsquo;s better than the alternative of wasting your time.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How to go through a layoff&lt;/strong&gt;: &lt;em&gt;this isn&amp;rsquo;t personal and you will get through it&lt;/em&gt;.
&lt;ul&gt;
&lt;li&gt;Ask questions:
&lt;ul&gt;
&lt;li&gt;Know the deadline to sign the necessary documents;&lt;/li&gt;
&lt;li&gt;Find out if there&amp;rsquo;s a severance and how much is it;&lt;/li&gt;
&lt;li&gt;What about funds like 401k, FSA or HSA;&lt;/li&gt;
&lt;li&gt;How can I say goodbye to teammates (emails and LinkedIn are good options);&lt;/li&gt;
&lt;li&gt;What about company&amp;rsquo;s property, e.g. laptop, books and equipments;&lt;/li&gt;
&lt;li&gt;Who can I contact if have I more questions;&lt;/li&gt;
&lt;li&gt;Make sure they have your personal email;&lt;/li&gt;
&lt;li&gt;Take notes of what happened;&lt;/li&gt;
&lt;li&gt;Get involved with a lawyer before signing anything (e.g. non-compete agreements).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use LinkedIn&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Send a note when you connect and keep in touch with past colleagues.&lt;/li&gt;
&lt;li&gt;Ask recruiters about the job market, salary ranges for people with your experience and good skills to learn.&lt;/li&gt;
&lt;li&gt;Review your connections&amp;rsquo; companies, review posted jobs and ask for introductions from your connections (let them know why the company is awesome, why you&amp;rsquo;re awesome and why you want to work there).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contracting&lt;/strong&gt;: try it during the first decade of your career.
&lt;ul&gt;
&lt;li&gt;It&amp;rsquo;s easier than applying for a full-time job given you&amp;rsquo;re easier to let go.&lt;/li&gt;
&lt;li&gt;It will keep your skills sharp if you want to find clients.&lt;/li&gt;
&lt;li&gt;If/when you&amp;rsquo;re an employee again, job hunting won&amp;rsquo;t feel as scary.&lt;/li&gt;
&lt;li&gt;You will &lt;em&gt;strengthen your network&lt;/em&gt; by being able to refer former colleagues.&lt;/li&gt;
&lt;li&gt;Contracting can be more lucrative on a per-hour basis.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Contracting via an agency&lt;/em&gt; is easier (you avoid sales and accounting) but it pays less.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Direct contracting&lt;/em&gt; is harder but you&amp;rsquo;ll learn beyond software development (sales, customer support, marketing, invoicing and chasing payments). It leads to more control over the clients you work with and more income. You may spend as much as 50% of your time on non-billable work such as seeking new opportunities: your rate needs to reflect this.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Engineering management&lt;/strong&gt;: if you move to a management position, &lt;em&gt;be prepared to be a novice again&lt;/em&gt; as the skill set involved is not the same.
&lt;ul&gt;
&lt;li&gt;You should understand the code but &lt;em&gt;keep out of the critical path&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You shouldn&amp;rsquo;t make technical decisions&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;You are here to &lt;em&gt;enable teams to do great work&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;The fun, technical stuff should only be done during hackathons.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Be clear about what you want&lt;/em&gt; and &lt;em&gt;maintain the right set of skills&lt;/em&gt; so you can keep doing what you enjoy the most.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Someday, you won&amp;rsquo;t want to code for a living&lt;/strong&gt;: becoming a manager gives you leverage to have more impact in the world.
&lt;ul&gt;
&lt;li&gt;Impact can be achieved through writing, project management, product management, speaking, starting a business, mentoring, leading a team, managing, teaching, architecting and consulting. Notice that coding is not the primary output.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Building a community/network puts you in a situation where &lt;strong&gt;you can help people help others&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Meetups&lt;/strong&gt;: find one on &lt;a href="https://www.meetup.com/"&gt;meetup.com&lt;/a&gt;.
&lt;ul&gt;
&lt;li&gt;It will expose you to &lt;em&gt;new ideas&lt;/em&gt; you can bring to your job.&lt;/li&gt;
&lt;li&gt;You can have &lt;em&gt;professional conversations with low stakes&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;It gives you a way to &lt;em&gt;practice talking&lt;/em&gt; to new people and &lt;em&gt;make friends&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;It provides a network outside of your coworkers should you need to &lt;em&gt;find a new job&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conversational hooks&lt;/strong&gt;: give some details about where you work and what projects you have been working on to give the chance to the other person to steer the conversation in the direction they want. Flip the question to ask people to talk about themselves (most people like to do that).
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Don&amp;rsquo;t make transactional conversations&lt;/em&gt;: find something interesting to talk about.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Online tech communities&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Sign up for an email list&lt;/em&gt; related to the technologies you are interested in. &lt;em&gt;Sign up for notifications on projects&lt;/em&gt;. You can &lt;em&gt;follow project contributors on Twitter&lt;/em&gt; or other social media places.&lt;/li&gt;
&lt;li&gt;For something more general, have a look on &lt;em&gt;Slack&lt;/em&gt;, &lt;em&gt;forums&lt;/em&gt;, &lt;em&gt;IRC channels&lt;/em&gt;, &lt;em&gt;Facebook groups&lt;/em&gt; and so on. &lt;em&gt;Slashdot&lt;/em&gt;, &lt;em&gt;Hacker News&lt;/em&gt;, &lt;em&gt;Reddit&lt;/em&gt;, &lt;em&gt;Stack Overflow&lt;/em&gt; are other good options.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You get what you give&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Offering to help &lt;em&gt;makes you more empathetic&lt;/em&gt; and &lt;em&gt;aware of other people&amp;rsquo;s needs&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;It feels good to help&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You become less arrogant&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;You help &lt;em&gt;build the positivity of the community&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;People will be quicker to &lt;em&gt;recommend you for a job&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;It improves your &lt;em&gt;sense of self-worth&lt;/em&gt; and &lt;em&gt;confidence&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build your work community&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Use &lt;em&gt;LinkedIn&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Never leave a job on bad terms&lt;/em&gt;. Give the requisite notice, document your work and prepare for a hand off.&lt;/li&gt;
&lt;li&gt;Keep in touch with past coworkers, even if it&amp;rsquo;s just to leave a note on their work anniversary.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Three daily mantras&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Surround yourself with people smarter than you&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Build community and give without expecting anything in return&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Listen to your gut, without exception&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build a personal board of advisors&lt;/strong&gt;.
&lt;ul&gt;
&lt;li&gt;Some issues you can discuss with them that aren&amp;rsquo;t topics for current coworkers:
&lt;ul&gt;
&lt;li&gt;Someone under your supervision is not succeeding;&lt;/li&gt;
&lt;li&gt;You have an issue with your manager that you&amp;rsquo;re not sure how to solve;&lt;/li&gt;
&lt;li&gt;You are evaluating job offers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Make sure to keep these relationships fresh and &lt;em&gt;offer to help too&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;This circle shifts over time&lt;/em&gt;: a new developer doesn&amp;rsquo;t have the same questions that a team lead would have.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;That&amp;rsquo;s it: we went through a short overview of a book I&amp;rsquo;ve enjoyed and recommend heartily. You can find more on &lt;a href="https://letterstoanewdeveloper.com/"&gt;the author&amp;rsquo;s website&lt;/a&gt;. You might also enjoy a follow-up book summary about &lt;a href="https://www.sglavoie.com/posts/book-summary-the-effective-engineer/"&gt;The Effective Engineer&lt;/a&gt;. May you live this knowledge!&lt;/p&gt;</content:encoded><dc:creator>Sébastien Lavoie</dc:creator><pubDate>Mon, 08 Nov 2021 10:12:00 -0600</pubDate><guid isPermaLink="false">https://www.sglavoie.com/posts/book-summary-letters-to-a-new-developer/</guid><category>learnings</category><category>advice</category><category>best practices</category><category>books</category><category>career</category></item></channel></rss>