<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sammy Tran</title>
    <description>The latest articles on DEV Community by Sammy Tran (@sammytran).</description>
    <link>https://dev.to/sammytran</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2041334%2Fec1141c5-3574-48c2-a140-54e82f0caf01.jpeg</url>
      <title>DEV Community: Sammy Tran</title>
      <link>https://dev.to/sammytran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sammytran"/>
    <language>en</language>
    <item>
      <title>🔗 Why You Should Bookmark Links</title>
      <dc:creator>Sammy Tran</dc:creator>
      <pubDate>Wed, 13 Nov 2024 16:00:00 +0000</pubDate>
      <link>https://dev.to/sammytran/why-you-should-bookmark-links-22</link>
      <guid>https://dev.to/sammytran/why-you-should-bookmark-links-22</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a repost from &lt;a href="https://softwaremastery.beehiiv.com/?utm_source=devto&amp;amp;utm_medium=post" rel="noopener noreferrer"&gt;the Software Mastery newsletter&lt;/a&gt;. If you like what you see, consider subscribing to get emails delivered right to your inbox!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Welcome to the eighth issue of the &lt;strong&gt;Software Mastery&lt;/strong&gt; newsletter.&lt;/p&gt;

&lt;p&gt;In this issue, I want to talk about bookmarking links.&lt;/p&gt;

&lt;p&gt;Over the past year, I’ve become informally known as the person to go to when you need a link to something because I almost always have it.&lt;/p&gt;

&lt;p&gt;The thing about having links is it’s not really about memory. Links are long and ugly, so the only practical way to retrieve them is to bookmark them.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Should I Bookmark Something?
&lt;/h2&gt;

&lt;p&gt;Usually, as I’m working on certain tasks, I come across resources that could be useful in the future.&lt;/p&gt;

&lt;p&gt;For example, I might find an internal wiki page that contains a solution to a problem I have or explains a concept more intuitively than the official documentation does.&lt;/p&gt;

&lt;p&gt;To determine whether I should bookmark something, I base my decision on two factors:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;How long did it take me to find this resource?&lt;/strong&gt; Some resources are the top search result of a common query, so they’re easy to find in the future; other resources are like buried treasure, found after a long journey.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;How likely will I, or someone else, need this resource in the future?&lt;/strong&gt; If you’re certain you’ll only need something once, it might not be worth bookmarking. For resources that you keep coming back to, retrieval should be fast.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How Do I Keep Things Organized?
&lt;/h2&gt;

&lt;p&gt;Making a conscious effort to bookmark useful links is half the battle. The other half is figuring out a way to organize them so you can retrieve them later.&lt;/p&gt;

&lt;p&gt;For links I intend to bookmark, I organize them in folders based on a team/service.&lt;/p&gt;

&lt;p&gt;At Amazon, teams are encouraged to follow a &lt;a href="https://www.allthingsdistributed.com/2022/11/amazon-1998-distributed-computing-manifesto.html?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=why-you-should-bookmark-links" rel="noopener noreferrer"&gt;service-based model&lt;/a&gt;; to get non-trivial things done, you often need to integrate with multiple services across the company.&lt;/p&gt;

&lt;p&gt;For every team/service that my team needs to interact with, I maintain the following bookmarks, at a minimum:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A link to the team/service’s wiki.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A link to the service’s operational dashboard, if available.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A link to my team’s onboarding request for this particular service. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Besides those three, I create additional bookmarks for links I struggle to retrieve over time.&lt;/p&gt;

&lt;p&gt;Nowadays, in a world where you can search across &lt;em&gt;all&lt;/em&gt; your bookmarks in most browsers, I wouldn’t recommend spending much time thinking about bookmark organization.&lt;/p&gt;

&lt;p&gt;You can even maintain a flat hierarchy of bookmarks if you describe them well enough to retrieve them later through search.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Turn!
&lt;/h2&gt;

&lt;p&gt;I hope this issue inspired you to start bookmarking useful links you come across in your work or studies.&lt;/p&gt;

&lt;p&gt;Ideally, these bookmarks should be published and maintained in a team wiki to maximize knowledge sharing.&lt;/p&gt;

&lt;p&gt;Did you find this newsletter useful? Reply to this email or comment on this post to let me know!&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;Sammy&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
      <category>learning</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>📚 2 Books Junior Engineers Should Read</title>
      <dc:creator>Sammy Tran</dc:creator>
      <pubDate>Wed, 06 Nov 2024 16:00:00 +0000</pubDate>
      <link>https://dev.to/sammytran/2-books-junior-engineers-should-read-5f4l</link>
      <guid>https://dev.to/sammytran/2-books-junior-engineers-should-read-5f4l</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a repost from &lt;a href="https://softwaremastery.beehiiv.com/?utm_source=devto&amp;amp;utm_medium=post" rel="noopener noreferrer"&gt;the Software Mastery newsletter&lt;/a&gt;. If you like what you see, consider subscribing to get emails delivered right to your inbox!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Welcome to the seventh issue of the &lt;strong&gt;Software Mastery&lt;/strong&gt; newsletter.&lt;/p&gt;

&lt;p&gt;In this issue, I want to share two software engineering books every junior engineer should read in their first year or two to maximize their performance.&lt;/p&gt;

