<?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: Thilina Ratnayake</title>
    <description>The latest articles on DEV Community by Thilina Ratnayake (@tratnayake).</description>
    <link>https://dev.to/tratnayake</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%2F391497%2F7528d829-8b13-494f-bb2f-fe661e35091d.jpeg</url>
      <title>DEV Community: Thilina Ratnayake</title>
      <link>https://dev.to/tratnayake</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tratnayake"/>
    <language>en</language>
    <item>
      <title>Asking Better Questions as a Junior</title>
      <dc:creator>Thilina Ratnayake</dc:creator>
      <pubDate>Thu, 10 Feb 2022 18:15:34 +0000</pubDate>
      <link>https://dev.to/tratnayake/asking-better-questions-as-a-junior-575i</link>
      <guid>https://dev.to/tratnayake/asking-better-questions-as-a-junior-575i</guid>
      <description>&lt;p&gt;This article has a companion video:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/kUyz0geFp3c"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;And there's a chart at the end :)&lt;/p&gt;




&lt;p&gt;It's can be scary doing something new. Especially if it's something like starting out as a new engineer, or maybe even as an experienced engineer but starting within a new team.  In additional to all the technical aspects - there's so many new relationships to feel-out, norms to establish and culture to absorb. &lt;/p&gt;

&lt;p&gt;I remember just a couple of months ago when I was starting my new job, I had the &lt;strong&gt;same&lt;/strong&gt; anxieties as when I started my first job:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Am I asking too many questions?&lt;/p&gt;

&lt;p&gt;omg, are my teammates getting annoyed?&lt;/p&gt;

&lt;p&gt;Is this a dumb question?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While a big part of getting past that stage involves pushing through those thoughts to ask questions - there's value in strengthening our questioning skills as it is one act that we have &lt;strong&gt;complete control over&lt;/strong&gt;, and which increases our ability to learn, grow and contribute faster. &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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644341758254%2F6VTX8yMkH.jpeg" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644341758254%2F6VTX8yMkH.jpeg" alt="photo-1431540015161-0bf868a2d407.jpeg"&gt;&lt;/a&gt;&lt;br&gt;
Photo by &lt;a href="https://unsplash.com/@bchild311?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Benjamin Child&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/corporate?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Preamble
&lt;/h1&gt;

&lt;p&gt;My first job after graduating from college with a Bachelors in Computer Systems Technology was starting as an &lt;strong&gt;IT Support Administrator&lt;/strong&gt; at medium sized corporate org.  At this job, I was given a desk that belonged to someone else with the caveat: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Oh just move some stuff around a bit, but heads up, they might be back soon".  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/XCmFwjt9wPotobw1xn/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/XCmFwjt9wPotobw1xn/giphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With a cluttered desk, hand-me-down laptop and a notepad - I was left to my own devices to learn about a complex global  IT system with a senior engineer who seemed more annoyed to be interrupted by my presence than interested in teaching me. &lt;/p&gt;

&lt;p&gt;I lasted two months (but walked away with an amazing friend!).&lt;/p&gt;

&lt;p&gt;My next job was also another "awkward fit". I was a Junior Front-End engineer working on a very small start-up that had no documentation or process for helping juniors, and where asynchronous PR reviews were the norm. I still remember my excitement in submitting my first ever PR and then the immediate horror as I looked at the Trello card afterwards which had &lt;strong&gt;74&lt;/strong&gt; points to fix as single statements (and no advice or suggestions).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Let me know when you're ready to resubmit.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I let them know after 4 weeks - that this probably wasn't the right fit for me.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/Z9cRCMdAMzXi25dwhE/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/Z9cRCMdAMzXi25dwhE/giphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After these discouraging experiences, I went through an identity crisis (the first of many!) where I wondered if I was ever meant to be Software Engineer. So much so that the next gig I took on was joining a recently acquired start-up as a Customer Support Representative.&lt;/p&gt;

&lt;p&gt;And this is it where it all "happened" for me. This was one of my most critical formative experiences in tech where I lean on the skills I learned, refined and mastered &lt;strong&gt;every single day.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Support Engineering
&lt;/h2&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644342385516%2FuveX4ScXx.jpeg" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644342385516%2FuveX4ScXx.jpeg" alt="14481945_10157482774060526_8268574988926302610_o.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Welcome to Support, The Best Damn Org In The Company&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Maybe not what you'd expect to hear in that sort of organization - but that was the &lt;strong&gt;first&lt;/strong&gt; thing my team lead said to me. The culture in that company was electric, but the espirit-de-corps and morale in that support team was off the charts. And I &lt;strong&gt;think&lt;/strong&gt; that's because a large portion of them were professionals.&lt;/p&gt;

&lt;p&gt;The purpose of a support organization is to assist customers with their questions and problems. To this end, our bread-and-butter was working on &lt;strong&gt;tickets&lt;/strong&gt;. A ticket is generated when there's an interaction from a customer (like an email, or a phone call), and all correspondence takes place on that ticket until the ticket is completed* .&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644341992523%2F5ZxG9YsNe.jpeg" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644341992523%2F5ZxG9YsNe.jpeg" alt="27993439_10159928959840526_3388268662950844016_o.jpg"&gt;&lt;/a&gt;&lt;br&gt;
^ Working on tickets&lt;/p&gt;

&lt;p&gt;I must have worked on &lt;strong&gt;thousands&lt;/strong&gt; of tickets over my 2.5 years in support, with each ticket having at least 2 interactions. In these tickets, the goal is to identify a customers problem and provide solutions or a course of action as soon as possible. Because of this, I became &lt;em&gt;very&lt;/em&gt; good at asking clarifying questions to isolate problems and structuring information into logically ordered, bite-sized pieces. In fact I remember thinking to myself:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;At school I learned how to do a wide range of things, from building a custom OS kernel from scratch to writing programs that can handle concurrency and YET; the class that I've used the most in this gig is my Philosophy class.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Logical fallacies. Presenting information.  Ordering premises.  My non-technical profs would be thrilled!&lt;/p&gt;




