<?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: Piotr Sławiński</title>
    <description>The latest articles on DEV Community by Piotr Sławiński (@slawinski).</description>
    <link>https://dev.to/slawinski</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%2F135451%2F4e911401-a4d8-42ad-80dc-1eeac12593a4.jpg</url>
      <title>DEV Community: Piotr Sławiński</title>
      <link>https://dev.to/slawinski</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/slawinski"/>
    <language>en</language>
    <item>
      <title>What is Object-Oriented Programming?</title>
      <dc:creator>Piotr Sławiński</dc:creator>
      <pubDate>Sat, 30 Oct 2021 09:40:58 +0000</pubDate>
      <link>https://dev.to/slawinski/what-is-object-oriented-programming-5a3p</link>
      <guid>https://dev.to/slawinski/what-is-object-oriented-programming-5a3p</guid>
      <description>&lt;p&gt;Is it a &lt;em&gt;combination of data and functions&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Maybe a way to &lt;em&gt;model the real world&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Or just a mix of &lt;em&gt;encapsulation, polymorphism, and inheritance&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Please tell me. I really need to know.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>programming</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>How I Learned to Stop Worrying and Love the JavaScript Engine</title>
      <dc:creator>Piotr Sławiński</dc:creator>
      <pubDate>Sat, 27 Mar 2021 11:39:40 +0000</pubDate>
      <link>https://dev.to/slawinski/how-i-learned-to-stop-worrying-and-love-the-javascript-engine-3hno</link>
      <guid>https://dev.to/slawinski/how-i-learned-to-stop-worrying-and-love-the-javascript-engine-3hno</guid>
      <description>&lt;p&gt;It appears that there aren't many sources on the internet that would comprehensively describe what exactly happens when you feed your browser some code. I'm talking about the moment between parsing your code up and popping the program off the call stack. With this post, I'll try to fill the gaps as best as I can. Anyway, here's what I've found out.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's a JavaScript engine?
&lt;/h2&gt;

&lt;p&gt;The simplest explanation of what a JavaScript engine is might be that it's a program that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Translates source code into machine code and executes it on CPU.&lt;/li&gt;
&lt;li&gt;Provides mechanics of parsing and JIT compilation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to score extra points, you might want to add that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript engine should be created to ECMA standard.&lt;/li&gt;
&lt;li&gt;There are many JavaScript engines (V8 in Chrome, Spidermonkey in Firefox, etc.)&lt;/li&gt;
&lt;li&gt;Different JavaScript engines handle the code differently.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Imagine that we're dropping into our browser an HTML file with some markup and a script tag containing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;helloWorld&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello world&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the following steps happen in order:&lt;br&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Firstly, the HTML parser encounters the &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag, but that has nothing to do with the JavaScript engine yet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Decoding.&lt;/strong&gt;&lt;br&gt; The script gets loaded from the network, cache, or service worker and passed to &lt;em&gt;byte stream decoder&lt;/em&gt; as bytes for each character&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tokenizing.&lt;/strong&gt;&lt;br&gt; The &lt;em&gt;byte stream decoder&lt;/em&gt; creates tokens (like &lt;code&gt;function&lt;/code&gt;, &lt;code&gt;helloWorld&lt;/code&gt;, &lt;code&gt;(&lt;/code&gt;, &lt;code&gt;)&lt;/code&gt;, &lt;code&gt;{&lt;/code&gt;, &lt;code&gt;return&lt;/code&gt;, &lt;code&gt;'&lt;/code&gt;, &lt;code&gt;hello world&lt;/code&gt;, &lt;code&gt;'&lt;/code&gt;, &lt;code&gt;}&lt;/code&gt;, etc.)  from the decoded stream of bytes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Parsing.&lt;/strong&gt;&lt;br&gt; The tokens are then parsed by pre-parser (a.k.a &lt;em&gt;lazy parsing&lt;/em&gt;, for code required later on) and parser (a.k.a &lt;em&gt;eager parsing&lt;/em&gt;, for code required immediately). Parsed tokens create nodes of the Abstract Syntax Tree (like &lt;code&gt;Program&lt;/code&gt;, &lt;code&gt;FunctionLiteral&lt;/code&gt;, &lt;code&gt;ReturnStatement&lt;/code&gt;, &lt;code&gt;StringLiteral&lt;/code&gt;, etc.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code generation.&lt;/strong&gt;&lt;br&gt; Then the &lt;em&gt;interpreter&lt;/em&gt; goes through the AST and generates unoptimized bytecode, which can be executed immediately by the engine's virtual machine. Once bytecode is generated, the AST gets deleted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optimization.&lt;/strong&gt;&lt;br&gt; If the code (or part of it) runs a couple of times, then the JavaScript engine begins to translate the code into highly optimized machine code using &lt;em&gt;Just-In-Time compilation&lt;/em&gt;. Then the compiler runs the machine code directly on the CPU.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's a Just-In-Time compilation?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It's a compilation that is done during code execution (contrary to Ahead-Of-Time compilation done before the code is run.)&lt;/li&gt;
&lt;li&gt;It enables different code optimization for each user or use case.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Byte code when being run by the virtual machine is observed by the monitor (profiler). Monitor watches how many times the code runs and what types are being used. If the same lines of code are run a few times, that code is considered &lt;em&gt;warm&lt;/em&gt;. If it’s run a lot, then it’s considered &lt;em&gt;hot&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When a function starts getting warm, the JIT will send it off to the baseline compiler (in V8 it's called &lt;em&gt;Ignition&lt;/em&gt;) to be compiled to machine code. Then it will store that compilation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When a part of the code is very hot, the monitor will send it off to the optimizing compiler (in V8 it's called &lt;em&gt;TurboFan&lt;/em&gt;). This will create another, even faster, version of the function that will also be stored.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If code suddenly returns a different type of data or property list (a.k.a &lt;em&gt;shape&lt;/em&gt; of an object), then the machine code gets de-optimized and the engine falls back to interpreting the original byte code&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Eventually, all code has to be run as machine code on the CPU. The difference between the interpreted machine code and the optimized machine code is that the interpreted one is not controlled by your engine. The virtual machine runs &lt;em&gt;unattended&lt;/em&gt; while optimized machine code is examined thoroughly to only run the exact instructions required for the CPU.&lt;/p&gt;

&lt;p&gt;Regardless, whenever any code is executed in JavaScript, it’s run inside an execution context. So when that happens, the JavaScript engine creates an execution context and pops it on the call stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's a call stack?
&lt;/h2&gt;

&lt;p&gt;A place in memory storing code in wrappers called execution contexts.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As the JavaScript engine comes across an actionable item (function call), it adds it to the call stack.&lt;/li&gt;
&lt;li&gt;When the function finishes execution, its context is removed from the stack.&lt;/li&gt;
&lt;li&gt;Execution contexts are handled in a Last In, First Out manner (a.k.a LIFO).&lt;/li&gt;
&lt;li&gt;The space in the call stack is limited, and if exceeded (calling recursive functions without a break), will cause a stack overflow error (but no crash).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's an execution context?
&lt;/h2&gt;