&lt;p&gt;For junior engineers, I would recommend the following books:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A good book on your main programming language.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.goodreads.com/book/show/39996759-a-philosophy-of-software-design?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=2-books-junior-engineers-should-read" rel="noopener noreferrer"&gt;A Philosophy of Software Design&lt;/a&gt; by John Ousterhout.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A Good Book On Your Main Programming Language
&lt;/h2&gt;

&lt;p&gt;My first book recommendation is not a specific book because it depends on what programming language you spend the most time working with.&lt;/p&gt;

&lt;p&gt;Whatever that language is, there’s a lot of value in learning about all it has to offer regarding features, APIs, and tools.&lt;/p&gt;

&lt;p&gt;When you understand a programming language and its ecosystem deeply, you can better read code from others and write idiomatic code yourself.&lt;/p&gt;

&lt;p&gt;As a software engineering intern at university, I saw noticeable growth in the quality of my Java after reading the well-known &lt;a href="https://www.goodreads.com/book/show/34927404-effective-java?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=2-books-junior-engineers-should-read" rel="noopener noreferrer"&gt;Effective Java&lt;/a&gt; by Joshua Bloch.&lt;/p&gt;

&lt;p&gt;I didn’t understand everything in that book the first time, but as I read more Java written by senior engineers, I saw real-life examples of the patterns described in that book.&lt;/p&gt;

&lt;p&gt;For other programming languages, here are some suggestions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt; — &lt;a href="https://www.goodreads.com/book/show/7789280-c-in-depth?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=2-books-junior-engineers-should-read" rel="noopener noreferrer"&gt;C# in Depth&lt;/a&gt; by Jon Skeet&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Go&lt;/strong&gt; — &lt;a href="https://www.goodreads.com/book/show/25080953-the-go-programming-language?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=2-books-junior-engineers-should-read" rel="noopener noreferrer"&gt;The Go Programming Language&lt;/a&gt; by Donovan and Kernighan&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt; — &lt;a href="https://www.goodreads.com/book/show/2998152-javascript?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=2-books-junior-engineers-should-read" rel="noopener noreferrer"&gt;JavaScript: The Good Parts&lt;/a&gt; by Douglas Crockford&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rust&lt;/strong&gt; — &lt;a href="https://www.goodreads.com/book/show/25550614-programming-rust?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=2-books-junior-engineers-should-read" rel="noopener noreferrer"&gt;Programming Rust: Fast, Safe Systems Development&lt;/a&gt; by Blandy et al.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Python&lt;/strong&gt; — &lt;a href="https://www.goodreads.com/book/show/22800567-fluent-python?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=2-books-junior-engineers-should-read" rel="noopener noreferrer"&gt;Fluent Python: Clear, Concise, and Effective Programming&lt;/a&gt; by Luciano Ramalho&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A Philosophy of Software Design by John Ousterhout
&lt;/h2&gt;

&lt;p&gt;My second book recommendation is a software design book not specific to any one programming language.&lt;/p&gt;

&lt;p&gt;I’m a fan of &lt;em&gt;A Philosophy of Software Design&lt;/em&gt; because, unlike other books in space, like the divisive &lt;a href="https://www.goodreads.com/book/show/3735293-clean-code?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=2-books-junior-engineers-should-read" rel="noopener noreferrer"&gt;Clean Code&lt;/a&gt; by Robert C. Martin, this book teaches some underlying principles of software design, rather than a list of rules to follow.&lt;/p&gt;

&lt;p&gt;Here are some of my favorite takeaways from this book:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We’re all fighting against complexity.&lt;/strong&gt; As software systems evolve, they become increasingly complex, making them harder to understand and modify. Incrementally investing in software design is one mechanism for keeping complexity under control.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Modules have an interface and an implementation.&lt;/strong&gt; Modules, as described in the book, can have many forms (e.g., a service, a class, a function, etc.). When we use a module, we have to learn its interface (cost) to benefit from the functionality in its implementation (benefit).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Modules should be deep.&lt;/strong&gt; A module is deep if it provides rich functionality behind simple interfaces, thus minimizing its cost while maximizing its benefits.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Your Turn!
&lt;/h2&gt;

&lt;p&gt;I hope this issue inspired you to pick up some software engineering books.&lt;/p&gt;

&lt;p&gt;Nowadays, people don’t read books cover-to-cover as often as they used to. I guarantee you’ll stand out if you commit to finishing one this year.&lt;/p&gt;

&lt;p&gt;Are you currently reading any software engineering books? Reply to this email or comment below to let me know!&lt;/p&gt;

&lt;p&gt;Best,&lt;/p&gt;

&lt;p&gt;Sammy&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
      <category>learning</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>🧠 How to Learn Unfamiliar Codebases</title>
      <dc:creator>Sammy Tran</dc:creator>
      <pubDate>Wed, 30 Oct 2024 15:00:00 +0000</pubDate>
      <link>https://dev.to/sammytran/how-to-learn-unfamiliar-codebases-1mi1</link>
      <guid>https://dev.to/sammytran/how-to-learn-unfamiliar-codebases-1mi1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a repost from &lt;a href="https://softwaremastery.beehiiv.com/?utm_source=devto&amp;amp;utm_medium=post" rel="noopener noreferrer"&gt;the Software Mastery newsletter&lt;/a&gt;. If you like what you see, consider subscribing to get emails delivered right to your inbox!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Welcome to the sixth issue of the &lt;strong&gt;Software Mastery&lt;/strong&gt; newsletter.&lt;/p&gt;

