/Career Advice

Software Friction

- Hillel Wayne tl;dr: Friction is everywhere in software development: bugs, security alerts, dependency upgrade breaks something, etc.. Hillel believes the way to mitigate this is (1) Smaller scopes and shorter iterations. (2) Giving teams more autonomy. (3) Building in redundancy. (4) Better upfront planning. (5) Automation (6) Experience. (7) Gaming exercises. (8) Checklists and runbooks. 

featured in #511


4 Software Design Principles I Learned The Hard Way

- Leonardo Creed tl;dr: “I recently built and designed a massive service that launched successfully last month. During the design and implementation process, I found that the following list of “rules” kept coming back up over and over in various scenarios.” Leonardo discusses: (1) Maintain one source of truth. (2) Yes, please repeat yourself. (3) Don’t overuse mocks. (4) Minimize mutable state.

featured in #511


4 Software Design Principles I Learned The Hard Way

- Leonardo Creed tl;dr: “I recently built and designed a massive service that launched successfully last month. During the design and implementation process, I found that the following list of “rules” kept coming back up over and over in various scenarios.” Leonardo discusses: (1) Maintain one source of truth. (2) Yes, please repeat yourself. (3) Don’t overuse mocks. (4) Minimize mutable state.

featured in #510


Good Ideas in Computer Science

- Daniel Hooper tl;dr: “By “universally considered good” I mean they aren’t debated. Ideas so widespread and effective that you might not even think of them as being invented. Each idea may not be suitable in all situations, but you won’t find a programmer that thinks you should never use them. I intentionally focus on ideas, not implementations. For example: Unix contains many good ideas, but is not on the list because it is an implementation.”

featured in #509


Measuring Personal Growth

- Chip Huyen tl;dr: Chip wondered how to measure personal growth: “I don’t want to use metrics like net worth or the number of followers, because that’s not what I live for. After talking with a lot of friends, I found three interesting metrics: rate of change, time to solve problems, and number of future options.

featured in #508


Flow State: Why Fragmented Thinking Is Worse Than Any Interruption

- Nick Moore tl;dr: In this post, Nick shares what he learned after researching the concept of "flow state." He shares where the term came from originally, what the popular usage of it misses, and how we all can stay in flow state by avoiding context switching and fragmented thinking.

featured in #508


How To Share Your Point Of View (Even If You’re Afraid Of Being Wrong)

- Wes Kao tl;dr: Principles on how to feel more confident sharing your point of view: (1) The more controversial the idea, the higher the burden of proof. (2) Update your assumptions about how you add value. (3) Share where your hunch is coming from—because it’s coming from somewhere. (4) Describe why the problem matters, so people understand why you’re speaking up. (5) Don’t rely on your credentials. Your idea should make sense on its own. (6) Use language that accurately reflects your level of certainty.

featured in #507


10 Things Software Developers Should Learn About Learning

- Abi Noda tl;dr: (1) Human memory is complex, with recall activating a network of neurons that can lead to unexpected insights. Stepping away from problems can facilitate innovative solutions. (2) Long-term memory, as opposed to working memory distinguishes experts. Hence, cognitive load becomes a factor. This can be reduced by simplifying tasks or improving information presentation. (3) Experts recognize patterns quickly, while beginners reason line-by-line. Reading more code helps beginners become experts faster. And more.

featured in #507


10 Things Software Developers Should Learn About Learning

- Abi Noda tl;dr: (1) Human memory is complex, with recall activating a network of neurons that can lead to unexpected insights. Stepping away from problems can facilitate innovative solutions. (2) Long-term memory, as opposed to working memory distinguishes experts. Hence, cognitive load becomes a factor. This can be reduced by simplifying tasks or improving information presentation. (3) Experts recognize patterns quickly, while beginners reason line-by-line. Reading more code helps beginners become experts faster. And more.

featured in #506


Learning To Learn

- Jason Liu tl;dr: (1) Environments matters: Identifying the right environment is crucial for learning. Changing environment can be effective. (2) Get ahead and teach: If you're able to get ahead of your peer group, you can teach them and learn from them at the same time. (3) Process vs outcome: Try to set process based goals. (4) Periodize your training: Set long time horizons and peak at the end of them. Take breaks and deload weeks. (5) Learn from people actively doing what you want to do. Ask yourself how far along they are in their journey. (6) Focus on fundamentals to avoid unforced errors. 

featured in #505