<?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>Forem: Nick Karnik</title>
    <description>The latest articles on Forem by Nick Karnik (@theoutlander).</description>
    <link>https://forem.com/theoutlander</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%2F37793%2F1fefba87-53b9-4c37-94fd-d29f7426b1b0.jpeg</url>
      <title>Forem: Nick Karnik</title>
      <link>https://forem.com/theoutlander</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/theoutlander"/>
    <language>en</language>
    <item>
      <title>What is the career track at your job?</title>
      <dc:creator>Nick Karnik</dc:creator>
      <pubDate>Fri, 23 Aug 2019 18:42:53 +0000</pubDate>
      <link>https://forem.com/theoutlander/what-is-the-career-track-at-your-job-3l5b</link>
      <guid>https://forem.com/theoutlander/what-is-the-career-track-at-your-job-3l5b</guid>
      <description>&lt;p&gt;I read an interesting article about &lt;a href="https://jasonoh.org/2018/08/31/Designing-Engineering-Culture-Shutterstock.html" rel="noopener noreferrer"&gt;Engineering Culture at Shutterstock&lt;/a&gt; and the illustration of IC vs Management Career Tracks made me think about how inconsistent it is across the industry. &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%2Fjasonoh.org%2Fassets%2Fimg%2Fposts%2Fcareertracks.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%2Fjasonoh.org%2Fassets%2Fimg%2Fposts%2Fcareertracks.png" alt=" IC vs Management Career Tracks"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've found &lt;a href="http://levels.fyi" rel="noopener noreferrer"&gt;Levels.fyi&lt;/a&gt; to be helpful at shedding some light on the parity of these levels across organizations.&lt;/p&gt;

&lt;p&gt;I am curious about what the career track looks like at your job.&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Which qualities were exhibited by good managers you've had?</title>
      <dc:creator>Nick Karnik</dc:creator>
      <pubDate>Sun, 11 Nov 2018 06:19:29 +0000</pubDate>
      <link>https://forem.com/theoutlander/which-qualities-were-exhibited-by-good-managers-youve-had-3mi8</link>
      <guid>https://forem.com/theoutlander/which-qualities-were-exhibited-by-good-managers-youve-had-3mi8</guid>
      <description>&lt;p&gt;It should not be surprising that most people have had more bad managers than good ones. Have you ever had a manager that you considered good? What did this manager do that you found good?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Looking back, here are some of the qualities exhibited by good managers I've had:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;They were Subject Matter Experts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Showed compassion &amp;amp; empathy and were down to earth&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Treated me like a friend&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mentored and encouraged me to push myself&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stood up for me&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provided honest feedback&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allowed me to be autonomous and did not micro-manage&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Helped me when I was stuck &amp;amp; amplified my strengths&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Treated every individual's failure as a failure of the team as a whole&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Publicly praised and privately criticized&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>management</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How I Lost My Consulting Job</title>
      <dc:creator>Nick Karnik</dc:creator>
      <pubDate>Sat, 27 Oct 2018 00:32:59 +0000</pubDate>
      <link>https://forem.com/theoutlander/how-i-lost-my-consulting-job-38da</link>
      <guid>https://forem.com/theoutlander/how-i-lost-my-consulting-job-38da</guid>
      <description>&lt;p&gt;For the past 9 months, I've worked as an independent consultant on gigs that were mostly a few hours long to maybe a couple of weeks. Two months ago, I came across a client providing a service set to disrupt their industry. They were funded in excess of &lt;strong&gt;$100 Million&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Landing a stable gig is every independent consultant's dream!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before I took the gig, the Head of Engineering emphasized two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You can work as much as you want. 50 hours, 100 hours, no problem! We have a lot of work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We want you to know that if you would like to go full-time, the option is on the table.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This prospect was better than others I was about to land because it was a well-funded company with lots of work and going full-time was an option in case I wanted to explore that. &lt;/p&gt;

&lt;p&gt;I thought to myself, 50 hours sounds great because I would like to clear some debt and fix some things around the house before our fourth baby arrives. In addition, I wouldn't have to keep looking for work at least for a few months. My family depended on the income from it.&lt;/p&gt;

&lt;p&gt;After I signed my contract, I decided to reject a couple of standing offers for long-term gigs. My first week into this job, I was barely able to clock in ten hours of work. I thought maybe this was because both of us needed time to ramp up. The next week, it was ten hours again. Instead of letting that bother me, I decided to enjoy the reduced work hours. &lt;/p&gt;

&lt;p&gt;Then, the following week, I barely got to 18 hours. I was told to start mocking up the UI and backend because the backend API's were not ready yet. I mentioned that I was a full-stack engineer and I could work the entire stack, but that was ignored for some reason. In addition, working on their other applications wasn't an option because they wanted me to focus on one.&lt;/p&gt;

