<?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: TuWang</title>
    <description>The latest articles on DEV Community by TuWang (@tuwang).</description>
    <link>https://dev.to/tuwang</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%2F245063%2F9147d4ca-03b4-4425-ad55-926c4ba97d98.jpg</url>
      <title>DEV Community: TuWang</title>
      <link>https://dev.to/tuwang</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tuwang"/>
    <language>en</language>
    <item>
      <title>$$ Every Wrong I Did As A 'FAANG' Software Engineer Before 30; What About You?</title>
      <dc:creator>TuWang</dc:creator>
      <pubDate>Fri, 29 Apr 2022 17:07:15 +0000</pubDate>
      <link>https://dev.to/tuwang/-every-wrong-i-did-as-a-faang-software-engineer-before-30-what-about-you-1f8m</link>
      <guid>https://dev.to/tuwang/-every-wrong-i-did-as-a-faang-software-engineer-before-30-what-about-you-1f8m</guid>
      <description>&lt;p&gt;&lt;a href="https://youtu.be/raebJ8_U1wk"&gt;Youtube: $$ Every Wrong I Did As A 'FAANG' Software Engineer Before 30&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you listen to Gary Vee, '30 is the new 20', all blood-pumping vibes; look forward, never stop the hustles lol.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;However, I wish I could slap my 21-year-old self: calm down, go find the right internship, do leetcode. Nothing else matters!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;(slapping myself now ... a lot other stuff do matter: relationship, physical/mental health...)&lt;/p&gt;

&lt;p&gt;We are all in this tech bubble, maybe my stories are relatable - guess what, we all mess up. &lt;a href="https://youtu.be/raebJ8_U1wk"&gt;This video is a little retro&lt;/a&gt; of my personal failures, studying and working in the states. I wish I could have done better.&lt;/p&gt;

&lt;p&gt;I'd love for you to watch the video, but here is the three points discussed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;I. Chasing After Others' Goals&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;II. Never Landed The Right Tech Internship&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;III. 'I Will Figure It Out Later'&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Through the past 8 years, I've observed so many people's success in the tech industry, which humbled me deeply. I often joke about my mistakes - some were very personal - it makes me appreciate more the uncommon successes. &lt;/p&gt;

&lt;p&gt;The internet is now full of breathtaking role models. To  they raise my anxieties. I just hope my humbled stories (&lt;a href="(https://youtu.be/raebJ8_U1wk)"&gt;this video!&lt;/a&gt;)can take you for a laugh.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions
&lt;/h2&gt;

&lt;p&gt;So here are the topics for discussion!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What did you do well or otherwise in the tech industry? &lt;/li&gt;
&lt;li&gt;What would you do differently before your first job? or before college graduation?&lt;/li&gt;
&lt;li&gt;Would you trade your time to grind leetcode?&lt;/li&gt;
&lt;li&gt;Is there any offer that you regretted (joined or rejected)?&lt;/li&gt;
&lt;li&gt;How can you be sure that Software Engineering is the right career path for you? Or is it just sunk cost so we've all been riding alone? &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Miss The Good Old Backend Days - What Do You Prefer?</title>
      <dc:creator>TuWang</dc:creator>
      <pubDate>Sun, 03 Apr 2022 23:22:34 +0000</pubDate>
      <link>https://dev.to/tuwang/i-miss-the-good-old-backend-days-what-do-you-prefer-1l4</link>
      <guid>https://dev.to/tuwang/i-miss-the-good-old-backend-days-what-do-you-prefer-1l4</guid>
      <description>&lt;p&gt;I've transitioned to product-facing engineer for about 2 years now. I wouldn't call myself a 'front-end' engineer or a 'full-stack' engineer - I don't think I'm qualified either. I've departed the pure Backend service engineer role. Now I'm working on product features, where I occasionally tap into different stacks but mostly focusing a smooth product experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you prefer? Backend or frontend? Web or Mobile? Infra or Product?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b4IaL0PC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/024hi3qdzj225oooal8u.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b4IaL0PC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/024hi3qdzj225oooal8u.gif" alt="Image description" width="245" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Backend Role
&lt;/h2&gt;

&lt;p&gt;I'm aware of many public definitions of engineers (frontend, backend, software vs hardware, web vs mobile, or the glorious full-stack...etc). To me, I've only had 1 role previously at Amazon for 4 years - a backend engineer working on &lt;em&gt;services&lt;/em&gt;. That means my role is primarily about designing and building backend APIs.&lt;/p&gt;

&lt;p&gt;This has changed since I joined a new company. It has been 2 years since I look at API designs - I certainly miss it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Missed the Most
&lt;/h2&gt;

&lt;p&gt;The decision making processing was 'simpler'.&lt;/p&gt;

&lt;p&gt;The whole theme was about the API contract and use cases. You keep on finding corner cases and solving them, where the 'end user' is usually another team's engineers. You can disagree on many things, but all conflicts come down to certain set of mandatory use cases and another set of non-MVP use cases.&lt;/p&gt;

&lt;p&gt;The decision making is simple in a way that, backend system do not often have to worry about the human factor - it's not user-facing. Engineers have a lot more control of the end to end system design.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Don't Miss
&lt;/h2&gt;

&lt;p&gt;I didn't enjoy the fact that my backend work was not usable by human beings. &lt;/p&gt;

&lt;p&gt;At dinner table, I'm sure we all get these questions: what do you work on? My answer is often vague because - when I say 'I work on backend system', it's really difficult for people to visualize or weigh the value of my work. &lt;/p&gt;

&lt;p&gt;Working on pure backend team, far from user-facing product, I was lack of many aspects of modern software development. I found out much later that there are engineers who wear many hats: user experience, end to end project timeline, collaborations with other systems. These are critical skill sets to train if I were to lead a team to build something.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reality
&lt;/h2&gt;