&lt;p&gt;In this issue, I want to share how I approach learning a new codebase.&lt;/p&gt;

&lt;p&gt;Learning a new codebase can be daunting for anyone, especially when the codebase is large and has been around for years. This is true, whether you’re a university student starting your first internship, or a seasoned industry veteran.&lt;/p&gt;

&lt;p&gt;Whenever I have to work in an unfamiliar codebase, I do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Learn about the codebase at a high level.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identify relevant entry points.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Trace through the code using an IDE.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make changes.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Learn About The Codebase At A High Level
&lt;/h2&gt;

&lt;p&gt;When learning a new codebase, it’s a good idea to ask a colleague for a quick whiteboarding session and read any existing documentation.&lt;/p&gt;

&lt;p&gt;The objective here is to develop an understanding of the big picture. Usually, this means understanding the codebase in terms of boxes and arrows.&lt;/p&gt;

&lt;p&gt;Diagrams enable you to start building a mental model of how a system works at a high level.&lt;/p&gt;

&lt;p&gt;This understanding helps you identify which parts of a system are relevant to your task and which ones you can learn later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Identify Relevant Entry Points
&lt;/h2&gt;

&lt;p&gt;To deepen your understanding of a codebase, you &lt;em&gt;have&lt;/em&gt; to read code. It isn’t always obvious where to start, however, especially when the codebase is massive.&lt;/p&gt;

&lt;p&gt;The key here is to identify &lt;strong&gt;entry points&lt;/strong&gt; relevant to what you’re trying to do. An entry point is the beginning of a code path. For simple programs written in languages like Java, the &lt;code&gt;main&lt;/code&gt; method is an example of an entry point.&lt;/p&gt;

&lt;p&gt;For backend services, the easiest way to identify entry points is to figure out what framework is being used. Frameworks enforce a structure on a codebase, which can give you some clues on where to start your exploration.&lt;/p&gt;

&lt;p&gt;Here are a few example frameworks and what they can tell you about entry points:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://spring.io/projects/spring-boot?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-unfamiliar-codebases" rel="noopener noreferrer"&gt;&lt;strong&gt;Spring Boot&lt;/strong&gt;&lt;/a&gt; — For RESTful services, all classes annotated with &lt;code&gt;@RestController&lt;/code&gt; are HTTP request handlers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.djangoproject.com/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-unfamiliar-codebases" rel="noopener noreferrer"&gt;&lt;strong&gt;Django&lt;/strong&gt;&lt;/a&gt; — The &lt;code&gt;urlpatterns&lt;/code&gt; variable defined in the root URL configuration contains the mapping between URL patterns and views.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://grpc.io/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-unfamiliar-codebases" rel="noopener noreferrer"&gt;&lt;strong&gt;gRPC&lt;/strong&gt;&lt;/a&gt; — For gRPC frameworks, there should be a &lt;code&gt;.proto&lt;/code&gt; file somewhere with a named &lt;code&gt;service&lt;/code&gt; containing RPC methods clients can invoke.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Trace Through The Code Using An IDE
&lt;/h2&gt;

&lt;p&gt;At this step, the objective is to gain a deeper understanding of what happens in a particular scenario.&lt;/p&gt;

&lt;p&gt;One efficient way to navigate through a code path is to use an IDE. &lt;a href="https://softwaremastery.beehiiv.com/p/ide-shortcuts?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-unfamiliar-codebases" rel="noopener noreferrer"&gt;Common IDE shortcuts&lt;/a&gt; like “jump to definition“ allow you to follow a code path until its conclusion by drilling down the &lt;a href="https://en.wikipedia.org/wiki/Call_stack?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-unfamiliar-codebases" rel="noopener noreferrer"&gt;call stack&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To organize your thoughts, consider taking notes. For example, for a full-stack e-commerce platform, your notes might look like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A user clicks on the “Purchase” button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A POST request is sent to the purchase service’s &lt;code&gt;/v1/purchases&lt;/code&gt; endpoint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Since the purchase service is a Spring Boot application, the entry point is the &lt;code&gt;PurchaseController&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The purchase controller validates the request body, submits the order to the &lt;code&gt;Orders&lt;/code&gt; database table, and returns a &lt;code&gt;200 OK&lt;/code&gt; HTTP response. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Make Changes
&lt;/h2&gt;

&lt;p&gt;Now that you’ve figured out the relevant entry points and traced through the code, you should have a rough idea of what’s going on in the code paths you need to modify.&lt;/p&gt;

&lt;p&gt;At this point, you need to start getting your hands dirty. As you start implementing, you’ll begin to unearth the things you don’t know, which will help guide your learning.&lt;/p&gt;

&lt;p&gt;Codebase knowledge comes from the hard-earned experience of making changes, not just reading. The more changes you make, the more you’ll understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Turn!
&lt;/h2&gt;

&lt;p&gt;I hope this issue gave you some ideas on navigating unfamiliar codebases.&lt;/p&gt;

&lt;p&gt;Remember that getting up to speed with large codebases is a skill that takes a lifetime to master. Don’t get discouraged if you’re having a hard time!&lt;/p&gt;

&lt;p&gt;Do you have any tips on getting familiar with codebases? Reply to this email or comment below to let me know!&lt;/p&gt;

&lt;p&gt;Wishing you the best,&lt;/p&gt;