&lt;p&gt;I was working on a production app, mocking up functionality where parts of the data came in from the production backend and parts from the mock server. Updates were split similarly. This was one of the most convoluted React projects that I've worked on. It used a plethora of React/Redux plugins (very old versions of dependencies that couldn't be upgraded easily) which didn't improve productivity or add value.&lt;/p&gt;

&lt;p&gt;All along I was thinking, does $100 million afford a company the ability to be careless with their project? Nothing the application did was groundbreaking. It was clear that the money was raised for marketing.&lt;/p&gt;

&lt;p&gt;Somewhere along the line, they assigned a project lead who would ensure my plate was always full. Unfortunately, that person was bound by other constraints and was not able to accomplish that goal. We ended up doing a little bit of pair-programming once in a while which got me another ten hours.&lt;/p&gt;

&lt;p&gt;Throughout the project, I was asked if I would like to go full-time. So, I finally had that conversation and during that time also mentioned that I was running out of work-items and I hadn't even crossed 20 hours a week.&lt;/p&gt;

&lt;p&gt;Fast forward a week, I was sitting idle for a couple of days, so I decided that it was a good time to follow up on our conversation. I was told that there was no more work because the backend API's would not be ready for several weeks and that they wouldn't consider me for full-time work unless I relocated. &lt;/p&gt;

&lt;p&gt;This was unexpected considering the initial conversation. Relocation during the middle of a school year is not an option, let alone with a baby on the way!&lt;/p&gt;

&lt;p&gt;What I found really disturbing was the lack of empathy. For the past seven weeks, I mentioned I didn't have enough work and that my family depended on the income from that job, but nothing changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A contract doesn't guarantee full-time work!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anyway, I'm glad that I was able to anticipate this scenario and proactively managed to schedule interviews with the Big Four and a handful of smaller companies. Even though I've been in the industry for so long, I still have to study before interviews, so I'm hoping to be interview ready in the next week.&lt;/p&gt;

&lt;p&gt;Over the past two years, I traveled with my wife and three kids for a year through Asia and Europe while I worked on a startup and later worked as a CTO for a couple of companies before deciding to do independent consulting and teaching. &lt;/p&gt;

&lt;p&gt;Having worked with close to 200 clients has given me such an incredible experience about the ups and downs of independent consulting. Nevertheless, I feel that I'm ready to go back to work at a stable company. This is something I took for granted and quit two dream jobs in the past. &lt;/p&gt;

&lt;p&gt;Regardless of the sequence of events, I am glad that I've tried the things I've felt passionate about. It is evident that I couldn't do that without my wife who supported me in all my decisions. &lt;/p&gt;

&lt;p&gt;I've tried to strike a balance between responsibility and following my dreams.  Detaching yourself from elements you take for granted makes you appreciate them even more. Events like these are a good learning lesson in case you are complacent.&lt;/p&gt;




</description>
      <category>beginners</category>
      <category>career</category>
      <category>consulting</category>
      <category>job</category>
    </item>
    <item>
      <title>Changelog: Updates to the comment box</title>
      <dc:creator>Nick Karnik</dc:creator>
      <pubDate>Sun, 21 Oct 2018 00:31:37 +0000</pubDate>
      <link>https://forem.com/theoutlander/changelog-updates-to-the-comment-box-3f04</link>
      <guid>https://forem.com/theoutlander/changelog-updates-to-the-comment-box-3f04</guid>
      <description>&lt;p&gt;Hello DEVs! A few hotkeys are now supported in the comment box. All the commands will accept &lt;strong&gt;Ctrl&lt;/strong&gt; or &lt;strong&gt;Cmd&lt;/strong&gt; as the control key. Also, the character following the control key is case insensitive.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6knw1tdF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/r9bu3vudrnhxikn40yuo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6knw1tdF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/r9bu3vudrnhxikn40yuo.gif" alt="demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Bold&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;You can simply highlight text and press &lt;strong&gt;Ctrl+B&lt;/strong&gt; or &lt;strong&gt;Cmd+B&lt;/strong&gt; to make the text bold.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;em&gt;Italic&lt;/em&gt;
&lt;/h1&gt;

&lt;p&gt;Similarly, you can highlight a word and press &lt;strong&gt;Ctrl+I&lt;/strong&gt; or &lt;strong&gt;Cmd+I&lt;/strong&gt; to turn the text into italics.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://dev.to/p/editor_guide"&gt;Link&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Pressing &lt;strong&gt;Ctrl+K&lt;/strong&gt; or &lt;strong&gt;Cmd+K&lt;/strong&gt; will surround the highlighted text with a link tag and place the cursor on the location where you need to type in the URL. Make sure to prefix it with &lt;strong&gt;http(s)://&lt;/strong&gt; or it turns it into a URL relative to dev.to. &lt;/p&gt;