&lt;p&gt;Now when I occasionally bump into people working on backend design - it just reminds me of the goold old conversations I used to have with teammates :) &lt;/p&gt;

&lt;p&gt;Once in a while, I wish I can dial back and just work with system that talks to systems. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you prefer to work on? Has anything changed in the past years? Backend or frontend? Web or Mobile? Infra or Product?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>infra</category>
      <category>product</category>
    </item>
    <item>
      <title>Making Peanuts in Tech</title>
      <dc:creator>TuWang</dc:creator>
      <pubDate>Thu, 31 Mar 2022 20:15:50 +0000</pubDate>
      <link>https://dev.to/tuwang/making-peanuts-in-tech-528j</link>
      <guid>https://dev.to/tuwang/making-peanuts-in-tech-528j</guid>
      <description>&lt;p&gt;In 2014, I started my first job, which made me $58K in Boston. Even back then, this was a below-average income in the tech industry. Oh wait, I stumbled into the non-tech industry, sad.&lt;/p&gt;

&lt;p&gt;It took me nearly 1 year to realize the income gap, and about 8 months to finish the career switch - being an entry-level software engineer at Amazon.&lt;/p&gt;

&lt;p&gt;Since then, I made a few more mistakes. Now, compared with my college friends, they are now making half a million each year. Not too long ago, I was just making peanuts.&lt;/p&gt;

&lt;p&gt;Check out this video to see why I was making peanuts even with a Computer Science degree.&lt;/p&gt;

&lt;p&gt;YouTube Video: &lt;a href="https://www.youtube.com/watch?v=BchKKoxdeNI&amp;amp;ab_channel=TuwangTech" rel="noopener noreferrer"&gt;They Made Half Million($500k+), I Made Peanuts&lt;/a&gt;&lt;br&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%2Fwyb53lgdtt6s3g57bi54.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%2Fwyb53lgdtt6s3g57bi54.jpg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Nervously, I Started A Tech Youtube Channel</title>
      <dc:creator>TuWang</dc:creator>
      <pubDate>Fri, 11 Mar 2022 08:22:44 +0000</pubDate>
      <link>https://dev.to/tuwang/nervously-i-started-a-tech-youtube-channel-5c90</link>
      <guid>https://dev.to/tuwang/nervously-i-started-a-tech-youtube-channel-5c90</guid>
      <description>&lt;p&gt;That's the plan.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The marketing expert says to highlight my newborn Youtube Channel: &lt;a href="https://www.youtube.com/watch?v=2xVOhl6-RmE&amp;amp;ab_channel=TuwangTech"&gt;I Failed To Quit FAANG Jobs (Facebook/Meta | Amazon | Apple | Netflix | Google)&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I feel like an imposter, as if I'm joining a new company. Others doing so well. Me? huh.&lt;/p&gt;

&lt;p&gt;This time, it's about making Youtube videos. About this first upload, I expected 0 organic impression, so no release pressure. &lt;/p&gt;

&lt;p&gt;One click - Done.&lt;/p&gt;

&lt;p&gt;Now, when it comes to sharing the content to broader audience, I'm nervous. The worries are cliche: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what if people don't like how I present? &lt;/li&gt;
&lt;li&gt;what if my point of view is way too narrow? &lt;/li&gt;
&lt;li&gt;what if - my accent is horrible?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[EMOTIONAL DAMAGE]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I doubt this video will gain up to &lt;strong&gt;100 views&lt;/strong&gt; before I upload the next one. But hey, I'd like to take 1 step outside of the comfort zone - now I have your attention. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thank you for reading. Please consider checking out that video, and if you enjoy it, I'd love to know how you think!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is the link again: &lt;a href="https://www.youtube.com/watch?v=2xVOhl6-RmE&amp;amp;ab_channel=TuwangTech"&gt;I Failed To Quit FAANG Jobs (Facebook/Meta | Amazon | Apple | Netflix | Google)&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jOxuSXP6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4nz48ipmhmqg61tqyckd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jOxuSXP6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4nz48ipmhmqg61tqyckd.jpg" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>After COVID-19</title>
      <dc:creator>TuWang</dc:creator>
      <pubDate>Tue, 31 Mar 2020 20:51:33 +0000</pubDate>
      <link>https://dev.to/tuwang/after-covid-19-2cje</link>
      <guid>https://dev.to/tuwang/after-covid-19-2cje</guid>
      <description>&lt;p&gt;Software Engineers are perhaps used to working from home (or working from anywhere), so that wan't a challenge at all. &lt;strong&gt;Silly as it may sound, despite all the horror brought by COVID-19, it has forced me, or perhaps my generation, to reconsider how we live our life.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Human beings are often obsessed with second chances, or should I say, we often abuse second chances: the mindset of, &lt;strong&gt;&lt;em&gt;oh okay, I can make it right next time&lt;/em&gt;&lt;/strong&gt;, makes it extremely hard to make any progress today.&lt;/p&gt;

