<?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: Michael Caveney</title>
    <description>The latest articles on DEV Community by Michael Caveney (@dylanesque).</description>
    <link>https://dev.to/dylanesque</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%2F104405%2F68317821-f3e2-40b1-b1ab-8d1cf1a99f42.jpeg</url>
      <title>DEV Community: Michael Caveney</title>
      <link>https://dev.to/dylanesque</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dylanesque"/>
    <language>en</language>
    <item>
      <title>What Tools Does Every Web Developer Need To Have/Know?</title>
      <dc:creator>Michael Caveney</dc:creator>
      <pubDate>Tue, 10 Aug 2021 14:59:15 +0000</pubDate>
      <link>https://dev.to/dylanesque/what-tools-does-every-web-developer-need-to-have-know-2e2</link>
      <guid>https://dev.to/dylanesque/what-tools-does-every-web-developer-need-to-have-know-2e2</guid>
      <description>&lt;p&gt;This week, we're going to step away from languages and frameworks, and talk about the tools every developer needs to have at the ready. And while a lot of these tools will be universal, this article is written with the assumption of JavaScript-heavy development, so you might need NuGet for package management if you're a C# developer instead of npm, to cite an example.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Laptop
&lt;/h2&gt;

&lt;p&gt;A good laptop is the most important tool a developer can have. You don't need a fancy or expensive machine when you're first getting started, but you should keep certain things in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I would recommend avoiding a machine with a Linux OS unless you're already very comfortable with Linux setup/config. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I used Windows machines for a long time (until switching to a MacBook Air last month), and they're mostly fine, but there are some caveats with them in the form of needing to learn a separate command line tool (or having to install a Linux command line and getting that configured to work with your file system), or difficult/impossible installations of certain tools like Rails or Docker. Some folks have said that the &lt;a href="https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux" rel="noopener noreferrer"&gt;Windows Subsystem for Linux&lt;/a&gt; has solved these issues, but my personal experience with the WSL was that it made everything buggier and unstable to the point of Windows being unusable with it installed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You will ideally want a certain amount of power to build and compile things more quickly, but don't feel like you need to go overboard and get a gaming rig. You should at least make sure that you have a solid-start hard-drive, as that will give you a noticable performance gain over the alternative. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Text Editor/IDE
&lt;/h2&gt;

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

&lt;p&gt;We have an embarrassment of riches when it comes to helpful tooling, and code editors/IDEs are no exception. You'll have a lot to choose from here, but I would strongly recommend &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt;. Feature-rich, customizable, open-source: there's good reason that VSCode is currently the 800lb gorilla in web development editors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Node.js
&lt;/h2&gt;

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

&lt;p&gt;&lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;Node&lt;/a&gt; is a JavaScript runtime that works outside of the browser. It's primarily used to write back-end JS logic, but I'm including it here because it's an important dependency for...&lt;/p&gt;

&lt;h2&gt;
  
  
  npm
&lt;/h2&gt;

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

&lt;p&gt;...&lt;a href="https://www.npmjs.com/" rel="noopener noreferrer"&gt;npm&lt;/a&gt; is the Node package manager, one of the most important tools used in front-end development with JavaScript. It's used to install packages that range from small utilities to third-party libraries to frameworks like Angular or Next.js. You'll want to keep both npm and Node.js updated to at least the latest stable release, since a lot of bugs and security vulnerabilites can happen when these get stale.&lt;/p&gt;

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

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

&lt;p&gt;Modern software development would be impossible without version control solutions like &lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;Git&lt;/a&gt;, and online repository  tools like &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. While it's necessary that you need to learn Git, you may wind up on a team that uses &lt;a href="https://bitbucket.org/" rel="noopener noreferrer"&gt;Bitbucket&lt;/a&gt; or &lt;a href="https://about.gitlab.com/" rel="noopener noreferrer"&gt;Gitlab&lt;/a&gt;, but if you know any one of these, learning one of the others shouldn't be an issue. &lt;/p&gt;

&lt;h2&gt;
  
  
  Chrome Dev Tools
&lt;/h2&gt;

&lt;p&gt;I can see a very clear "before" and "after" in terms of my productivity to find and fix problems that's tied to my aptitude with the various &lt;a href="https://developer.chrome.com/docs/devtools/" rel="noopener noreferrer"&gt;Chrome Dev Tools&lt;/a&gt;. This suite of tools that comes with Chrome allows you to inspect code, view errors and warnings, debug problems, view network requests, and more. There are a wide array of features that could take you some time to learn, but the dev tools features that you can and should get up and running with relatively quickly are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inspecting CSS, particularly "Computed" styles.&lt;/li&gt;
&lt;li&gt;Step-though debugging&lt;/li&gt;
&lt;li&gt;Lighthouse audits&lt;/li&gt;
&lt;li&gt;Inspecting network requests. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An alternative to the Chrome dev tools you might want to consider are the &lt;a href="https://developer.mozilla.org/en-US/docs/Tools" rel="noopener noreferrer"&gt;Firefox dev tools&lt;/a&gt;, which mostly have feature parity with the notable expection of their &lt;a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Examine_grid_layouts" rel="noopener noreferrer"&gt;CSS Grid Inspector&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;I hope you found this beginner's guide to development tools helpful. Next time on Minimum Effective Development, I'll have the first installment in a long series based on the &lt;a href="https://roadmap.sh/frontend" rel="noopener noreferrer"&gt;Front-End Developer Roadmap&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Five Books That Every Software Developer Should Own</title>
      <dc:creator>Michael Caveney</dc:creator>
      <pubDate>Sun, 13 Jun 2021 20:07:03 +0000</pubDate>
      <link>https://dev.to/dylanesque/five-books-that-every-software-developer-should-own-b6h</link>
      <guid>https://dev.to/dylanesque/five-books-that-every-software-developer-should-own-b6h</guid>
      <description>&lt;p&gt;Books can be a tricky thing for programmers: Unless the subject matter is fairly evergreen and established (like algorithms), the constant churn of what constitutes "current knowledge" can makes books seem like an unattractive, or even useless, resource for programmers. But there are some books I want to talk about today that I think every software developer should have within arm's reach!&lt;/p&gt;

&lt;h2&gt;
  
  
  Grokking Algorithms
&lt;/h2&gt;

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

&lt;p&gt;Gayle Laakman McDowell's &lt;a href="https://www.goodreads.com/book/show/54845619-cracking-the-coding-interview" rel="noopener noreferrer"&gt;Cracking the Coding Interview&lt;/a&gt; may be the 800lb gorilla in terms of data structures/algorithm interview prep, but I honestly think that Aditya Bhargava's &lt;a href="https://www.goodreads.com/book/show/22847284-grokking-algorithms-an-illustrated-guide-for-programmers-and-other-curio?from_search=true&amp;amp;from_srp=true&amp;amp;qid=FuBy5wLbS4&amp;amp;rank=1" rel="noopener noreferrer"&gt;Grokking Algorithms&lt;/a&gt; is a much better place to start. GA will provide you with a friendly and clear introduction to algorithmic techniques as recursion, dynamic programming, various sorting methods, etc. This might be too elementary for folks with a computer science degree, but this is an &lt;strong&gt;ideal introduction to the world of algorithms for newer developers&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Complete
&lt;/h2&gt;

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

&lt;p&gt;Steve McConnell's &lt;a href="https://www.goodreads.com/book/show/4845.Code_Complete?ac=1&amp;amp;from_search=true&amp;amp;qid=nP631y9eFr&amp;amp;rank=1" rel="noopener noreferrer"&gt;Code Complete&lt;/a&gt; covers a wide array of topics related to general programming and software engineering. This book is especially valuable for newer devs when it comes to &lt;strong&gt;getting to know the landscape of software engineering&lt;/strong&gt; and moving your "unknown unknowns" to "known unknowns".&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't Make Me Think!
&lt;/h2&gt;

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

&lt;p&gt;Steve Krug's &lt;a href="https://www.goodreads.com/book/show/18197267-don-t-make-me-think-revisited?ac=1&amp;amp;from_search=true&amp;amp;qid=cqlfENBWLH&amp;amp;rank=3" rel="noopener noreferrer"&gt;Don't Make Me Think, Revisited&lt;/a&gt; is essential reading for any developer who designs or works with UIs in any way, shape, or form. Krug lays out what you should be doing to build friction-free UI, and provides a thoughtful framework for you to utilize &lt;strong&gt;to approach building for the user first and foremost&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Pragmatic Programmer
&lt;/h2&gt;

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

&lt;p&gt;Andy Hunt and Dave Thomas's &lt;a href="https://www.goodreads.com/book/show/4099.The_Pragmatic_Programmer?ac=1&amp;amp;from_search=true&amp;amp;qid=XLHQF1rY9j&amp;amp;rank=1" rel="noopener noreferrer"&gt;The Pragmatic Programmer&lt;/a&gt; lays out a practical framework to building software in terms of personal attitude, approach, flexibility, etc. The way to think about this is that if Code Complete introduces the landscape of writing software, &lt;strong&gt;TPP provides guidance as to how to best navigate that landscape&lt;/strong&gt;.&lt;/p&gt;

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

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