&lt;h1&gt;
  
  
  Hotkey to Submit
&lt;/h1&gt;

&lt;p&gt;You can press &lt;strong&gt;Ctrl+Enter&lt;/strong&gt; or &lt;strong&gt;Cmd+Enter&lt;/strong&gt; to submit your comment instead of having to click on the submit button.&lt;/p&gt;




&lt;p&gt;I was thinking about adding a hotkey for the image tag, but I'm not sure if there's a universally preferred key combination for it? Please let me know your thoughts in the comments.&lt;/p&gt;

&lt;p&gt;You are also welcome to make feature requests or file bugs on the &lt;a href="http://github.com/thepracticaldev/dev.to/issues/"&gt;Issue Tracker&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IE 8,9,10,11 are not supported.&lt;/li&gt;
&lt;li&gt;After using a hotkey in the comment box, the undo functionality in FireFox is a bit flaky. If FF doesn't fix that issue in subsequent releases, we may need to consider integrating a custom history tracker.&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>meta</category>
      <category>changelog</category>
    </item>
    <item>
      <title>Protected Routes in React using React Router</title>
      <dc:creator>Nick Karnik</dc:creator>
      <pubDate>Tue, 16 Oct 2018 02:29:15 +0000</pubDate>
      <link>https://forem.com/theoutlander/protected-routes-in-react-using-react-router-5ghj</link>
      <guid>https://forem.com/theoutlander/protected-routes-in-react-using-react-router-5ghj</guid>
      <description>&lt;p&gt;In this video, we will learn to create a protected route using React Router. This route is accessible only when the user is logged in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codesandbox.io/s/ol6z72kjy9"&gt;Link to CodeSandbox&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=Gp2KAqNvOFQ"&gt;Link to Video on Youtube&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;
  
  
  If this video was helpful, ❤️ it and &lt;a href="https://www.youtube.com/channel/UClCm-WAOgN6XLwCpefSVezg?sub_confirmation=1"&gt;subscribe to my YouTube channel&lt;/a&gt;.
&lt;/h4&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/theoutlander/react-component-lifecycle-explained-3koh" class="video-image"&gt;
    &lt;span class="video-timestamp"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pl4ssD2Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/video-camera-9a2eda0979fd9ce3933037481ee8828557b6c7f5533e1de458b8c2648a60b097.svg" alt="video camera" width="491" height="491"&gt;
      25:38&lt;/span&gt;
  &lt;/a&gt;
  &lt;a href="/theoutlander" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fuBMeqCJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--ra5gqz7V--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/37793/1fefba87-53b9-4c37-94fd-d29f7426b1b0.jpeg" alt="theoutlander"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/theoutlander/react-component-lifecycle-explained-3koh" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;React Component Lifecycle Explained&lt;/h2&gt;
      &lt;h3&gt;Nick Karnik ・ Aug 14 '18 ・ 1 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#video&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;





</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>video</category>
    </item>
    <item>
      <title>Does your employer pay for your health insurance in the US? 🏥</title>
      <dc:creator>Nick Karnik</dc:creator>
      <pubDate>Sun, 14 Oct 2018 07:24:10 +0000</pubDate>
      <link>https://forem.com/theoutlander/does-your-employer-pay-for-your-health-insurance--5400</link>
      <guid>https://forem.com/theoutlander/does-your-employer-pay-for-your-health-insurance--5400</guid>
      <description>&lt;p&gt;Most of us in the US who are in the software profession are &lt;strong&gt;lucky&lt;/strong&gt; because employers provide health insurance plans and other benefits.&lt;/p&gt;

&lt;p&gt;On the other hand, it is quite difficult if you plan on doing a full-time startup or are self-employed. &lt;/p&gt;