&lt;p&gt;Through 2020 we have heard enough of harsh stories about COVID-19, so that's not what I plan to write. My retrospective of life is rather simple and silly.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;breakfast: orange juice, avocado bagel with salmon, onion and eggs:&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l1bjZ0d7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AIjshTahpwbLsmujZQRM5QA%402x.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l1bjZ0d7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AIjshTahpwbLsmujZQRM5QA%402x.jpeg" alt="breakfast: orange juice, avocado bagel with salmon, onion and eggs" title="breakfast: orange juice, avocado bagel with salmon, onion and eggs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It hits me hard that for 30 years I haven't built any daily routine; until now, forced by the virus, of course, &lt;strong&gt;I am cooking three meals a day, planning home essentials, and exercising properly.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;None of these needed much of my attention because either a school system guided me to follow a routine, or during work, I simply get things done in whichever easiest way (i.e., store-made food, ad-hoc workout classes). Right, I don't plan much about the daily routine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If it costs you a little more but saves you time, why bother planning out the day? I used to think.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Grocery stores are the only place I visited routinely through the past two weeks for basic stuff: vegetables, meats, noddles, fruits, another bunch of cooking ingredients. It's almost a shame that I got excited about every little improvement that I made to my meal: if it tastes a bit better than last time, it fancies with truffle honey this time, or if I cooked the sunny-side-up just about right without burnt.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;making progress with sunny side up:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QIn9bipP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2Ay5RGIukXiaWb1w6Zd6lKIg%402x.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QIn9bipP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2Ay5RGIukXiaWb1w6Zd6lKIg%402x.jpeg" alt="making progress with sunny side up" title="making progress with sunny side up"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I celebrated my 30-year birthday at home with self-cooked steaks. I was happy to see myself doing all these cooking gigs, feeling like I got the David Chang spirit after all. Oh, what a shame, I'm 30 years old and just started taking care of myself. I have to point out, WholeFoods expenses add up quickly, especially after I saw a couple in front of me paid $489 for groceries, wow!&lt;/p&gt;

&lt;p&gt;Another thing that struck me for a couple of days was the classic joke of toilet paper rush. I wasn't part of it because I thought, what idiot would do that?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Toilet paper rush must be just a sarcastic meme - &lt;em&gt;jokes on me&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A few days into Safer At Home order, I found myself standing in line at 7:45 am, waiting for WholeFoods to open, just trying to get some paper towels &amp;amp; toilet paper. They were all sold out, of course. However, the WholeFoods kept failing to deliver paper products in its Monday &amp;amp; Wednesday load (i.e., load means one shipment of products, and yes, I even learned the correct terminologies at WholeFoods), so I went there four mornings in a row.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Humans are fragile. I had firsthand experience, not even talking about the virus itself. With a bit of losing control, missing toilet paper, or skipping a meal, it gets me oddly uncomfortable.&lt;/strong&gt; All of my so-called zombie apocalypse skillsets are not useful at all to this occasion just yet. It's an awkward state: I kept wondering if I shall be more cautious or if life is going to be just fine shortly after.&lt;/p&gt;

&lt;p&gt;Luckily I have a place to stay and have family around during this hard time. There are more profound thoughts when I think of my past 30 years of life, but that's just too heavy to share, right? Wait, it's 5:39 pm, I need to prepare my dinner now :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I wasn't appreciating physical materials as much, but now I'm so grateful for my surroundings more than ever.&lt;/strong&gt; For every meal, I intend to prepare and eat without wasting; for every piece of paper, I attempt to reuse as much as possible. Oddly enough, COVID-19 forces me to rethink life: what if I were born in difficult time where even a piece of paper is luxury? what if there isn't enough of food for everyone anymore?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without reflecting too much fear here, I just hope to live a bit more thoughtfully from now; appreciate what I have and share with those in need.&lt;/strong&gt; I forgot to mention, a complete stranger helped us with new masks; that was, hmm…, pretty personal moment for me. Yeah, you get the point: appreciate what we have and try to help others. I'm going to stop right here; I already sound like my parents in the first week of my 30's : )&lt;/p&gt;

</description>
      <category>todayilearned</category>
      <category>motivation</category>
      <category>jokes</category>
    </item>
    <item>
      <title>Fun Aspects of Event-Driven Architecture in Serverless</title>
      <dc:creator>TuWang</dc:creator>
      <pubDate>Sat, 16 Nov 2019 07:43:20 +0000</pubDate>
      <link>https://dev.to/tuwang/fun-aspects-of-event-driven-architecture-in-serverless-3i3m</link>
      <guid>https://dev.to/tuwang/fun-aspects-of-event-driven-architecture-in-serverless-3i3m</guid>
      <description>&lt;p&gt;Serverless architecture has its benefit of on-demand executions. &lt;strong&gt;By definition, 1) the service owner no longer needs to maintain an all-time-live server, 2) it replaces the long-standing server host with low-cost on-demand resources, 3) it only executes a job only when triggered to do so&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are a few key concepts that distinguish serverless architecture from traditional server architecture. For example, serverless architecture is &lt;strong&gt;event-driven&lt;/strong&gt;, and its components are often &lt;strong&gt;stateless&lt;/strong&gt;, etc. &lt;/p&gt;

&lt;p&gt;This post will dive a little bit into event-driven serverless architecture in the context of building web service APIs in AWS.&lt;/p&gt;

&lt;h4&gt;
  
  
  Server API vs. Serverless API
&lt;/h4&gt;

&lt;p&gt;Traditionally, regardless of what type of server you prefer, it listens on a port and handles HTTP requests. &lt;strong&gt;The serverless architecture removes the concept of the server (at least from the end consumers' perspective) and replaces it with an event-based job.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the serverless world, servers are abstracted from users. Instead, it exposes event queue (i.e., &lt;strong&gt;SNS/SQS&lt;/strong&gt;) to you and allows you to attach a job (i.e., &lt;strong&gt;lambda&lt;/strong&gt;) to the event queue. The serverless infrastructure makes sure a message in the queue triggers one execution of the lambda.&lt;/p&gt;

&lt;h4&gt;
  
  
  Event Driven by Whom?
&lt;/h4&gt;

&lt;p&gt;A unique but interesting challenge sooner will come into the picture: *&lt;em&gt;who controls the event and how to scale? *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The trivial answer: the service consumer (your service client) controls how frequent the event will trigger, just like before, as to how the client calls your server APIs. &lt;/p&gt;

&lt;p&gt;Yes, absolutely, with some nuances that make slight differences: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The traditional server typically restricts caller in agreed TPS, so the &lt;strong&gt;client needs to handle API throttle and retry&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The serverless architecture allows the client to fire off the event messages and forget about it. Instead of throttling the client, &lt;strong&gt;the event processor carries more responsibilities to gracefully handle a large number of events/messages without losing the messages.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not saying which way is better, but you should keep in mind the differences when choosing the service architecture.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stateless
&lt;/h4&gt;

&lt;p&gt;The traditional server provides APIs such that the client often manages the call sequence. For example, in the use case of running write commands, the client may want to 1) Save Post v1.0, 2) Save Post v1.1, 3) Save Post v1.2 during fast edits on Dev.to. The client needs to chain the sequence of saves, wait for the server to respond for one request, and finally fire off another save command.&lt;/p&gt;