&lt;p&gt;As part of our daily work - one activity that would come up is &lt;strong&gt;Escalations&lt;/strong&gt;&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644342171149%2FvNU2RqXy5.jpeg" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644342171149%2FvNU2RqXy5.jpeg" alt="photo-1553044020-8c90843adf96.jpeg"&gt;&lt;/a&gt;&lt;br&gt;
Photo by &lt;a href="https://unsplash.com/@kellysikkema?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Kelly Sikkema&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/sticky-note?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Escalations
&lt;/h2&gt;

&lt;p&gt;Customer Support Representatives (CSR's) worked on newly created tickets. We would work with the customer to collect diagnostics and recommend solutions based on those efforts. Usually, most problems were common issues that could be solved with a link to a document or a recommendation to do a few things.  These were the cases in which a ticket could be considered completed and be &lt;strong&gt;closed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes - there would be tickets where as a CSR you run to the end of your abilities. Either in what you know about the issue, or in you abilities to troubleshoot and resolve the issue. At this point, is when we'd need to &lt;strong&gt;escalate&lt;/strong&gt; the ticket &lt;strong&gt;UP&lt;/strong&gt; to a Technical Support Engineer (TSE).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/l2SqbG9QAz1Z314Uo/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/l2SqbG9QAz1Z314Uo/giphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Prior to escalating, you had to fill out Escalation Notes on the ticket and let the customer know that the ticket is being escalated. Think of Escalation Notes like a sticky note that you'd put on an essay before you handed it off to an advisor. These Escalation Notes were crucial to a TSE because it would be their first point to orient themselves on what's happened, happening and needs to happen. If it was a long runnning ticket before escalation, the Escalation Notes would hopefully contain the necessary highlights and summary needed in order to hopefully skip reading the rest of the thread. This was was especially important if you were transferring an agitated customer from a call and demanding an escalation because it's taken too long (oops!) -- these escalation notes could be all the TSE has to skim before jumping on to fight the fire.&lt;/p&gt;

&lt;p&gt;In this practice, you learned the value of writing good escalation notes quickly. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad Escalation Notes&lt;/strong&gt; required a TSE to chase after you to get more information or ask clarifying questions. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Really Bad Escalation Notes&lt;/strong&gt; missed critical pieces of information, and would be de-escalated for more fact-finding. &lt;em&gt;Not great if you've just told your customer that you're escalating the ticket.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/WxDZ77xhPXf3i/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/WxDZ77xhPXf3i/giphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oof. Not great when your metrics revolve around the amount of interactions you have a with a customer, and how long a ticket has been in progress for.&lt;/p&gt;

&lt;p&gt;However, a set of &lt;strong&gt;Good Escalation Notes&lt;/strong&gt;  -- ones where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the TSE did not need to come back to you with any more questions, &lt;/li&gt;
&lt;li&gt;has a summary on what's been tried,&lt;/li&gt;
&lt;li&gt;contains everything they need to continue on the ticket; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are the equivalent of sending a polished bowling ball down a freshly waxed lane. You can see it get accepted and worked on by a TSE and (depending on the issue) quickly move towards resolution. Strike!&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644342481149%2FY3dRZ5pMN.jpeg" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644342481149%2FY3dRZ5pMN.jpeg" alt="ella-christenson-l6DorjudX64-unsplash.jpg"&gt;&lt;/a&gt;&lt;br&gt;
Photo by &lt;a href="https://unsplash.com/@ellabella124?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Ella Christenson&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/bowling?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you wrote good escalation notes, tickets got solved faster. &lt;/p&gt;

&lt;p&gt;If you wrote good escalation notes &lt;strong&gt;consistently&lt;/strong&gt;, the TSE's would quietly DM you and teach you about the issue and how to solve it in the future, and sometimes - would even give you the answer and send you back to the customer to be able to close the ticket yourself. (In support, being able to work with the customer to close is a pretty satisfying feeling!)&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644342244677%2FjhN3-0laK.jpeg" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644342244677%2FjhN3-0laK.jpeg" alt="photo-1534551767192-78b8dd45b51b.jpeg"&gt;&lt;/a&gt;&lt;br&gt;
Photo by &lt;a href="https://unsplash.com/@camylla93?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Camylla Battani&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/question?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Questions, as Escalations?
&lt;/h1&gt;

&lt;p&gt;Fast forward a couple of years and I made the leap from Support into Engineering as a Cloud Infrastructure Engineer. I was now a small fish in a huge ocean and had &lt;strong&gt;so, many, questions&lt;/strong&gt; to ask. This need for information, paired  with a large amount of anxiety &amp;amp; impostor syndrome was &lt;strong&gt;not&lt;/strong&gt; a good combination. While my team-mates were so supportive and always around to answer questions, I started wondering:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hmm, what if I started thinking of questions as escalations? Would that make a difference.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer, is &lt;strong&gt;yes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I noticed that when I started applying the same principles, the following happened:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; My questions would get answered faster.&lt;/li&gt;
&lt;li&gt;My questions would highlight resources and share understanding with the rest of the team.&lt;/li&gt;
&lt;li&gt;My team-mates started sharing more about their thought process and how it aligned with my initial steps / research.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So with that, here are:&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644342330844%2FsqK3pXfbI.jpeg" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644342330844%2FsqK3pXfbI.jpeg" alt="photo-1552912276-dde406237918.jpeg"&gt;&lt;/a&gt;&lt;br&gt;
Photo by &lt;a href="https://unsplash.com/@zanilic?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Zan&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/high-five?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  5 Tips For Asking Better Questions as a Junior
&lt;/h1&gt;

&lt;h1&gt;
  
  
  (Freebie) 0. Imagine Asking Your Question to Yourself.
&lt;/h1&gt;

&lt;p&gt;After I had gotten a bunch of bad escalations punted back down to me - I started getting into this weird "shadow-boxing" mindset where I would assess my notes in the point of view of a TSE.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What questions would they ask?&lt;/p&gt;

&lt;p&gt;Does this give enough information?&lt;/p&gt;

&lt;p&gt;What if they ask about X?&lt;/p&gt;

&lt;p&gt;Should I clarify Y?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Putting yourself in the shoes of the person reading your question bolsters the quality of your question and also allows you to do some self review.&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644344881289%2F-I9jT3RJe.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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644344881289%2F-I9jT3RJe.png" alt="1.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Problem Statement - One Liner
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;What's the problem? &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In one line, boil down the most important parts of the problem. If there are multiple problems, list the most concerning and make a note that there are other problems (with more info available upon request).&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644344891538%2FzTpd8-4XV.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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644344891538%2FzTpd8-4XV.png" alt="2.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Context - Desired End State
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Why is this a problem? What are you trying to do? What's your desired end-state?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If the &lt;code&gt;problem-statement&lt;/code&gt; is your starting point, the context should explain your desired end-state or where you want to go. Doing this allows the person answering your question to simply focus on charting the line between the two as opposed to narrowing down the problem scope with (as many) follow-ups.&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644344903146%2FYdguwFZAO.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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644344903146%2FYdguwFZAO.png" alt="3.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Steps Taken - Qualify Question
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;What have you alread tried and researched?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This portion of the question is &lt;strong&gt;extremely useful for so many parties&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;For the people reading your question, this can serve as a list of things on what not to recommend / check because you've already done it - saving time. It also shows that you as the asker have spent time qualifying your question.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If posted in a team / group space - this can highlight resources or context that others may not have known about.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For the asker, this can help you feel more confident about the validity of your question because you see that you have put effort into research, investigation and solving it yourself.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This portion also allows your coach to get a look into your problem-solving and response processes, which will only help hone your instincts for the future.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644344910914%2Ft2XS8LQUV.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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644344910914%2Ft2XS8LQUV.png" alt="4.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Next Steps - Possible Solutions
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;What are some next steps you'd try or things you'd investigate?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This step is huge for the person receiving your question.&lt;/p&gt;

&lt;p&gt;At best, showing what you've thought about poking next means that they can potentially conserve effort by nudging you in the right direction with some information as opposed to coming up with the whole solution.&lt;/p&gt;

&lt;p&gt;At worst, they can disqualify those solutions and explain why - which again, hones your skills for the future.&lt;/p&gt;

&lt;p&gt;And sometimes, even they might not even know where to start - but this statement might spark their thought process!&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644344918313%2FgkqxpZANz.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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644344918313%2FgkqxpZANz.png" alt="5.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Help Requested - Means for Assistance
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;What help do you need? When are you available?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most team-mates want to help you. However, they're also busy with their own work. Sometimes, they might see your question (and know the answer!) but the task or call in the moment might short-circuit their desire to reach out to you. &lt;/p&gt;

&lt;p&gt;If you explain what help you need, and what meetings you're available for (and when) - this could allow a team-mate to acknowledge and set up time for later as opposed to needing to acknowledge &lt;em&gt;and&lt;/em&gt; try to come up with a solution.&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644344440660%2FXnSNy70Yq.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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644344440660%2FXnSNy70Yq.png" alt="5TipsBetterQuestions.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Example of a Good Question
&lt;/h1&gt;

&lt;p&gt;This question is taken from one that I needed to ask last week!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hey, does anyone know how to decrease the retention window for Prometheus-Server?&lt;/li&gt;
&lt;li&gt;The disk on Prometheus-Server has filled up and it's not able to send metrics to Grafana&lt;/li&gt;
&lt;li&gt;We've tried making changes in the helm charts but they don't appear to be sticking.&lt;/li&gt;
&lt;li&gt;I'm probably going to try doing a live &lt;code&gt;kubectl edit&lt;/code&gt; on the cluster next, but not sure if that's the best way.&lt;/li&gt;
&lt;li&gt;I'm available for a huddle rn if anyone's available, but also good for a Google meet after 1 hour.&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;This article is specifically titled &lt;code&gt;Junior&lt;/code&gt; and not suffixed with &lt;code&gt;Engineer&lt;/code&gt; because while this post is specific to engineers, it can apply to a junior in any field. I validated this with a friend who's in Customer Success, and they mentioned that this is exactly the kind of information they'd want from a Junior Account Manager.&lt;/p&gt;

&lt;p&gt;As a more CS tailored example:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Does anyone have a good compelling event to upsell startup to enterprise? &lt;/li&gt;
&lt;li&gt;I have lots of startup clients who need to generate additional revenue for my portfolio&lt;/li&gt;
&lt;li&gt;I've already used the multiproduct benefit pitch, but it hasn't landed&lt;/li&gt;
&lt;li&gt;Im thinking of talking about a change in NIST regulation next year as my next angle&lt;/li&gt;
&lt;li&gt;I'm free after 2 today if anyone is free to roleplay&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I hope this post helps ya'll in asking questions, and if there's other points that you'd add - please leave me a comment :) &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>engineering</category>
      <category>softskills</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Starting a New Job - ✍🏽 Taking Notes</title>
      <dc:creator>Thilina Ratnayake</dc:creator>
      <pubDate>Mon, 01 Nov 2021 04:48:13 +0000</pubDate>
      <link>https://dev.to/tratnayake/starting-a-new-job-taking-notes-2aii</link>
      <guid>https://dev.to/tratnayake/starting-a-new-job-taking-notes-2aii</guid>
      <description>&lt;h2&gt;
  
  
  Context