&lt;p&gt;Sammy&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>productivity</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>✅ How To Get Faster Code Reviews</title>
      <dc:creator>Sammy Tran</dc:creator>
      <pubDate>Wed, 23 Oct 2024 15:00:00 +0000</pubDate>
      <link>https://dev.to/sammytran/how-to-get-faster-code-reviews-3hol</link>
      <guid>https://dev.to/sammytran/how-to-get-faster-code-reviews-3hol</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a repost from &lt;a href="https://softwaremastery.beehiiv.com/?utm_source=devto&amp;amp;utm_medium=post" rel="noopener noreferrer"&gt;the Software Mastery newsletter&lt;/a&gt;. If you like what you see, consider subscribing to get emails delivered right to your inbox!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Welcome to the fifth issue of the &lt;strong&gt;Software Mastery&lt;/strong&gt; newsletter.&lt;/p&gt;

&lt;p&gt;In this issue, I want to share a few tips on getting faster code reviews.&lt;/p&gt;

&lt;p&gt;When I started working in the tech industry as an intern, I was shocked at how long it took to get a code review.&lt;/p&gt;

&lt;p&gt;Sometimes, a published code review would take up to a week before someone looked at it and left feedback. This delay is particularly frustrating when working on features that require multiple sequential code changes.&lt;/p&gt;

&lt;p&gt;Over time, I’ve learned that there are some things you can do to improve the time it takes to get an approval:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Make your change easy to review.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Assign the change to specific people.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use your manager as a forcing function.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Make Your Change Easy To Review
&lt;/h2&gt;

&lt;p&gt;Code reviewers are human. Sometimes, your code isn’t getting reviewed because the reviewer opened the pull request, thought it would take a lot of time/effort, and decided to procrastinate.&lt;/p&gt;

&lt;p&gt;If this is the problem, here are a few suggestions on how to create beautiful pull requests:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Self-review the code before publishing the pull request.&lt;/strong&gt; The longer you stay on a team, the better you should understand your code reviewers. After putting up a draft pull request, take the time to review the change yourself and anticipate concerns your reviewers might have.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test your changes enough to convince your reviewer that it is correct.&lt;/strong&gt; This tip is important when your reviewer doesn’t have a lot of context. If you can show through thorough automated and manual testing that the change works, they will be more inclined to sign off on it. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Try to keep the pull requests short and focused.&lt;/strong&gt; To make pull requests easy to review, keep the changes focused on one thing. Try not to mix refactoring with behavior changes, for example, as that bloats the size of the pull request, making it harder to review.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Assign The Change To Specific People
&lt;/h2&gt;

&lt;p&gt;At companies, pull requests typically notify an entire team. If you don’t request a review from specific people, it is common for &lt;a href="https://en.wikipedia.org/wiki/Bystander_effect?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-get-faster-code-reviews" rel="noopener noreferrer"&gt;the bystander effect&lt;/a&gt; to occur, where everyone thinks someone &lt;em&gt;else&lt;/em&gt; will review the pull request, so nobody reviews it!&lt;/p&gt;

&lt;p&gt;To combat this, I recommend two solutions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Request a review from specific people.&lt;/strong&gt; To find out who to request a review from, look at who has previously pushed changes to this software package or area of the codebase. These engineers are likely the most capable of reviewing your change. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Message them and follow up.&lt;/strong&gt; After publishing the review, consider sending a direct message to the reviewer to let them know you are waiting for their review. If they haven’t reviewed after two days, follow up with them. After four days, follow up with them again. This might seem aggressive, but sometimes engineers forget because they’re busy.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Use Your Manager As A Forcing Function
&lt;/h2&gt;

&lt;p&gt;If you’ve done everything in the previous sections and you’re &lt;em&gt;still&lt;/em&gt; not getting your code reviewed, it’s time to escalate to your manager.&lt;/p&gt;

&lt;p&gt;Make it clear to your manager that you have been waiting on a code review, and that the long wait times are impacting your productivity.&lt;/p&gt;

&lt;p&gt;Assuming you have a reasonable manager, they will likely reach out to your reviewer, which should help move things along.&lt;/p&gt;

&lt;p&gt;If you find yourself having to do this too often, however, there may be systemic issues at play (e.g., the engineers are so overworked that they don’t have time to review code).&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Turn!
&lt;/h2&gt;

&lt;p&gt;I hope this issue gave you some ideas on how to get faster code reviews.&lt;/p&gt;

&lt;p&gt;I’ve personally used all three of these suggestions throughout the past year and have seen some success.&lt;/p&gt;

&lt;p&gt;Do you have any suggestions on getting faster code reviews? Reply to this email or comment below to let me know!&lt;/p&gt;

&lt;p&gt;As always, thanks for reading!&lt;/p&gt;

&lt;p&gt;Sammy&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>🤖 Supercharge Productivity With AI</title>
      <dc:creator>Sammy Tran</dc:creator>
      <pubDate>Wed, 16 Oct 2024 15:00:00 +0000</pubDate>
      <link>https://dev.to/sammytran/supercharge-productivity-with-ai-49l6</link>
      <guid>https://dev.to/sammytran/supercharge-productivity-with-ai-49l6</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a repost from &lt;a href="https://softwaremastery.beehiiv.com/?utm_source=devto&amp;amp;utm_medium=post" rel="noopener noreferrer"&gt;the Software Mastery newsletter&lt;/a&gt;. If you like what you see, consider subscribing to get emails delivered right to your inbox!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Welcome to the fourth issue of the &lt;strong&gt;Software Mastery&lt;/strong&gt; newsletter.&lt;/p&gt;