&lt;p&gt;In serverless architecture, you can still do the above, utilizing Lambda+APIGateway. However, for the fun of discussing event-driven use case, let's imagine we did the above with just events.&lt;/p&gt;

&lt;p&gt;Here is the fun challenge: 3 events arrive in incorrect order v1.2, v1.0, v1.1 to the queue. &lt;strong&gt;The lambda is completely stateless so it won't care about which logical version to process first.&lt;/strong&gt; Rather simply, the lambda processes the messages without caring for the sequence and will save the v1.1 incorrectly. &lt;/p&gt;

&lt;p&gt;Of course, we do not want that.&lt;/p&gt;

&lt;p&gt;To resolve the sequencing challenge, one might choose a data store to keep all of the draft versions. When a lambda spins up to process, it will look into the data store to look for the latest version and only save that one. After resolving the challenge, the UX appears the same to the end-user : )&lt;/p&gt;

&lt;p&gt;There are other ways to solve the challenge for sure, but you get the point. &lt;strong&gt;Serverless architecture often indicates stateless components. If your service is highly dependent on states, you probably want to utilize a workflow engine to accomplish the tasks rather than only relying on lambda + SQS.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;When you first think about serverless, it appears light and easy to use (it is!). However, it does come with its own set of new challenges that the traditional backend engineers may not face.&lt;/p&gt;

&lt;p&gt;One last fun fact that I want to share: whatever name or wrapper we want to call it, &lt;code&gt;serverless&lt;/code&gt; is nothing but a new coat on top of the traditional server architecture. &lt;strong&gt;Yes, believe or not, old-fashioned hard-core infrastructure engineers are still building traditional servers to host all the serverless components mentioned above(lambda, SNS, SQS). Don't treat serverless as some dark magic : )&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Same applies to &lt;code&gt;internet&lt;/code&gt; vs. &lt;code&gt;cloud&lt;/code&gt;. You get my point :)&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>architecture</category>
      <category>aws</category>
      <category>design</category>
    </item>
    <item>
      <title>Team Dynamics: Engineering Focused v.s. Management Focused</title>
      <dc:creator>TuWang</dc:creator>
      <pubDate>Fri, 25 Oct 2019 21:01:25 +0000</pubDate>
      <link>https://dev.to/tuwang/team-dynamics-engineering-focused-v-s-management-focused-3nfb</link>
      <guid>https://dev.to/tuwang/team-dynamics-engineering-focused-v-s-management-focused-3nfb</guid>
      <description>&lt;p&gt;Which team dynamics do you enjoy most? I prefer engineering-focused dynamics because, well, I am a software engineer. However, I have seen teams that are entirely management-focused.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two Types of DEV teams
&lt;/h2&gt;

&lt;p&gt;Engineering-focused Team&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Decisions are driven and often made by engineers&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Team's success is also evaluated at engineers' happiness level&lt;/li&gt;
&lt;li&gt;Manager's goal is to keep the team happy so people will be productive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Management-focused Team&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Decisions are driven and often influenced by managers&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Team's success is also evaluated at the manager's performance in front of higher leaders&lt;/li&gt;
&lt;li&gt;Engineers' goal is to keep the manager happy, so they keep a pleasant team dynamics&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why the Conflict?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Both engineers and managers are aiming for the same goal to launch services. How come the conflict?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engineers and managers have different mindsets at work.&lt;/strong&gt; Engineers want to keep building, preferably new services. Managers want to launch new services, but they are also worried about the overall health of all their services. To accommodate both parties, engineers and managers collaborate through a sophisticated process: reporting.&lt;/p&gt;

&lt;p&gt;Reports come in forms of project status, service metrics, business metrics, sprint retrospective, etc.&lt;/p&gt;

&lt;p&gt;For engineers, the necessary amount of metrics and system progress tracking is sufficient to keep the project running and hit the launch goal.&lt;/p&gt;