&lt;/h2&gt;

&lt;p&gt;Two weeks ago, I started my new working adventure as a Site Reliability Engineer (SRE). In those two weeks, it's been a flurry of activities and a lot of drinking from the proverbial firehose. One thing that's helped me keep my head above water and really process what I've been learning, has been taking notes. &lt;/p&gt;

&lt;p&gt;Here are some things that have helped me in the way I take notes.&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%2Fimages.unsplash.com%2Fphoto-1554415707-6e8cfc93fe23%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" 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%2Fimages.unsplash.com%2Fphoto-1554415707-6e8cfc93fe23%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" alt="https://images.unsplash.com/photo-1554415707-6e8cfc93fe23?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Take Notes
&lt;/h1&gt;

&lt;p&gt;Before you start a new job, you have to begin / renew your membership with the cult of &lt;code&gt;note-takers&lt;/code&gt; by drawing blood from your hand with a quill. &lt;em&gt;Make sure to ask about it if it's not in your onboarding package.&lt;/em&gt; &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%2Fimages.unsplash.com%2Fphoto-1504705929752-a6065ff2cd48%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" 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%2Fimages.unsplash.com%2Fphoto-1504705929752-a6065ff2cd48%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" alt="https://images.unsplash.com/photo-1504705929752-a6065ff2cd48?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a joke, of-course, however the point still stands that &lt;strong&gt;taking notes&lt;/strong&gt; is an important habit, nay, &lt;strong&gt;a way-of-life&lt;/strong&gt; even, that if you are able to commit - will &lt;strong&gt;absolutely pay off &lt;del&gt;hella bank 💰&lt;/del&gt;.&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;Especially in the first couple of weeks when you can get lost in the sauce of &lt;strong&gt;all the stimuli&lt;/strong&gt; coming at you - taking notes has has been a life-saver for me in all this if not for simply being a forcing function to pause and process.  It's the most impactful, repeatable activity that's helped me ramp-up and build context.&lt;/p&gt;