&lt;p&gt;Git is one of the most important tools that a developer needs to know, and it can get pretty hairy from time to time. Because os this, I think that every developer could benefit from having a paper copy of Scott Chacon's &lt;a href="https://www.goodreads.com/book/show/6518085-pro-git?from_search=true&amp;amp;from_srp=true&amp;amp;qid=g4Llv9sh6m&amp;amp;rank=1" rel="noopener noreferrer"&gt;Pro Git&lt;/a&gt; on hand. And yes, it is available for &lt;a href="https://git-scm.com/book/en/v2" rel="noopener noreferrer"&gt;free online&lt;/a&gt;, but &lt;strong&gt;having it in your hands is faster and more immediate&lt;/strong&gt;. &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>books</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How Much JavaScript Do I Need To Be Job Ready?</title>
      <dc:creator>Michael Caveney</dc:creator>
      <pubDate>Fri, 28 May 2021 17:39:31 +0000</pubDate>
      <link>https://dev.to/dylanesque/how-much-javascript-do-i-need-to-be-job-ready-27ja</link>
      <guid>https://dev.to/dylanesque/how-much-javascript-do-i-need-to-be-job-ready-27ja</guid>
      <description>&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%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F9%2F99%2FUnofficial_JavaScript_logo_2.svg%2F768px-Unofficial_JavaScript_logo_2.svg.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%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F9%2F99%2FUnofficial_JavaScript_logo_2.svg%2F768px-Unofficial_JavaScript_logo_2.svg.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, we're going to cover JavaScript, the last of the three foundational technologies used in web development. I consider JavaScript harder to learn than CSS (especially if it's your first traditional programming language), but easier to master once you do have those fundamentals down. I will also mention that I'll only be discussing vanilla JS in this post, and Node, React, etc are out of the scope of this discussion. I will also not be touching on some important related tools such as &lt;code&gt;npm&lt;/code&gt; or bundlers, but I will be discussing those in a future post.&lt;/p&gt;

&lt;h1&gt;
  
  
  What Do I Mean By Job-Ready?
&lt;/h1&gt;

&lt;p&gt;Before starting, let me clarify precisely what I mean when I say 'job-ready:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You'll understand the broad strokes of the technology in question, and know the most fundamental concepts that come up every day. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There may be gaps in your knowledge, but those will be limited to secondary concepts or syntax/other details that you'll be able to find the answer to relatively quickly and easily.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You'll know exactly where to turn to find answers to problems or questions that you're running into.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Following the advice here won't make you a master of JavaScript, but you'll be effective at the day-to-day that you'll need to get started on the job.&lt;/p&gt;

&lt;h1&gt;
  
  
  What you need to know
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Core mechanics and terminology
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Primitive data types (string, number, boolean, etc), and how to operate on/utilize them, including type coercion.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Working with dates/time in JS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic data structures (arrays and objects), and how to work with them. Everything is JS is an &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object" rel="noopener noreferrer"&gt;Object&lt;/a&gt;, and it is vital that you understand at a deep level what that means, including &lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object_prototypes" rel="noopener noreferrer"&gt;prototypes&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Functions, and how they work. You also need to understand the distinction between a function and a method.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DOM manipulation and traversal using JS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How events work, listening for and reacting to them, and how bubbling and propogation work. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to use mathematical and logical operators, and various methods of control flow/iteration, including &lt;code&gt;if&lt;/code&gt;, &lt;code&gt;for&lt;/code&gt;, &lt;code&gt;while&lt;/code&gt; loops, switch statements, and built-in methods for iterating over data structures.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The two equality comparison operators (&lt;code&gt;==&lt;/code&gt; and &lt;code&gt;===&lt;/code&gt;), and the diffrences in how they work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Newer additions to the language from &lt;a href="http://es6-features.org/#Constants" rel="noopener noreferrer"&gt;ES6&lt;/a&gt; and beyond.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How scope works in JS, being able to tell what the value of &lt;code&gt;this&lt;/code&gt; is in any given calling context, and how hoisting and closures work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debugging, particularly step-through debugging.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to format data as JSON, and how to work with that format.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AJAX/asynchronous JavaScript, and the various ways of working with it (XMLRequest, callbacks, Promises, async/await, fetch). &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;JavaScript modules, and the various types of modules you might come across (CommonJS, etc).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to utilize third-party libraries in your code, and when to reach for a third-party solution versus coding it yourself.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Extra Credit
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;What the Map and Set data structures are, and when to reach for them over an array or an object.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Common data structures that aren't native to JS and require custom implementation such as linked lists, stacks, heaps, etc.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Where to Learn
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Recommended Reading
&lt;/h2&gt;

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

&lt;p&gt;While incredibly dated in many ways (it was published in 2008, well before a lot of additions were made to the language that address some of the pain points he discusses), I think that every new JS developer should have a look at Douglas Crockford's &lt;a href=""&gt;JavaScript: The Good Parts&lt;/a&gt;, if for no other reason than to see what NOT to do from the "Bad Parts" and "Even Worse Parts" listed there, in addition to some of the stranger/seemingly incongrous features of the language.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic Resources
&lt;/h2&gt;

&lt;p&gt;For the absolute basics, I'm going to repeat my recommendations from my post on &lt;a href="https://dev.to/dylanesque/how-much-html-do-i-need-to-be-job-ready-11pc"&gt;getting job-ready with HTML&lt;/a&gt;, and I'll point out that freeCodeCamp's curriculum really shines with the breadth and depth of JS practice. If you do the work going through the FCC JavaScript Algorithms and Data Structures certification, you're going to be well equipped to tackle JS day to day.&lt;/p&gt;

&lt;p&gt;If you're looking for learning sources from Udemy, I'd recommend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Stephen Grider and Colt Steele's &lt;a href="https://www.udemy.com/course/javascript-beginners-complete-tutorial/" rel="noopener noreferrer"&gt;The Modern JavaScript Bootcamp Course&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Andrew Mead's &lt;a href="https://www.udemy.com/course/modern-javascript/" rel="noopener noreferrer"&gt;The Modern JavaScript Bootcamp&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Max Schwarzmuller's &lt;a href="https://www.udemy.com/course/javascript-the-complete-guide-2020-beginner-advanced/" rel="noopener noreferrer"&gt;JavaScript The Complete Guide 2021&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Brad Traversy's &lt;a href="https://www.udemy.com/course/modern-javascript-from-the-beginning/" rel="noopener noreferrer"&gt;Modern JavaScript From the Beginning&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Premium Resources
&lt;/h2&gt;

&lt;p&gt;For getting a really solid grasp on how the language works and some of the trickier concepts, I strongly recommend you check out Will Sentance's JavaScript: The Hard Parts workshops on &lt;a href="https://frontendmasters.com/" rel="noopener noreferrer"&gt;Front End Masters&lt;/a&gt;. Will is an energetic and engaging teacher, and getting a solid grasp on the material in these lessons will put you well ahead of a lot of newer devs.&lt;/p&gt;

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

&lt;p&gt;If I had to recommend ONE JS course, it would be Wes Bos's &lt;a href="https://beginnerjavascript.com/" rel="noopener noreferrer"&gt;Beginner JavaScript&lt;/a&gt;, which covers paractically everything I've listed above, and explains it clearly and succinctly. Wes's &lt;a href="https://es6.io/" rel="noopener noreferrer"&gt;ES6 For Everyone&lt;/a&gt; is also every good, going into a lot of detail about newer features up to and including ES8.&lt;/p&gt;

&lt;h1&gt;
  
  
  Where To Get Help/Find Reference
&lt;/h1&gt;

&lt;p&gt;Third verse, same as the first: Stack Overflow and MDN (especially MDN) are going to be very helpful resources for you as you learn JS.&lt;/p&gt;

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

&lt;p&gt;JavaScript can seem daunting if it's your first programming language, but with some diligence and the help of some of the resources mentioned here, you'll have a solid grasp on the language before you know it! Join me next Friday as I discuss what books every software developer should have on their bookshelf!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How Much CSS Do I Need To Be Job Ready?</title>
      <dc:creator>Michael Caveney</dc:creator>
      <pubDate>Fri, 21 May 2021 17:35:27 +0000</pubDate>
      <link>https://dev.to/dylanesque/how-much-css-do-i-need-to-be-job-ready-3h0m</link>
      <guid>https://dev.to/dylanesque/how-much-css-do-i-need-to-be-job-ready-3h0m</guid>
      <description>&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%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2Fd%2Fd5%2FCSS3_logo_and_wordmark.svg%2F180px-CSS3_logo_and_wordmark.svg.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%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2Fd%2Fd5%2FCSS3_logo_and_wordmark.svg%2F180px-CSS3_logo_and_wordmark.svg.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CSS is one of the three foundational web technologies every front-end developer needs to know, and in some ways, the most difficult to learn. There are a staggering amount of &lt;a href="https://css-tricks.com/how-many-css-properties-are-there/#:~:text=520%20distinct%20property%20names%20from,reports%20and%2066%20editors'%20drafts." rel="noopener noreferrer"&gt;properties&lt;/a&gt; one can learn, and many subtleties to be aware of regarding how they interact with each other. Today, I'm going to go over the minimum CSS you need to know to be effective on the job!&lt;/p&gt;

&lt;h1&gt;
  
  
  What Do I Mean By Job-Ready?
&lt;/h1&gt;