&lt;p&gt;Being an independent consultant, I get my own health insurance. It costs me $2150/mo for a decent family plan (luckily we're all healthy!). Since my wife is pregnant, we end up paying another ~$1000/mo for additional costs after doctors visits. All this is before the 30% tax!&lt;/p&gt;

&lt;p&gt;It's hard to imagine how people in other professions without employer-provided insurance manage to afford decent insurance or those who are disabled and don't qualify for full government benefits. This is probably way more difficult for single mothers when they're pregnant.&lt;/p&gt;

&lt;p&gt;I hope that through our collective effort in knowledge sharing on dev.to we are able to help more people make a better life for themselves, their families and communities. This potential to make a difference is remarkable.&lt;/p&gt;

&lt;p&gt;Does your employer pay for your health insurance in the US?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>healthinsurance</category>
      <category>benefits</category>
      <category>usa</category>
    </item>
    <item>
      <title>Did you know that Oracle owns the trademark to Javascript?</title>
      <dc:creator>Nick Karnik</dc:creator>
      <pubDate>Thu, 04 Oct 2018 05:00:21 +0000</pubDate>
      <link>https://forem.com/theoutlander/oracle-owns-the-trademark-to-javascript-1fil</link>
      <guid>https://forem.com/theoutlander/oracle-owns-the-trademark-to-javascript-1fil</guid>
      <description>&lt;p&gt;I have used Javascript for over 20 years, but I was unaware that &lt;a href="http://tsdr.uspto.gov/#caseNumber=75026640&amp;amp;caseType=SERIAL_NO&amp;amp;searchType=statusSearch" rel="noopener noreferrer"&gt;Oracle owned the trademark to Javascript&lt;/a&gt;. If anything, I would have guessed that Mozilla owned it.&lt;/p&gt;

&lt;p&gt;Oracle inherited the trademark after they bought Sun Microsystems (I didn't even know Sun had trademarked Javascript!). &lt;/p&gt;

&lt;p&gt;I came across a Reddit post where &lt;a href="https://www.reddit.com/r/javascript/comments/8d0bg2/oracle_owns_javascript_so_apple_is_taking_down_my/" rel="noopener noreferrer"&gt;Apple took down an App&lt;/a&gt; because the AppStore displayed the word JAVASCRIPT without authorization from Oracle.&lt;/p&gt;

&lt;p&gt;I wonder if they will continue to enforce it in the future given that it is such a ubiquitous term. Many have suggested that we should refer to it as ES going forward and call it a day. I'm not sure how I feel about that.&lt;/p&gt;

&lt;p&gt;Did you know about this? What are your thoughts?&lt;/p&gt;





&lt;div class="ltag__link"&gt;
  &lt;a href="/theoutlander" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F37793%2F1fefba87-53b9-4c37-94fd-d29f7426b1b0.jpeg" alt="theoutlander"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/theoutlander/how-to-improve-your-debugging-skills-3j5p" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to Improve Your Debugging Skills&lt;/h2&gt;
      &lt;h3&gt;Nick Karnik ・ Oct 1 '18&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#computerscience&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#debugging&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>discuss</category>
      <category>javascript</category>
      <category>history</category>
    </item>
    <item>
      <title>How to Improve Your Debugging Skills</title>
      <dc:creator>Nick Karnik</dc:creator>
      <pubDate>Mon, 01 Oct 2018 09:22:30 +0000</pubDate>
      <link>https://forem.com/theoutlander/how-to-improve-your-debugging-skills-3j5p</link>
      <guid>https://forem.com/theoutlander/how-to-improve-your-debugging-skills-3j5p</guid>
      <description>&lt;p&gt;All of us write code that breaks at some point. That is part of the development process. When you run into an error, you may feel that you don't know what to do. However, even the most seasoned developers introduce errors and bugs that break their code. We are humans after all. &lt;/p&gt;

&lt;p&gt;The important thing is to learn from these mistakes and avoid repeating them by developing techniques to improve your programming and debugging skills. Errors are primarily logical or syntactical. Some of them manifest via exceptions or crashes while others may only be observed when using the software.&lt;/p&gt;

&lt;p&gt;Here are some of the mistakes that developers make.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure to Log Messages
&lt;/h2&gt;

&lt;p&gt;One of the most unhelpful scenarios you can run into is when your program crashes and there are no error messages to indicate what went wrong. The first step is to identify if the program is crashing on start or during runtime. You can accomplish this by printing a simple log message to the terminal at the beginning of your code.&lt;/p&gt;

&lt;p&gt;If you don't see your log message, your program is most likely crashing while loading and it is possibly a dependency or build related issue.&lt;/p&gt;

&lt;p&gt;If you see your message, you need to narrow down to the general vicinity of the crash. The best way is to strategically place some log messages throughout your program depending upon how much information you have about the execution path by the time it crashes. Then, all you have to do is see which messages are printed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to Read Error Messages
&lt;/h2&gt;

&lt;p&gt;Exception messages on the front-end are usually displayed on the UI or developer console. Sometimes these messages are visible in the backend through the terminal or via log files. Regardless of where these errors occur, new developers are intimidated by them and fail to take the time to read them.&lt;/p&gt;

&lt;p&gt;This is the number one reason why debugging takes longer for many developers.  The first thing you should do is take the time to read the error message in front of you, let it sink in, and process it thoroughly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to Read System Log Files
&lt;/h2&gt;

&lt;p&gt;Some programs generate log files or write to the system event log. There is often useful information in these logs. Even if it doesn't tell you exactly what is wrong, there might be a warning or error message or even a success message providing a hint about what happened before the error occurred.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to Write Trace Logs
&lt;/h2&gt;

&lt;p&gt;Tracing is following your program flow and data. Writing trace messages throughout your program helps simplify the debugging process. Trace Logs are an easy way to keep track of program execution throughout the runtime of your application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to Make Incremental Changes, Build Them, and Test Them
&lt;/h2&gt;

&lt;p&gt;Many developers write big chunks of code before building and testing it. The time to find bugs increases proportional to the amount of code that was changed. You should strive to make incremental changes, build them, and test them as frequently as possible. This will ensure that you don't end up in a situation where a lot of code was written before you discover your program doesn't work.&lt;/p&gt;

&lt;p&gt;Often, I will even refactor my code to simplify what I've written.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to Write Test Automation
&lt;/h2&gt;

&lt;p&gt;Unit-tests and end-to-end test automation allow you to catch potential errors as they happen. One of the reasons why existing code breaks is that developers refactor their code when they have low test coverage which means all changes are not tested automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to Use the Method of Elimination
&lt;/h2&gt;

&lt;p&gt;If you're unable to identify the root cause of your issue, you need to use the method of elimination. You can comment out new blocks of code to see if the errors stop. Eliminating blocks of code will help you get closer to diagnosing the issue.&lt;/p&gt;

&lt;p&gt;You can form a certain hypothesis and try to prove or disprove it. Many times a simple assumption can prevent you from finding bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Copying and Pasting from StackOverflow
&lt;/h2&gt;

&lt;p&gt;Often developers copy and paste code from stack overflow without understanding what it does. This has so many adverse effects. First, it is important that you pay attention to what goes into your application.&lt;/p&gt;

&lt;p&gt;More often than I'd like, when I write a question on StackOverflow and think about how to effectively articulate it, I end up answering my own question!&lt;/p&gt;

&lt;p&gt;Similarly, sometimes when I talk to other members of the team, I end up answering my own question. This happens because it forces you to think about your solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to Solve their Problem Again
&lt;/h2&gt;

&lt;p&gt;One of the most successful debugging techniques I have found is to try to walk through your solution over and over again and in some cases try to re-implement certain functionality from scratch. This forces you to find potential issues by recreating your implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to Backtrack
&lt;/h2&gt;

&lt;p&gt;Normally, if you can isolate the symptoms to a specific area, you can start to walk up the call-stack to verify all variables and expected values. This can quickly lead you to uncover parts of your program where things are behaving unexpectedly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failing to Learn the Debugger
&lt;/h2&gt;

&lt;p&gt;Finally, the single best investment you can make in yourself is to learn to use a debugger. All IDE's come with powerful debuggers. They follow the same basic concepts. They allow you to programmatically stop the execution of your application, either on start or in a specific part of the program flow.&lt;/p&gt;

&lt;p&gt;There are also a ton of debugging tools that can aid in this process.&lt;/p&gt;




&lt;p&gt;If this article was helpful, ❤️ it and &lt;a href="https://twitter.com/intent/follow?screen_name=theoutlander"&gt;follow me on Twitter&lt;/a&gt;.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/theoutlander" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fuBMeqCJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--ra5gqz7V--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/37793/1fefba87-53b9-4c37-94fd-d29f7426b1b0.jpeg" alt="theoutlander"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/theoutlander/how-to-improve-your-development-experience-ldl" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to Improve Your Development Experience&lt;/h2&gt;
      &lt;h3&gt;Nick Karnik ・ Sep 22 '18 ・ 5 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#career&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#development&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>beginners</category>
      <category>computerscience</category>
      <category>programming</category>
      <category>debugging</category>
    </item>
    <item>
      <title>Implementing the Queue Data Structure in Javascript</title>
      <dc:creator>Nick Karnik</dc:creator>
      <pubDate>Thu, 27 Sep 2018 04:52:23 +0000</pubDate>
      <link>https://forem.com/theoutlander/implementing-the-queue-data-structure-in-javascript-21pa</link>
      <guid>https://forem.com/theoutlander/implementing-the-queue-data-structure-in-javascript-21pa</guid>
      <description>&lt;p&gt;In this video, we are implementing the Queue Data Structure in Javascript. While a JavaScript Array can be used as a queue, this video is meant for educational purposes as we will go into more complex data structures in the future.&lt;/p&gt;

&lt;p&gt;A queue is a simple linear data structure which is a container of objects that are inserted and removed according to the first in and first out principle. Elements can be enqueued from the back and dequeued only from the front.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/VnjBI3Zfxyc" rel="noopener noreferrer"&gt;Link to YouTube Video&lt;/a&gt;&lt;br&gt;
&lt;a href="https://codesandbox.io/s/5zk0zjqmx?module=%2Fsrc%2Findex.js" rel="noopener noreferrer"&gt;Link to the CodeSandbox&lt;/a&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Flkgf80jmtry868zwknri.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Flkgf80jmtry868zwknri.png" alt="Queue Data Structure"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;
  
  
  If this video was helpful, ❤️ it and &lt;a href="https://www.youtube.com/channel/UClCm-WAOgN6XLwCpefSVezg?sub_confirmation=1" rel="noopener noreferrer"&gt;subscribe to my YouTube channel&lt;/a&gt;.
&lt;/h4&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/theoutlander" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F37793%2F1fefba87-53b9-4c37-94fd-d29f7426b1b0.jpeg" alt="theoutlander"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/theoutlander/how-to-improve-your-development-experience-ldl" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to Improve Your Development Experience&lt;/h2&gt;
      &lt;h3&gt;Nick Karnik ・ Sep 22 '18&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#career&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#development&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>javascript</category>
      <category>computerscience</category>
      <category>datastructures</category>
      <category>video</category>
    </item>
    <item>
      <title>Implementing the Stack Data Structure in Javascript</title>
      <dc:creator>Nick Karnik</dc:creator>
      <pubDate>Mon, 24 Sep 2018 09:35:38 +0000</pubDate>
      <link>https://forem.com/theoutlander/implementing-the-stack-data-structure-in-javascript-4164</link>
      <guid>https://forem.com/theoutlander/implementing-the-stack-data-structure-in-javascript-4164</guid>
      <description>&lt;p&gt;In this video, we are implementing the Stack Data Structure in Javascript. While JavaScript Arrays can be used as a stack, this video is meant for educational purposes as we will go into more complex data structures in the future. &lt;/p&gt;

&lt;p&gt;A stack is a simple data structure which is a container of objects that are inserted and removed according to the last in and first out principle. Elements can be added and removed only from the top.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=mnz05qPYzxo" rel="noopener noreferrer"&gt;Link to YouTube Video&lt;/a&gt;&lt;br&gt;
&lt;a href="https://codesandbox.io/s/pkl6pw3mo0?module=%2Fsrc%2Findex.js" rel="noopener noreferrer"&gt;Link to the CodeSandbox&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fxizaxr0ayfu1lqxe7i3u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fxizaxr0ayfu1lqxe7i3u.png" alt="Stack Data Structure" width="800" height="618"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;
  
  
  If this video was helpful, ❤️ it and &lt;a href="https://www.youtube.com/channel/UClCm-WAOgN6XLwCpefSVezg?sub_confirmation=1" rel="noopener noreferrer"&gt;subscribe to my YouTube channel&lt;/a&gt;.
&lt;/h4&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/theoutlander" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F37793%2F1fefba87-53b9-4c37-94fd-d29f7426b1b0.jpeg" alt="theoutlander"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/theoutlander/how-to-improve-your-development-experience-ldl" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to Improve Your Development Experience&lt;/h2&gt;
      &lt;h3&gt;Nick Karnik ・ Sep 22 '18&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#career&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#development&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>javascript</category>
      <category>computerscience</category>
      <category>datastructures</category>
      <category>video</category>
    </item>
    <item>
      <title>How can you swap two variables without using a third?</title>
      <dc:creator>Nick Karnik</dc:creator>
      <pubDate>Mon, 24 Sep 2018 00:21:05 +0000</pubDate>
      <link>https://forem.com/theoutlander/how-can-you-swap-two-variables-without-using-a-third-2f30</link>
      <guid>https://forem.com/theoutlander/how-can-you-swap-two-variables-without-using-a-third-2f30</guid>
      <description>&lt;p&gt;&lt;em&gt;Moore's law is just an observation and not a real law like the Law of Gravity.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Over the years, developers have taken the increasing CPU speeds and Memory sizes for granted. Here's a warm-up interview question that I ask every candidate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's assume the working memory for your function is 8-Bytes. You are given two 32-Bit Integers and you need to swap them. In other words, how can you swap two variables without using a third?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Please take your time to solve this and refrain from looking up solutions online or for answers below. This is your first step in becoming a Computer Scientist!&lt;/p&gt;




&lt;center&gt;If you accepted this challenge, ❤️ it and [follow me on Twitter](https://twitter.com/intent/follow?screen_name=theoutlander).&lt;/center&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/theoutlander" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F37793%2F1fefba87-53b9-4c37-94fd-d29f7426b1b0.jpeg" alt="theoutlander"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/theoutlander/how-to-improve-your-debugging-skills-3j5p" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to Improve Your Debugging Skills&lt;/h2&gt;
      &lt;h3&gt;Nick Karnik ・ Oct 1 '18&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#computerscience&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#debugging&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>challenge</category>
      <category>computerscience</category>
      <category>interview</category>
      <category>memory</category>
    </item>
    <item>
      <title>How to Improve Your Development Experience</title>
      <dc:creator>Nick Karnik</dc:creator>
      <pubDate>Sat, 22 Sep 2018 07:31:14 +0000</pubDate>
      <link>https://forem.com/theoutlander/how-to-improve-your-development-experience-ldl</link>
      <guid>https://forem.com/theoutlander/how-to-improve-your-development-experience-ldl</guid>
      <description>&lt;p&gt;To become a faster developer, you need to think beyond coding speed. You need to improve not only your core skills but also the physical environment, tooling and your approach to problem-solving.&lt;/p&gt;

&lt;p&gt;If you are just starting out, don't get bogged down by the details. I have an elaborate setup because I work from home and I have been programming for over 25 years! &lt;/p&gt;

&lt;p&gt;You will build expertise over time and fine-tune what works best for you. I am sharing what worked for me.&lt;/p&gt;

&lt;h2&gt;
  
  
  A comfortable environment
&lt;/h2&gt;

&lt;p&gt;I cannot stress enough on how important a good sized desk is. You need enough space for your machine(s) and ample room to doodle. Make sure you can place a notepad, tablet, lamp, etc. and still have room to work comfortably.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WiYL3AaH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/71O6qyv3sAL._SL1500_.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WiYL3AaH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/71O6qyv3sAL._SL1500_.jpg" alt="Bush Business Furniture Series C 72W x 30D Office Desk in Mocha Cherry" width="880" height="500"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;a href="https://www.amazon.com/Bush-Business-Furniture-Office-Hansen/dp/B000W8JLD2/"&gt;Bush Business Furniture Series C 72W x 30D Office Desk in Mocha Cherry&lt;/a&gt;



&lt;p&gt;What goes along with this is a super comfortable chair with armrests. I would highly recommend getting a headrest. If you’re going to spend 10–20 hours a day coding, you need a good chair. Even simple things matter such as how the armrest can adjust or where the neck support is placed, etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bPHwoDvR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/41Z9O6qq2qL.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bPHwoDvR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/41Z9O6qq2qL.jpg" alt="Steelcase Leap v2 Chair" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;a href="https://store.steelcase.com/seating/office-chairs/leap"&gt;Steelcase Leap v2&lt;/a&gt;



&lt;h2&gt;
  
  
  Find the right hardware
&lt;/h2&gt;

&lt;p&gt;It is important to work on a fast development machine so you aren’t waiting too long for your code to compile or application to render. The same goes for a good keyboard, mouse, and monitor. These things can add to the fatigue. I remember when working with Java 1.0, my research project took about six months to implement and I literally spent 3 months out of those waiting for the code to compile.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---A1wuUuD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.duckychannel.com.tw/page-en/ducky-shine-5/img/ducky_shine_5_30.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---A1wuUuD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.duckychannel.com.tw/page-en/ducky-shine-5/img/ducky_shine_5_30.jpg" alt="Ducky Shine 5" width="478" height="314"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;a href="https://www.duckychannel.com.tw/page-en/ducky-shine-5/"&gt;Ducky Shine 5&lt;/a&gt;



&lt;p&gt;A multi-monitor setup is extremely important. I use a 43″ 4K monitor as my primary monitor and two 24″ HD monitors on either side. This works perfectly for most of the complex applications. The reason is that you need enough real-estate to get a good overview of things like the code editor, debugger for services, debugger for UI, browser, email, stackoverflow/forums, dashboards, SSH sessions, Spotify, dev.to :), etc. Using a laptop is fine, but I find that I am very efficient when I see everything at once and don't have to constantly switch between windows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NsMksVT---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.lg.com/us/images/monitors/md05832389/gallery/medium02.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NsMksVT---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.lg.com/us/images/monitors/md05832389/gallery/medium02.jpg" alt="4K monitor" width="880" height="580"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;a href="https://www.lg.com/us/monitors/lg-43UD79-B-4k-uhd-led-monitor"&gt;43" 4K UHD Monitor&lt;/a&gt;



&lt;h2&gt;
  
  
  Pick the right programming language
&lt;/h2&gt;

&lt;p&gt;Regardless of what it is you’re working on, make sure to pick a language that has great tooling around it and community support. For example, Javascript, Python, and Ruby are common choices these days for most projects. I love working with C++ and C#, but there has to be a good reason to choose a compiled language.&lt;/p&gt;

&lt;h2&gt;
  
  
  Find the right tools
&lt;/h2&gt;

&lt;p&gt;Back in the days, it was probably acceptable to use a text editor, but it is definitely not productive now. You need to find the right software tools. You need a very good Integrated Development Environment (IDE) since this is where you spend most of your time. You need to find something that allows you to stay within that environment. Some good choices are Visual Studio Code, Webstorm, Pycharm, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn the core Computer Science theories &amp;amp; concepts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Data Structures&lt;/li&gt;
&lt;li&gt;Algorithms&lt;/li&gt;
&lt;li&gt;Design Patterns&lt;/li&gt;
&lt;li&gt;Math&lt;/li&gt;
&lt;li&gt;Problem Solving&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find tutorials online for all of the above on YouTube, Udemy, Coursera, Udacity, etc. You should also go beyond just learning theory. Start coding these algorithms &amp;amp; data structures as it will help you improve your understanding of how things work and help you learn good coding practices.&lt;/p&gt;

&lt;p&gt;Think of ideas to work on to solve your own problems and use those to hone your skills. This is a powerful combination and it helps keep you motivated.&lt;/p&gt;

&lt;h2&gt;
  
  
  High-level thinking / Architecture
&lt;/h2&gt;

&lt;p&gt;You need to go beyond writing code to thinking in abstract terms. Think of breaking down the problem into big boxes with lines between them on a whiteboard (or notebook). You need to think of how to solve problems on paper first. In a corporate setting, you will also end up writing software design documents. Often, these are helpful at uncovering fundamental issues in the implementation ahead of time. Building good software is all about thinking through the process and breaking the problem down into modules that can be reused.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jHT00nNe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/51fg0MdzaPL._SL1250_.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jHT00nNe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/51fg0MdzaPL._SL1250_.jpg" alt="Glass Dry-Erase Board" width="880" height="657"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;a href="https://www.amazon.com/dp/B005DDPFC2/"&gt;Clear Glass Dry-Erase Board&lt;/a&gt;



&lt;h2&gt;
  
  
  Soft skills
&lt;/h2&gt;

&lt;p&gt;It is important to learn how to communicate and also interpret what is being communicated to you. If you can understand a problem/feature request from a customer or your team and translate it into proper requirements with an incremental plan on how to modularize the solution, you will save a lot of time during actual development.&lt;/p&gt;

&lt;p&gt;Generally, I've spent most of my time on the whiteboard thinking about solving the problem and coordinating with other members of the team. I would say that coding is probably 60% of the work. However, these days I'm working as an Independent Consultant.&lt;/p&gt;

&lt;h2&gt;
  
  
  In Closing
&lt;/h2&gt;

&lt;p&gt;At the end of the day, you will spend time on a keyboard and in front of a monitor crafting your code. You need to get familiar with hot-keys / keyboard shortcuts. These are a huge time-saver. This is something I try to observe when I interview candidates.&lt;/p&gt;

&lt;p&gt;In addition, you need to automate anything and everything. You are an engineer first and need to apply your skills to make your job easier. If you find that you are repeating yourself, you need to find a way to automate it. Every piece of code that you write, needs to be re-usable. You also need to write test-automation so that you reduce the likelihood of breaking your code and wasting time finding and fixing problems later on.&lt;/p&gt;

&lt;p&gt;Familiarize yourself with the plethora of libraries, frameworks and SaaS products that simplify your life. However, build expertise in at least one of them. At the same time, be sure to spend some time understanding how various technologies work and avoid using them blindly.&lt;/p&gt;

&lt;p&gt;Finally, before you start coding, take enough time to understand the requirements and make high-level diagrams on paper. If you can solve the problem on paper first, it is just a matter of labor after that.&lt;/p&gt;




&lt;p&gt;If this article was helpful, ❤️ it and &lt;a href="https://twitter.com/intent/follow?screen_name=theoutlander"&gt;follow me on Twitter&lt;/a&gt;.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/theoutlander" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fuBMeqCJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--ra5gqz7V--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/37793/1fefba87-53b9-4c37-94fd-d29f7426b1b0.jpeg" alt="theoutlander"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/theoutlander/i-worked-on-msn-live-and-bing-search-at-microsoft-ask-me-anything-2eb3" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;I worked on MSN, Live, and Bing Search at Microsoft, Ask Me Anything!&lt;/h2&gt;
      &lt;h3&gt;Nick Karnik ・ Sep 12 '18 ・ 1 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#ama&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#career&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#search&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>beginners</category>
      <category>career</category>
      <category>development</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