&lt;p&gt;In simplest words, it's a place in the memory where the JavaScript code is evaluated and executed/called/invoked (it means the same thing).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When a javascript engine (during translation or optimization) goes through the code line-by-line in a single-threaded manner, it creates execution contexts.&lt;/li&gt;
&lt;li&gt;The abstract thing which goes line-by-line and in-and-out of functions is called the &lt;em&gt;thread of execution&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;If the script is being executed for the first time, a &lt;em&gt;global execution context&lt;/em&gt; is being created. Even if the script has zero lines of code.&lt;/li&gt;
&lt;li&gt;When a function is called, a new &lt;em&gt;functional execution context&lt;/em&gt; is created.&lt;/li&gt;
&lt;li&gt;There's a separate execution context for &lt;code&gt;eval()&lt;/code&gt; function.&lt;/li&gt;
&lt;li&gt;Each execution context is being added to the &lt;em&gt;call stack&lt;/em&gt; during its creation phase.&lt;/li&gt;
&lt;li&gt;Execution context gets popped off from the &lt;em&gt;call stack&lt;/em&gt; at the end of its execution phase.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Global execution context
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The code that is not in any function belongs to the global execution context, meaning &lt;em&gt;everything outside of a function is global&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;There can only be one global execution context in a program&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Functional execution context
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Every time a function is called, a new functional execution context is created&lt;/li&gt;
&lt;li&gt;There are as many functional execution contexts as there are function calls in the code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each execution context has two phases: the creation phase and the execution phase.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creation phase
&lt;/h3&gt;