&lt;p&gt;Before starting, let me clarify precisely what I mean when I say 'job-ready:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You'll understand the broad strokes of the technology in question, and know the most fundamental concepts that come up every day. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There may be gaps in your knowledge, but those will be limited to secondary concepts or syntax/other details that you'll be able to find the answer to relatively quickly and easily.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You'll know exactly where to turn to find answers to problems or questions that you're running into.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Following the advice here won't make you a master of CSS, but you'll be effective at the day-to-day that you'll need to get started on the job.&lt;/p&gt;

&lt;p&gt;I will mention that while the mechanics that dictate how CSS works are simple, how they interact with each other in the wild can be anything BUT simple, and CSS requires a much deeper understanding of the fundamentals that HTML to be truly effective and not have to constantly be redoing previous code. This post in particular is probably going to have a lot of edits as I refine it to deliver the best information. &lt;/p&gt;

&lt;h1&gt;
  
  
  What you need to know
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Core mechanics and terminology
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Be able to identify and explain what properties, selectors, declarations, values, and rules are. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand at a high level how specificity, inheritance, and the cascade work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand the &lt;a href="https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/The_box_model" rel="noopener noreferrer"&gt;box model&lt;/a&gt;, the different roles that margin/padding/border play, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand the basic display types (block, inline, and inline-block), and the major differences in how the default versions of these display types work in &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flow_Layout" rel="noopener noreferrer"&gt;flow layout&lt;/a&gt; aka the default version of how layout works in CSS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand the basics of &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/position" rel="noopener noreferrer"&gt;positioning&lt;/a&gt; in flow layout (absolute vs relative vs sticky vs fixed vs static) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand the fundamentals of stacking with &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/z-index" rel="noopener noreferrer"&gt;z-index&lt;/a&gt;, and when and what elements it's applied to in that given context.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understanding how &lt;a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/" rel="noopener noreferrer"&gt;Flexbox&lt;/a&gt; and &lt;a href="https://css-tricks.com/snippets/css/complete-guide-grid/" rel="noopener noreferrer"&gt;Grid&lt;/a&gt; work is a must for modern CSS developers; you should be tangentially aware of how layout works using &lt;code&gt;float&lt;/code&gt;, but don't spend a lot of time on this since it shouldn't be the first layout tool you reach for.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to remove or hide items from the DOM or the page: There is a difference between removing items from the DOM or simply making them invisible, and you should know what rules accomplish one or the other, and have an idea of some situations where one method is more desirable than the other.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand the different units of measurement (pixels, ems, rems, etc), and their strengths, weaknesses, optimum use cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Techniques for responsive design, including media queries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At least some familiarity with transforms, animation, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to build a basic design system, and utilize CSS variables.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Extra Credit
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Have some familiarity with older paradigms to make CSS more efficient, such as Sass, BEM, etc. These aren't as widely used these days, and you can delve into more detail if you need one of these technologies for a job, but it's not something you'll need for every job.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some familiarity with a CSS framework like Bootstrap can be helpful, but it would be better to be able to demonstrate fluency in writing CSS without them. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If and when you learn a front-end framework like React, some knowledge of a paradigm like Tailwind, styled-components, or Emotion would be helpful.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Where to Learn
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Basic Resources
&lt;/h2&gt;

&lt;p&gt;For the absolute basics, I'm going to repeat my recommendations from my post on &lt;a href="https://dev.to/dylanesque/how-much-html-do-i-need-to-be-job-ready-11pc"&gt;getting job-ready with HTML&lt;/a&gt;, as far as basic resources for your first contact with the language go, with the caveat that you'll get less of a quality education in terms of writing solid CSS from freeCodeCamp than you would HTML.&lt;/p&gt;

&lt;p&gt;Additionally, Google's &lt;a href="https://web.dev/" rel="noopener noreferrer"&gt;web.dev&lt;/a&gt; mini learning platform has a really nice, brand-new &lt;a href="https://web.dev/learn/css/" rel="noopener noreferrer"&gt;CSS module&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%2Ffreetutorialsudemy.com%2Fwp-content%2Fuploads%2F2020%2F03%2Fimages%2Fimage_03-18-2020_114249.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffreetutorialsudemy.com%2Fwp-content%2Fuploads%2F2020%2F03%2Fimages%2Fimage_03-18-2020_114249.jpg" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
For a deeper dive, I would recommend taking a look at Jonas Schmedtman's &lt;a href="https://www.udemy.com/course/advanced-css-and-sass/" rel="noopener noreferrer"&gt;Advanced CSS&lt;/a&gt; Udemy course. This course shows projects in styled with three different paradigms (old school, Flexbox, Grid) so you can see how those approaches work, and how some of the more modern ones make some techniques easier than the old way or enable layouts that would have been previously impossible. &lt;/p&gt;

&lt;h2&gt;
  
  
  Premium Resources
&lt;/h2&gt;

&lt;p&gt;A small caveat about the following section: The course I'm about to talk about is in closed beta at the time of this writing, but I consider it so essential that I can't exclude it here. So with that said...&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%2Fcss-for-js.dev%2Fog-image-v2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcss-for-js.dev%2Fog-image-v2.jpg" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The toughest thing about CSS is that the overwhelming majority of education surrounding it is "Here's this rule, this is what it does" without going into the inevitable gotchas or unexpected behavior that will pop up when you're writing CSS at any scale above the smallest possible use-case. Compared to HTML and JavaScript, it's much harder to learn how to write good CSS without a teacher that really knows that they're talking about.&lt;/p&gt;

&lt;p&gt;Josh Comeau's &lt;a href="https://css-for-js.dev/" rel="noopener noreferrer"&gt;CSS For JS Developers&lt;/a&gt; doesn't do this and instead focuses on how the core behavior behind many aspects of the language work, and will teach you tips and tricks it would take you years of trial and error writing production code to figure out. My ability to write efficient, maintainable, and scalable CSS has improved considerably as a direct result of the modules currently available to those who were able to get in on the beta (5 out of 9 total modules), and I consider this the single best CSS resource money can buy.&lt;/p&gt;

&lt;h1&gt;
  
  
  Where To Get Help/Find Reference
&lt;/h1&gt;

&lt;p&gt;In addition to the sources I mentioned in my last post (Stack Overflow and MDN), I would also recommend checking out &lt;a href="https://css-tricks.com/" rel="noopener noreferrer"&gt;CSS Tricks&lt;/a&gt;, a time-honored blog with many deep dives on various CSS subjects, including the definitive guide to Flexbox that I had linked above.&lt;/p&gt;

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

&lt;p&gt;CSS can be surprisingly tricky to get a firm handle on, but I hope this guide makes the path a lot easier for you. Join me next time, where I talk about getting job-ready with JavaScript!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>css</category>
    </item>
    <item>
      <title>How to Avoid Overlearning In Software Development</title>
      <dc:creator>Michael Caveney</dc:creator>
      <pubDate>Thu, 20 May 2021 00:41:35 +0000</pubDate>
      <link>https://dev.to/dylanesque/how-to-avoid-overlearning-in-software-development-339l</link>
      <guid>https://dev.to/dylanesque/how-to-avoid-overlearning-in-software-development-339l</guid>
      <description>&lt;p&gt;In the &lt;a href="https://dev.to/dylanesque/what-you-need-to-know-before-you-start-learning-code-1f6j"&gt;last entry&lt;/a&gt; in the Minimum Effective Development series, I talked about what kinds of things people should do to make sure they're learning development as efficiently as possible. Almost immediately after publishing that post, I realized that I had neglected an important topic when it comes to learning: how to avoid overlearning.&lt;/p&gt;

&lt;h1&gt;
  
  
  What Does Overlearning Look Like?
&lt;/h1&gt;

&lt;p&gt;Overlearning was definitely an anti-pattern that slowed me down in the earlier days of my learning software development. To be specific, I'm talking about overlearning in the forms of both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spending too much time trying to learn or memorize peripheral details about a certain technology or subject.
&lt;/li&gt;
&lt;li&gt;Having too wide a scope of subjects that you keep bouncing between, and not getting a strong grasp or deep knowledge of key related topics in any of those subjects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A large focus of my writing about development is directed towards reducing decision fatigue and learning faster by staying focused, so I'm going to take a few minutes to talk about strategies to keep overlearning from rearing its ugly head in your development journey!&lt;/p&gt;

&lt;h1&gt;
  
  
  Be Strategic About What You Memorize
&lt;/h1&gt;

&lt;p&gt;In a production environment, you'll often have to implement features or techniques you've never done before, so research is a vital skill for a developer. When you take this into consideration along with the overwhelming amount of HTML tags and attributes, CSS properties, JavaScript methods, etc, it becomes clear very quickly that trying to memorize everything is &lt;em&gt;not&lt;/em&gt; the way to go. Here's how I recommend you approach what you should and shouldn't memorize:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the knowledge a high-level concept that's integral to how a particular technology works (such as the CSS box model or the event loop in Node.js) or specific information you need to know to pass a test (such as S3 storage tiers and their costs for those taking AWS certification tests)? If so, you should put in an active effort to memorize that thing.
&lt;/li&gt;
&lt;li&gt;Is the information a side-detail (such as what attributes you can add to an &lt;code&gt;input&lt;/code&gt; tag in HTML) or a syntactical detail (like the syntax of an &lt;a href=""&gt;arrow function&lt;/a&gt; in JavaScript)? This sort of thing is better to look up as needed or to memorize passively through repeated practice of implementing the thing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Aim for the Minimum Effective Dose of Knowledge
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Pareto_principle"&gt;The Pareto Principle&lt;/a&gt; states that "for many outcomes, roughly 80% of consequences come from 20% of the causes". What this looks like in the real world would be when 80% of a company's effectiveness is a result of 20% of the staff, or that 80% of a web framework comes from 20% of its API. You should get used to figuring out what corners of a specific technology you're learning provide the biggest bang for your buck, and concentrate on having solid knowledge of those.&lt;/p&gt;