&lt;p&gt;In this issue, I want to share two AI tools I use to boost my productivity as a software engineer.&lt;/p&gt;

&lt;p&gt;When I began experimenting with AI chatbots and coding assistants after &lt;a href="https://openai.com/chatgpt/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt; went viral, I wasn’t sold on using them for work.&lt;/p&gt;

&lt;p&gt;In the early days, ChatGPT struggled to produce code snippets that ran correctly, and AI chatbot suggestions were not good.&lt;/p&gt;

&lt;p&gt;A lot has changed in 2024, however, and I am thoroughly impressed with the improvements made in the past year.&lt;/p&gt;

&lt;p&gt;I currently spend the bulk of my time using two AI tools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.anthropic.com/news/claude-3-5-sonnet?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;Claude 3.5 Sonnet&lt;/a&gt; via &lt;a href="https://aws.amazon.com/bedrock?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;Amazon Bedrock&lt;/a&gt; for generating code from natural language.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://aws.amazon.com/q/developer/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;Amazon Q Developer&lt;/a&gt; for generating code in IntelliJ.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Claude 3.5 Sonnet
&lt;/h2&gt;

&lt;p&gt;Claude 3.5 Sonnet is an &lt;a href="https://en.wikipedia.org/wiki/Large_language_model?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;LLM&lt;/a&gt; you can chat with.&lt;/p&gt;

&lt;p&gt;Released in June 2024, Claude 3.5 Sonnet excels at complex tasks such as coding and visual understanding.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fodc8fipkjml8kvg904nk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fodc8fipkjml8kvg904nk.png" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Claude 3.5 Sonnet’s Artifacts feature displays certain types of output side-by-side!&lt;/p&gt;

&lt;p&gt;I recently used Claude 3.5 Sonnet to create &lt;a href="https://matplotlib.org/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;matplotlib&lt;/a&gt; graphs for some data I wanted to visualize for a demo at work.&lt;/p&gt;

&lt;p&gt;Despite not remembering how to use this graphing library, I produced a correct and working graph in under 30 minutes by iterating on the code with the LLM.&lt;/p&gt;

&lt;p&gt;Claude 3.5 Sonnet is free, so consider trying it, even if you typically use ChatGPT!&lt;/p&gt;

&lt;h2&gt;
  
  
  Amazon Q Developer
&lt;/h2&gt;

&lt;p&gt;Amazon Q Developer is an IDE plugin for &lt;a href="https://visualstudio.microsoft.com/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;Visual Studio&lt;/a&gt;, &lt;a href="https://code.visualstudio.com/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt;, and &lt;a href="https://www.jetbrains.com/idea/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;IntelliJ&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With this plugin, you can chat with Amazon Q and get inline code suggestions without leaving your IDE.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fag6ubjm5663pqnp7sgbs.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fag6ubjm5663pqnp7sgbs.gif" width="1002" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The inline code suggestions are the best part!&lt;/p&gt;