&lt;p&gt;During the creation phase, the following environments are created:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lexical environment&lt;/strong&gt; consisting of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Environment record&lt;/em&gt; where variable and function declarations are stored within &lt;em&gt;Lexical environment&lt;/em&gt;. It, on its own, is consisting of:

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Declarative environment record&lt;/em&gt; for functions. Also stores &lt;code&gt;arguments&lt;/code&gt; object.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Object environment record&lt;/em&gt; for code outside functions (global scope). Also stores global binding object.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Reference to the outer Lexical environment&lt;/em&gt; where JavaScript engine can look for variables if they cannot be found in the current &lt;em&gt;Lexical environment&lt;/em&gt; (a possibly null reference).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;this&lt;/code&gt; binding.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Variable environment&lt;/strong&gt; (also a &lt;em&gt;Lexical environment&lt;/em&gt; but for vars)&lt;br&gt;
used to store variable bindings only (&lt;code&gt;var&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;So to sum up, this is what happens:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Global execution context&lt;/th&gt;
&lt;th&gt;Functional execution context&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A &lt;em&gt;global object&lt;/em&gt; (&lt;code&gt;window&lt;/code&gt; for a browser or &lt;code&gt;global&lt;/code&gt; for node), to which the executing code belongs, is created in &lt;em&gt;Object environment record&lt;/em&gt;.&lt;/td&gt;
&lt;td&gt;An &lt;em&gt;arguments&lt;/em&gt; object which contains a reference to the parameters passed to the function is created in &lt;em&gt;Declarative environment record&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory for the variables and function declaration within the global execution context (defined globally) is allocated in &lt;em&gt;Object environment record&lt;/em&gt;.&lt;/td&gt;
&lt;td&gt;Memory for the variables and function declaration within the function execution context (defined within the function) is allocated in &lt;em&gt;Declarative environment record&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;this&lt;/code&gt; variable referring to the global object is created.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;this&lt;/code&gt; variable referring to the global object (or to an object to which the current code that’s being executed belongs) is created.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Variables are initialized as &lt;code&gt;undefined&lt;/code&gt; (except &lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt; which will remain &lt;em&gt;uninitialized&lt;/em&gt;). Functions get placed directly in the memory. That is why accessing &lt;code&gt;var&lt;/code&gt; defined variable before declaring any value to it gets you &lt;code&gt;undefined&lt;/code&gt;, but the same with &lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt; gets you a &lt;code&gt;ReferenceError&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It's is when hoisting takes place as well as where closures are created.&lt;/p&gt;

&lt;h3&gt;
  
  
  Execution phase
&lt;/h3&gt;

&lt;p&gt;The first function to be executed is the one with its execution context at the top of the call stack.&lt;br&gt;
Execution context gets popped off the stack when assignments to all the variables are done, and the code is executed (function is returned).&lt;br&gt;
Finally, when the global execution context gets popped off the call stack, the program ends.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;Well, this is it. That is how the JavaScript engine does on a high to medium level. Each concept could, of course, be covered in even more detail, but that is beyond my needs for now. Maybe someday. In the meantime, keep on coding!&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=xckH5s3UuX4"&gt;https://www.youtube.com/watch?v=xckH5s3UuX4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://softwareengineeringdaily.com/2018/10/03/javascript-and-the-inner-workings-of-your-browser/"&gt;https://softwareengineeringdaily.com/2018/10/03/javascript-and-the-inner-workings-of-your-browser/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=p-iiEDtpy6I"&gt;https://www.youtube.com/watch?v=p-iiEDtpy6I&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hacks.mozilla.org/2017/02/a-crash-course-in-just-in-time-jit-compilers/"&gt;https://hacks.mozilla.org/2017/02/a-crash-course-in-just-in-time-jit-compilers/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=exrc_rLj5iw"&gt;https://www.youtube.com/watch?v=exrc_rLj5iw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.greenroots.info/understanding-javascript-execution-context-like-never-before-ckb8x246k00f56hs1nefzpysq"&gt;https://blog.greenroots.info/understanding-javascript-execution-context-like-never-before-ckb8x246k00f56hs1nefzpysq&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Getting invited to a technical interview</title>
      <dc:creator>Piotr Sławiński</dc:creator>
      <pubDate>Mon, 21 Sep 2020 07:37:03 +0000</pubDate>
      <link>https://dev.to/slawinski/getting-invited-to-a-technical-interview-3m0p</link>
      <guid>https://dev.to/slawinski/getting-invited-to-a-technical-interview-3m0p</guid>
      <description>&lt;p&gt;&lt;em&gt;It appears my writing has caught your attention. If you wish to hear from me on regular basis, please consider subscribing to my &lt;a href="https://slawinski.dev/newsletter/"&gt;newsletter&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In accordance with the famous philosopher Mike Shinoda, to ace a tech interview, the following ingredients are required: 10% luck, 20% skill, 15% concentrated power of will... The list goes on. But how to make sure that you're going to stand out in a sea of candidates?&lt;/p&gt;

&lt;h2&gt;
  
  
  Resume
&lt;/h2&gt;

&lt;p&gt;First off - resume. Unless you're talented in the field of arts, I do not recommend designing your resume from scratch - there are so many aspects you need to be aware of that it is easier to use a template. There are immense numbers of them available online, but I recommend starting with free &lt;a href="https://docs.google.com/templates"&gt;Google docs resume templates&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Linkedin profile
&lt;/h2&gt;

&lt;p&gt;Recruiters use LinkedIn extensively to source promising candidates, so to stand out also on that platform, you need to fine-tune your profile page (not to mention keeping your profile up-to-date). I used to think my profile page was OK until I watched &lt;a href="https://www.youtube.com/playlist?list=PL54X5yR8qizsMpvTCqUIEFMeEp-chvcxk"&gt;a couple of live-streams&lt;/a&gt; where HR specialists reviewed other people's profiles. Their feedback allowed me to improve my profile drastically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Github profile
&lt;/h2&gt;

&lt;p&gt;Another place to shine is your Github profile. Until recently, there weren't many ways to advertise yourself on Github, but that has changed with the introduction of the Profile READMEs. That's right. You can now create a README in markdown, which will be displayed on your profile page. As you can expect, the choice of information to put there is limitless. &lt;a href="https://www.aboutmonica.com/blog/how-to-create-a-github-profile-readme"&gt;Here are some fun examples&lt;/a&gt; as well as a step by step guide on how to make one yourself.&lt;/p&gt;

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

&lt;p&gt;That's it. It isn't much, and it certainly won't help you pass any interview, but it will (or at least I hope it will) increase you chances of getting that interview in the first place. The rest is up to you. Good luck!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>career</category>
      <category>interview</category>
    </item>
    <item>
      <title>You need these Visual Studio Code extensions!</title>
      <dc:creator>Piotr Sławiński</dc:creator>
      <pubDate>Sat, 22 Aug 2020 20:27:32 +0000</pubDate>
      <link>https://dev.to/slawinski/you-need-these-visual-studio-code-extensions-5elc</link>
      <guid>https://dev.to/slawinski/you-need-these-visual-studio-code-extensions-5elc</guid>
      <description>&lt;p&gt;&lt;em&gt;It appears my writing has caught your attention. If you wish to be up-to-date, please consider subscribing to my &lt;a href="https://slawinski.dev/newsletter/"&gt;newsletter&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;VS Code is a powerful tool but "batteries included" is not the expression this IDE is known for. Here's how to proceed to have the best developer experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visual Studio Code - Insiders version
&lt;/h2&gt;

&lt;p&gt;There's actually a 'flavor' to choose when downloading VS Code. You can download the stable release or you can opt to use the latest build released for the earliest of adopters - the Insiders version. The choice is up to you but if you're reading this post then it's rather obvious you should go with the regular.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extensions
&lt;/h2&gt;

&lt;p&gt;Ok, let's get down to business. I categorized them into groups. &lt;em&gt;Essentials&lt;/em&gt;, in my opinion, are required to conduct any kind of coding and stay sane. &lt;em&gt;Strongly recommended&lt;/em&gt; extensions are welcome, but some of you might find them unnecessary or annoying. You can easily live without &lt;em&gt;Recommended&lt;/em&gt; - they add value to your workflow but it's a very specific kind of workflow. Who knows? Maybe they work only for me?&lt;/p&gt;

&lt;h3&gt;
  
  
  Essential
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag"&gt;Auto Rename Tag&lt;/a&gt; - It actually cuts in half the time required to edit two HTML tags!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer"&gt;Bracket Pair Colorizer&lt;/a&gt; - Enables color-coding of your brackets which helps to distinguish one scope from another.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=naumovs.color-highlight"&gt;Color Highlight&lt;/a&gt; - Gives you a hint of what color you've just typed in.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=mikestead.dotenv"&gt;DotENV&lt;/a&gt; - Enables syntax highlight of your secrets in the .env files.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint"&gt;ESLint&lt;/a&gt; - This thing (if well configured) will save your butt. Hands down the biggest time-saver on this list. It finds problems in your code and it fixes them most of the time. Unless you're coding in TypeScript. Then it just sits there and does nothing.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets"&gt;JavaScript (ES6) code snippets&lt;/a&gt; - Less typing, more time to debug.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode"&gt;Prettier&lt;/a&gt; - Not as useful as ESLint but if configured together they actually make your codebase consistent and... Pretty.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Strongly recommended
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments"&gt;Better Comments&lt;/a&gt; - If you comment on your code then this extension will make your comments shine! Really, TODOs, JSDocs, etc. They will look amazing.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens"&gt;Error Lens&lt;/a&gt; - When you eventually screw something up your IDE will not only add a squiggly red underline to your code but also provide the error definition &lt;em&gt;inline&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens"&gt;GitLens&lt;/a&gt; - Similar to the above only this time it's the details about the given line's git history. Also provides an additional menu in your activity bar.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer"&gt;Live Server&lt;/a&gt; - Launches a development server and opens up a port to check your work in the browser. Live-reload included!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense"&gt;npm Intellisense&lt;/a&gt; - Helps out typing in those npm packages.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense"&gt;Path Intellisense&lt;/a&gt; - Similarly to the above but for files.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync"&gt;Settings Sync&lt;/a&gt; - Do you use VS Code on more than one machine and have trouble syncing your IDE between them? This one is for you. It stores your configs, extensions, etc. in a gist and enables you to download them to any machine you're currently using.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=ChakrounAnas.turbo-console-loghttps://marketplace.visualstudio.com/items?itemName=ChakrounAnas.turbo-console-log"&gt;Turbo Console Log&lt;/a&gt; - No more `cosnole.log' typos! With this extension, your logs will be inserted instantly, flawlessly, and elaborately.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Recommended
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker"&gt;Code Spell Checker&lt;/a&gt; - Helps with that pesky typos. Of course, a linter will make sure your code works, but this one just takes care of the orthography exclusively. You'll need to add some of the exotic words to your dictionary though.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=sdras.night-owl"&gt;Night Owl&lt;/a&gt; / &lt;a href="https://marketplace.visualstudio.com/items?itemName=wesbos.theme-cobalt2"&gt;Cobalt2 Theme Official&lt;/a&gt; - VS Code basic color theme is okay I guess. But if you want to spice things up I recommend one of those themes. They're the best looking in my opinion.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=kisstkondoros.vscode-gutter-preview"&gt;Image preview&lt;/a&gt; - Gives you a nice inline thumbnail of and image the path to which you've just typed in.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=kiteco.kite"&gt;Kite Autocomplete for Python and JavaScript&lt;/a&gt; - This one's big. It requires additional stuff to be installed on your machine and uses MaChiNe LeARnInG to predict what you're about to type in. In the end, it saves keystrokes.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme"&gt;Material Icon Theme&lt;/a&gt; - I don't know why but I just like to see nice colorful icons in that project tree.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=pnp.polacode"&gt;Polacode&lt;/a&gt; - makes a professional screenshot of your code. Looks great on twitter.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines"&gt;Sort lines&lt;/a&gt; - It sorts your lines. Ascending, descending, case sensitive you name it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bonus round - tool-specific extensions
&lt;/h2&gt;

&lt;p&gt;Here I gathered extensions which definitely aid only my workflow due to being framework or tool-specific.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=kumar-harsh.graphql-for-vscode"&gt;GraphQL for VSCode&lt;/a&gt; -  Syntax highlighting and linting of your GraphQL queries.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=k--kato.intellij-idea-keybindings"&gt;IntelliJ IDEA Keybindings&lt;/a&gt; - That's a thing people will make fun of me for. I used Webstorm exclusively at work and I have grown very fond of its keymap. I know - I'm weird 🤷‍♂️&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss"&gt;Tailwind CSS Intellisense&lt;/a&gt; - Recently I fell in love with TailwindCSS and this helps with typing in those utils&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=octref.vetur"&gt;Vetur&lt;/a&gt; - This is for Vue.js and its ecosystem&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=sdras.vue-vscode-snippets"&gt;Vue VS Code Snippets&lt;/a&gt; - Never too much of those snippets!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;There aren't any. Just pick what you like from the list above and keep on coding!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>vscode</category>
    </item>
    <item>
      <title>How to configure Visual Studio Code right the first time</title>
      <dc:creator>Piotr Sławiński</dc:creator>
      <pubDate>Fri, 21 Aug 2020 15:59:47 +0000</pubDate>
      <link>https://dev.to/slawinski/how-to-configure-visual-studio-code-right-the-first-time-3ia3</link>
      <guid>https://dev.to/slawinski/how-to-configure-visual-studio-code-right-the-first-time-3ia3</guid>
      <description>&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://slawinski.dev/blog/how-to-configure-visual-studio-code/"&gt;slawinski.dev&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When it comes to choosing an IDE you have to choose wisely because a certain career-defining moment is secretly unveiling upon you. Should you go with Sublime, Webstorm, Atom, or VS Code? Obviously, there's no sorting hat to decide for you and you can change an IDE as many times as you want but have in mind that only one of them will be your favorite. I hope you chose VS Code because otherwise reading the rest of this post is pointless.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visual Studio Code - Insiders version
&lt;/h2&gt;

&lt;p&gt;There's actually an option or 'flavor' when choosing a VS Code as an editor. You can download the stable release or you can opt to use the latest build released for the earliest of adopters - the Insiders version. The choice is up to you but if you're reading this post then it's rather obvious you should go with the regular.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extensions
&lt;/h2&gt;

&lt;p&gt;Ok, let's get down to business. First up - Extensions! I categorized them into groups. &lt;em&gt;Essentials&lt;/em&gt;, in my opinion, are required to conduct any kind of coding and stay sane. &lt;em&gt;Strongly recommended&lt;/em&gt; extensions are welcome, but some of you might find them unnecessary or annoying. You can easily live without &lt;em&gt;Recommended&lt;/em&gt; - they add value to your workflow but it's a very specific kind of workflow. Who knows? Maybe they work only for me?&lt;/p&gt;

&lt;h3&gt;
  
  
  Essential
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag"&gt;Auto Rename Tag&lt;/a&gt; - It actually cuts in half the time required to edit two HTML tags!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer"&gt;Bracket Pair Colorizer&lt;/a&gt; - Enables color-coding of your brackets which helps to distinguish one scope from another.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=naumovs.color-highlight"&gt;Color Highlight&lt;/a&gt; - Gives you a hint of what color you've just typed in.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=mikestead.dotenv"&gt;DotENV&lt;/a&gt; - Enables syntax highlight of your secrets in the .env files.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint"&gt;ESLint&lt;/a&gt; - This thing (if well configured) will save your butt. Hands down the biggest time-saver on this list. It finds problems in your code and it fixes them most of the time. Unless you're coding in TypeScript. Then it just sits there and does nothing.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets"&gt;JavaScript (ES6) code snippets&lt;/a&gt; - Less typing, more time to debug.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode"&gt;Prettier&lt;/a&gt; - Not as useful as ESLint but if configured together they actually make your codebase consistent and... Pretty.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Strongly recommended
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments"&gt;Better Comments&lt;/a&gt; - If you comment on your code then this extension will make your comments shine! Really, TODOs, JSDocs, etc. They will look amazing.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens"&gt;Error Lens&lt;/a&gt; - When you eventually screw something up your IDE will not only add a squiggly red underline to your code but also provide the error definition &lt;em&gt;inline&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens"&gt;GitLens&lt;/a&gt; - Similar to the above only this time it's the details about the given line's git history. Also provides an additional menu in your activity bar.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer"&gt;Live Server&lt;/a&gt; - Launches a development server and opens up a port to check your work in the browser. Live-reload included!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense"&gt;npm Intellisense&lt;/a&gt; - Helps out typing in those npm packages.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense"&gt;Path Intellisense&lt;/a&gt; - Similarly to the above but for files.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync"&gt;Settings Sync&lt;/a&gt; - Do you use VS Code on more than one machine and have trouble syncing your IDE between them? This one is for you. It stores your configs, extensions, etc. in a gist and enables you to download them to any machine you're currently using.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=ChakrounAnas.turbo-console-loghttps://marketplace.visualstudio.com/items?itemName=ChakrounAnas.turbo-console-log"&gt;Turbo Console Log&lt;/a&gt; - No more `cosnole.log' typos! With this extension, your logs will be inserted instantly, flawlessly, and elaborately.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Recommended
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker"&gt;Code Spell Checker&lt;/a&gt; - Helps with that pesky typos. Of course, a linter will make sure your code works, but this one just takes care of the orthography exclusively. You'll need to add some of the exotic words to your dictionary though.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=sdras.night-owl"&gt;Night Owl&lt;/a&gt; / &lt;a href="https://marketplace.visualstudio.com/items?itemName=wesbos.theme-cobalt2"&gt;Cobalt2 Theme Official&lt;/a&gt; - VS Code basic color theme is okay I guess. But if you want to spice things up I recommend one of those themes. They're the best looking in my opinion.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=kisstkondoros.vscode-gutter-preview"&gt;Image preview&lt;/a&gt; - Gives you a nice inline thumbnail of and image the path to which you've just typed in.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=kiteco.kite"&gt;Kite Autocomplete for Python and JavaScript&lt;/a&gt; - This one's big. It requires additional stuff to be installed on your machine and uses MaChiNe LeARnInG to predict what you're about to type in. In the end, it saves keystrokes.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme"&gt;Material Icon Theme&lt;/a&gt; - I don't know why but I just like to see nice colorful icons in that project tree.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=pnp.polacode"&gt;Polacode&lt;/a&gt; - makes a professional screenshot of your code. Looks great on twitter.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines"&gt;Sort lines&lt;/a&gt; - It sorts your lines. Ascending, descending, case sensitive you name it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bonus round - tool-specific extensions
&lt;/h2&gt;

&lt;p&gt;Here I gathered extensions which definitely aid only my workflow due to being framework or tool-specific.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=kumar-harsh.graphql-for-vscode"&gt;GraphQL for VSCode&lt;/a&gt; -  Syntax highlighting and linting of your GraphQL queries.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=k--kato.intellij-idea-keybindings"&gt;IntelliJ IDEA Keybindings&lt;/a&gt; - That's a thing people will make fun of me for. I used Webstorm exclusively at work and I have grown very fond of its keymap. I know - I'm weird 🤷‍♂️&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss"&gt;Tailwind CSS Intellisense&lt;/a&gt; - Recently I fell in love with TailwindCSS and this helps with typing in those utils&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=octref.vetur"&gt;Vetur&lt;/a&gt; - This is for Vue.js and its ecosystem&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=sdras.vue-vscode-snippets"&gt;Vue VS Code Snippets&lt;/a&gt; - Never too much of those snippets!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;There aren't any. Just pick what you like from the list above and keep on coding!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tools</category>
    </item>
    <item>
      <title>Resources for beginner developers</title>
      <dc:creator>Piotr Sławiński</dc:creator>
      <pubDate>Sat, 04 Jul 2020 09:20:53 +0000</pubDate>
      <link>https://dev.to/slawinski/resources-for-beginner-developers-57hd</link>
      <guid>https://dev.to/slawinski/resources-for-beginner-developers-57hd</guid>
      <description>&lt;p&gt;&lt;em&gt;It appears my writing has caught your attention. If you wish to be up-to-date, please consider subscribing to my &lt;a href="https://slawinski.dev/newsletter/"&gt;newsletter&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Important disclaimer:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The list is not definitive. You can help by expanding it!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting down to business
&lt;/h2&gt;

&lt;p&gt;If you don't know anything about programming and/or web development I recommend you to take a look at any of the three resources listed below. They were created with beginners in mind and will set you up for the upcoming journey of becoming a developer. I really recommend to check out the rest of this list too - it's full of great stuff!&lt;/p&gt;

&lt;p&gt;🔥 &lt;a href="https://www.youtube.com/playlist?list=PLblA84xge2_xNtaFnZhefjFbnDrpySKD3"&gt;Colt's Code Camp&lt;/a&gt;&lt;br&gt;
🔥 &lt;a href="https://www.freecodecamp.org/learn"&gt;Free Code Camp&lt;/a&gt;&lt;br&gt;
🔥 &lt;a href="https://javascript30.com/"&gt;Javascript30&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Blogs
&lt;/h2&gt;

&lt;p&gt;There are a lot of creators out there and some of them particularly focus on beginners. I regret this list is so short!&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://medium.com/basecs"&gt;BaseCS&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Exploring the basics of computer science, every Monday, for a year."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/top/infinity"&gt;https://dev.to/top/infinity&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Just read some of the most popular blog posts listed here and you're golden!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://randallkanna.com/blog/"&gt;https://randallkanna.com/blog/&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A bunch of posts from the author of "The Ultimate Guide To Getting Started As A Software Engineer"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.giftegwuenu.com/"&gt;https://www.giftegwuenu.com/&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Great articles and a lot of videos on many aspects of programming&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://welearncode.com/"&gt;We learn code&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Ali’s friendly guides to your biggest coding questions."&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Blogposts
&lt;/h2&gt;

&lt;p&gt;Every now and then I stumble upon a post which resonates with my inner programmer. I hope you also will find them interesting.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.freecodecamp.org/news/am-i-a-real-software-engineer-yet-a0f38a2248c0/"&gt;Am I a real software engineer yet&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Interesting take on what poeple think about web developers and why should you care&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://doist.com/blog/deep-work/"&gt;Deep work&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"How to master the #1 job skill that will never be obsolete"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.thinkful.com/blog/why-learning-to-code-is-so-damn-hard/"&gt;Why learning code is so damn hard&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"What every beginner absolutely needs to know about the journey ahead"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://snipcart.com/blog/learn-vanilla-javascript-before-using-js-frameworks"&gt;Yes, You Should Learn Vanilla JavaScript Before Fancy JS Frameworks&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;There's no argument it that. Read it to learn why&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Books
&lt;/h2&gt;

&lt;p&gt;The problem with books is while they get written, edited, printed, and optionally translated, the javascript world moves forward and they quickly stop being relevant. But if books work for you and you enjoy the smell of that freshly downloaded pdf then here's a short list of books you might find useful.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://eloquentjavascript.net/"&gt;Eloquent Javascript&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Probably the first book a beginner should read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/tree/2nd-ed"&gt;You Don't Know JS Yet&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Definitely the second book (series) a beginner should read because it gets very technical very quickly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://randallkanna.com/wp-content/uploads/2020/02/The-Ultimate-Guide-To-Getting-Started-As-A-Software-Engineer.pdf"&gt;The Ultimate Guide To Getting Started As A Software Engineer&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"This guide will help you get started coding with low risk to your financial future and time."&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Online courses
&lt;/h2&gt;

&lt;p&gt;I like to have a plan of what should I learn. A step-by-step guide. Someone who will say "Welcome back!" when I log in. Online courses have it all (the 'welcome back' part depends on the good will of the presenter though).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://egghead.io/courses/data-structures-and-algorithms-in-javascript"&gt;Data Structures and Algorithms in JavaScript&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"This course teaches you how to implement your first data structures and algorithms."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://frontendmasters.com/courses/getting-started-javascript-v2/"&gt;Getting Started with JavaScript&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Want to learn to code using JavaScript? This is a great place to start!" from the one and only Kyle Simpson&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://online-learning.harvard.edu/course/cs50-introduction-computer-science"&gt;Harvard CS50&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"An introduction to the intellectual enterprises of computer science and the art of programming."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://javascript30.com/"&gt;Javascript30&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Build 30 things in 30 days with 30 tutorials. No Frameworks. No Compilers. No Libraries. No Boilerplate"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Gamification
&lt;/h2&gt;

&lt;p&gt;Some aspects of programming can be taught by games which makes learning fun and, hopefully, quicker.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://codecombat.com/play/dungeon"&gt;Code Combat&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Students master core coding concepts such as while/for loops, functions, and algorithms all while playing a game. Unfortunately only part of it is free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://flukeout.github.io/"&gt;CSS Diner&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"It's a fun game to learn and practice CSS selectors."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://cssgridgarden.com/"&gt;CSS Grid Garden&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Write CSS code to grow your carrot garden"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://flexboxfroggy.com/"&gt;Flexbox Froggy&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"A game where you help Froggy and friends by writing CSS code"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://learngitbranching.js.org/"&gt;Learn Git Branching&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"The most visual and interactive way to learn Git on the web"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://mastery.games/"&gt;Mastery games&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Mastery through Deliberate Practice. Escape from tutorial hell"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.typingclub.com/"&gt;Typing Club&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;The most effective way to learn how to type. Oh, you already know how to type? But do you use all 10 fingers while you type? That's what I thought!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://warriorjs.com/"&gt;Warrior.js&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Code your way through dungeons, prove your skills, and get hired."&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Git
&lt;/h2&gt;

&lt;p&gt;You will need git. Probably sooner than later so it's a good idea to grasp the basics.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://blog.red-badger.com/2016/11/29/gitgithub-in-plain-english"&gt;Git and Github in Plain English&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"This blog post aims to explain the “theory” behind version control (Git and Github) in plain English (...) No code. Nothing to download. No muss. No fuss."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://gitexplorer.com/"&gt;Git Command Explorer&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Find the right commands you need without digging through the web."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://gitimmersion.com/index.html"&gt;Git Immersion&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"A guided tour that walks through the fundamentals of Git, inspired by the premise that to know a thing is to do it."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://piecioshka.pl/blog/2017/02/06/globalna-konfiguracja-gita.html"&gt;Globalna konfiguracja Gita&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;How to make global .gitignore (it's in polish)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://medium.com/@francesco.agnoletto/how-to-not-f-up-your-local-files-with-git-part-1-e0756c88fd3c"&gt;How to not f- up your local files with Git&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Some good tips on how to use git with a team and not fudge up your files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://ohshitgit.com/"&gt;Oh Shit, Git!?!&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Git is hard: screwing up is easy, and figuring out how to fix your mistakes is fucking impossible (...) So here are some bad situations I've gotten myself into, and how I eventually got myself out of them in plain english."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://guides.github.com/introduction/flow/"&gt;Understanding the GitHub flow&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"GitHub flow is a lightweight, branch-based workflow that supports teams and projects where deployments are made regularly. This guide explains how and why GitHub flow works."&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Career
&lt;/h2&gt;