&lt;h1&gt;
  
  
  Keep The Scope of What You're Currently Working On Manageable
&lt;/h1&gt;

&lt;p&gt;By far, the specific type of overlearning that hurt me the most early on was dabbling in a lot of different programming languages (Java, PHP, C#, C, Elixir, etc) that I don't specialize in when I could have been using that time to focus on learning the languages that I want to work with (JavaScript, Ruby). While seeing a variety of programming paradigms &lt;em&gt;did&lt;/em&gt; help me see some common patterns and help drill in some high-level rules, the time I spent wasn't worth it in the long run. &lt;/p&gt;

&lt;p&gt;To be clear, I don't think you should only ever learn one thing at a time. If you're brand-new to JavaScript and you're having trouble wrapping your head around a new concept like Objects, it can be good to shift gears to something like learning BEM in CSS to give your brain a break. &lt;/p&gt;

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

&lt;p&gt;The good thing about overlearning is that it's fairly easy to avoid once you're aware of it and what it looks like. Next time, I'm going to discuss how much HTML you need to know to be job-ready!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>What You Need to Know Before You Start Learning Code</title>
      <dc:creator>Michael Caveney</dc:creator>
      <pubDate>Thu, 20 May 2021 00:38:11 +0000</pubDate>
      <link>https://dev.to/dylanesque/what-you-need-to-know-before-you-start-learning-code-nc9</link>
      <guid>https://dev.to/dylanesque/what-you-need-to-know-before-you-start-learning-code-nc9</guid>
      <description>&lt;p&gt;Welcome to the first entry in Minimum Effective Development, a blog series focused on sorting out signal from noise when it comes to learning front-end software development. There's a LOT to potentially learn out there, and I'm going to guide you towards what you really need to know when you're getting started! &lt;/p&gt;

&lt;p&gt;Taking the self-directed path to learning code is difficult for a lot of reasons, not the least of which are &lt;a href="https://en.wikipedia.org/wiki/There_are_known_knowns" rel="noopener noreferrer"&gt;unknown unknowns&lt;/a&gt;. You can spend a lot of time unnecessarily spinning your wheels getting good at software development: hours, days, weeks, or you can start learning with a framework to be organized and efficient. To help you do just that, I've put together this guide to prepare you to learn to code the right way!&lt;/p&gt;

&lt;h1&gt;
  
  
  Learn How to Learn Efficiently
&lt;/h1&gt;

&lt;p&gt;Learning efficiently is a great skill to have regardless of your field of study, but the wide array of knowledge and fluid nature of web development makes the most efficient approach to learning much more of a must than a nice-to-have. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnsiakzkb3x4ft1p0v95g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnsiakzkb3x4ft1p0v95g.png" alt="Cover image of Learning to Learn course"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My recommendation here is to go through Andrei Neagoies's Learning to Learn course (available on both &lt;a href="https://www.udemy.com/course/learning-to-learn-efficient-learning-zero-to-mastery/" rel="noopener noreferrer"&gt;Udemy&lt;/a&gt; and his &lt;a href="https://zerotomastery.io/" rel="noopener noreferrer"&gt;Zero To Mastery platform&lt;/a&gt;. Here, Andrei breaks down techniques and mindsets that will enable you to learn as efficiently as possible while wasting the least amount of time. Andrei is very good about referencing where he got certain tactics from, so there's a large and helpful bibliography that comes with this.&lt;/p&gt;

&lt;h1&gt;
  
  
  Build Effective Habits
&lt;/h1&gt;

&lt;p&gt;Coding can (and should be fun), but it is work, and it takes effort to engage in certain types of practice or practicing at all when you'd rather be doing something else. If I could only recommend one book to the brand-new coder, it would be James Clear's indispensable &lt;a href="https://jamesclear.com/atomic-habits" rel="noopener noreferrer"&gt;&lt;em&gt;Atomic Habits&lt;/em&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4au4usz906h4phxy3znm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4au4usz906h4phxy3znm.png" alt="Cover of Atomic Habits"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The long and short of it is that you want to make good habits automatic and easy to perform, and bad habits more difficult. I was good about practicing code before I read this, but I got a lot better at the right kind of practice and got WAY more consistent with exercise, which really helped weather a lot of pandemic stress. Absolutely, positively, do not begin learning to code without reading this.&lt;/p&gt;

&lt;h1&gt;
  
  
  Map It Out
&lt;/h1&gt;

&lt;p&gt;Part of effective learning is understanding the scope of the knowledge area you're learning, and for learning to code, there are various &lt;a href="https://roadmap.sh/" rel="noopener noreferrer"&gt;developer roadmaps&lt;/a&gt;. These roadmaps have been created to illustrate what goes into these technologies and provide some guidance into what methodologies/libraries/etc to prefer when you have a choice between several of them. I'll be making heavy use of these roadmaps (particularly the front-end roadmap) in future blog entries. &lt;/p&gt;

&lt;h1&gt;
  
  
  Set Your Goals and Track Your Progress
&lt;/h1&gt;

&lt;p&gt;Learning to code can be complicated and overwhelming at first, especially on the front-end. One way you can help yourself stay focused on effective action is to use &lt;a href="https://en.wikipedia.org/wiki/SMART_criteria" rel="noopener noreferrer"&gt;SMART criteria&lt;/a&gt; to outline what you're working on at any particular moment. &lt;/p&gt;

&lt;p&gt;When it comes to tracking that progress, you'll want to avail yourself of &lt;a href="https://trello.com/en-US" rel="noopener noreferrer"&gt;Trello&lt;/a&gt; or &lt;a href="https://dev.to/aellon/agile-scrum-kanban-oh-my-116d"&gt;some other type of kanban board&lt;/a&gt;. I don't know what it is about this, but there was a shocking "before" and "after" in my consistency and productivity after making regular use of Trello in my day-to-day.&lt;/p&gt;

&lt;h1&gt;
  
  
  Write It Down
&lt;/h1&gt;

&lt;p&gt;Studies have shown that physically taking notes with pen/pencil and paper leads to better retention, so strongly consider doing just that. Additionally, recording what you're learning gives you the opportunity to rephrase it in your own words, forcing you to think critically about the topic.&lt;/p&gt;

&lt;p&gt;What I personally do is maintain a folder of Markdown files on my desktop that I use to takes notes on a variety of topics, which I save to &lt;a href="https://github.com/dylanesque/Cheatsheets" rel="noopener noreferrer"&gt;Github&lt;/a&gt;. I make this tradeoff because it's easier for me to organize, update, and use as a reference for blog posts.&lt;/p&gt;

&lt;h1&gt;
  
  
  Understand That It Won't Happen Immediately...
&lt;/h1&gt;

&lt;p&gt;There's a game I like to play with articles that have titles like "I Learned to Code and Got A Job in 6 Months!!!" I call "find the caveat", where I look for the part where they were previously a lawyer or stockbroker or some other high-paying job, or that their spouse supported them while they did nothing but code for months on end. I mention this because while these stories can be inspiring, they're not very realistic or reflective of the norm. The simple truth that web development has gotten a lot more complicated since that time, and an effective early career dev now has to have a much more varied toolkit now than they did 5+ years ago, when knowing HTML, CSS, and some basic JavaScript was enough. Because of this, I want you to...&lt;/p&gt;

&lt;h1&gt;
  
  
  ...Be Patient With Yourself
&lt;/h1&gt;

&lt;p&gt;Everybody is different and has different strengths, weaknesses, and constraints. You might have work or family obligations. You might be recovering from an injury or illness, or living with a disability of some kind. You shouldn't compare yourself or your progress to others because everybody's circumstances are so different. As countless others have said before me, this is a marathon, not a sprint, and you need to embrace that mindset and be good to yourself while you're working towards your goals.&lt;/p&gt;

&lt;h1&gt;
  
  
  Learning How and Where to Ask For Help
&lt;/h1&gt;

&lt;p&gt;This can be tricky to get a feel for at first, but there is a time and a place for struggling in learning. Some struggle IS essential for truly understanding new concepts, but too much frustration isn't a good thing. This is something I learned via trial and error in my first production job, and the way I approach it is something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Is this struggle helping me understand the thing I'm struggling with better? This is good struggle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Am I banging my head against the wall and have circled back to solutions that I've already tried and didn't work, or have I spent more than 30 minutes on a problem with no forward motion whatsoever? This is bad struggle and you need to get a second pair of eyes on the issue ASAP.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When it comes to where to look for help, this can vary a lot from technology to technology: When I do blog entries on specific technologies, I'll go into recommended sources, but I will note that you'll generally want to favor sources that are active and real-time based, over forums and message boards. If there's an official Slack or Discord channel for the technology in question, you'll want to be on there.&lt;/p&gt;

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

&lt;p&gt;I hope this advice helps you: My goal with a lot of my blog entries to help people avoid some of the mistakes that I made when I was first learning to code, and I'll be going into more detail regarding how to approach specific technologies in the future, and I hope to see you there!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>My March &amp; April In Code</title>
      <dc:creator>Michael Caveney</dc:creator>
      <pubDate>Mon, 03 May 2021 16:16:13 +0000</pubDate>
      <link>https://dev.to/dylanesque/my-march-april-in-code-e1c</link>
      <guid>https://dev.to/dylanesque/my-march-april-in-code-e1c</guid>
      <description>&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%2Fi.pinimg.com%2Foriginals%2Fe1%2F76%2F46%2Fe176466ae1e8c6af827d476db5af9984.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.pinimg.com%2Foriginals%2Fe1%2F76%2F46%2Fe176466ae1e8c6af827d476db5af9984.jpg" alt="Picture of Homer Simpson next to a calendar"&gt;&lt;/a&gt;&lt;br&gt;
Two months in one blog entry? What happened with March? Well, the whole point of this is for me to learn in public and be forthcoming about the stuff that's not working the way I want it to. More on this later...&lt;/p&gt;

&lt;h1&gt;
  
  
  What I Learned
&lt;/h1&gt;

&lt;p&gt;Learning really took up a lot of space this month, as some surprises came up that I had to take advantage of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I was given the opportunity to audit an Angular workshop that an employer that I didn't quite make the cut for provides, for free in exchange for some feedback. While I concentrate on being strongest in React above all other frameworks, I have the most prod experience in Angular, and I don't want to let those skills rust too much. This workshop did a much better job of getting devs unfamiliar with Angular up to speed than any other resource I've come across, and I learned a few new things about how to approach architecture in Angular.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Max Schwarzmuller has a new &lt;a href="https://www.udemy.com/course/nextjs-react-the-complete-guide/" rel="noopener noreferrer"&gt;Next.js course on Udemy&lt;/a&gt;. I know, it's Udemy, but I feel the need to go through every major resource I can for key technologies in my bag of tricks, which Next.js definitely is. This was helpful to me specifically in terms of getting a lot more comfortable with the Next.js data-fetching hooks like &lt;code&gt;getStaticProps&lt;/code&gt; and API routes. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Developer &lt;a href="https://www.joshwcomeau.com/" rel="noopener noreferrer"&gt;Josh Comeau&lt;/a&gt; briefly opened up a pre-sale for beta access (drafts of the first 4 out of 9 eventual modules, to be fully released in the fall) for his &lt;a href="https://css-for-js.dev/" rel="noopener noreferrer"&gt;CSS for JS Developers&lt;/a&gt; course. On the strength of those first four modules alone, I'm calling it now: this is going to be the best CSS course that money can buy. I've learned tricks that it would have taken me years of trial and error to stumble over in production, and I have a much deeper understanding of how the various parts of the box model, layout, z-index, Flexbox, etc, work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As a rule, I try not to get dinged on a subject in an interview more than once, and one question I wasn't at all equipped to explain was "Tell me about the critical rendering path". So I went on a deep dive in April with Clyde Matthew's excellent Web Development Secrets Udemy &lt;a href="https://www.udemy.com/course/new-web-development-secrets/" rel="noopener noreferrer"&gt;course&lt;/a&gt;, which delves into the CRP, AJAX, HTTP, and other behind-the-scenes aspects of development which aren't talked about much, and I know have a clearer understanding of the CRP, and how to optimize applications for it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What I Built
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/dylanesque/MPQChampApp" rel="noopener noreferrer"&gt;Hall of Champions&lt;/a&gt;: I modified this application but converting some independent application state to derived state with the help of an original-Redux-like implementation of &lt;code&gt;useReducer&lt;/code&gt;, which resulted in potential savings of tens of thousands of unnecessary DOM elements per page. The performance improvements from this change were rendered somewhat moot by a refactor that replaced a &lt;code&gt;select&lt;/code&gt; input with a &lt;code&gt;number&lt;/code&gt; input, saving even more tens of thousands of unnecessary elements on the first paint. More below about my next steps for this app!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Open Source Contributions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/codeforboston/police-data-trust" rel="noopener noreferrer"&gt;Police Data Trust&lt;/a&gt; (name change likely later on): I've made some small open-source contributions via &lt;a href="https://github.com/codeforboston" rel="noopener noreferrer"&gt;Code For Boston&lt;/a&gt; before, but this is the first opportunity I've had to contribute to something from the beginning, and while front-end work hasn't commenced at the time of this writing, it's given me some useful practice with team development and preparing complex applications for deployment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;While trying to figure out how to implement a dynamic grid in &lt;a href="https://github.com/tannerlinsley/react-virtual" rel="noopener noreferrer"&gt;react-virtual&lt;/a&gt;, I noticed an omission/clarification in the docs regarding one of the &lt;code&gt;useVirtual&lt;/code&gt; properties, so that was an easy win PR!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What I Read:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.goodreads.com/book/show/1867.The_Elements_of_User_Experience?ac=1&amp;amp;from_search=true&amp;amp;qid=88i5Wwd0Xm&amp;amp;rank=1" rel="noopener noreferrer"&gt;&lt;strong&gt;The Elements of User Experience&lt;/strong&gt;&lt;/a&gt;: One of the OG User Experience books, this one is a good grounding in UX basic ideas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.goodreads.com/book/show/48570456-effective-typescript?ac=1&amp;amp;from_search=true&amp;amp;qid=BJ1Y2L4ydI&amp;amp;rank=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Effective TypeScript&lt;/strong&gt;&lt;/a&gt;: My favorite types of learning resources are the ones that take the time to spell out "When you have multiple approaches to solving a problem within this paradigm, here are the strengths and weaknesses of those approaches", and Effective TypeScript is a wonderfully opinionated guide to making use of TypeScript in the wild. This should be on every TS dev's bookshelf!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.goodreads.com/book/show/33369247-learning-http-2?from_search=true&amp;amp;from_srp=true&amp;amp;qid=bMh5gOXJ61&amp;amp;rank=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Learning HTTP/2: A Practical Guide for Beginners&lt;/strong&gt;&lt;/a&gt;: This was a surprisingly engaging (and mercifully short) read about what should be a much drier topic, this book serves as a good crash course for HTTP noobs that will give you a clear mental model as to what the latest version of the protocol improved over its predecessor, and how to approach utilizing and analyzing it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What I Wrote
&lt;/h1&gt;

&lt;p&gt;I wrote blog posts on &lt;a href="https://dev.to/dylanesque/how-to-avoid-overlearning-in-software-development-c9g"&gt;overlearning in general&lt;/a&gt; and &lt;a href="https://dev.to/dylanesque/how-much-html-do-i-need-to-be-job-ready-11pc"&gt;how much HTML you need to be job ready&lt;/a&gt; in March. The HTML post is the first in a series that addresses specifically targeting the minimum effective dose of knowledge for certain technologies, so I'm happy to have that one out there.&lt;/p&gt;

&lt;h1&gt;
  
  
  How Did I Do On Last Month's Goals?
&lt;/h1&gt;

&lt;p&gt;I set several goals for March in my &lt;a href="https://dev.to/dylanesque/my-february-in-code-2fef"&gt;last blog entry&lt;/a&gt;: So how did I do with these?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Writing integration and E2E tests for Hall of Champions&lt;/strong&gt;: I started this, but immediately ran into difficulties with integration testing for an application that's using both Next and Apollo: there are some outstanding performance issues with that app I need to knock out first, but I don't want to kick this can too far down the road.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Read and take notes on Effective TypeScript&lt;/strong&gt;: I did both of those things, and I feel a lot more confident in my ability to use TypeScript in the wild as a result of the work I've been putting in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Have UX/UI notes on my Metal Detector blog, and possibly some tests in Storybook&lt;/strong&gt;: Lol, nope! Though I did update the codebase to Gatsby 3, and I'll be able to get some more work done on this very soon. I build a color palette for this, so yay?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start studying for AWS Certified Solutions Architect Exam&lt;/strong&gt;: So, yes-ish? What I actually did was start studying for the AWS Certified Cloud Practioner exam, which I should be ready to ace within the next week or so. While this one isn't a major developer certification, I agree with the take that you should start here if you're newer to AWS since it will provide you with a good overview of the AWS ecosystem, and what tool to reach for to use on 'X' problem. The tricky thing about this is that studying for this certification is a huge time suck, and can take a lot of oxygen out of the room while you're working on other things.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How Am I Doing Keeping Up With My Overall Goals?
&lt;/h1&gt;

&lt;p&gt;I did a little better in March than I did in February, and a little better in April than in March, but the kind of progress I want to see at the moment should be reflected in a resume (and/or in the web presence of projects) that looks at least slightly better than it did the month before. While I'm moving in the right direction there, I want to see bigger results month to month, since my biggest disadvantage as a developer is that my online body of work doesn't reflect my actual level of capability, and that's the biggest issue that needs addressing. I'm seeing learning (read: I'm studying a topic and taking notes on it or blogging about it, but not incorporating it in anything I'm currently building) as taking up WAY more time than I'd like it to, so I'm going to curtail the only acceptable learning for the time being to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Concepts I don't understand to the depth I need to, especially for writing about the &lt;a href="https://roadmap.sh/frontend" rel="noopener noreferrer"&gt;Front-End Development Roadmap&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Any new CSS For JS Developers modules that get released: This should be a slow trickle until August or September of the remaining 4 modules Josh hasn't completed yet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Any major updates (TS update for Epic React, a complete rewrite for Testing JavaScript) to any of Kent C. Dodds's courses, which I don't expect to see before the summer at the earliest.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MAYBE Moon Highway's &lt;a href="https://graphqlworkshop.com/" rel="noopener noreferrer"&gt;GraphQL Workshop&lt;/a&gt;, when it's released? This is going to depend on the price and what exactly's in there, but it looks promising?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  What's Up For May?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Implementing windowing for Hall of Champions: Performance for the one big page load is NOT QUITE there, but implementing windowing via react-virtual should do the trick. I had some trouble wrapping my head around grids, but the trick seems to be converting the data to a shape that matches the virtual rows and columns (so, nested arrays). I can't find detailed examples of implementing this, so this should make an excellent blog post when I'm done!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Complete freeCodeCamp's Data Visualization certification: I need to switch gears, and I've been chasing this white whale for a while, only for it to be deprioritized since D3 doesn't come up as much as other things in job requirements, so I'll be glad to complete this. The good news is that I have 2 of the 5 projects in the can and one mostly finished in the last week, so things are looking good to have this done with no problem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Complete MED of CSS blog post: The next in my "what you need to know to be job-ready" blog series, but I'd like to have both this AND the JavaScript one completed in May.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Explore unfamiliar corners of the React API: For May, I'd like to walk away with a deeper understanding of lifecycle in React, and the corners of the API that I haven't spent a lot of time with, such as &lt;code&gt;cloneElement&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Write as I go: This is one of the reasons this post was such a slog is because I didn't add items as I completed them, but did them all at once. I'm changing that this month!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading about my journey so far this spring, I'm hoping to have a lot of exciting things to report in May!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>How Much HTML Do I Need To Be Job-Ready?</title>
      <dc:creator>Michael Caveney</dc:creator>
      <pubDate>Mon, 22 Mar 2021 17:12:18 +0000</pubDate>
      <link>https://dev.to/dylanesque/how-much-html-do-i-need-to-be-job-ready-11pc</link>
      <guid>https://dev.to/dylanesque/how-much-html-do-i-need-to-be-job-ready-11pc</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fffzlmkyhqfjt19l7lqsu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fffzlmkyhqfjt19l7lqsu.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;HTML is the foundation of all web applications/websites, and strong knowledge of it is a must for any web developer. But like a lot of development technologies, there's a lot to potentially learn, or &lt;a href="https://dev.to/dylanesque/how-to-avoid-overlearning-in-software-development-c9g"&gt;overlearn&lt;/a&gt; when you're first starting out with the language. I've put together this guide to clearly spell out how well you need to know HTML to become a professional developer!&lt;/p&gt;

&lt;h1&gt;
  
  
  What Do I Mean By Job-Ready?
&lt;/h1&gt;

&lt;p&gt;Before starting, let me clarify precisely what I mean when I say 'job-ready:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You'll understand the broad strokes of the technology in question, and know the most fundamental concepts that come up every day. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There may be gaps in your knowledge, but those will be limited to secondary concepts or syntax/other details that you'll be able to find the answer to relatively quickly and easily.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You'll know exactly where to turn to find answers to problems or questions that you're running into.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Following the advice here won't make you a master of HTML, but you'll be effective at the day-to-day that you'll need to get started on the job.&lt;/p&gt;

&lt;h1&gt;
  
  
  What you need to know
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You need to understand the core mechanics of HTML: how tags work, attributes, &lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/Empty_element" rel="noopener noreferrer"&gt;empty/void elements&lt;/a&gt;, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Know what ids and classes are and what the difference between them is. This is generally more of a CSS topic (which you should be learning at the same time as HTML), but ids do matter for in-page navigation in some cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand the basics of the doctype declaration: be aware of doctype declarations pre-HTML5, but don't spend any time delving into the details of these, you should only be concerned with that if your specific workplace requires you to do so.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Have an idea when to use certain form elements. For example, checkboxes and radio buttons may seem visually similar, but someone with training will realize that the latter is for mutually exclusive choices and the former is for choices that aren't mutually exclusive.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand how containing elements like &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; work, and get comfortable with semantic containers like &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt;. While there can be some ambiguity in how and where to employ these, there are some cases like &lt;code&gt;header&lt;/code&gt;, &lt;code&gt;footer&lt;/code&gt;, and &lt;code&gt;nav&lt;/code&gt; that should never have a &lt;code&gt;div&lt;/code&gt; in their place.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Have some awareness of the &lt;code&gt;head&lt;/code&gt; tag and SEO.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Be aware of a11y and audits: Get familiar with Google Lighthouse sooner rather than later.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Be aware of web security: get to know the [OWASP Top Ten}(&lt;a href="https://owasp.org/www-project-top-ten/" rel="noopener noreferrer"&gt;https://owasp.org/www-project-top-ten/&lt;/a&gt;) vulnerabilites and how to avoid them.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Where To Learn
&lt;/h1&gt;

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

&lt;p&gt;For where to get the basics down, you can pretty much throw a dart at most of the Udemy courses by &lt;a href="https://www.udemy.com/user/coltsteele/" rel="noopener noreferrer"&gt;Colt Steele&lt;/a&gt;, &lt;a href="https://www.udemy.com/user/4b4368a3-b5c8-4529-aa65-2056ec31f37e/" rel="noopener noreferrer"&gt;Angela Yu&lt;/a&gt;, etc, and be fine with those. I'm going to recommend Andrei Neagoie's &lt;a href="https://www.udemy.com/course/the-complete-web-developer-zero-to-mastery/" rel="noopener noreferrer"&gt;The Complete Web Developer in 2021: Zero to Mastery&lt;/a&gt; since it gives a great overview of the overall web development ecosystem that will be helpful for brand-new developers.&lt;/p&gt;

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

&lt;p&gt;Another resource that I think every new developer should go through is &lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;freeCodeCamp&lt;/a&gt;'s Responsive Web Design Certification. You'll hear me repeat this exact piece of advice for several other technologies, but if you've gone through all the FCC material and done all the projects for this certification (only getting help when you're dead stuck!), you're good to go for job-ready HTML.&lt;/p&gt;