&lt;p&gt;For managers, they are demanded to report to their leaders (who has less context of leaf teams' work) about the overall health of projects. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There comes the complication&lt;/strong&gt;: 1) engineering metrics are specific and scattered while managers want summarized reports,  2) Each manager has a slightly different priority in terms of business metrics, that creates their particular report taste.&lt;/p&gt;

&lt;p&gt;As a result, managers influence engineers to conduct business reporting processes. I do believe it is a necessary act to keep the team healthy. &lt;/p&gt;

&lt;p&gt;In the end, it is the art of keeping balance, again (it feels like anything at work comes to talking about &lt;code&gt;balance&lt;/code&gt;). &lt;strong&gt;Or, in reality, it depends on your team has a super-driven manager or an oddly-aggressive but respected engineer.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pros/Cons
&lt;/h2&gt;

&lt;p&gt;Let's talk just slightly about the pros and cons of the two styles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engineering-focused Team&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pros:

&lt;ul&gt;
&lt;li&gt;Happy Engineer, Happy Life&lt;/li&gt;
&lt;li&gt;Engineers make decisions efficiently because they are close to the actual technical components&lt;/li&gt;
&lt;li&gt;Pleasant dynamics attracts talents&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Cons:

&lt;ul&gt;
&lt;li&gt;Engineers get spoiled which may decrease team efficiency&lt;/li&gt;
&lt;li&gt;Engineers may only see problems at contained scope rather than the overall roadmap&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Management-focused Team&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manager can help the team with the larger picture&lt;/li&gt;
&lt;li&gt;Engineer are working towards a relatively united team vision instead of battling against each others' vision.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keeping the manager happy could cause tension in the team dynamics, because other engineers may not agree with the manager's tech preference&lt;/li&gt;
&lt;li&gt;The team's success is reflected by the manager's success, which dissolves the value of success for team members&lt;/li&gt;
&lt;li&gt;Engineers may create processes or spend hours trying to summarize things for the manager, but this does not bring direct value to the team&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Mix
&lt;/h2&gt;

&lt;p&gt;In some companies, people manager and tech manager are two separate roles. The tech manager influences the technical aspects of the team. She or he perhaps also write code. The people manager, on the other hand, can be active on multiple teams but does not influence technical decisions as much.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you think is best for your team?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>management</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>inclusion</category>
    </item>
    <item>
      <title>Discussion: What is Your Favorite Serverless Architecture?</title>
      <dc:creator>TuWang</dc:creator>
      <pubDate>Sat, 19 Oct 2019 09:12:41 +0000</pubDate>
      <link>https://dev.to/tuwang/discussion-what-is-your-favorite-serverless-architecture-3kja</link>
      <guid>https://dev.to/tuwang/discussion-what-is-your-favorite-serverless-architecture-3kja</guid>
      <description>&lt;p&gt;In the last year of the decade, I found myself working closely with the entire service stack. I became familiar with a few technologies in AWS serverless architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I use CloudFormation to manage 99.9% of my resources&lt;/li&gt;
&lt;li&gt;I use standard storages like S3, DynamoDB&lt;/li&gt;
&lt;li&gt;I utilize message systems to deliver events&lt;/li&gt;
&lt;li&gt;I use API gateway and lambda to build the APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What is your favorite Serverless architecture? What are the excellent examples and pitfalls you have experienced? Happy to learn and discuss! &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>serverless</category>
      <category>aws</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Discussion: Is a Running a Massive Project equivalent to Running a Company</title>
      <dc:creator>TuWang</dc:creator>
      <pubDate>Wed, 16 Oct 2019 04:57:49 +0000</pubDate>
      <link>https://dev.to/tuwang/discussion-is-a-running-a-massive-project-equivalent-to-running-a-company-22n6</link>
      <guid>https://dev.to/tuwang/discussion-is-a-running-a-massive-project-equivalent-to-running-a-company-22n6</guid>
      <description>&lt;p&gt;As a software engineer, I have helped to manage the lifecycle of projects (i.e., design, implementation, testing and launch). I have also observed different roles (i.e., management, engineering, product) working on multiple projects. I realize that a project of organization-wide impact pushes all these project members to progress in their career (and some of them become org leaders)&lt;/p&gt;

&lt;p&gt;I had a few related questions: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In an enterprise environment, is running a massive project equavalent to running a company?&lt;/li&gt;
&lt;li&gt;How large should this project be to give an individual the amount of pressure and experience of running a company?&lt;/li&gt;
&lt;li&gt;If you think &lt;strong&gt;"just quit your job and start a company"&lt;/strong&gt;, why do smart people still tend to stay at enterprise company?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have started small business before, but it was never close to a startup. I want to know how people think of this topic, given our common experience of the past 10-20 years of tech industry growth. &lt;/p&gt;

&lt;p&gt;Let me know your thoughts, and I'll draft my own thoughts in comment area too.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>startup</category>
    </item>
    <item>
      <title>6 Tips to Succeed in Code Review as a New-hire (w/o being bashed)</title>
      <dc:creator>TuWang</dc:creator>
      <pubDate>Sun, 13 Oct 2019 18:54:37 +0000</pubDate>
      <link>https://dev.to/tuwang/how-to-succeed-in-code-review-as-a-new-hire-w-o-being-bashed-3ega</link>
      <guid>https://dev.to/tuwang/how-to-succeed-in-code-review-as-a-new-hire-w-o-being-bashed-3ega</guid>
      <description>&lt;p&gt;As a new-hire, it isn't always easy to adjust to the norm of the team. &lt;/p&gt;

&lt;p&gt;Socially, people are usually friendly at the workplace, so you control the dynamics about how much you like to blend in. However, when it comes to code review, your friendly neighbor may bash on you repeatedly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why? Code convention matters and code quality is the key to keeping everyone's job.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I have &lt;strong&gt;six tips&lt;/strong&gt; to help you catch up to the new team without being bashed.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Honor the context and lower your pride
&lt;/h2&gt;

&lt;p&gt;If you are new to software engineering, then jump to the next section. Don't even think about pride. 😉&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You may have years of working experience, but please, please be humble. None of your experience matters if you don't know the context.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A solid example of an argument from a new-hire. The claim was: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There must be a &lt;code&gt;service-specific interface&lt;/code&gt; when integrating/calling a dependency service.&lt;br&gt;
Reason: the external dependency service can change, but in our code, callers of the interface can stay w/o changes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Code becomes like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;MetadataService&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;MetadataServiceInterface&lt;/span&gt;&lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;PublishingService&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;PublishingServiceInterface&lt;/span&gt;&lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;AService&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;AServiceInterface&lt;/span&gt;&lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;BService&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;BServiceInterface&lt;/span&gt;&lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="c1"&gt;//10 more services like this&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By looking at the statement, it sounds entirely correct. &lt;strong&gt;Yes, loose coupling from the dependency integration is a good engineering practice.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;However, the good intention brings &lt;strong&gt;almost no value&lt;/strong&gt; in our team's context: there is no need for decoupling.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unfortunately, the dependency services are not simple CRUD APIs. We cannot replace them.&lt;/li&gt;
&lt;li&gt;By design, the way (i.e., high-level workflow and business logic) we utilize these APIs in our code has already strongly coupled with the specific services. &lt;/li&gt;
&lt;li&gt;There is only one implementation of each service integration in the long term. &lt;/li&gt;
&lt;li&gt;If we do change a dependency, the business logic will be affected inevitably.&lt;/li&gt;
&lt;li&gt;Good intention practices like this will fail to achieve the very close launch dates, especially requiring changes to everything in our code base. The change will cause days of interruptive merging on multiple engineers' branches and unit test changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am not saying these rejection comments are necessarily correct or conduct best engineering practice. The reality is, a team needs to produce, and we cannot delay the launch. One of the best qualities of software engineering is to take calculated risks, so you have to learn the context.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Read your team's code reviews
&lt;/h2&gt;

&lt;p&gt;Afraid of making mistakes? Just learn from others' problems. You can very quickly figure out the common nit-picking issues, the concerning code structure, and the error handling practices. &lt;/p&gt;

&lt;p&gt;You can also observe good practices as well. Find out who are the best engineers on the team and look at their code. &lt;/p&gt;

&lt;p&gt;I'm not saying that you should follow what others do without critical thinking, but at least understand the dynamics. Don't make the same mistakes that others have made.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Leverage code convention wiki
&lt;/h2&gt;

&lt;p&gt;If your new team already has a code convention wiki, that's amazing. You'll learn fast about what to do and not.&lt;/p&gt;

&lt;p&gt;If your team does not have a code convention wiki, it's time to build one : )&lt;/p&gt;

&lt;p&gt;I like to take notes of things that I learned and put them into a wiki. Remember all the mistakes and adjustments you read in others' code reviews? Document these in a wiki so everyone can learn. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documenting code convention does not give you authority, but it groups you and the others under the same umbrella.&lt;/strong&gt; You are contributing in a non-intrusive way, that always brings allies.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Start with a small code change
&lt;/h2&gt;

&lt;p&gt;Regardless if you are junior or senior engineers, we both know that you want to prove yourself through code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Posting a massive code review does not prove you are a reliable engineer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Presumably, you can write a long piece of functional code without issues. But again, you do not know the norms on the team yet, and the massive amount of code draws a large target for code critics. Your code may not be necessarily wrong, but the nitpicking comments are just noise to slow you down. &lt;/p&gt;

&lt;p&gt;It will become worse when: EngineerA supported your practice a year ago, and now he raises his argument again towards EngineerB for leading opposite practice. Your code review will become a battlefield.&lt;/p&gt;

&lt;p&gt;Nah, please conduct a small change at a time, or break down your code change into smaller pieces. &lt;/p&gt;

&lt;h2&gt;
  
  
  5. Never make the same mistake
&lt;/h2&gt;

&lt;p&gt;Let's say you have 1) read others' code reviews 2) finished the convention wiki 3) received feedbacks on your initial code reviews.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make sure to note down all the mistakes you are aware of and avoid the same mistakes!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For example, in my world, common nitpickings are like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OMG don't ever go over 100 lines for a function!
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;functionA&lt;/span&gt;&lt;span class="o"&gt;(...)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="mi"&gt;21&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="mi"&gt;22&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="o"&gt;..&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="mi"&gt;150&lt;/span&gt;
&lt;span class="mi"&gt;151&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Indentation matters, break your function parameters into multiple lines for readability
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// don't&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;functionB&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;param1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;ServiceA&lt;/span&gt; &lt;span class="n"&gt;param2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;ServiceB&lt;/span&gt; &lt;span class="n"&gt;param3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;ServiceC&lt;/span&gt; &lt;span class="n"&gt;param4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;ServiceD&lt;/span&gt; &lt;span class="n"&gt;param5&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="c1"&gt;// do&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;functionB&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;param1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                        &lt;span class="nc"&gt;ServiceA&lt;/span&gt; &lt;span class="n"&gt;param2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                        &lt;span class="nc"&gt;ServiceB&lt;/span&gt; &lt;span class="n"&gt;param3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                        &lt;span class="nc"&gt;ServiceC&lt;/span&gt; &lt;span class="n"&gt;param4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                        &lt;span class="nc"&gt;ServiceD&lt;/span&gt; &lt;span class="n"&gt;param5&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can avoid nits like these utilizing documentations. Don't make the same common mistake in your code review.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Earn  trust before recommending a design change
&lt;/h2&gt;