&lt;p&gt;Interviewing is hard. Passing an interview is even harder. Increase your chances of landing a dream job by consuming the below material.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://medium.com/@nick.ciubotariu/ace-the-coding-interview-every-time-d169ce1fd3fc"&gt;Ace the coding interview, every time&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"A practical blueprint, refined with the help of experienced Engineers, that will help you succeed in a code-intensive technical interview"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/ElaMoscicka/Career-tips"&gt;Career tips&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Career tips for Software Engineers and Recruiters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://codeburst.io/de-coding-the-front-end-development-interview-process-9601bc4c71e5"&gt;Decoding the Front-end Interview Process&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Let’s take a look at the front-end development interview process and learn some tips to have successful interviews."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.facebook.com/notes/facebook-engineering/get-that-job-at-facebook/10150964382448920"&gt;Get that job at Facebook&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Pretty old post from a facebook engineer and interviewer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html"&gt;Get that job at Google&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Even older post about interviewing for Google&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/mortoray/how-to-fail-a-programming-interview-b5i"&gt;How to fail a programming interview&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A list of most common mistakes a candidate can make&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.freecodecamp.org/news/writing-a-killer-software-engineering-resume-b11c91ef699d/"&gt;How to write a killer Software Engineering résumé&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"An in-depth analysis of the résumé that got me interviews at Google, Facebook, Amazon, Microsoft, Apple, and more."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.glassdoor.com/blog/the-30-most-important-interview-questions-to-ask-this-summer/"&gt;The 30 Most Important Interview Questions to Ask This Summer&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A candidate can also ask questions!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.joelonsoftware.com/2006/10/25/the-guerrilla-guide-to-interviewing-version-30/"&gt;The Guerrilla Guide to Interviewing&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Interesting take on interviewing from the interviewer point of view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://interviewing.io/recordings/"&gt;Watch technical mock interviews&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Watch technical mock interviews with engineers from Google, Amazon, and more"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Knowledge base (or brain dump)
&lt;/h2&gt;