&lt;h1&gt;
  
  
  Where to get help/find reference
&lt;/h1&gt;

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

&lt;p&gt;The official documentation is often a good reference source for technologies, but I don't recommend reading the specs for HTML (this goes for CSS and JavaScript as well), at least not when you're initially getting to know the language because there's so much information and it's not really constructed for easy readability. My recommendation here is &lt;a href="https://developer.mozilla.org/en-US/" rel="noopener noreferrer"&gt;MDN&lt;/a&gt; aka the Mozilla Developer's Network. MDN is a developer-maintained resource and a very high-quality one. This site will be one of your best friends as a developer for its detailed resources on the three major web technologies. MDN shines in particular for HTML because of its detailed breakdowns of attributes, and you can really stand out from other devs with some careful study of these, learning obscure but powerful options (such as &lt;code&gt;loading&lt;/code&gt; or &lt;code&gt;decoding&lt;/code&gt; for the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img" rel="noopener noreferrer"&gt;img&lt;/a&gt; tag). &lt;/p&gt;

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

&lt;p&gt;Chances are you're not the first dev to run into a problem and one of the best places to see if (and how) others handled that particular problem is &lt;a href="https://stackoverflow.com/" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt;. For common gotchas or best practices, you can get a lot of perspective into how to approach certain problems, and how that approach has changed as technology evolved.&lt;/p&gt;

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