&lt;p&gt;Sure, we all have opinions. &lt;/p&gt;

&lt;p&gt;I'd take 4-6 months to fully adjust to a team's coding dynamics before I push for design recommendations. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your opinion matters, but to convince your peers, you have to earn their trust.&lt;/strong&gt; Your team needs enough time to know you before they trust you with a significant code change.&lt;/p&gt;

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

&lt;p&gt;If you forget everything above, take these away: &lt;strong&gt;1) Learn the context, 2) Read the code, 3) Leverage code convention wiki, 4) Small steps, 5) Don't make the same mistake, 6) Earn trust before you thrive.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Happy learning!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>codenewbie</category>
      <category>todayilearned</category>
    </item>
    <item>
      <title>Retrospective on Our Introvert Engineering Personality</title>
      <dc:creator>TuWang</dc:creator>
      <pubDate>Sun, 13 Oct 2019 05:45:20 +0000</pubDate>
      <link>https://dev.to/tuwang/retrospective-on-my-introvert-engineering-personality-6d</link>
      <guid>https://dev.to/tuwang/retrospective-on-my-introvert-engineering-personality-6d</guid>
      <description>&lt;h1&gt;
  
  
  Guilty Charged
&lt;/h1&gt;

&lt;p&gt;It happens all the time on social occasions: a talkative individual is leading the conversation, and I can quietly curl back and watch like a cat. People are friendly most times, so that they won't bother me. They may remember me as a quiet person, not having much to share, and probably just too shy. &lt;strong&gt;Perhaps they think I am on the other side of the fence in the zoo : )&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Stereotype
&lt;/h1&gt;