&lt;p&gt;The inline suggestions are particularly good at writing repetitive sections of code (e.g., creating &lt;a href="https://en.wikipedia.org/wiki/Plain_old_Java_object?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;POJOs&lt;/a&gt;, writing unit tests, wiring things up with &lt;a href="https://en.wikipedia.org/wiki/Dependency_injection?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;dependency injection&lt;/a&gt;, etc.).&lt;/p&gt;

&lt;p&gt;Usually, I either go with Amazon Q’s first suggestion or continue writing code myself until it figures out what I’m trying to do.&lt;/p&gt;

&lt;p&gt;If you’re looking for a non-Amazon alternative, I’ve heard good things about &lt;a href="https://github.com/features/copilot?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;GitHub Copilot&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Turn!
&lt;/h2&gt;

&lt;p&gt;I hope this issue inspired you to experiment with AI tools to become a better software engineer.&lt;/p&gt;

&lt;p&gt;With the recent rise of AI software engineers like &lt;a href="https://www.cognition.ai/blog/introducing-devin?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=supercharge-productivity-with-ai" rel="noopener noreferrer"&gt;Devin&lt;/a&gt;, I’ve seen aspiring and current software engineers getting nervous about losing their jobs.&lt;/p&gt;

&lt;p&gt;I don’t believe these tools will make our jobs obsolete, but I &lt;em&gt;do&lt;/em&gt; expect software engineers will need to learn to use AI to augment their abilities.&lt;/p&gt;

&lt;p&gt;Do you have a favorite AI tool? Reply to this email or comment below to let me know!&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;Sammy&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>🍌 How to Learn AWS Services Fast</title>
      <dc:creator>Sammy Tran</dc:creator>
      <pubDate>Wed, 09 Oct 2024 15:00:00 +0000</pubDate>
      <link>https://dev.to/sammytran/how-to-learn-aws-services-fast-3cb8</link>
      <guid>https://dev.to/sammytran/how-to-learn-aws-services-fast-3cb8</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a repost from &lt;a href="https://softwaremastery.beehiiv.com/?utm_source=devto&amp;amp;utm_medium=post" rel="noopener noreferrer"&gt;the Software Mastery newsletter&lt;/a&gt;. If you like what you see, consider subscribing to get emails delivered right to your inbox!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Welcome to the third issue of the &lt;strong&gt;Software Mastery&lt;/strong&gt; newsletter.&lt;/p&gt;

&lt;p&gt;In this issue, I want to share how I approach learning new AWS services. Since I work at Amazon, it’s no surprise that I spend many hours building on AWS.&lt;/p&gt;

&lt;p&gt;AWS has over &lt;strong&gt;200+&lt;/strong&gt; services, so it is impossible for anyone, even Amazon employees, to be familiar with every service.&lt;/p&gt;

&lt;p&gt;It’s common to be asked to build something with an AWS service you’ve never used before. We live in a fast-paced world, so there probably isn’t enough time to pick up a book or course.&lt;/p&gt;

&lt;p&gt;Whenever I have to learn a new AWS service quickly, this is what I do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Learn what the AWS service is used for.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand the AWS service’s key concepts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Learn how to create the necessary infrastructure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dive straight into building.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s look at each step in detail, using &lt;a href="https://aws.amazon.com/batch/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-aws-services-fast" rel="noopener noreferrer"&gt;AWS Batch&lt;/a&gt; as an example (I had to do this for work a few months ago!).&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn What the AWS Service Is Used For
&lt;/h2&gt;

&lt;p&gt;When learning a new AWS service, the first step is understanding the service at a high level.&lt;/p&gt;

&lt;p&gt;I often do some combination of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Reading the official AWS user guides.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Watching a quick YouTube video.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using Wikipedia.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, according to &lt;a href="https://docs.aws.amazon.com/batch/latest/userguide/what-is-batch.html?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-aws-services-fast" rel="noopener noreferrer"&gt;the AWS Batch user guide&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AWS Batch helps you to run batch computing workloads on the AWS Cloud. Batch computing is a common way for developers, scientists, and engineers to access large amounts of compute resources. AWS Batch removes the undifferentiated heavy lifting of configuring and managing the required infrastructure, similar to traditional batch computing software. This service can efficiently provision resources in response to jobs submitted in order to eliminate capacity constraints, reduce compute costs, and deliver results quickly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Depending on your familiarity with &lt;a href="https://en.wikipedia.org/wiki/Batch_processing?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-aws-services-fast" rel="noopener noreferrer"&gt;batch processing&lt;/a&gt;, the description above may or may not make sense.&lt;/p&gt;

&lt;p&gt;If you aren’t familiar with batch processing, reading the Wikipedia page or watching a YouTube video should help fill in the gaps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understand the AWS Service’s Key Concepts
&lt;/h2&gt;

&lt;p&gt;All AWS services have a few fundamental terms or concepts that are essential to learn. To guide my learning, I typically refer to one or both of the resources below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Key concepts pages from official AWS documentation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS re:Invent presentations/workshops.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For AWS Batch, I would start by reading the &lt;a href="https://docs.aws.amazon.com/batch/latest/userguide/what-is-batch.html?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-aws-services-fast#batch_components" rel="noopener noreferrer"&gt;Components of AWS Batch&lt;/a&gt; section of the official documentation to learn some basic terms. Next, I would watch &lt;a href="https://www.youtube.com/watch?v=ebwfhSS4ZkY&amp;amp;utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-aws-services-fast" rel="noopener noreferrer"&gt;this introductory re:Invent session from 2016&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Even though this session is eight years old, the fundamental concepts described in the video are still relevant today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn How to Create the Necessary Infrastructure
&lt;/h2&gt;

&lt;p&gt;At this point, you should have a rough idea of what an AWS service does, and some of the key concepts for that service.&lt;/p&gt;

&lt;p&gt;If you’re learning an AWS service for work, the next thing you’ll likely want to learn is how to provision the necessary AWS infrastructure using your &lt;a href="https://en.wikipedia.org/wiki/Infrastructure_as_code?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-aws-services-fast" rel="noopener noreferrer"&gt;infrastructure as code&lt;/a&gt; (IaC) framework of choice.&lt;/p&gt;

&lt;p&gt;Common IaC frameworks include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://aws.amazon.com/cdk/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-aws-services-fast" rel="noopener noreferrer"&gt;AWS CDK&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.terraform.io/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-aws-services-fast" rel="noopener noreferrer"&gt;Terraform&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.pulumi.com/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-aws-services-fast" rel="noopener noreferrer"&gt;Pulumi&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For our AWS Batch example, I would Google something like “AWS Batch CDK docs” and look through &lt;a href="https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_batch-readme.html?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=how-to-learn-aws-services-fast" rel="noopener noreferrer"&gt;the examples in the official documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you need something more structured, you could consider finding a tutorial for the framework you’re using.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dive Straight Into Building
&lt;/h2&gt;

&lt;p&gt;With all the information gathered from the previous sections, you should know enough to get started on a project or work assignment.&lt;/p&gt;

&lt;p&gt;As you start building, you’ll inevitably have questions or need to look things up; this is normal at this stage. It is important to start building, as it will help guide and motivate your learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Turn!
&lt;/h2&gt;

&lt;p&gt;I hope this issue gave you some insight into how you can pick up new AWS services using free resources available on the Internet.&lt;/p&gt;

&lt;p&gt;Are you learning any AWS services at the moment? Reply to this email or comment on this post to let me know!&lt;/p&gt;

&lt;p&gt;As always, thanks for reading!&lt;/p&gt;

&lt;p&gt;Sammy&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>productivity</category>
      <category>aws</category>
      <category>learning</category>
    </item>
    <item>
      <title>⌨ 3 IDE Shortcuts I Use Daily</title>
      <dc:creator>Sammy Tran</dc:creator>
      <pubDate>Wed, 18 Sep 2024 15:00:00 +0000</pubDate>
      <link>https://dev.to/sammytran/3-ide-shortcuts-i-use-daily-35np</link>
      <guid>https://dev.to/sammytran/3-ide-shortcuts-i-use-daily-35np</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a repost from &lt;a href="https://softwaremastery.beehiiv.com/?utm_source=devto&amp;amp;utm_medium=post" rel="noopener noreferrer"&gt;the Software Mastery newsletter&lt;/a&gt;. If you like what you see, consider subscribing to get emails delivered right to your inbox!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Welcome to the second issue of the &lt;strong&gt;Software Mastery&lt;/strong&gt; newsletter.&lt;/p&gt;

&lt;p&gt;In this issue, I want to share three shortcuts you should be aware of when navigating large codebases as a software engineer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Search for a file by name.&lt;/li&gt;
&lt;li&gt;Search for a string in your codebase.&lt;/li&gt;
&lt;li&gt;Jump to declaration (and back).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Whether you're new to a codebase or an expert, these shortcuts will make you more productive at finding what you’re looking for.&lt;/p&gt;

&lt;p&gt;Since I primarily use &lt;a href="https://www.jetbrains.com/idea/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=3-ide-shortcuts-i-use-daily" rel="noopener noreferrer"&gt;IntelliJ&lt;/a&gt;, my examples will be for this &lt;a href="https://en.wikipedia.org/wiki/Integrated_development_environment?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=3-ide-shortcuts-i-use-daily" rel="noopener noreferrer"&gt;IDE&lt;/a&gt;. However, all the mentioned shortcuts should also be available in other IDEs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search for a File by Name
&lt;/h2&gt;

&lt;p&gt;Sometimes, we know the name of the file we want to find, but we either don’t remember which folder it is in or don’t want to expand a bunch of folders in an IDE’s file explorer to get to it.&lt;/p&gt;

&lt;p&gt;In these cases, it’s useful to know how to search for a file by name. In IntelliJ, one way to do this is &lt;code&gt;Ctrl + Shift + N&lt;/code&gt;, which opens the &lt;a href="https://www.jetbrains.com/help/idea/searching-everywhere.html?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=3-ide-shortcuts-i-use-daily" rel="noopener noreferrer"&gt;search everywhere&lt;/a&gt; window on the "Files" tab.&lt;/p&gt;

&lt;p&gt;In this window, you can type the name of the file you want to open. For Java and other object-oriented programming languages, you’ll want to type the name of a class here (e.g., &lt;code&gt;MyAwesomeClass&lt;/code&gt;).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bonus tip&lt;/strong&gt;: The search anywhere feature employs a kind of fuzzy search, so for a class like &lt;code&gt;MyAwesomeClass&lt;/code&gt;, you can get away with typing the first letter of each word:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn04j9jan9wwrwcq401xi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn04j9jan9wwrwcq401xi.png" width="800" height="141"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Search for a String in Your Codebase
&lt;/h2&gt;

&lt;p&gt;Searching for a string in a codebase is useful for various reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You can search for examples of how to use some class or method.&lt;/li&gt;
&lt;li&gt;You can find comments or documentation you vaguely remember reading before.&lt;/li&gt;
&lt;li&gt;You can search for a piece of code you want to navigate to, even if you don’t remember the file it’s in.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In IntelliJ, you can search for a string with &lt;code&gt;Ctrl + Shift + F&lt;/code&gt;, which opens the &lt;a href="https://www.jetbrains.com/help/idea/finding-and-replacing-text-in-project.html?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=3-ide-shortcuts-i-use-daily" rel="noopener noreferrer"&gt;find in files&lt;/a&gt; window.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstefadsolzecguolc6jd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstefadsolzecguolc6jd.png" width="692" height="628"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Jump to Declaration (and Back)
&lt;/h2&gt;

&lt;p&gt;Finally, the last shortcut I want to share is actually a pair.&lt;/p&gt;

&lt;p&gt;When working in an unfamiliar codebase, you often need to read code written by other people, which invokes more code written by other people, and so on.&lt;/p&gt;

&lt;p&gt;For your sanity, you’ll want to know how to jump to the declaration of a class, method, or field and how to go back to where you were before.&lt;/p&gt;

&lt;p&gt;In IntelliJ, you can jump to declaration with &lt;code&gt;Ctrl + B&lt;/code&gt;. To go back, one option is &lt;code&gt;Ctrl + Alt + Left Arrow&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4hymwwqv1l263sgi7y8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4hymwwqv1l263sgi7y8.gif" width="600" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Turn!
&lt;/h2&gt;

&lt;p&gt;I hope this week’s issue convinced you to use these three IDE shortcuts in your day-to-day work.&lt;/p&gt;

&lt;p&gt;Are there any other shortcuts you can’t live without? Reply to this email or comment below to let me know!&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;Sammy&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>java</category>
      <category>learning</category>
    </item>
    <item>
      <title>🔍 2 Tips on Googling Effectively</title>
      <dc:creator>Sammy Tran</dc:creator>
      <pubDate>Wed, 11 Sep 2024 15:00:00 +0000</pubDate>
      <link>https://dev.to/sammytran/2-tips-on-googling-effectively-3el4</link>
      <guid>https://dev.to/sammytran/2-tips-on-googling-effectively-3el4</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a repost from &lt;a href="https://softwaremastery.beehiiv.com/?utm_source=devto&amp;amp;utm_medium=post" rel="noopener noreferrer"&gt;the Software Mastery newsletter&lt;/a&gt;. If you like what you see, consider subscribing to get emails delivered right to your inbox!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Welcome to the first issue of the &lt;strong&gt;Software Mastery&lt;/strong&gt; newsletter.&lt;/p&gt;

&lt;p&gt;In this issue, I want to share two tips about how to search effectively on Google.&lt;/p&gt;

&lt;p&gt;Googling is a fundamental skill for software engineers, so much so that it’s a meme:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmitq175mnqvbths8xc0t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmitq175mnqvbths8xc0t.png" alt="Googling Meme" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Engineers use Google for various reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;They forgot how to do something in a particular programming language.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They want to understand an error they’re seeing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They need to learn about some engineering concepts.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Googling is a way to find resources, but ultimately, whether we’re able to find what we’re looking for depends on our search query. &lt;/p&gt;

&lt;p&gt;Sometimes, the resource we’re looking for &lt;em&gt;is&lt;/em&gt; out there, but Google isn’t ranking it highly enough in the search results for us to see it.&lt;/p&gt;

&lt;p&gt;To refine a search query, here are two tips to get started:&lt;/p&gt;

&lt;p&gt;Use the &lt;code&gt;site:&lt;/code&gt; operator to restrict results to a particular site.&lt;/p&gt;

&lt;p&gt;Use the &lt;code&gt;after:&lt;/code&gt; operator to filter outdated results.&lt;/p&gt;

&lt;h2&gt;
  
  
  The &lt;code&gt;site:&lt;/code&gt; Operator
&lt;/h2&gt;

&lt;p&gt;For certain search queries, we’re only interested in results from specific websites. To force Google to only show us results from a particular website, we can add &lt;code&gt;site:&lt;/code&gt; to a search query, followed by the website.&lt;/p&gt;

&lt;p&gt;If you, for example, are particularly interested in what the people of &lt;a href="https://news.ycombinator.com/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=2-tips-on-googling-effectively" rel="noopener noreferrer"&gt;Hacker News&lt;/a&gt; have to say about working at Google, you could write a search query like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;working at Google site:news.ycombinator.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s a more practical example. Suppose you’re developing on an EC2 instance and just ran &lt;code&gt;docker build -t my-project .&lt;/code&gt; to create a Docker image for your application. After a few minutes, the command fails with the following error message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; docker build -t my-project .
Unable to find image 'python:latest' locally
latest: Pulling from library/python
5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
52f3db4b5710: Extracting [==================================================&amp;gt;] 129.8 MB/129.8 MB
45b2a7e03e44: Download complete
75ef15b2048b: Download complete
e41da2f0bac3: Download complete
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: failed to register layer: Error processing tar file(exit status
 1): write /usr/share/doc/libfreetype6/reference/ft2-type1_tables.html: no space left on device.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To filter Google’s search results for &lt;a href="https://stackoverflow.com/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=2-tips-on-googling-effectively" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt; posts, you could write the following search query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker no space left on device site:stackoverflow.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This type of query can be useful sometimes if websites other than Stack Overflow are ranking highly for this particular search query but do not contain what you’re looking for.&lt;/p&gt;

&lt;h2&gt;
  
  
  The &lt;code&gt;after:&lt;/code&gt; Operator
&lt;/h2&gt;

&lt;p&gt;Software engineering moves fast. As new versions of programming languages, frameworks, and libraries get released, tutorials and other resources get outdated quickly.&lt;/p&gt;

&lt;p&gt;To retain search results after a certain year, we can add the &lt;code&gt;after:&lt;/code&gt; operator to a search query, followed by a &lt;code&gt;year&lt;/code&gt;, &lt;code&gt;year-month&lt;/code&gt;, or &lt;code&gt;year-month-day&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For example, if you’d only like to see Spring Boot tutorials written in 2024, you can write a search query like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;spring boot tutorial after:2023
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s another example that combines the &lt;code&gt;after:&lt;/code&gt; operator with the &lt;code&gt;site:&lt;/code&gt; operator.&lt;/p&gt;

&lt;p&gt;Suppose I’m interested in what &lt;a href="https://openai.com/?utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=2-tips-on-googling-effectively" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt; has been up to in the past month, and I’m particularly interested in discussions about OpenAI on Reddit. I can find recent OpenAI-related Reddit posts with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;openai after:2024-07 site:reddit.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Your Turn!
&lt;/h2&gt;

&lt;p&gt;I hope this week’s issue gave you some ideas on how you can use &lt;a href="https://support.google.com/websearch/answer/2466433?hl=en&amp;amp;utm_source=softwaremastery.beehiiv.com&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=2-tips-on-googling-effectively" rel="noopener noreferrer"&gt;Google’s search operators&lt;/a&gt; to find what you need on the Internet.&lt;/p&gt;

&lt;p&gt;Do you have any tricks for refining your search queries? Reply to this email or comment below!&lt;/p&gt;

&lt;p&gt;Thanks for reading! Until next time,&lt;/p&gt;

&lt;p&gt;Sammy&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>learning</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