&lt;p&gt;I hope this piece puts you on a less ambiguous path to learning just enough HTML to be dangerous. Join me next time as I talk about how much CSS you need to be job-ready!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>html</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>How to Avoid Overlearning In Software Development</title>
      <dc:creator>Michael Caveney</dc:creator>
      <pubDate>Thu, 04 Mar 2021 23:14:05 +0000</pubDate>
      <link>https://dev.to/dylanesque/how-to-avoid-overlearning-in-software-development-c9g</link>
      <guid>https://dev.to/dylanesque/how-to-avoid-overlearning-in-software-development-c9g</guid>
      <description>&lt;p&gt;In my &lt;a href="https://dev.to/dylanesque/what-you-need-to-know-before-you-start-learning-code-1f6j"&gt;last blog post&lt;/a&gt;, I talked about what kinds of things people should do to make sure they're learning development as efficiently as possible. Almost immediately after publishing that post, I realized that I had neglected an important topic when it comes to learning: how to avoid overlearning.&lt;/p&gt;

&lt;h1&gt;
  
  
  What Does Overlearning Look Like?
&lt;/h1&gt;

&lt;p&gt;Overlearning was definitely an anti-pattern that slowed me down in the earlier days of my learning software development. To be specific, I'm talking about overlearning in the forms of both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spending too much time trying to learn or memorize peripheral details about a certain technology or subject.
&lt;/li&gt;
&lt;li&gt;Having too wide a scope of subjects that you keep bouncing between, and not getting a strong grasp or deep knowledge of key related topics in any of those subjects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A large focus of my writing about development is directed towards reducing decision fatigue and learning faster by staying focused, so I'm going to take a few minutes to talk about strategies to keep overlearning from rearing its ugly head in your development journey!&lt;/p&gt;

&lt;h1&gt;
  
  
  Be Strategic About What You Memorize
&lt;/h1&gt;