&lt;p&gt;Lots of engineers like to express them through writing (like what I am doing now), or perhaps through code, diagrams, or flow charts. We spend a tremendous amount of time conducting intellectual tasks quietly, which inevitably builds into &lt;strong&gt;our stereotype, an introvert personality&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Frankly, being quiet on social occasions is a kind of privilege I get nowadays: &lt;strong&gt;there is no expectation&lt;/strong&gt;. It allows my unexpected jokes to crack people up, which is incredible.&lt;/p&gt;

&lt;p&gt;Other times, I dislike engineer stereotypes. It must happen to you before as well. A friend wants to start a conversation, but he has no idea what I am doing as a software engineer. His maximum efforts result in a question: &lt;strong&gt;'what video game do you play now?'&lt;/strong&gt; but he has absolutely zero interest in anything you say in the next second.&lt;/p&gt;

&lt;p&gt;Well, I'm not angry. I get it. I don't talk much when we meet, and you have no clue about engineering, so I must be into games since I am a computer scientist. &lt;/p&gt;

&lt;p&gt;Unfortunately, no games for me anymore. All my engineering friends and I am busy building apps, making your (as an end customer) life slightly better each day.&lt;/p&gt;

&lt;h1&gt;
  
  
  Extrovert Side of US
&lt;/h1&gt;

&lt;p&gt;An introvert personality leads people to imagine that &lt;strong&gt;the quiet person must love video games or live like a cat because he is not confident to face the world.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's all about context.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the right context, engineers love to argue and talk.&lt;/p&gt;

&lt;p&gt;I can talk to you about a new algorithm problem for one hour straight. We can discuss the data structure to pick and the options to solve it, as long as you don't fall asleep in the first 2 minutes.&lt;/p&gt;

&lt;p&gt;Lots of quiet engineers are rather super extrovert when it comes to the right context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;In design reviews, engineers debate around technology, workflow, risk analysis, impact to dependencies, and many other aspects with clear thought.&lt;/strong&gt; We do not back down much in these discussions because we are trying to express the right thing to do in different scenarios. It's especially fascinating to observe multiple relentless senior/principle engineers debate because you can learn so much out of a single meeting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;In coffee chats or lunch breaks, engineers love to pick on the little things they see on the street and reason about &lt;code&gt;how things work?&lt;/code&gt;.&lt;/strong&gt; For a week, I kept telling my friends how much can the taco truck family make in a month, and that's perhaps a lot more than our average salary. Other times, we talk about how practical and possibly how much money do we need to make it to Mars one day. Well, if we can enhance our organs to sustain many more years.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Finally, in writings, engineers are super expressive and have the abilities to put complex engineer spaghettis on paper.&lt;/strong&gt; I admit design documents have less to do with extrovert personalities. Though, frequently, you can discover awesome &amp;amp; crazy ideas through technical documents that blow your mind.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Can We Break out of The Comfort Zone?
&lt;/h1&gt;

&lt;p&gt;I believe the chance is high. It may sound narcissistic, but like it or not, engineers are impacting every corner of the world. We do have a say in many ways, if not too passive through code.&lt;/p&gt;

&lt;p&gt;If you are like me, who does hope to speak to a small group of audience and deliver clear thoughts, perhaps some training is needed. Public speaking is not a straightforward battle. You need to rally with the fear, control the body language, and meanwhile pay attention to the audience's feedback.&lt;/p&gt;

&lt;p&gt;I generally do a few things when I am arranging an important meeting or have to speak in front of an audience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;I am an expert on my subjects&lt;/strong&gt;. If I go fast on speech, none of you could ever catch up, so I will keep it slow to make sure you can follow. That is, imagine the audience is average intelligent who needs guidance. During your show, your audience does not outsmart you in any way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Save these people from their boring conversations&lt;/strong&gt;. When I don't speak, I do pay attention to people's topics. I have a true story in a public accounting firm internship. I was a tech intern, but I still had to stand among a group of interns who were talking about sports at the company event. I knew it from the beginning that none of these nerds care about sports. They perhaps all just worried about what happens next after the internship ends. I needed to do something. I saved these people, literally, from the boring sports/weather conversations by putting in a friendly interruption about movies, ice cream shops, or something. These are interns (I was as well) pretending to be experienced professionals. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Make it not about your self but the group/community&lt;/strong&gt;. Even for a popular character, if all the individual talks about is about her/himself, no one will care over a minute. If you do prepare for a social occasion, bring up topics that are relevant to the group. It's a bonus when you also state your own opinion.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The list can go on. I honestly believe an introvert personality can be our advantage. Calm down and embrace your introvert smart mind 😬&lt;/p&gt;

</description>
      <category>career</category>
      <category>design</category>
      <category>todayilearned</category>
      <category>motivation</category>
    </item>
    <item>
      <title>When Will I Suffer Career Crisis as a Software Engineer?</title>
      <dc:creator>TuWang</dc:creator>
      <pubDate>Thu, 10 Oct 2019 06:32:36 +0000</pubDate>
      <link>https://dev.to/tuwang/when-will-i-suffer-career-crisis-as-a-software-engineer-3kaa</link>
      <guid>https://dev.to/tuwang/when-will-i-suffer-career-crisis-as-a-software-engineer-3kaa</guid>
      <description>&lt;p&gt;(before you read, no need to panic. I write the entire page with a smile on my face because I supply antidote in the end 😛)&lt;/p&gt;

&lt;p&gt;This has been bothering me ever since I picked my computer science major. The fear evolved significantly through my last job: I observed the conservative elders' trying everything to secure a safe retirement.&lt;/p&gt;