&lt;p&gt;Sometimes I need a solid source of knowledge. Reliable, up-to-date and easy to understand. So far I found these to be of that kind.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.30secondsofcode.org/"&gt;30 seconds of code&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Browse 898 short code snippets for all your development needs on 30 seconds of code."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://30secondsofinterviews.org/"&gt;30 seconds of interviews&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"A curated collection of common web development interview questions to help you prepare for your next interview."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/leonardomso/33-js-concepts#readme/"&gt;33 Concepts Every JavaScript Developer Should Know&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"This repository was created with the intention of helping developers master their concepts in JavaScript. It is not a requirement, but a guide for future studies. "&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hackernoon.com/50-data-structure-and-algorithms-interview-questions-for-programmers-b4b1ac61f5b0/"&gt;50+ Data Structure and Algorithms Interview Questions for Programmers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"In this article, I’ll share some frequently asked programming interview questions from different interviews for programmers at different levels of experience"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://blockscoped.com/javascript/"&gt;BlockScoped - Random coding questions by topic and difficulty&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;It's all in the title&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://roadmap.sh/"&gt;Developer Roadmaps&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Step by step guides and paths to learn different tools or technologies"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/yangshun/front-end-interview-handbook"&gt;Front End Interview Handbook&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Almost complete answers to "Front-end Job Interview Questions" which you can use to interview potential candidates, test yourself or completely ignore"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://refactoring.guru/"&gt;Refactoring Guru&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Refactoring is a controllable process of improving code without creating new functionality. Design Patterns are typical solutions to the commonly occurring problems in software design."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sourcemaking.com/"&gt;SourceMaking&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Design Patterns and Refactoring articles and guides. Design Patterns video tutorials for newbies. Simple descriptions and full source code examples in Java, C++, C#, PHP and Delphi."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.vscodecandothat.com/"&gt;VS Code can do that?!&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;All the best things about Visual Studio Code that nobody ever bothered to tell you&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Javascript
&lt;/h2&gt;