&lt;p&gt;In a production environment, you'll often have to implement features or techniques you've never done before, so research is a vital skill for a developer. When you take this into consideration along with the overwhelming amount of HTML tags and attributes, CSS properties, JavaScript methods, etc, it becomes clear very quickly that trying to memorize everything is &lt;em&gt;not&lt;/em&gt; the way to go. Here's how I recommend you approach what you should and shouldn't memorize:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the knowledge a high-level concept that's integral to how a particular technology works (such as the CSS box model or the event loop in Node.js) or specific information you need to know to pass a test (such as S3 storage tiers and their costs for those taking AWS certification tests)? If so, you should put in an active effort to memorize that thing.
&lt;/li&gt;
&lt;li&gt;Is the information a side-detail (such as what attributes you can add to an &lt;code&gt;input&lt;/code&gt; tag in HTML) or a syntactical detail (like the syntax of an &lt;a href=""&gt;arrow function&lt;/a&gt; in JavaScript)? This sort of thing is better to look up as needed or to memorize passively through repeated practice of implementing the thing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Aim for the Minimum Effective Dose of Knowledge
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Pareto_principle"&gt;The Pareto Principle&lt;/a&gt; states that "for many outcomes, roughly 80% of consequences come from 20% of the causes". What this looks like in the real world would be when 80% of a company's effectiveness is a result of 20% of the staff, or that 80% of a web framework comes from 20% of its API. You should get used to figuring out what corners of a specific technology you're learning provide the biggest bang for your buck, and concentrate on having solid knowledge of those.&lt;/p&gt;

&lt;h1&gt;
  
  
  Keep The Scope of What You're Currently Working On Manageable
&lt;/h1&gt;