&lt;p&gt;I have empathy for them: we humans eventually will all be at the stage where we can not think as fast nor produce as much such that we simply want to stay in comfort.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Admit it or not, being a software engineer, the fear of becoming insufficient is especially severe.&lt;/strong&gt; The question is: when?&lt;/p&gt;

&lt;h1&gt;
  
  
  Problem
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;(part of the fear is caused by the jump from $100k/year to $0, but let's save that topic)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If I were a sufficient 25-year-old software engineer in 1995 working on &lt;code&gt;Windows 95&lt;/code&gt; applications: &lt;strong&gt;by the age of 50 (the year 2020), none of my skills in the early days are relevant today and I am perhaps out of job by now.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You may argue that a software engineer should have adapted to the changes, or he may have already switched to a management role.&lt;/p&gt;

&lt;p&gt;However, embracing changes is a bit against human nature. I believe humans naturally want to be part of a stable environment (i.e. home). Frankly, most jobs do not demand such quality, unlike software engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you are not adaptive and still choose to stay as a software engineer, you are doomed to face a career crisis but unfortunately much earlier than anticipated&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  History
&lt;/h1&gt;

&lt;p&gt;By design, software engineering is ever-changing. It is a sophisticated line of career since its creation, demanding a dedicated mind to solve programming puzzles. &lt;/p&gt;

&lt;p&gt;Despite our pride in being an engineer, software engineering has only 70-80 years of history since the first digital computer appeared in the early 1940s. Personally, my narrow definition of &lt;strong&gt;modern software&lt;/strong&gt; (that I ever touched first as a child) has only 25 years of history since the &lt;code&gt;Microsoft Windows 95&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Regardless of perspectives, none of the software created in the 40's or 90's matters anymore today. &lt;strong&gt;Software development boosts throughout human history and we, software engineers, are on the edge of being the history.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;10 years ago in 2009, &lt;code&gt;AngularJS&lt;/code&gt; was just appearing alone with &lt;code&gt;NodeJS&lt;/code&gt;, when &lt;code&gt;React&lt;/code&gt; was not even a thing. Now &lt;code&gt;React&lt;/code&gt; has already taken over the world, while the sexy &lt;code&gt;graphql&lt;/code&gt; is trending over &lt;code&gt;rest&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Take a breath if you are a backend software engineer who loves working in the comfort backyard supporting Java/Tomcat web apps: the last 10 years must be a roller coaster for you.&lt;/p&gt;

&lt;p&gt;Take another breath if you are a new grad. The familiar tech stack that led you into computer science may no longer be trending in the industry. Surprise!? Welcome to the golden era of software engineering.&lt;/p&gt;

&lt;h1&gt;
  
  
  When and How?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;The career crisis will happen much earlier than your age agrees, if you: 1) stay as a software engineer, 2) stop learning new tricks.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My grandmother worked for many years as a mechanical engineer at a car factory until she retired. Fortunately, she didn't face drastic technology turbulence in her career. My parents has been in construction engineering business through their career. Their tools have been getting better, fortunately, they didn't need to adapt to drastic product change neither. Oddly, despite how much more prepared academically, I am the first generation in the family to experience a career full of changes.&lt;/p&gt;

&lt;p&gt;My generation of (software) engineers are facing extraordinary challenges: when we stop changing, unlike our predecessors we will fail miserably.&lt;/p&gt;

&lt;p&gt;It will take 6-12 months to be completely left-behind by front-end tech stack, and perhaps 12-24 months to be out of sync with what modern backend tech stack offers.&lt;/p&gt;

&lt;h1&gt;
  
  
  Action?
&lt;/h1&gt;

&lt;h4&gt;
  
  
  A. Being adaptive
&lt;/h4&gt;

&lt;p&gt;It is trivial but time-consuming to do. It does not matter how hard we try, our current skills inevitably are becoming irrelevant.&lt;/p&gt;

&lt;p&gt;How to keep up? Beat the cycle as much as possible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;frontend engineer: perhaps try to set up personal retrospective sessions to go over front-end technology on monthly basis. Check out what's new out there and do a POC once a while.&lt;/li&gt;
&lt;li&gt;backend engineer: in my opinion, the changes in backend technology is relatively less, but when it happens it's usually evolutionary. Think out of the box for once: look into &lt;code&gt;Node&lt;/code&gt; if you are &lt;code&gt;Java&lt;/code&gt; only before; look into &lt;code&gt;serverless&lt;/code&gt; if you are &lt;code&gt;server&lt;/code&gt; only previously.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With regular retrospectives, I sometimes find myself appreciating new stuff much easier than if I were forced to learn new tricks for a job.&lt;/p&gt;

&lt;h4&gt;
  
  
  B. Drop it
&lt;/h4&gt;

&lt;p&gt;There is always a PlanB.&lt;/p&gt;

&lt;p&gt;A dramatic twist in the career may not be all that bad. You can switch to non-tech roles: people manager, product manager or some role completely different. Hopefully, you will finally realize how much you love the new role over software engineering :)&lt;/p&gt;

&lt;p&gt;I have not switched roles before so I can't comment on how great any direction might be. One thing that I believe: &lt;strong&gt;do it if you genuinely like it, but don't do it because you are just running away from other problems.&lt;/strong&gt; (same applies to a new relationship)&lt;/p&gt;

&lt;h1&gt;
  
  
  Last Two Cents
&lt;/h1&gt;

&lt;p&gt;If you can, experience a career crisis early on, hopefully, a small piece at a time so that you can calibrate your life around it. &lt;/p&gt;

&lt;p&gt;Don't wait till 2020 to find out you and &lt;code&gt;Window 95&lt;/code&gt; are both histories.&lt;/p&gt;

</description>
      <category>challenge</category>
      <category>beginners</category>
      <category>jokes</category>
      <category>career</category>
    </item>
  </channel>
</rss>