&lt;p&gt;Also a lot of knowledge, this time purely about JavaScript&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/damxipo/guide-for-the-daily-javascripter-87o/"&gt;Guide for the daily JavaScripter&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"This document is a summary of good programming practices in js in general."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/trekhleb/javascript-algorithms/"&gt;JavaScript Algorithms and Data Structures&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"This repository contains JavaScript based examples of many popular algorithms and data structures."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://jstherightway.org/"&gt;JavaScript The Right Way&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"A quick reference to best practices for writing JavaScript -- links to code patterns and tutorials from around the web"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/lydiahallie/javascript-questions/"&gt;JavaScript Questions&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"From basic to advanced: test how well you know JavaScript, refresh your knowledge a bit, or prepare for your coding interview!"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif"&gt;JavaScript Visualized&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;First part of a great series on javascript fundamentals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.freecodecamp.org/news/the-complete-javascript-handbook-f26b2c71719c/"&gt;The JavaScript Beginner's Handbook&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;The title is self-explanatory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://javascript.info/"&gt;The Modern JavaScript Tutorial&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"How it's done now. From the basics to advanced topics with simple, but detailed explanations."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/denysdovhan/wtfjs/"&gt;What the f*ck JavaScript?&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"A list of funny and tricky JavaScript examples"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Online editors of things
&lt;/h2&gt;

&lt;p&gt;Need to quickly put together some code? Not enough time to set up your favourite environment? The below websites come to rescue!&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://codesandbox.io/"&gt;Code Sandbox&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"An instant IDE and prototyping tool for rapid web development"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://carbon.now.sh/"&gt;Carbon&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Create and share beautiful images of your source code."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://regex101.com/"&gt;regex101&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Free PCRE-based regular expression debugger with real time explanation, error detection and highlighting"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Learning platforms
&lt;/h2&gt;

&lt;p&gt;It's all there.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.freecodecamp.org/learn"&gt;Free Code Camp&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"You'll learn to code by completing coding challenges and building projects. You'll also earn verified certifications along the way."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.theodinproject.com/"&gt;The Odin Project&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Provides a free open source coding curriculum that can be taken entirely online."&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Podcasts
&lt;/h2&gt;

&lt;p&gt;There are plenty of podcasts. I'm subscribed to, like, thirty but I regularly listen to one or two. Here's the ones which might be of use for the beginner developers.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.codenewbie.org/podcast"&gt;CodeNewbie&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"The most supportive community of programmers and people learning to code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.ladybug.dev/"&gt;Ladybug Podcast&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"We’re debugging the tech industry."&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://syntax.fm/"&gt;Syntax&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"A Tasty Treats Podcast for Web Developers."&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Whiteboard challenges
&lt;/h2&gt;

&lt;p&gt;If you're thinking of becoming a professional developer then sooner or later you're going to encounter coding challenge during an interview. Why not prepare for that in advance?&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.codewars.com/dashboard"&gt;Code Wars&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Achieve code mastery through challenge"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://leetcode.com/"&gt;Leet Code&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"LeetCode is the best platform to help you enhance your skills, expand your knowledge and prepare for technical interviews."&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Other aggregators of tasty links
&lt;/h2&gt;

&lt;p&gt;This is not the only list. In fact there's plenty of them. Below you will find the most useful ones. At least in my opinion.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;link&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/bradtraversy/design-resources-for-developers"&gt;Design Resources For Developers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Curated list of design and UI resources from stock photos, web templates, CSS frameworks, UI libraries, tools and much more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.freecodecamp.org/news/ivy-league-free-online-courses-a0d7ae675869/"&gt;Here are 450 Ivy League courses you can take online right now for free&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Here are 450 Ivy League courses you can take online right now for free"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-hack-your-own-cs-degree-for-free/"&gt;How to Hack Together Your Own CS Degree Online for Free&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A list of resources related to computer science like algorithms, operating systems, maths etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/snipcart/learn-vanilla-js"&gt;Learn Vanilla JavaScript&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Open source list of paid &amp;amp; free resources to learn vanilla JavaScript&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Youtube channels
&lt;/h2&gt;

&lt;p&gt;I wish I had the time to watch all of the videos my subscription feed is throwing at me.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/channel/UCSJbGtTlrDami-tDGPUV9-w"&gt;Academind&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/channel/UCjdRbKZ494DfZ4zeX19rICw"&gt;Coding Blonde&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/channel/UCrqAGUPPMOdo0jfQ6grikZw"&gt;Colt Steele&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/channel/UCsBjURrPoezykLs9EqgamOA"&gt;Fireship&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/user/hellomayuko"&gt;mayuko&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/channel/UCW5YeuERMmlnqo4oq8vwUpg"&gt;The Net Ninja&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/channel/UC29ju8bIPH5as8OGnQzwJyA"&gt;Traversy Media&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Twitter people to follow
&lt;/h2&gt;

&lt;p&gt;Twitter is a gold mine when it comes to talking about tech. Here's a list so you won't have to dig through hordes of people. Sorry if you're on Twitter and you're not on the list.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/_marcba"&gt;@_marcba&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/cassidoo"&gt;@cassidoo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/DThompsonDev"&gt;@DThompsonDev&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/EmmaBostian"&gt;@EmmaBostian&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/flaviocopes"&gt;@flaviocopes&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/kentcdodds"&gt;@kentcdodds&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/kvlly"&gt;@kvlly&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/Madisonkanna"&gt;@Madisonkanna&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/ossia"&gt;@ossia&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/sarah_edo"&gt;@sarah_edo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/techgirl1908"&gt;@techgirl1908&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/tlakomy"&gt;@tlakomy&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/WellPaidGeek"&gt;@WellPaidGeek&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Old man’s guide to rebranding</title>
      <dc:creator>Piotr Sławiński</dc:creator>
      <pubDate>Tue, 11 Jun 2019 20:18:33 +0000</pubDate>
      <link>https://dev.to/slawinski/an-old-man-s-guide-to-rebranding-3d6l</link>
      <guid>https://dev.to/slawinski/an-old-man-s-guide-to-rebranding-3d6l</guid>
      <description>&lt;p&gt;&lt;em&gt;It appears my writing has caught your attention. If you wish to be up-to-date, please consider subscribing to my &lt;a href="https://slawinski.dev/newsletter/" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You may think that in order to land a job in the dev world without previous experience, you need knowledge and skill. Well, not only that. You also need courage and luck. And boy it takes a lot of courage to pivot your career. Especially when you're in an age when you've probably already established one, and senior developers are by average five years younger than you. Allow me to show you that not all hope is lost and how to increase your chances of getting hired.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting ready
&lt;/h2&gt;