&lt;p&gt;By far, the specific type of overlearning that hurt me the most early on was dabbling in a lot of different programming languages (Java, PHP, C#, C, Elixir, etc) that I don't specialize in when I could have been using that time to focus on learning the languages that I want to work with (JavaScript, Ruby). While seeing a variety of programming paradigms &lt;em&gt;did&lt;/em&gt; help me see some common patterns and help drill in some high-level rules, the time I spent wasn't worth it in the long run. &lt;/p&gt;

&lt;p&gt;To be clear, I don't think you should only ever learn one thing at a time. If you're brand-new to JavaScript and you're having trouble wrapping your head around a new concept like Objects, it can be good to shift gears to something like learning BEM in CSS to give your brain a break. &lt;/p&gt;

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

&lt;p&gt;The good thing about overlearning is that it's fairly easy to avoid once you're aware of it and what it looks like. Next time, I'm going to discuss how much HTML you need to know to be job-ready!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>My February In Code</title>
      <dc:creator>Michael Caveney</dc:creator>
      <pubDate>Tue, 02 Mar 2021 20:02:04 +0000</pubDate>
      <link>https://dev.to/dylanesque/my-february-in-code-2fef</link>
      <guid>https://dev.to/dylanesque/my-february-in-code-2fef</guid>
      <description>&lt;p&gt;It's that time of the month: time for accountability. What did I get done in February?&lt;/p&gt;

&lt;h1&gt;
  
  
  What I Studied/Learned
&lt;/h1&gt;

&lt;p&gt;I temporarily renewed my &lt;a href="https://frontendmasters.com/dashboard/"&gt;Frontend Masters&lt;/a&gt; subscription and went....slightly overboard there, going through their courses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Angular 9 Fundamentals&lt;/li&gt;
&lt;li&gt;Production-Grade Angular&lt;/li&gt;
&lt;li&gt;Enterprise Architecture Patterns&lt;/li&gt;
&lt;li&gt;Design Systems with React and Storybook&lt;/li&gt;
&lt;li&gt;Website Accessibility, &lt;/li&gt;
&lt;li&gt;Introduction to Next.js&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;February also saw the rerelease of Wes Bos's &lt;a href="https://advancedreact.com/"&gt;Advanced React and GraphQL&lt;/a&gt; course, redone with the latest version of Apollo and Keystone.js as the back-end. Since I'm making Apollo a priority of mine, I was glad to see that I had a pretty strong grasp on it, but there were still some nice tricks for me to learn here (I can't believe I didn't know about &lt;a href="https://wesbos.com/destructuring-renaming"&gt;renaming restructured variables&lt;/a&gt;...). &lt;/p&gt;

&lt;h1&gt;
  
  
  What I Read
&lt;/h1&gt;

&lt;p&gt;This month, I read &lt;a href=""&gt;You Don't Know JS Yet: Scope and Closures&lt;/a&gt; by Kyle Simpson. It was.....fine? This is the second edition of this book, and I read both editions concurrently. I'm not a big fan of Kyle: He clearly has unusually deep knowledge of how JavaScript works, but I think his explanations are a lot more long-winded than they need to be. This was short but not enjoyable for me, and I feel like I do better with other sources for this sort of deep JS learning.&lt;/p&gt;

&lt;h1&gt;
  
  
  What I Wrote
&lt;/h1&gt;

&lt;p&gt;I published a new blog entry about &lt;a href="https://dev.to/dylanesque/what-you-need-to-know-before-you-start-learning-code-1f6j"&gt;what you need to know before you start learning code&lt;/a&gt;, which I'm pretty happy with. I'm seeing more movement in my aim to have a path for new developers that reduces decision fatigue and wasted time, and there are more entries following this one coming out very soon!&lt;/p&gt;

&lt;h1&gt;
  
  
  What I Built
&lt;/h1&gt;

&lt;p&gt;I built less actual code this month than I had in a long time. Looking at my commits, I seem to be limited to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Making some UI improvements and updating the seed database to reflect changes in the source game for my &lt;a href="https://github.com/dylanesque/MPQChampApp"&gt;RPG tracking app&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Beginning the basics of a &lt;a href="https://github.com/dylanesque/Metal-Detector"&gt;blog&lt;/a&gt; to be done using WordPress + Gatsby.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How Did I Do This Month?
&lt;/h1&gt;

&lt;p&gt;Honestly, not that great? February is a tough month in New England at the best of times, and "smack in the middle of a pandemic" is a big hindrance to boot. Having said that, I would like my resume or online presence to be slightly more impressive than it was in the previous month every month, and I really don't have much to &lt;em&gt;show&lt;/em&gt; for February, and I don't want that to happen again.&lt;/p&gt;

&lt;h1&gt;
  
  
  What's Up For March?
&lt;/h1&gt;

&lt;p&gt;This is what I would like to get done in March, at a minimum.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write a few integration and E2E tests for my main app. Also, use my improved understanding of Apollo and Next.js to clean up some of the messier parts and add some basic error handling.&lt;/li&gt;
&lt;li&gt;Read and take notes on &lt;a href="https://effectivetypescript.com/"&gt;Effective TypeScript&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Have UX/UI notes on my Metal Detector blog, and possibly some tests in Storybook&lt;/li&gt;
&lt;li&gt;Start studying for AWS Certified Solutions Architect Exam&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>What You Need to Know Before You Start Learning Code</title>
      <dc:creator>Michael Caveney</dc:creator>
      <pubDate>Fri, 19 Feb 2021 18:25:21 +0000</pubDate>
      <link>https://dev.to/dylanesque/what-you-need-to-know-before-you-start-learning-code-1f6j</link>
      <guid>https://dev.to/dylanesque/what-you-need-to-know-before-you-start-learning-code-1f6j</guid>
      <description>&lt;p&gt;Taking the self-directed path to learning code is difficult for a lot of reasons, not the least of which are &lt;a href="https://en.wikipedia.org/wiki/There_are_known_knowns" rel="noopener noreferrer"&gt;unknown unknowns&lt;/a&gt;. You can spend a lot of time unnecessarily spinning your wheels getting good at software development: hours, days, weeks, or you can start learning with a framework to be organized and efficient. To help you do just that, I've put together this guide to prepare you to learn to code the right way!&lt;/p&gt;

&lt;h1&gt;
  
  
  Learn How to Learn Efficiently
&lt;/h1&gt;

&lt;p&gt;Learning efficiently is a great skill to have regardless of your field of study, but the wide array of knowledge and fluid nature of web development makes the most efficient approach to learning much more of a must than a nice-to-have. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnsiakzkb3x4ft1p0v95g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnsiakzkb3x4ft1p0v95g.png" alt="Cover image of Learning to Learn course"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My recommendation here is to go through Andrei Neagoies's Learning to Learn course (available on both &lt;a href="https://www.udemy.com/course/learning-to-learn-efficient-learning-zero-to-mastery/" rel="noopener noreferrer"&gt;Udemy&lt;/a&gt; and his &lt;a href="https://zerotomastery.io/" rel="noopener noreferrer"&gt;Zero To Mastery platform&lt;/a&gt;. Here, Andrei breaks down techniques and mindsets that will enable you to learn as efficiently as possible while wasting the least amount of time. Andrei is very good about referencing where he got certain tactics from, so there's a large and helpful bibliography that comes with this.&lt;/p&gt;

&lt;h1&gt;
  
  
  Build Effective Habits
&lt;/h1&gt;

&lt;p&gt;Coding can (and should be fun), but it is work, and it takes effort to engage in certain types of practice or practicing at all when you'd rather be doing something else. If I could only recommend one book to the brand-new coder, it would be James Clear's indispensable &lt;a href="https://jamesclear.com/atomic-habits" rel="noopener noreferrer"&gt;&lt;em&gt;Atomic Habits&lt;/em&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4au4usz906h4phxy3znm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4au4usz906h4phxy3znm.png" alt="Cover of Atomic Habits"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The long and short of it is that you want to make good habits automatic and easy to perform, and bad habits more difficult. I was good about practicing code before I read this, but I got a lot better at the right kind of practice and got WAY more consistent with exercise, which really helped weather a lot of pandemic stress. Absolutely, positively, do not begin learning to code without reading this.&lt;/p&gt;

&lt;h1&gt;
  
  
  Map It Out
&lt;/h1&gt;

&lt;p&gt;Part of effective learning is understanding the scope of the knowledge area you're learning, and for learning to code, there are various &lt;a href="https://roadmap.sh/" rel="noopener noreferrer"&gt;developer roadmaps&lt;/a&gt;. These roadmaps have been created to illustrate what goes into these technologies and provide some guidance into what methodologies/libraries/etc to prefer when you have a choice between several of them. I'll be making heavy use of these roadmaps (particularly the front-end roadmap) in future blog entries. &lt;/p&gt;

&lt;h1&gt;
  
  
  Set Your Goals and Track Your Progress
&lt;/h1&gt;

&lt;p&gt;Learning to code can be complicated and overwhelming at first, especially on the front-end. One way you can help yourself stay focused on effective action is to use &lt;a href="https://en.wikipedia.org/wiki/SMART_criteria" rel="noopener noreferrer"&gt;SMART criteria&lt;/a&gt; to outline what you're working on at any particular moment. &lt;/p&gt;

&lt;p&gt;When it comes to tracking that progress, you'll want to avail yourself of &lt;a href="https://trello.com/en-US" rel="noopener noreferrer"&gt;Trello&lt;/a&gt; or &lt;a href="https://dev.to/aellon/agile-scrum-kanban-oh-my-116d"&gt;some other type of kanban board&lt;/a&gt;. I don't know what it is about this, but there was a shocking "before" and "after" in my consistency and productivity after making regular use of Trello in my day-to-day.&lt;/p&gt;

&lt;h1&gt;
  
  
  Write It Down
&lt;/h1&gt;

&lt;p&gt;Studies have shown that physically taking notes with pen/pencil and paper leads to better retention, so strongly consider doing just that. Additionally, recording what you're learning gives you the opportunity to rephrase it in your own words, forcing you to think critically about the topic.&lt;/p&gt;

&lt;p&gt;What I personally do is maintain a folder of Markdown files on my desktop that I use to takes notes on a variety of topics, which I save to &lt;a href="https://github.com/dylanesque/Cheatsheets" rel="noopener noreferrer"&gt;Github&lt;/a&gt;. I make this tradeoff because it's easier for me to organize, update, and use as a reference for blog posts.&lt;/p&gt;

&lt;h1&gt;
  
  
  Understand That It Won't Happen Immediately...
&lt;/h1&gt;

&lt;p&gt;There's a game I like to play with articles that have titles like "I Learned to Code and Got A Job in 6 Months!!!" I call "find the caveat", where I look for the part where they were previously a lawyer or stockbroker or some other high-paying job, or that their spouse supported them while they did nothing but code for months on end. I mention this because while these stories can be inspiring, they're not very realistic or reflective of the norm. The simple truth that web development has gotten a lot more complicated since that time, and an effective early career dev now has to have a much more varied toolkit now than they did 5+ years ago, when knowing HTML, CSS, and some basic JavaScript was enough. Because of this, I want you to...&lt;/p&gt;

&lt;h1&gt;
  
  
  ...Be Patient With Yourself
&lt;/h1&gt;

&lt;p&gt;Everybody is different and has different strengths, weaknesses, and constraints. You might have work or family obligations. You might be recovering from an injury or illness, or living with a disability of some kind. You shouldn't compare yourself or your progress to others because everybody's circumstances are so different. As countless others have said before me, this is a marathon, not a sprint, and you need to embrace that mindset and be good to yourself while you're working towards your goals.&lt;/p&gt;

&lt;h1&gt;
  
  
  Learning How and Where to Ask For Help
&lt;/h1&gt;

&lt;p&gt;This can be tricky to get a feel for at first, but there is a time and a place for struggling in learning. Some struggle IS essential for truly understanding new concepts, but too much frustration isn't a good thing. This is something I learned via trial and error in my first production job, and the way I approach it is something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Is this struggle helping me understand the thing I'm struggling with better? This is good struggle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Am I banging my head against the wall and have circled back to solutions that I've already tried and didn't work, or have I spent more than 30 minutes on a problem with no forward motion whatsoever? This is bad struggle and you need to get a second pair of eyes on the issue ASAP.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When it comes to where to look for help, this can vary a lot from technology to technology: When I do blog entries on specific technologies, I'll go into recommended sources, but I will note that you'll generally want to favor sources that are active and real-time based, over forums and message boards. If there's an official Slack or Discord channel for the technology in question, you'll want to be on there.&lt;/p&gt;

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

&lt;p&gt;I hope this advice helps you: My goal with a lot of my blog entries to help people avoid some of the mistakes that I made when I was first learning to code, and I'll be going into more detail regarding how to approach specific technologies in the future, and I hope to see you there!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>My January In Code</title>
      <dc:creator>Michael Caveney</dc:creator>
      <pubDate>Fri, 05 Feb 2021 20:29:35 +0000</pubDate>
      <link>https://dev.to/dylanesque/my-january-in-code-5emf</link>
      <guid>https://dev.to/dylanesque/my-january-in-code-5emf</guid>
      <description>&lt;p&gt;Because I want to take greater pains to learn in public, let's see what my January in code looked like!&lt;/p&gt;

&lt;h1&gt;
  
  
  What I Studied/Learned
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7AgVkS2e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pythoncoursesonline.com/wp-content/uploads/2019/11/complete-python-developer-2020.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7AgVkS2e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pythoncoursesonline.com/wp-content/uploads/2019/11/complete-python-developer-2020.jpg" alt="Logo for Andrei Neagoie Python Course"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent a fair amount of time with Andrei Neagoie's Python course. Coming from a JS background, there weren't a lot of surprises for me here, but I'm glad to be spending some time with this. I should be done with this course before the end of February. I was going to have that be that with Python for the time being, &lt;/p&gt;

&lt;p&gt;I also discovered a new learning platform called &lt;a href="//educative.io"&gt;Educative.io&lt;/a&gt; that forgoes video courses in favor of courses made up of text lessons supplemented with code challenges and quizzes that has a lot of promise. Over here, I spent some time with their React, TypeScript, and system design courses.&lt;/p&gt;

&lt;h1&gt;
  
  
  What I Read
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dRAei5yg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pictures.abebooks.com/isbn/9780134456478-us.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dRAei5yg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pictures.abebooks.com/isbn/9780134456478-us.jpg" alt="Cover of Practical Object-Oriented Design"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Practical Object-Oriented Design in Ruby by Sandi Metz: This is probably one of the better books about OOP, and I enjoyed it. Mastering OOP isn't something that strikes me as a high-priority&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f1nrREtE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://static-2.gumroad.com/res/gumroad/7948343501524/asset_previews/9002f85f87744e208e2de6e2b57b52a4/retina/Gumraod_20Book_20Cover_201280x1280.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f1nrREtE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://static-2.gumroad.com/res/gumroad/7948343501524/asset_previews/9002f85f87744e208e2de6e2b57b52a4/retina/Gumraod_20Book_20Cover_201280x1280.png" alt="Cover of The Tech Resume Inside Out"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Tech Resume Inside Out by Gergely Orosz was completely outstanding, and belongs on the shelf of every software developer, at any stage in their career. If you have doubts on how to approach any aspect of your resume, this book will put them to rest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--50BFy9u---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://m.media-amazon.com/images/I/51nyExzoWgL.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--50BFy9u---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://m.media-amazon.com/images/I/51nyExzoWgL.jpg" alt="Cover of Fullstack React with TypeScript"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fullstack React with TypeScript by Maksim Ivanov and Alex Bespoyasov: &lt;a href="https://www.goodreads.com/review/show/3722959546?book_show_action=true&amp;amp;from_review_page=1"&gt;I didn't like it&lt;/a&gt;. I've read a fair amount of newline books, and with some exceptions like their Data Visualization with D3 book, there are a lot of limitations surrounding price point, keeping the material current, and how well the material is presented for the medium.&lt;/p&gt;

&lt;p&gt;I spent a lot of time going over the portions of &lt;a href="//epicreact.dev"&gt;Epic React&lt;/a&gt; that I didn't get a rock-solid understanding of the first time around, and I now have a much deeper understanding of the various Hooks, and when to employ specific advanced React patterns.&lt;/p&gt;

&lt;h1&gt;
  
  
  What I Built
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Lots of changes for my MPQ application that include feature additions, error fixes, the first automated unit tests, and converting some state management from &lt;code&gt;useState&lt;/code&gt; to &lt;code&gt;useReducer&lt;/code&gt; to enable derived state and make the logic cleaner and easier to follow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Began a new portfolio in Gatsby using &lt;a href="https://www.gatsbyjs.com/starters/s-kris/gatsby-minimal-portfolio-blog/"&gt;Sai Krishna's starter&lt;/a&gt; as a jumping off point. I removed a bunch of the boilerplate that wasn't applicable to my use cases and need to carve out more time in the coming month to add needed content: I want a basic version of this deployed by mid-February.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>career</category>
      <category>react</category>
    </item>
  </channel>
</rss>