&lt;p&gt;There are so many advantages to this habit, but my biggest motivation for writing notes is that it's best early remedy for quelling &lt;strong&gt;Impostor Syndrome&lt;/strong&gt; (which for me, spikes when I start something new). Taking notes provides an exercise that has a very low-barrier-to-entry where you can start excelling  immediately. It allows me to say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I might not be the best engineer in this room, but I &lt;strong&gt;will&lt;/strong&gt; have the most / best detailed notes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's also a great way to be &lt;strong&gt;less of a burden&lt;/strong&gt; on your peers and get quicker answers. Part of asking good questions is clearly defining what you know and what you don't know / need help on. Coming to a peer with a document that clearly defines the problem space, conveys what &lt;strong&gt;your&lt;/strong&gt; context on that problem is and what you've already tried — means the more time that can be effectively spent on syncing state and working the problem.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👵🏽 If you come to me with a question that you've defined, what you've tried and what exactly you need - &lt;strong&gt;It is much easier for me to help you because you've already done the hard part.&lt;/strong&gt; - An old mentor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As with any habit though - the important part is &lt;strong&gt;commitment.&lt;/strong&gt; You have to commit to taking notes - which if you're new to the practice, will take some time and repetition. The goal is to get to the point where opening up the notepad as your &lt;strong&gt;first-step&lt;/strong&gt;, is &lt;strong&gt;second-nature.&lt;/strong&gt;&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%2Fimages.unsplash.com%2Fphoto-1542596081-6d3eaca5240c%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" 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%2Fimages.unsplash.com%2Fphoto-1542596081-6d3eaca5240c%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" alt="https://images.unsplash.com/photo-1542596081-6d3eaca5240c?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are some things I do to make note-taking a part of my process and build that habit:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use a system that's easy to maintain.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My whole system only has &lt;strong&gt;two&lt;/strong&gt; types of notes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hook notes to process.&lt;/strong&gt;&lt;br&gt;
I create notes at the start of things (days, tasks, meetings) and reference notes at the end of things (PR's, summaries, agendas). Tying notes to process builds the habit.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I also have a standing tab on the very left of my browser that's meant purely for taking notes.&lt;/p&gt;

&lt;p&gt;I'm fortunate that at this org, they've gone all-in on using Notion (which is what I've been using for personal notes as well) - which provides the benefits of being able to easily copy and sync notes from sources of truth, create powerful templates that fit my workflow as well as easily share notes for review with team members.&lt;/p&gt;

&lt;p&gt;If you're not able to use Notion, I recommend using a markdown editor of some sort. One that I've had great success with in the past have  been:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bear.app/" rel="noopener noreferrer"&gt;Bear&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://typora.io/" rel="noopener noreferrer"&gt;Typora&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;The reason I recommend markdown, is because markdown is the defacto standard for documentation in tech. This just allows interoperability if you end up wanting to copy/paste things from your docs to code or vice-versa.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But it doesn't have to be a flashy tool - even a word doc will even suffice.&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%2Fimages.unsplash.com%2Fphoto-1520076794559-6a1229412a42%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" 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%2Fimages.unsplash.com%2Fphoto-1520076794559-6a1229412a42%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" alt="https://images.unsplash.com/photo-1520076794559-6a1229412a42?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The System
&lt;/h1&gt;

&lt;p&gt;There's probably tonnes of literature and study on organizing information (in fact, there is - library science) that are probably much better thought out - however, here's what works for me.&lt;/p&gt;

&lt;p&gt;I have 2 types of notes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Daily Log&lt;/li&gt;
&lt;li&gt;Detailed Notes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By default everything goes into the &lt;strong&gt;Daily Log is&lt;/strong&gt; organized by date as recording your actions through-out the day. If something warrants more explanation (see below), it goes into a &lt;strong&gt;Detailed Note&lt;/strong&gt;. The &lt;strong&gt;Detailed Notes&lt;/strong&gt; should be linked to in the &lt;strong&gt;Daily Logs&lt;/strong&gt; but can also be retrieved from a list.&lt;/p&gt;

&lt;p&gt;They are split up in my note-taking tool (Notion) like this:&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%2Fsk632u0iein9nhg4kun1.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%2Fsk632u0iein9nhg4kun1.png" alt="Notes Page - 1st Half"&gt;&lt;/a&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%2F5dpedn97lkorm685k44t.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%2F5dpedn97lkorm685k44t.png" alt="Notes Page - 2nd Half"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first half are my &lt;strong&gt;Daily Logs&lt;/strong&gt; and the second half is my &lt;strong&gt;Detailed Notes&lt;/strong&gt;.  The &lt;strong&gt;Detailed Notes&lt;/strong&gt; section is broken down further into notes that are created dynamically ad-hoc, and those that are specifically tied into my own personal &lt;code&gt;to-do&lt;/code&gt; list (which is just a different notion page, that has a kanban board).&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%2Fimages.unsplash.com%2Fphoto-1529651737248-dad5e287768e%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" 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%2Fimages.unsplash.com%2Fphoto-1529651737248-dad5e287768e%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" alt="https://images.unsplash.com/photo-1529651737248-dad5e287768e?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  1.  &lt;strong&gt;Daily Logs&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;In Notion, I'll create a doc every-time I start a new day. This doc has my updates on things that happen through-out the day (kinda like a journal). This is especially helpful if I'm juggling multiple streams of work at once but mainly serves as a place to organize my flow through the day, and serve as a jumping off point for Detailed Notes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Considerations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Daily logs contain my stream of consciousness through-out the day.

&lt;ul&gt;
&lt;li&gt;Tasks I pick up (and why)&lt;/li&gt;
&lt;li&gt;Things I hear and have questions about / want to investigate later.&lt;/li&gt;
&lt;li&gt;Commands I see / things I want to research later&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;If a single point on the daily log ends up taking more than 1 paragraph, consider breaking it off into a &lt;strong&gt;Detailed Note&lt;/strong&gt;
&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Structure
&lt;/h3&gt;

&lt;p&gt;Since I know that Daily Logs &lt;strong&gt;should&lt;/strong&gt; be something I do every-day, I have them set-up in a template  in Notion that I can easily create via 1 click every morning.&lt;/p&gt;

&lt;p&gt;It contains only 2 headings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Important&lt;/strong&gt;: (Anything that I should keep top of mind for the day - i.e. from my calendar/email)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notes&lt;/strong&gt;: Where all my notes fall into.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's an example:&lt;/p&gt;

&lt;h2&gt;
  
  
  Important
&lt;/h2&gt;




&lt;ul&gt;
&lt;li&gt;Meeting about X at 13:00 today&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📅 &lt;strong&gt;Daily Log (Example)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Standup:

&lt;ul&gt;
&lt;li&gt;Y is going to be working on &lt;code&gt;cool-thing&lt;/code&gt; tomorrow, ask if I can ride shotgun&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Call with X coming up on Thursday to domain naming conventions

&lt;ul&gt;
&lt;li&gt;Read up on existing naming conventions for &lt;code&gt;y&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Starting task #SYS-234 from backlog to patch &lt;code&gt;ABC&lt;/code&gt; on &lt;code&gt;&amp;lt;system&amp;gt;&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;→ Detailed Note: SYS-234, patching &lt;code&gt;ABC&lt;/code&gt; on &lt;code&gt;system&lt;/code&gt;&lt;/p&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Paged for spike in slack mesages for &lt;code&gt;#memechat&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Investigated it: The data platform team was experimenting with a meme bot for hackathon.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Continuing on SYS-234 → Link to detailed note&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;👾 Think of it like a systems-log, except &lt;strong&gt;you're the system.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;If anything in the Daily Log meets the following criteria, I break it out into a &lt;strong&gt;Detailed&lt;/strong&gt; note:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The thing I'm writing about or working on can use some extra detail (i.e. diagrams, etc)&lt;/li&gt;
&lt;li&gt;What I'm writing about will stretch over multiple days&lt;/li&gt;
&lt;li&gt;What I'm writing about can be used by someone else&lt;/li&gt;
&lt;li&gt;It needs to be shared&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;💡&lt;strong&gt;A note on templates:&lt;/strong&gt; Notion is great because it allows you to set and use templates. In my case, I have a template for Daily Log that I just create a new note based on every morning. However, in previous markdown note-taking apps, I simply created a markdown template that I would save as a text macro in something like atext.&lt;/p&gt;
&lt;/blockquote&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%2Fimages.unsplash.com%2Fphoto-1584628804572-f84284d9f388%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" 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%2Fimages.unsplash.com%2Fphoto-1584628804572-f84284d9f388%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" alt="https://images.unsplash.com/photo-1584628804572-f84284d9f388?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Detailed &lt;strong&gt;Notes&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;These are more detailed notes that I can take in the process of completing a task or activity. They can also work for something like recording details from a meeting or pairing session as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  Considerations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;They should be "self-contained"  - these notes should be easily picked up by someone (lol probably yourself) in 6 months and have enough context to read-through to the conclusion.&lt;/li&gt;
&lt;li&gt;Notes should proceed from &lt;code&gt;level of common understanding&lt;/code&gt; - &amp;gt; &lt;code&gt;complex.&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;This means that base context should be built at the beginning of the note and then proceed to get into more details. Think of it as if you were teaching a class to someone else - you wouldn't start with the end-state.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;What helps me in filling out these notes is when I think back to my early days working in Customer Support. &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%2Fimages.unsplash.com%2Fphoto-1578402027014-8adededc0fac%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" 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%2Fimages.unsplash.com%2Fphoto-1578402027014-8adededc0fac%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" alt="https://images.unsplash.com/photo-1578402027014-8adededc0fac?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whenever we got a ticket and couldn't solve it in the first interaction - we were trained to make &lt;code&gt;Internal Notes&lt;/code&gt;. &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%2F8mciazwbmali65fgt5d9.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%2F8mciazwbmali65fgt5d9.png" alt="Internal Notes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Internal Notes would contain things like Customer ID, and initial context (&lt;code&gt;ELI5&lt;/code&gt;) so that if you had to go offline, another support agent could continue the ticket with enough information instead of having to establish base context again. The other time that &lt;code&gt;Internal Notes&lt;/code&gt; would be used for - is when doing an &lt;code&gt;escalation&lt;/code&gt; (i.e. escalating a ticket up to the next tier of support).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A bad escalation is one where there's not enough information (especially from the customer) and requires to be sent back down to you. (An Involved effort required is required to proceed.)&lt;/li&gt;
&lt;li&gt;A sufficient escalation is one where the majority of information is there but still requires fetching some information. (Some effort is required to proceed)&lt;/li&gt;
&lt;li&gt;A good escalation is one where the escalation engineer wouldn't have to reach out to &lt;strong&gt;you&lt;/strong&gt; to gather any more context to move forward.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Detailed Notes should be written in the form of &lt;code&gt;escalation notes&lt;/code&gt; for yourself, where it should be able to take the reader from start to finish without needing additional context. This means erring on the side of over-communication and verbosity.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝🏾 &lt;strong&gt;A Good Rule of Thumb for Detailed Notes:&lt;/strong&gt; Ask yourself if a new-reader would be able to go from start to finish of a topic / lesson using your notes without having to ask question.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Structure
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Concise Title&lt;/strong&gt; Explaining What The Note Is (Think about your choice of keywords /  what it'll be like when you need to run a &lt;code&gt;search&lt;/code&gt; for this in a couple of months)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1-liner&lt;/strong&gt; purpose / explanation of what this note is  (if the title gets too long i.e. for URL readability reasons)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Link to completion details&lt;/strong&gt; or TL:DR:

&lt;ul&gt;
&lt;li&gt;If this note aided you in completing a ticket, pop that in here. This will be helpful for later if you get similar tasks and need to create process OR if there's an outage and you're searching your personal notes for things that may have interacted with a &lt;code&gt;thing&lt;/code&gt; of interest. (It's a needle in the haystack for your search later)&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;TL:DR&lt;/strong&gt; should be a 1-liner of the solution / thing you did or learned &lt;strong&gt;if possible&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Context:&lt;/strong&gt; &amp;lt;5W's, what should I know if I'm reading this as a new-joiner&amp;gt;.

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Entrypoint&lt;/strong&gt; &amp;lt;where did this task originate from (i.e. is there a ticket from the work queue like Jira or Zenhub?)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Notes:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;The meat of your note. This should contain anything/everything that you do and &lt;strong&gt;why&lt;/strong&gt; you do it / &lt;strong&gt;why&lt;/strong&gt; it's important.&lt;/li&gt;
&lt;li&gt;Feel free to include checklists along with commands that you ran.

&lt;ul&gt;
&lt;li&gt;Pro-Tip: Include command &lt;strong&gt;output&lt;/strong&gt; as well if you want to make it easy on yourself when you refer to notes during a high-stress situation (i.e. during an outage)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;If there is another document / reference you had to read in order to do a certain thing, include it as a reference (and specifically, the portion from the reference that was important)&lt;/li&gt;

&lt;li&gt;If you learn things from people through word-of-mouth or DM, include that in the note as quotes with timestamps&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;References:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Other docs that are useful at a &lt;strong&gt;high-level&lt;/strong&gt; (anything that is required reading for the content of the note should be referenced in-line)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Conclusion:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Bring it all home with what was accomplished / what you learned.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&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%2Fimages.unsplash.com%2Fphoto-1577563682708-4f022ec774fb%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" 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%2Fimages.unsplash.com%2Fphoto-1577563682708-4f022ec774fb%3Fixlib%3Drb-1.2.1%26q%3D85%26fm%3Djpg%26crop%3Dentropy%26cs%3Dsrgb" alt="https://images.unsplash.com/photo-1577563682708-4f022ec774fb?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The Benefits
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It's a forcing function to slow-down and structure information.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Humans speak faster than most people can type. Writing notes as someone speaks is challenging, but forces you to both process hearing the message, as well as writing it down.&lt;/li&gt;
&lt;li&gt;Writing down notes also provides you something to look at in free-cycles which automatically incurs the sub-routine in your brain which tries to create structure and links.  In these moments, you will find the gaps in understanding which you can act on to ask questions.&lt;/li&gt;
&lt;li&gt;That delay also allows your internal-voice to ask: "Okay but why?" and if you can't recall the answer instantly - gives you a prompt to speak up and ask for the clarifying information.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Leaving trail-markers / breadcrumbs along the way&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Everyone climbs the knowledge mountain via different paths. However the signs that you leave behind can help out other hikers find their way to where they're doing. Similarly, every time you document some part of your infrastructure, you are doing the same thing for future engineers.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;DRY (Don't Repeat Yourself) Learning.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Don't Repeat Yourself is one of tenets of engineering that are de rigueur and yet, everyone seems to forget this when it comes to process and documentation. Every document you right, is less time spent trying to re-learn a system (especially when in incident response mode) and less time state transferring state to someone in the future.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Build Training Materials As You Learn&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Every note you create for yourself, is also an easily convertible candidate for documentation - to help others.&lt;/li&gt;
&lt;li&gt;It's like a BOGO (Buy One Get One) deal for knowledge capture: wouldn't it be great if the next time someone joins your team, you could solve their entire question - or at least provide context for a large part of it because..you've gone through it before?&lt;/li&gt;
&lt;li&gt;Creating a training program, much-less resources for that program is time-consuming. Documenting  as you go allows you to hit two birds with one stone and when documents are able to be examined overhead - allows you to easily determine similarities and  paths through the required knowledge — which in doing so gets you pretty far for building a training program.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Auditability&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;You have a record of what you did if anything goes wrong (i.e. rolling back in case of an outage). You have notes to back yourself up if you're asked to explain &lt;em&gt;why&lt;/em&gt; on something (which can help outline things you can change for a process)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Starting a new job can be a stressful position - requiring the absorption of large quantities of information. One excellent way to to help ingest, process and package information is in taking notes. &lt;/p&gt;

&lt;p&gt;While it can be annoying to build up to the habit - some ways to incorporate it into your daily toolset is by (1) hooking it into process and by (2) using a system with a low administrative footprint.  It can be hooked it into process by making notes a priority at the start and finish of different events (i.e. start/end of  day, tasks &amp;amp; tickets). The process can be made easier to adopt by only having two types of notes: Daily Logs, and Detailed Notes. &lt;/p&gt;

&lt;p&gt;A good rule of thumb for writing Detailed Notes is to ask if a new-reader would be able to go from start to finish without having to ask a question. This can be done by providing concise yet richly linked context, verbose instructions and an easily digestable conclusion. &lt;/p&gt;

&lt;p&gt;Spending effort to take notes early pays off dividends - in the short term with helping structure and pace learning, and longer term by providing materials that can easily be re-purposed and shared for onboarding and training.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>process</category>
      <category>career</category>
      <category>growth</category>
    </item>
    <item>
      <title>"And for this interview, build me a custom REST-API router for a web-application"</title>
      <dc:creator>Thilina Ratnayake</dc:creator>
      <pubDate>Tue, 18 May 2021 01:22:13 +0000</pubDate>
      <link>https://dev.to/tratnayake/and-for-this-interview-build-me-a-custom-router-for-a-web-application-30l1</link>
      <guid>https://dev.to/tratnayake/and-for-this-interview-build-me-a-custom-router-for-a-web-application-30l1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Palms are sweaty, knees weak, arms are heavy, &lt;/p&gt;

&lt;p&gt;There's vomit on his Patagucci already&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These are the types of tech interview questions my friends used to tell me about that would make me freeze up. The way it's phrased just seems like such a lot of work and hidden complexity. And, I'm sure there is - if you really wanted to knock it out of the park -- but today, at approximately 4 hours into a task that I found more annoying than complex, I realized I'd done just this (sorta, at a very low level).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://junkee.com/yes-eminem-is-selling-moms-spaghetti-t-shirts-that-you-can-actually-buy/77913" rel="noopener noreferrer"&gt;Header Image Source&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  T, why were you creating a custom router?
&lt;/h2&gt;

&lt;p&gt;That's a &lt;strong&gt;great&lt;/strong&gt; question, I'm glad you asked 🕺🏽.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SO&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm currently working on a project where we're creating a bunch of babby API's to CRUD (Create, Retrieve, Update, Delete) some things from DynamoDB tables. From a bunch of reasons, not least of which including the fact that &lt;strong&gt;I am the sole engineer&lt;/strong&gt;  on this project - I'm trying to &lt;del&gt;win sales, earn bonuses and make hella money&lt;/del&gt; move quickly and maintain as little "live-infrastructure" as possible.&lt;/p&gt;

&lt;p&gt;Because of this, I came to the following conclusion(s)/decision(s) on how I would proceed:&lt;/p&gt;

&lt;h2&gt;
  
  
  TIRED 😰
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Running a node.js webserver (and associated infra and management) to effectively broker CRUD requests to a DynamoDB? &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  WIRED ☕️
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Setting up an AWS API Gateway that would trigger a Lambda to CRUD the required things from DynamoDB &lt;strong&gt;WIRED&lt;/strong&gt; &lt;del&gt;We're $erverle$$ baaaabyyyyy&lt;/del&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  INSPIRED ✨
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learn.hashicorp.com/tutorials/terraform/lambda-api-gateway" rel="noopener noreferrer"&gt;but also doing it all within Terraform so that it's documented, codified and re-usable&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Anyways, the TL:DR on this is that there's going to be an API Gateway that gets HTTP requests and then sends them to a Lambda function which decides to how to deal with the request before brokering the interaction with DynamoDB.&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%2Fbj44c1q6ulvocrgu98h8.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%2Fbj44c1q6ulvocrgu98h8.png" alt="API V2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have a single set of resources &lt;code&gt;projects&lt;/code&gt; that exist in DynamoDB (in a single &lt;code&gt;projects&lt;/code&gt;) table, and my Lambda needs to be able to listen to the request and get the things from DynamoDB.&lt;/p&gt;

&lt;p&gt;From skimming my original blue-print above, you might think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This seems easy enough.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And you'd be right, &lt;strong&gt;if&lt;/strong&gt; I only ever had to deal with one entity &lt;code&gt;projects&lt;/code&gt;. As the project went on, now I have a second entity to deal with: &lt;code&gt;status&lt;/code&gt;(es?) and more are soon to come.&lt;/p&gt;

&lt;p&gt;Originally I'd thought:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;1 lambda per resource. &lt;code&gt;/resources&lt;/code&gt; will go to the &lt;code&gt;resources-lambda&lt;/code&gt;, and &lt;code&gt;/status&lt;/code&gt; will go to the &lt;code&gt;status-lambda&lt;/code&gt;. &lt;/p&gt;
&lt;/blockquote&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%2F71x1px98itx30fpou8eb.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%2F71x1px98itx30fpou8eb.png" alt="API V2 (1)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However this approach leads to a few issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For every endpoint/lambda, you need to create 3x API gateway references&lt;/li&gt;
&lt;li&gt;For every endpoint/lambda, you need to make more IAM accommodations.&lt;/li&gt;
&lt;li&gt;Deployments would get annoying because I would need to update a specific lambda, or multiple lambdas to implement one feature in the future (i.e. if i needed to add a new field to the &lt;code&gt;status&lt;/code&gt; which makes use of &lt;code&gt;projects&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&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%2Fssimtvqkb9mtfa2ufm3p.jpg" 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%2Fssimtvqkb9mtfa2ufm3p.jpg" alt="59xoe3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I ultimately decided:&lt;/p&gt;

&lt;h2&gt;
  
  
  No, we're going to have the API gateway send all (proxy) traffic to a single lambda &lt;del&gt;1 lambda to rule them all&lt;/del&gt; (as a proxy resource), and then the lambda can decide how to handle it.
&lt;/h2&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%2Ff2rqlqioo69nmliy5y9b.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%2Ff2rqlqioo69nmliy5y9b.png" alt="API V2 (2)"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;This is why I needed to create a router, so that my Lambda function could figure out what it's being asked to do before doing the appropriate response. For example, it would have to handle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GET /projects&lt;/code&gt; - get me all projects in the database.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /projects:name&lt;/code&gt; - get me details on a single project.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /status&lt;/code&gt;- get me all the status entries in the database.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /status/:name&lt;/code&gt; - get me the status of a single project in the database.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Having worked with Node (and specifically Express) before, I knew there existed &lt;a href="https://expressjs.com/en/guide/routing.html" rel="noopener noreferrer"&gt;a way to specify routes like this&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.get('/users/:userId/books/:bookId', function (req, res) {
  res.send(req.params)
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And similarly for Lambda, there seemed to exist a specific node module for this case:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/aws-lambda-router" rel="noopener noreferrer"&gt;aws-lambda-router&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import * as router from 'aws-lambda-router'

export const handler = router.handler({
    proxyIntegration: {
        routes: [
            {
                // request-path-pattern with a path variable:
                path: '/article/:id',
                method: 'GET',
                // we can use the path param 'id' in the action call:
                action: (request, context) =&amp;gt; {
                    return "You called me with: " + request.paths.id;
                }
            },
            {
                // request-path-pattern with a path variable in Open API style:
                path: '/section/{id}',
                method: 'GET',
                // we can use the path param 'id' in the action call:
                action: (request, context) =&amp;gt; {
                    return "You called me with: " + request.paths.id;
                }
            }
        ]
    }
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, unfortunately - proxy path support is still a WIP :( This would seem to imply that ❌ I wouldn't be able to get at route params like the name in  &lt;code&gt;GET /projects/:name&lt;/code&gt; &lt;strong&gt;WOMP WOMP&lt;/strong&gt; ❌&lt;/p&gt;

&lt;p&gt;It's also annoying that if you're using custom node-modules, you have to upload it as a zip every single time (as opposed to being able to code / test live if you're using native / vanilla Node).&lt;/p&gt;




&lt;h2&gt;
  
  
  Well Lambda, I think it's just you (-r &lt;code&gt;event&lt;/code&gt; parameters) and me at this point.
&lt;/h2&gt;

&lt;p&gt;This would just mean that I'd need to create my own router, and thankfully &lt;del&gt;obviously?&lt;/del&gt;, the &lt;code&gt;event&lt;/code&gt; payload that's passed into a Lambda function by the API gateway &lt;a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html" rel="noopener noreferrer"&gt;contains all the information we could need.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Specifically, all you &lt;em&gt;really&lt;/em&gt; need for a router is three things (to start);&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP Method: &lt;code&gt;GET&lt;/code&gt;,&lt;code&gt;POST&lt;/code&gt; etc&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;projects&lt;/code&gt; || &lt;code&gt;status&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Params (a.k.a keys): &lt;code&gt;:name&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once I got these pieces extracted out from lambda by doing the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let method = event.httpMethod
let resource = event.path.split("/")[1]
let key = event.path.split("/")[2]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The actual logic of the router wasn't too hard. And I guess, just like in a tech interview -- I came up with 2 "solutions".&lt;/p&gt;

&lt;h2&gt;
  
  
  V1 - Switch on 1, add more detail inside
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let method = event.httpMethod
let resource = event.path.split("/")[1]
let key = event.path.split("/")[2]

switch (resource) {
      case "projects":
        if (key == undefined) {
          body = await dynamo.scan({ TableName: PROJECTS_DB_TABLE }).promise();
        } else {
          let name = key;
          body = await db_get("projects",name)
        }
        break;
      case "status":
        break;
      default:
        body = {
          defaultCase: "true",
          path: event.path,
          resource: event.path.split("/")[1],
        };
        break;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This approach was cool because it allowed me to use the &lt;code&gt;path&lt;/code&gt; as the main selector and then code the logic for the required methods as they came up. &lt;/p&gt;

&lt;p&gt;However.it doesn't... &lt;em&gt;look&lt;/em&gt; great. On first glance, it looks gross, convoluted, and that's just with a single resource and a single method. Secondly, for any new engineers coming onboard - this doesn't immediately seem like a a router when compared to any previous work they may have done.&lt;/p&gt;

&lt;p&gt;Going back to the drawing board, and wanting to get closer to the "gold-standard" I was used to, like in express-router.&lt;/p&gt;

&lt;p&gt;I wanted to come up with something that would simply specify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Here's the route that we need to handle

&lt;ul&gt;
&lt;li&gt;Here's it's associated handler.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;With that in mind, I came up with &lt;/p&gt;

&lt;h2&gt;
  
  
  V2 - Filter on 2 conditions, add more methods as they arise
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let method = event.httpMethod
let resource = event.path.split("/")[1]
let key = event.path.split("/")[2]

 if (method == "GET" &amp;amp;&amp;amp; resource == "projects") {
      body = await db_get(dynamo, "projects", key)
    }
else if (method == "GET" &amp;amp;&amp;amp; resource == "status") {
    body = await db_get(dynamo, "status", key)
}
else {
  body = { method, resource, key, message: "not supported at this time" }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I like this because it's the closest I was able to get to express-router:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.get('/users/:userId/books/:bookId', function (req, res) {
  res.send(req.params)
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And has the benefit of being concise, and much more recognizable as a router on first-glance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things I'd Improve
&lt;/h2&gt;

&lt;p&gt;I'd probably want to do way more clean-up for an actual interview "REAL" router, but it was still a cool thought exercise. Some definite things I'd want to add / handle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;get-me-all&lt;/code&gt; case is handled by checking for an undefined key. This could probably be guarded for better.&lt;/li&gt;
&lt;li&gt;There's currently no guard against someone adding in more than a 1st level parameter (i.e. &lt;code&gt;/projects/name/something/else&lt;/code&gt; would still get sent to the DB. Thats not great.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THIS IS ALL IN A GIANT IF-ELSE STATEMENT??&lt;/strong&gt; That doesn't seem great.&lt;/li&gt;
&lt;li&gt;Limitations: There's no way to do middleware, auth, tracing and a bunch of things that you'd be able to do with express-router (and other routers)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Routers are just giant if-else statements? Idk - this was fun tho.&lt;/p&gt;

</description>
      <category>node</category>
      <category>aws</category>
      <category>terraform</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