&lt;p&gt;Alright! Let's assume that you are confident that you want to learn to code with a not so distant goal of becoming a professional developer. What's next?&lt;/p&gt;

&lt;p&gt;As always - the hardest part is to start. Fortunately, with the web technologies, you don’t even have to move from your couch. All that you could ever need lies at your fingertips - in the vast space called the internet. But the abundance of information is overwhelming. Tons of articles, hours of videos, and dozens of online courses should make the process easier, but frequently it’s the very opposite. Not to mention that the quality of the things you will find may and will vary. Should I take that insanely discounted course on Udemy? Should I learn from books? What about tutorials, podcasts, or boot camps? Does it contain good practices or only teach anti-patterns? Let’s get down into the nitty-gritty! (Oh, and don't make the mistake of trying to learn everything. Pick a language and stick to it!)&lt;/p&gt;

&lt;h2&gt;
  
  
  Online courses
&lt;/h2&gt;

&lt;p&gt;A great choice if you don't know where to start, or you’re looking for a comprehensive curriculum from a particular field, or you enjoy being led by the hand. Usually inexpensive - you either pay per course or a monthly fee. Oh, and before paying full price on Udemy, remember that you can get up to a 90% discount now and then. As a disadvantage, you can consider that as a beginner, you might have problems with transitioning from a course to real life as described in &lt;a href="https://dev.to/aspittel/moving-past-tutorials-a-course-on-problem-solving-for-programmers-3oa4"&gt;Moving Past Tutorials&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Books
&lt;/h3&gt;

&lt;p&gt;Things about books are that the web dev world changes insanely fast (in comparison to other technologies). So when a book gets written, edited, printed, and optionally translated, it’s suddenly not very relevant anymore. But when a book is about one of the fundamental stuff: algorithms, design patterns, etc., you can easily grab a decades-old book and still learn useful stuff (not for beginners though). I find the printed books a great source of knowledge (I also love the new book smell), but I know that others might enjoy reading PDFs from screen more. It's up to you. Oh, and I advise picking the latest edition available.&lt;/p&gt;

&lt;h3&gt;
  
  
  How-tos
&lt;/h3&gt;

&lt;p&gt;The Internet is full of them, which means you need to know what to look for. Videos, articles, blog posts - you name it! It seems every subject with every possible configuration of tools was already covered by someone and posted online. It's useful if you know what you want to create, but you got stuck. You might dig through tons of them until you find the right one though. And even then there’s no guarantee that the code we shamelessly copied to our project will work. Let’s be honest. We’ve all been there at some point - 50% of the code from StackOverflow and 50% from other peoples projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Podcasts
&lt;/h3&gt;

&lt;p&gt;Amazing if you’re doing mundane stuff for a couple of hours a day every day. Like daily chores or commuting to your 9-to-5. Put those headphones on and immerse. It's not easy to recite whole blocks of code, so Podcasts mostly focus on news, tooling, personal experience, etc. &lt;/p&gt;

&lt;h3&gt;
  
  
  Boot camps
&lt;/h3&gt;

&lt;p&gt;I don't know much about them, but from what I read, there are good ones, and there are bad ones. They cost a ton of money, so be careful if you considering this path. As with almost everything, the best approach is to reach people who attended boot camps and ask for their recommendations. Going on a boot camp is not essential, but certainly, a good one will boost your efforts to become a programmer. &lt;/p&gt;

&lt;h3&gt;
  
  
  Live coders
&lt;/h3&gt;

&lt;p&gt;I was surprised when I learned that there are a lot of people on Twitch who stream their work. Why should anyone care? Well actually watching someone code can teach you stuff which a refined tutorial can't - the given coder's approach to problem-solving. In a scripted tutorial or a course everything, even the bugs have to be implemented deliberately. It's great that the trainer wants to show us how to troubleshoot an error, but it's often acted-out (poorly) as if it was a surprise and we cannot be sure that they covered all the errors. But when there's an error in a live-stream, trust me, the struggle is real.&lt;/p&gt;

&lt;p&gt;In the end, there are no magic beans, and you still will have to learn — a lot. To become a rockstar developer, you will have to acquire a sort of student mentality because you will have to learn until you basically retire. And don’t jump instantly into that new and trending framework everyone is talking about. Wait a while until the technology matures. You don’t want to waste your time on stuff which will not stay around for long, do you? Remember - cutting edge is not the place you want to be.&lt;/p&gt;

&lt;h2&gt;
  
  
  Expectations vs. Reality
&lt;/h2&gt;

&lt;p&gt;Ok, now that you’ve read most of the books and watched some of the tutorials you might think the time has come to take a look at the job market and start applying. And you're right, so do it. Did you do it? Ok, now take a look at the chart below.&lt;/p&gt;

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

&lt;p&gt;The above chart was taken from &lt;a href="https://www.thinkful.com/blog/why-learning-to-code-is-so-damn-hard/" rel="noopener noreferrer"&gt;Why Learning to Code is So Damn Hard&lt;/a&gt; and in my opinion, it's the best representation of the Dunning-Kruger effect. What is it? It's a psychological phenomenon when people mistakenly assess their abilities as greater than they actually are, which means that they cannot objectively evaluate their competence or incompetence.&lt;/p&gt;

&lt;p&gt;When I started to learn to code, it took me four weeks to get to the peak of the hand-holding honeymoon. I was convinced that the amount of HTML and CSS I learned was enough to land me a job. Right about then I applied for the first time. For me, it was a massive failure, and for that company, it was a complete waste of time. The downfall of confidence came shortly after. It was obvious that I couldn't assess my competences correctly. A little over a year has passed, and I can tell that I’m somewhere on the &lt;em&gt;upswing&lt;/em&gt;. I eventually got hired, but the hard work is not over, in fact, the hard work has only begun. Let me present you another chart - the Dunning-Kruger-Slawinski effect which describes what happens when you finally find a job&lt;/p&gt;

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

&lt;p&gt;It starts all over! The cycle never ends, and the conclusion is to remember that besides the inability to recognize one's lack of ability, humans also expect instant gratification but in real life, it’s more like small increments day by day. For now, it is easier to assume that &lt;em&gt;you know nothing&lt;/em&gt; and that this cycle repeats itself each time your life reaches a particular milestone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Survivor bias
&lt;/h2&gt;

&lt;p&gt;Do you remember when I said that you need to start applying as soon as possible? It's because I care for you and I want you to fail. Yup, you read it right - &lt;strong&gt;FAIL&lt;/strong&gt;. Failure is unavoidable in the hiring process, and sooner you realize it, the better. Failure is also free, so fail fast, as they like to say. &lt;/p&gt;

&lt;p&gt;Who are they you may ask? They surely are not the people who author the success stories you've probably read over the internet. You know which ones I'm talking about. The ones about pivoting someone's life, taking up coding and landing a dev job in a couple of months without a CS degree. I read dozens of them, each one more impressive than the last. I'm not trying to mock anyone, and I don't have any reason not to believe them, but none of them was about someone failing and giving up.&lt;/p&gt;

&lt;p&gt;This phenomenon has a name - survivor bias. It means that only success stories get proper visibility, and you rarely hear about someone who failed (unless you count the bulk sellouts of programming books on facebook groups for beginners that is). So if you are looking for a real-life example of someone who has been in the same spot as you are right now, then you only see a bunch of successes. Don't you think it would fair if you could also read about people who didn't make it? I believe everyone can code, but not everyone is fit for the job. I know it sounds harsh, but I  wish that boot camps wouldn't forget to mention that in their ads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hiring process
&lt;/h2&gt;

&lt;p&gt;According to &lt;a href="https://dev.to/ambroselittle/technical-interviewing-is-broken-but-we-can-fix-it-4964"&gt;Technical Interviewing is Broken, But We Can Fix It&lt;/a&gt; and &lt;a href="https://medium.com/@evnowandforever/f-you-i-quit-hiring-is-broken-bb8f3a48d324" rel="noopener noreferrer"&gt;F*** You, I Quit — Hiring Is Broken&lt;/a&gt;, the whole thing is flawed in general. I wouldn’t know - I just started. But while I read those articles, I kept nodding my head at every point the authors have made. From my own experience after many failed interviews, I was left with a feeling of not being fairly assessed as a candidate.&lt;/p&gt;

&lt;p&gt;I can only imagine that for experienced candidates, it has to be even more infuriating. It should be expected that they were already vetted while applying for previous jobs and probably already have created a successful code. But nooo… It needs to be checked yet again if you know textbooks by heart and can solve irrelevant algorithms on a whiteboard. What about other skills a successful candidate has to have like fitting in the team, identifying with the company values or delivering results on time? &lt;/p&gt;

&lt;p&gt;But for someone with little to no experience, it does not make much of a difference - a failed interview is a failed interview. Anyway, in this crazy world, your chance to get a job grows with every application sent. Do you remember when I wrote in the beginning that luck is essential to become a dev? It took me seven months from sending out the first resume to finally accepting an offer for junior javascript developer. The whole thing is a matter of match and fit so keep on keeping on - you might get lucky next time. Below you will find the &lt;a href="http://sankeymatic.com/" rel="noopener noreferrer"&gt;flow diagram&lt;/a&gt; of my job hunting efforts, and I recommend you to do one yourself. &lt;/p&gt;

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

&lt;p&gt;So eventually, if you'll try long enough, you will get an offer. But before you sign anything, think about what you're doing. The temptation after a long and weary job hunt might make you accept the first offer you get, but you can still end up with a dead-end job working for less than you deserve. I’m not saying &lt;em&gt;never accept the first offer&lt;/em&gt;, I’m just saying &lt;em&gt;don’t let the initial success distort your perspective&lt;/em&gt;. Assess the offer cold-heartedly. Is it what you’ve wanted? Can you squeeze more from it? In the end, the person who says &lt;em&gt;no&lt;/em&gt; to things is the person who is in control of their stuff.&lt;/p&gt;

&lt;h2&gt;
  
  
  Imposter syndrome
&lt;/h2&gt;

&lt;p&gt;But you got the job! Congratulations! It’s only sweet, sweet work from now on. Do you feel comfortable? Not really? More of a never-ending fear of embarrassing yourself in front of your coworkers? Well, you might have the imposter syndrome. It’s that feeling when everyone seems smarter than you, and in your opinion, you faked your way here, and you're about to get exposed as a phony. The feeling is not so uncommon - I get it almost every day. &lt;/p&gt;

&lt;p&gt;You might want to fight the impostor syndrome with acting that you know your stuff. Fake it till you make it, riiiight? I’m sorry. People in the company will see through you in a matter of days. Be honest. Don't be afraid to say &lt;em&gt;I don't know&lt;/em&gt;. No one will fire you right away after you admit that you don’t know something. Hardly any new employee brings revenue in the first couple of months, even in a senior position. &lt;/p&gt;

&lt;p&gt;I get through the impostor syndrome by making a list of my coding achievements and looking at it whenever I'm questioning my skills again. They can be even the smallest of things like &lt;em&gt;I solved a merging conflict by myself&lt;/em&gt; or &lt;em&gt;I made an alias for a very long command line&lt;/em&gt;. It helps a ton when I start to experience the symptoms of imposter syndrome yet again. Also the bunny from the tweet below has a spot on advice for you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;|￣￣￣￣￣￣￣￣￣￣￣|&lt;br&gt;| YOUR IMPOSTER'S |&lt;br&gt;| SYNDROME IS LYING |&lt;br&gt;| TO YOU |&lt;br&gt;| ＿＿＿＿＿＿＿＿＿＿＿| &lt;br&gt; (\_❀) ||&lt;br&gt; (•ㅅ•) ||&lt;br&gt; / 　 づ&lt;/p&gt;— Ali Spittel 💁 (&lt;a class="mentioned-user" href="https://dev.to/aspittel"&gt;@aspittel&lt;/a&gt;) &lt;a href="https://twitter.com/ASpittel/status/1115593200184377346?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;April 9, 2019&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;h2&gt;
  
  
  My way
&lt;/h2&gt;

&lt;p&gt;Four words: Read, Solve, Network, Create. I got where I am because I did just that - I completely immersed in programming and did nothing more for little over a year. I'm talking of course about my free time because I still had to go to work! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read&lt;/strong&gt;: Read all you can as much as you can. Read at home, read on a bus, read in a line in a grocery store. It works as long as you’re reading about programming. You don't like reading? Watch a video then but remember to make it relevant and watch stuff about programming.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solve&lt;/strong&gt;: This means whiteboard challenges. For the time being it is a required step at almost every job interview, so if you want to pass one, you need to know how to calculate that n-th Fibonacci number.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network&lt;/strong&gt;: Start networking as soon as you can. Try to be in the same room as people who code. Go to meetups. Make friends who are in the same spot as you. Find people to code with. Speak with more experienced programmers. Find a mentor. Can’t find a meet up nearby? Network digitally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create&lt;/strong&gt;: Learn Git as soon as you can, get yourself on GitHub and start committing to your own projects the moment you create an account. The less your GitHub timeline looks like a lousy Tetris game, the better. When job hunting if you don't have the experience, your portfolio will have to suffice, so it's good to have a couple of finished projects. They don't have to be huge or impressive in any way but contributing regularly and showing progress is very important.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blinding Finding (because Sick Pick was taken)
&lt;/h2&gt;

&lt;p&gt;Here are a bunch of useful (and free!) links I wish I knew about at the beginning of my coding journey. I really hope you will find them as helpful as I did.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;freeCodeCamp&lt;/a&gt; - I owe them the most, especially at the beginning of my coding adventure. I really really recommend it to anyone who wants to code but does not know where to start. It's a great place to learn the basics and more of many web technologies.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://30secondsofinterviews.org/" rel="noopener noreferrer"&gt;30secondsofinterviews&lt;/a&gt; - They have answers to almost all trick questions a recruiter can ask. Unfortunately, I only learned about this website after my first failed technical interview. Embarrassingly when I decided to bookmark it, I discovered it already was in my Bookmarks folder.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/getify/You-Dont-Know-JS" rel="noopener noreferrer"&gt;You Don’t Know JS&lt;/a&gt; - I don’t know which book about JavaScript should be your first, but I sure do know that You Don’t Know JS should be your second. Kyle Simpson covers a lot of material and gets very technical very quickly; that's why I do not recommend it for beginners. It also has answers to all that trick questions from interviews, including a thorough technical substantiation.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://syntax.fm/" rel="noopener noreferrer"&gt;Syntax.fm&lt;/a&gt; - A podcast from Wes Bos and Scott Tolinski. They talk about everything related to web dev and more (barbeque and dancing usually) for over 100 episodes, and it does not get dull for even a second. Best. Podcast. Ever.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.codewars.com" rel="noopener noreferrer"&gt;codewars&lt;/a&gt; - Are you interested in whiteboard challenges and martial arts? Then this website is for you. For every solved algorithm (kata), you get points (kyu) which eventually gets you a belt. Just like in Karate Kid!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.edx.org/course/cs50s-introduction-computer-science-harvardx-cs50x" rel="noopener noreferrer"&gt;CS50&lt;/a&gt; - This is a whole curriculum which in its design will teach you the basics of computer science. It's taught at Harvard, but it's also available online.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;Hey, you're still reading! What is left for me to say is that you're about to perform the greatest stunt in your career. You may have regrets along the way, maybe cry a little (or was it only me), but that feeling of satisfaction for scoring the best job on earth is priceless. I hope that after reading this, your road to success will be much smoother.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
