<?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: caelinsutch</title>
    <description>The latest articles on DEV Community by caelinsutch (@caelinsutch).</description>
    <link>https://dev.to/caelinsutch</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%2F389994%2F312a127c-6300-4fba-a675-96b5497c8dd9.jpg</url>
      <title>DEV Community: caelinsutch</title>
      <link>https://dev.to/caelinsutch</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/caelinsutch"/>
    <language>en</language>
    <item>
      <title>An Introduction to the Top Project Management Methodologies</title>
      <dc:creator>caelinsutch</dc:creator>
      <pubDate>Tue, 15 Sep 2020 23:04:18 +0000</pubDate>
      <link>https://dev.to/caelinsutch/an-introduction-to-the-top-project-management-methodologies-40k4</link>
      <guid>https://dev.to/caelinsutch/an-introduction-to-the-top-project-management-methodologies-40k4</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--USwgwayp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2ARhuBlnnnw_pqPgIw" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--USwgwayp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2ARhuBlnnnw_pqPgIw" alt="Intro Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every project manager knows that there is never such a thing as a “one size fits all” methodology for leading teams. However, picking the right method is crucial to effectively getting the job done right. &lt;/p&gt;

&lt;p&gt;According to the Project Management Institute (PMI), a methodology is defined as a system of practices, techniques, procedures, and rules used by those who work in a discipline. Lean practices, Kanban, and Six Sigma are project management methodologies examples.&lt;/p&gt;

&lt;p&gt;These methodologies are processes that help project managers effectively keep track of deliverables, monitor team performance, and manage issues that arise during the development process.&lt;/p&gt;

&lt;p&gt;There are many project management methodologies, each with their unique strengths and weaknesses. You should select a methodology based on the project you’re working on and your team dynamic.&lt;/p&gt;

&lt;p&gt;As a reminder, there’s no such thing as the “right” software management methodology, just the one that works best for your team. These are also not hard set rules, adapt them to fit your team and workflow best, project management tools are about making your team more productive, not boxing them into a specific process.&lt;/p&gt;

&lt;h1&gt;
  
  
  Agile
&lt;/h1&gt;

&lt;p&gt;Agile is the most popular project management workflow right now. Agile is best suited for projects that are incremental and iterative. Demands and solutions aren’t necessarily set out in stone, they’re constantly adapting based on internal or external feedback. &lt;/p&gt;

&lt;p&gt;Agile was originally created for software development teams to ship iterative software and avoid large releases or deployments. Agile is made up of four fundamental values and twelve principles.&lt;/p&gt;

&lt;h1&gt;
  
  
  Values
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Individuals and interactions over processes and tools&lt;/li&gt;
&lt;li&gt;Working software over comprehensive documentation&lt;/li&gt;
&lt;li&gt;Customer collaboration over contract negotiation&lt;/li&gt;
&lt;li&gt;Responding to change over following a plan
# Principles&lt;/li&gt;
&lt;li&gt;Customer satisfaction through early and continuous software delivery&lt;/li&gt;
&lt;li&gt;Accommodate changing requirements throughout the development process&lt;/li&gt;
&lt;li&gt;Frequent delivery of working software&lt;/li&gt;
&lt;li&gt;Collaboration between the business stakeholders and developers throughout the project&lt;/li&gt;
&lt;li&gt;Support, trust, and motivate the people involved&lt;/li&gt;
&lt;li&gt;Enable face-to-face interactions&lt;/li&gt;
&lt;li&gt;Working software is the primary measure of progress&lt;/li&gt;
&lt;li&gt;Agile processes to support a consistent development pace&lt;/li&gt;
&lt;li&gt;Attention to technical detail and design enhances agility&lt;/li&gt;
&lt;li&gt;Simplicity&lt;/li&gt;
&lt;li&gt;Self-organizing teams encourage great architectures, requirements, and designs&lt;/li&gt;
&lt;li&gt;Regular reflections on how to become more effective&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Agile uses six main deliverables to track progress and create the product which are the product vision statement, product roadmap, product backlog, release plan, Sprint backlog, and increment. With these features, Agile places a focus on collaboration, flexibility, continuous improvement, and high quality results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Suited For: &lt;/strong&gt; Projects that require flexibility and have a high level of uncertainty. For example: a new project that’s being developed by the team.&lt;/p&gt;

&lt;p&gt;As a side note, Agile itself can be broken down into several sub methodologies, such as Kanban or Scrum.&lt;/p&gt;

&lt;h1&gt;
  
  
  Scrum
&lt;/h1&gt;

&lt;p&gt;Scrum is a subset of Agile that is comprised of five values: commitment, courage, focus, openness, and respect. Its goal is to develop, deliver, and sustain complex products through collaboration, accountability, and iterative progress. Scrum focuses on timed results in “sprint” events and uses several metrics and charts to  track team progress over time.&lt;/p&gt;

&lt;p&gt;Scrum has several team roles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product Owner: Product expert that is the voice of the customer and communicates stakeholder information above.&lt;/li&gt;
&lt;li&gt;Development Team: Developers, programmers, designers, and other professionals.&lt;/li&gt;
&lt;li&gt;Scrum Master: Organized servant-leader who ensures Scrum is executed properly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Scrum also relies on several key events that differentiate it from other Agile methods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sprint: Iterative time segments in which a set goal is accomplished. These time frames are short (under one month) and consistent.&lt;/li&gt;
&lt;li&gt;Sprint Planning: A time when the scrum team gets together to plan the sprint&lt;/li&gt;
&lt;li&gt;Daily Scrum: 15 minute daily meetings to discuss previous achievements and expectations for the day/&lt;/li&gt;
&lt;li&gt;Sprint Review: Informal meeting to review results of the last sprint and discuss feedback&lt;/li&gt;
&lt;li&gt;Sprint Retrospective: A meeting where the scrum team discusses the proceedings of the last sprint and establishes improvements for the next sprint.&lt;/li&gt;
&lt;li&gt;Product Backlog: A place where all requirements are listed in order of priority.&lt;/li&gt;
&lt;li&gt;Sprint backlog: A list of all tasks to be completed in coming sprints.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best Suited For: &lt;/strong&gt; Projects that consist of small teams who need a flexible approach on a time schedule to deliver a product. &lt;/p&gt;

&lt;h1&gt;
  
  
  Kanban
&lt;/h1&gt;

&lt;p&gt;Kanban is another popular agile framework that focuses on early releases with collaborative and self-managing teams. Developed at Toyota factories, it’s a visual method that relies on on painting a picture of the development process to easily identify bottlenecks in the process.&lt;/p&gt;

&lt;p&gt;Kanban consists of 6 general practices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visualization&lt;/li&gt;
&lt;li&gt;Limiting work in progress&lt;/li&gt;
&lt;li&gt;Flow management&lt;/li&gt;
&lt;li&gt;Making policies explicit&lt;/li&gt;
&lt;li&gt;Using feedback loops&lt;/li&gt;
&lt;li&gt;Collaborative or experimental evolution&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Kanban process is extremely visible, consisting of three main components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Kanban Boards: &lt;/strong&gt; Visual representations of the development process. These can be physical or digital.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kanban Cards: &lt;/strong&gt; Each card depicts a task or assignment for the team.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kanban Swimlanes: &lt;/strong&gt; Horizontally flowing lanes that allow you to categorize cards into groups (such as Todo, Doing, or Done)
&lt;strong&gt;Best Suited For: &lt;/strong&gt; Smaller teams who need a flexible approach to delivering a product or service. &lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Lean
&lt;/h1&gt;

&lt;p&gt;Lean methodology promotes maximizing customer value while reducing waste. It stems from the Japanese manufacturing industry, its values are based on the assumption that “as waste is eliminated, quality improves while the production time and cost are reduced.”&lt;/p&gt;

&lt;p&gt;It identifies three types of waste: Muda, Mura, and Muri, also known as the three M’s. &lt;/p&gt;

&lt;h1&gt;
  
  
  Muda
&lt;/h1&gt;

&lt;p&gt;Muda is about getting rid of waste that refers to an activity or process that doesn’t add value. The seven original wastes are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Transport: The movement of product between operations and locations.&lt;/li&gt;
&lt;li&gt;Inventory: The work in progress (WIP) and stocks of finished goods and raw materials that a company holds.&lt;/li&gt;
&lt;li&gt;Motion: The physical movement of a person or machine whilst conducting an operation.&lt;/li&gt;
&lt;li&gt;Waiting: The act of waiting for a machine to finish, for a product to arrive, or any other cause.&lt;/li&gt;
&lt;li&gt;Overproduction: Over producing product beyond what the customer has ordered.&lt;/li&gt;
&lt;li&gt;Over-processing: Conducting operations beyond those that customer requires.&lt;/li&gt;
&lt;li&gt;Defects: Product rejects and reworks within your processes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Mura
&lt;/h1&gt;

&lt;p&gt;Mura is about reducing waste in the workflow process at the scheduling and operations phase.  For example, when publishing a magazine, if an editor spends too much time editing an article, it means that the design team will have less time to create the spread before the publishing deadline comes. Therefore, you would reduce the editing time and ensure every department’s timeframe spent on the article is the same.&lt;/p&gt;

&lt;h1&gt;
  
  
  Muri
&lt;/h1&gt;

&lt;p&gt;Muri is about eliminating or reducing mental stress on workers. It refers to business managers and employers putting too much stress on employees due to disorganization and lack of tools.&lt;/p&gt;

&lt;p&gt;Instead of implementing new processes, Lean is about adhering to structured principles. The five main principles are; specify value by the customer, identify steps in the value stream, make product flow continuously, allow customers pull value from the next upstream activity, and manage towards removing unnecessary steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Suited For: &lt;/strong&gt; Business that want to transform their whole business process with a structured set of principles.&lt;/p&gt;

&lt;h1&gt;
  
  
  Waterfall
&lt;/h1&gt;

&lt;p&gt;One of the more traditional project management methodologies, waterfall is a linear and sequential project management process. Originating in manufacturing and engineering firms, waterfall sacrifices flexibility for stability in later stages of development.&lt;/p&gt;

&lt;p&gt;The methodology consists of six stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;System and software requirements&lt;/li&gt;
&lt;li&gt;Analysis&lt;/li&gt;
&lt;li&gt;Design&lt;/li&gt;
&lt;li&gt;Coding&lt;/li&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;li&gt;Operations&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Waterfall stresses the importance of documentation in each step. The idea is that any worker should be able to walk in at any step of the progress and instantly be integrated into the work process. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Suited For:&lt;/strong&gt; Larger projects that require more structure due to cost or manufacturing constraints or have little risks involved with the development process.&lt;/p&gt;

&lt;h1&gt;
  
  
  Six Sigma
&lt;/h1&gt;

&lt;p&gt;Introduced by Motorola engineers, Six Sigma is a project management technique that seeks to reduce errors by identifying what isn’t working and removing it from the process.&lt;/p&gt;

&lt;p&gt;It uses empirical quality management methods to ensure minimal errors are encountered, and the expertise of area specialists.&lt;/p&gt;

&lt;p&gt;There are two major methodologies of Six Sigma carried out by Six Sigma Green Belts and Six Sigma Black Belts, and are supervised by Six Sigma Master Black Belts. They are DMAIC which is used for improving business processes, and DMADV which is more for creating new processes, products or services. The letters stand for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;D&lt;/strong&gt;efine the problem and the project goals&lt;br&gt;
&lt;strong&gt;M&lt;/strong&gt;easure in detail the various aspects of the current process&lt;br&gt;
&lt;strong&gt;A&lt;/strong&gt;nalyze data to, among other things, find the root defects in a process&lt;br&gt;
&lt;strong&gt;I&lt;/strong&gt;mprove the process&lt;br&gt;
&lt;strong&gt;C&lt;/strong&gt;ontrol how the process is done in the future&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;D&lt;/strong&gt;efine the project goals&lt;br&gt;
&lt;strong&gt;M&lt;/strong&gt;easure critical components of the process and the product capabilities&lt;br&gt;
&lt;strong&gt;A&lt;/strong&gt;nalyze the data and develop various designs for the process, eventually picking the best one&lt;br&gt;
&lt;strong&gt;D&lt;/strong&gt;esign and test details of the process&lt;br&gt;
&lt;strong&gt;V&lt;/strong&gt;erify the design by running simulations and a pilot program, and then handing over the process to the client&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Suited For:&lt;/strong&gt; Large companies that want to use data and statistics to improve quality and efficiency. &lt;/p&gt;

&lt;h1&gt;
  
  
  PMI/PMBOK
&lt;/h1&gt;

&lt;p&gt;PMI stands for the Project Management Institute which is a not-for-profit membership association, project management certification, and standards organization. The PMI produces the PMBOK, which is a guide that details a set of standards that characterize project management. As a side note, this isn’t really a methanols, but rather a set of guidelines that helps you pick and execute PM methodologies better.&lt;/p&gt;

&lt;p&gt;PMBOK stands for the Project Management Body of Knowledge and is a set of standard terminology and guidelines for project management. It states that there are five process groups that are prevalent in almost every project. They are;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initiating:&lt;/strong&gt; Defining the start of a new project or new phase of an existing project.&lt;br&gt;
&lt;strong&gt;Planning: &lt;/strong&gt;Where the scope of the project, objectives, and how the objectives will be achieved.&lt;br&gt;
&lt;strong&gt;Executing:&lt;/strong&gt; Actually doing the work defined in the project management plan.&lt;br&gt;
Monitoring and Controlling: When you need to track, review, and regulate the progress and performance.&lt;br&gt;
&lt;strong&gt;Closing:&lt;/strong&gt; Concluding all activities across all Process Groups to formally close the project or phrase.&lt;/p&gt;

&lt;p&gt;The guide also includes best practices, conventions, and techniques that are “industry standard”. They regularly update their guide to ensure it’s using best practices set by the industry. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best suited for:&lt;/strong&gt; Because it’s more of a reference guide than an actual project management methodology, you can’t implement PMI/PMBOK to a project. However, it can be used for when you want to weigh in on the best practices for your project.&lt;/p&gt;

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

&lt;p&gt;Hopefully, one of the project management methods described above will fit your team. This is a simplified guide to help you take the first steps in selecting a project management method, not a comprehensive guide of each one. Remember that none of these may work too, and that’s perfectly fine. Project management isn’t about implementing a cool buzz-wordy method, but instead of implementing systems and guidelines that make your team more productive. &lt;/p&gt;

&lt;h1&gt;
  
  
  Keep in Touch
&lt;/h1&gt;

&lt;p&gt;There's a lot of content out there, I appreciate you reading mine. I'm a young entrepreneur and I write about software development and my experience running companies. You can signup for my newsletter &lt;a href="https://newsletter.cometcode.io"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’d also love to connect with you on &lt;a href="https://www.linkedin.com/in/caelinsutch"&gt;Linkedin&lt;/a&gt; or &lt;a href="https://twitter.com/caelin_sutch"&gt;Twitter&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>projectmanagement</category>
      <category>pm</category>
      <category>productivity</category>
      <category>teamwork</category>
    </item>
    <item>
      <title>15 Things I Wished I Learned Earlier as a Software Developer</title>
      <dc:creator>caelinsutch</dc:creator>
      <pubDate>Sun, 06 Sep 2020 16:26:06 +0000</pubDate>
      <link>https://dev.to/caelinsutch/15-things-i-wished-i-learned-earlier-as-a-software-developer-5g62</link>
      <guid>https://dev.to/caelinsutch/15-things-i-wished-i-learned-earlier-as-a-software-developer-5g62</guid>
      <description>&lt;p&gt;Software development is a constant learning experience, but there are certain habits and tips that I wished I internalized earlier. Hopefully, these will be of help to any learning software developer to help you save time, frustration, and effort in the long run. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Habits are not a finish line to be crossed, they are a lifestyle to be lived&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Lessons
&lt;/h2&gt;

&lt;h3&gt;
  
  
  You’ll never know everything about anything.
&lt;/h3&gt;

&lt;p&gt;Programming, algorithms, frameworks, libraries, they’re all too vast for any one person to understand the whole system. Swallow your ego and accept that you don’t know most of the things out there.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn how to use Git, properly.
&lt;/h3&gt;

&lt;p&gt;The worst programmers are the ones who don’t actually know how to use git and don’t ask for help, messing up the git tree and causing hours of unnecessary work. Don’t be that guy, learn git.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn shortcuts in your IDE.
&lt;/h3&gt;

&lt;p&gt;You’ll be surprised how much time you can save if you’re effective in your IDE. That means knowing where all the menu items are and shortcuts to the most common ones to spend less time having to click around and more time coding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stay physically active.
&lt;/h3&gt;

&lt;p&gt;Coding is a very sedentary activity. Staying physically active, whether walking around for half an hour a day to going to the gym will do wonders for your productivity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Plan before coding.
&lt;/h3&gt;

&lt;p&gt;I see too many experienced developers rush head first into programming without doing the proper preparation to ensure that they aren’t wasting time. Yes, I understand that we’re software developers because we love coding, but some nice flowcharts, feature requirements, and other preparations can be done that’ll make the programming that much easier and faster.&lt;/p&gt;

&lt;h3&gt;
  
  
  For the love of God use a Linter
&lt;/h3&gt;

&lt;p&gt;Style consistency is a big deal in any software application where you’re working with others. Using a linter is a great way to ensure that you write code that follows the latest and greatest standards.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contribute to Open Source
&lt;/h3&gt;

&lt;p&gt;I’ve written an &lt;a href="https://cometcode.io/posts/open-source/"&gt;entire article&lt;/a&gt; on why contributing to open source is good, but simply put it gets your name out there, gives you experience working on large projects, and hopefully makes you feel good about giving back to the community.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stop binge watching tutorials and start coding
&lt;/h3&gt;

&lt;p&gt;I’ve fallen into this trap many times myself, of constantly watching tutorial after tutorial but never taking the step of creating something. That chasm is one that has to be jumped, and once jumped, will make you feel so much better.&lt;/p&gt;

&lt;h3&gt;
  
  
  If you have time, blog!
&lt;/h3&gt;

&lt;p&gt;Blogging is a great way to practice technical writing, get your name out there, and make people happy with great articles!&lt;/p&gt;

&lt;h3&gt;
  
  
  Create your developer portfolio
&lt;/h3&gt;

&lt;p&gt;If you’re trying to get hired, or show off your skills to friends, a portfolio is essential. This is a fun weekend project that will make your life so much easier when trying to show others your developer talents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try to learn something new everyday!
&lt;/h3&gt;

&lt;p&gt;Don’t ignore the power of compound habits. Think of how much more knowledge you’ll have in a year if you commit right now to learning something new daily!&lt;/p&gt;

&lt;h3&gt;
  
  
  Don’t take code critique personally
&lt;/h3&gt;

&lt;p&gt;This is one that I struggle with myself, but when someone is criticizing your code, it’s not a personal attack. Have the matureness to step away and view what you’ve created from an unbiased view. It’ll help you write better and faster code as a developer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don’t compare yourself to those around you
&lt;/h3&gt;

&lt;p&gt;Imposter syndrome is a big problem in the software developer community. Don’t make it worse by comparing your skills and talents to others. Everyone has unique experiences. Recognize that your path has led you to where you are today, and appreciate that!&lt;/p&gt;

&lt;h3&gt;
  
  
  Don’t be afraid to say No
&lt;/h3&gt;

&lt;p&gt;Don’t overcommit yourself and be firm in your dedication to a singular focus. Don’t be afraid to turn down offers to work more, or on different projects, and prioritize yourself above your work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn basic Devops
&lt;/h3&gt;

&lt;p&gt;Devops, though often considered boring, is critical to building any kind of application. Take some time and learn the basics of how devops works so you can leverage it effectively for your next project. &lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Commit to learning these tips and you’ll see your value and productivity as a software developer drastically increase.&lt;/p&gt;

&lt;h1&gt;
  
  
  Keep in Touch
&lt;/h1&gt;

&lt;p&gt;There's a lot of content out there, I appreciate you reading mine. I'm a young entrepreneur and I write about software development and my experience running companies. You can signup for my newsletter &lt;a href="https://newsletter.cometcode.io"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to reach out and connect with me on &lt;a href="https://www.linkedin.com/in/caelinsutch"&gt;Linkedin&lt;/a&gt; or &lt;a href="https://twitter.com/caelin_sutch"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>habits</category>
      <category>productivity</category>
      <category>tips</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Some of the best shortcuts when writing Javascript and Typescript</title>
      <dc:creator>caelinsutch</dc:creator>
      <pubDate>Fri, 04 Sep 2020 07:51:24 +0000</pubDate>
      <link>https://dev.to/caelinsutch/some-of-the-best-shortcuts-when-writing-javascript-and-typescript-3868</link>
      <guid>https://dev.to/caelinsutch/some-of-the-best-shortcuts-when-writing-javascript-and-typescript-3868</guid>
      <description>&lt;p&gt;Everyone knows that Javascript and Typescript have several weird and hidden features that allow you to shorten the amount of code you write. To preface this article, I’d like to impose upon you an important tidbit of information, &lt;strong&gt;short and efficient code doesn’t always equal good code.&lt;/strong&gt; As always, you should be prioritizing readability over implementing a bunch of fancy features.&lt;/p&gt;

&lt;p&gt;That being said, these features can help you save tons of space and used properly are easily understandable to anyone else who’s reading your code. Let’s go over some of these shorthand features so that you can use and understand them in your code.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. The Ternary Operator
&lt;/h1&gt;

&lt;p&gt;This is probably the most well known shorthand Javascript function, the shortened “if else” statement. By using this operator, you can remove a lot of the &lt;code&gt;if else&lt;/code&gt; boilerplate and turn four lines into one!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;v&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Traditional approach&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;v&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;True&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;False&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Ternary Operator&lt;/span&gt;
&lt;span class="nx"&gt;v&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;True&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;False&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;The structure is as follows: &lt;code&gt;&amp;lt;conditional expression&amp;gt; ? &amp;lt;true case&amp;gt; : &amp;lt;false case?&lt;/code&gt;. Pretty simple, right? This is a great way to do one line if else operations and is especially useful when combined with other shorthand operators.&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Typescript’s Constructor Shorthand
&lt;/h1&gt;

&lt;p&gt;This one is particularly for Typescript (Sorry vanilla JS users), but is a great feature when building classes.&lt;/p&gt;

&lt;p&gt;Normally in a class you have to list all your class variables then reassign them in your constructor, which takes tons of lines of code. But if your class is relatively simple (you’re just assigning parameters to private variables), Typescript has a great way to cut the amount of code you write.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Normal way&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;Location&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="nx"&gt;_latitude&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="nx"&gt;_longitude&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;latitude&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;longitude&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_latitude&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;latitude&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_longitude&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;longitude&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Shorthand in TypeScript&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;Location&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="nx"&gt;_latitude&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="nx"&gt;_longitude&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;On larger classes with tons of properties, this can be a real life saver!&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Nullish Operator
&lt;/h1&gt;

&lt;p&gt;Often misunderstood, the nullish operator lets you easily evaluate an expression and check if it’s null, and return a default value if it is null.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;nullish&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;value2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// If value1 is null returns 'default'&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;v1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;value1&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;default&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;v1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;value2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;myFn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;this has no&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;//returns "this has no default"&lt;/span&gt;
&lt;span class="nx"&gt;myFn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;this has no&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;//returns "this has no 0"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Actually, technically it checks for &lt;code&gt;null&lt;/code&gt; or &lt;code&gt;undefined&lt;/code&gt;, but the name is close enough. This is a great way to check if values exist or not.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Object Property Assignment
&lt;/h1&gt;

&lt;p&gt;ES6 simplified the process of assigning values to objects. If values are assigned to variables named exactly as the object’s properties, you won’t have to repeat the name!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Caelin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Old way (manual assignment)&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;user1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// New way!&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;user2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;As shown above, the new way is considerably simpler and DRYer than the old way!&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Arrow/Lambda Functions
&lt;/h1&gt;

&lt;p&gt;If you’ve seen a lot of these operators:  &lt;code&gt;=&amp;gt;&lt;/code&gt; thrown around everywhere, they’re arrow functions. These allow you to save a &lt;code&gt;return&lt;/code&gt; statement since any lamda function will have a default return.&lt;/p&gt;

&lt;p&gt;You’ll seen them often used in array operators as such:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// Long way&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="c1"&gt;// Short way&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;As you can see, it makes the code considerably more readable and shorter.&lt;/p&gt;

&lt;h1&gt;
  
  
  6.. Default Parameter Values
&lt;/h1&gt;

&lt;p&gt;ES6 now allows you to specify default parameter values on functions! Before, you’d have to rely on OR’s lazy evaluation, which worked but was a suboptimal solution.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Assigns 'c' a default value&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;defaultParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Fun tip, if you want to make a required parameter, do the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;requiredParam&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;_&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Required Parameter!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Create a default parameter d&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;defaultParamRequired&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;requiredParam&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Logic&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now, if this function is ran without passing a default parameter d in, it’ll throw an error! Pretty cool trick right?&lt;/p&gt;

&lt;h1&gt;
  
  
  7. Destructuring and Spread Operators
&lt;/h1&gt;

&lt;p&gt;I literally wrote a whole article on &lt;a href="https://cometcode.io/posts/javascript-spread-operator/"&gt;spread operators&lt;/a&gt;, but spread and destructing operations are great ways to take advantage of object and arrays!&lt;/p&gt;

&lt;h2&gt;
  
  
  Destructuring
&lt;/h2&gt;

&lt;p&gt;It’s quite common to want to access an objets parameters individually (to modify or read them) without accessing the original object. Normally, this would require a line for each object parameter, which can get quite long on larger objects. Object destructuring allows us to cut that into one line!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Caelin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Normal method&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Destructuring method&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This syntax is great for object parameters and import statements to reduce the amount of lines when dealing with complex objects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Spreading
&lt;/h2&gt;

&lt;p&gt;Spread operators make it easier to combine objects and arrays by expanding them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;finalArr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;arr1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;arr2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;// [1,2,3,4,5,6,7]&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;partialObj1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fernando&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;partialObj2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;37&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fullObj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;partialObj1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;partialObj2&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;// {name: "fernando", age: 37} &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



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

&lt;p&gt;These are just a few of the many Javascript and Typescript shortcuts that can save you time and make your code cleaner. Remember, this is not simply about making code more efficient or reducing lines, it’s about making code that’s cleaner and easier to read for the next developer.&lt;/p&gt;

&lt;p&gt;Did I miss something? Be sure to comment it down below!&lt;/p&gt;

&lt;h1&gt;
  
  
  Keep in Touch
&lt;/h1&gt;

&lt;p&gt;There's a lot of content out there, I appreciate you reading mine. I'm a young entrepreneur and I write about software development and my experience running companies. You can signup for my newsletter &lt;a href="https://newsletter.cometcode.io"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to reach out and connect with me on &lt;a href="https://www.linkedin.com/in/caelinsutch"&gt;Linkedin&lt;/a&gt; or &lt;a href="https://twitter.com/caelin_sutch"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>typescript</category>
      <category>node</category>
    </item>
    <item>
      <title>Do These Four Things Habitually to Become a Better Programmer</title>
      <dc:creator>caelinsutch</dc:creator>
      <pubDate>Sat, 15 Aug 2020 00:29:59 +0000</pubDate>
      <link>https://dev.to/caelinsutch/do-these-four-things-habitually-to-become-a-better-programmer-1o44</link>
      <guid>https://dev.to/caelinsutch/do-these-four-things-habitually-to-become-a-better-programmer-1o44</guid>
      <description>&lt;p&gt;Becoming a better programmer is far more than learning the next framework, or memorizing more algorithms. It’s all the small behaviors that make up your daily day that may not obviously make your work better, but in the long term build healthy habits that not only help you, but the rest of the developers on your team.&lt;/p&gt;

&lt;p&gt;Let’s talk about four things that you should habitually be doing to become a better developer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HtsCf24Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/12032/0%2AYJtSSqpzBQ5LE-Yq" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HtsCf24Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/12032/0%2AYJtSSqpzBQ5LE-Yq" alt="Photo by [Chris Ried](https://unsplash.com/@cdr6934?utm_source=medium&amp;amp;utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Clean up Your Code
&lt;/h2&gt;

&lt;p&gt;Although it may be hard to articulate in words, every developer knows what stinky code smells like. It’s the type of code that you look at, and it makes you internally cringe.&lt;/p&gt;

&lt;p&gt;The small stuff like variable names, function names, complicated syntax to do a simple functions, can all build up a stink and make code impossible to work with.&lt;/p&gt;

&lt;p&gt;Thankfully, this is an easy problem to fix. When I encounter bad code, I change one small thing at a time, testing (which we’ll go into) after each change, and continuing that process until the code is all nice and clean.&lt;/p&gt;

&lt;p&gt;This is a practice that never really stops. As a software developer, you’ll constantly be learning new things. Practices that were considered “Best Practice” 5 years ago aren’t today. Code does rot over time, so going back through stuff and fixing code as you come across with will help maintain a code base for a long time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KTU_sts5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/12000/0%2AUMXXq1bS4OyzQzUk" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KTU_sts5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/12000/0%2AUMXXq1bS4OyzQzUk" alt="Photo by [Luca Bravo](https://unsplash.com/@lucabravo?utm_source=medium&amp;amp;utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Document, Document, Document
&lt;/h2&gt;

&lt;p&gt;If working with a team of developers it’s always a good practice to use JSDoc style documentation on all your code.&lt;/p&gt;

&lt;p&gt;For example, lets look at this function header in TypeScript:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/**
* Creates a new dog for the kennel.
* @param eyeColor {EyeColor} - The color of the dogs eyes
* @param dogLength {number} - The length of the dog in meters. Accepts a maximum value of 3
* @param dogBreed {DogBreed} - The breed of the dog being created. 
* @returns Dog - the newly created dog :)
**/
function createNewDog(eyeColor: EyeColor, dogLength: number, dogBreed: DogBreed): Dog;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You’ll notice that the function name and all parameter names make sense. You probably wouldn’t event need the JSDocs because they’re named appropriately. The JSDocs are clear and use the proper annotations. This code is something that any developer can look at and almost instantly understand. Even better, those JSDocs are helpful for autocomplete features in most IDE’s (if this was JS or another language), making it easier for other developers to use your code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zdJYxKeZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/10368/0%2Ajou62KRYvfEge_n9" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zdJYxKeZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/10368/0%2Ajou62KRYvfEge_n9" alt="Photo by [Rich Tervet](https://unsplash.com/@richtervet?utm_source=medium&amp;amp;utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  All Hail Simple Code
&lt;/h2&gt;

&lt;p&gt;Yes, you may be able to incorporate all these fancy functions to accomplish a task with less lines of code, but it will be completely unreadable for other devs. In JavaScript, ES6 array functions, such as .map, .filter, and others can make it really easy to create an awesome one liner that fulfills your needs. However, unless it’s easy for any other dev to look at and understand, &lt;strong&gt;don’t write it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Over-engineering code, or adding fancy extra features for no reason, adds complexity for no good reason. Over-engineering code can lead to code that’s so generic, it’s disconnected from the task that it’s actually made for. This is all that extra abstracted functionality that’s developed just in case someone wants to create a dog with four eyes, or 8 legs, or a 10 meter long dog. All those cases are generally ridiculous (unless your code is in some sort of horror game) and shouldn’t be implemented.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GLF0dx5M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/10740/0%2AKtmXiTmNbtPJoXRf" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GLF0dx5M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/10740/0%2AKtmXiTmNbtPJoXRf" alt="Photo by [Marten Bjork](https://unsplash.com/@martenbjork?utm_source=medium&amp;amp;utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Properly Architect Your Code
&lt;/h2&gt;

&lt;p&gt;This is the number one problem I see with newbie devs. They don’t take the proper time to plan out code, and instead dive right into writing code, which can lead to more mistakes, over engineering, and unfocused development.&lt;/p&gt;

&lt;p&gt;Of course, as a dev I understand the urge to just start developing, because that’s why we program, but planning is still important.&lt;/p&gt;

&lt;p&gt;Taking the time to make a nice flowchart, requirements list, and other planning documentation doesn’t just help you figure out what you’re writing, but also helps future devs understand the thought process behind the code.&lt;/p&gt;

&lt;p&gt;Ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;How is this code structured?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Why is this code developed?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How will I know when this code is done?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can provide well thought out answers to all these questions, you know that you’ve planned properly for your code.&lt;/p&gt;

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

&lt;p&gt;Practicing doing the four above things every day will lead to drastically better code over time. Equipped with these tools, your future self will love you and your teammates will love you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep in Touch
&lt;/h2&gt;

&lt;p&gt;There’s a lot of content out there, I appreciate you reading mine. I’m a young entrepreneur and I write about software development and my experience running companies. You can signup for my newsletter &lt;a href="https://newsletter.cometcode.io"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to reach out and connect with me (I love meeting new people!) on &lt;a href="https://www.linkedin.com/in/caelinsutch"&gt;Linkedin&lt;/a&gt; or &lt;a href="https://twitter.com/caelin_sutch"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title> Top 10 React Component Libraries</title>
      <dc:creator>caelinsutch</dc:creator>
      <pubDate>Sun, 02 Aug 2020 18:01:05 +0000</pubDate>
      <link>https://dev.to/caelinsutch/top-10-react-component-libraries-2b17</link>
      <guid>https://dev.to/caelinsutch/top-10-react-component-libraries-2b17</guid>
      <description>&lt;p&gt;React is one of the most popular frontend frameworks for developers to create Single Page Applications (SPAs). The React community has developed a multitude of component libraries to help accelerate development.&lt;/p&gt;

&lt;p&gt;In this post, we’ll take a look at some of the best React component libraries around in 2020.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QDRRzUex--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/10368/0%2AS2boqBOnXMVTLJOt" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QDRRzUex--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/10368/0%2AS2boqBOnXMVTLJOt" alt="Photo by [Ferenc Almasi](https://unsplash.com/@flowforfrank?utm_source=medium&amp;amp;utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral)"&gt;&lt;/a&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@flowforfrank?utm_source=medium&amp;amp;utm_medium=referral"&gt;Ferenc Almasi&lt;/a&gt; on &lt;a href="https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ant Design
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://ant.design/"&gt;Ant Design&lt;/a&gt; is a set of enterprise-class UI designed for web applications.&lt;/p&gt;

&lt;p&gt;It provides over 50 customizable components that can be used to craft beautiful applications, such as cards, buttons, various layout helpers, navbars, and more.&lt;/p&gt;

&lt;p&gt;Ant Design recently beat material UI to become the most popular React UI library on &lt;a href="https://github.com/ant-design/ant-design"&gt;GitHub&lt;/a&gt; with over 56k stars. It’s used in &lt;a href="https://ant.design/docs/spec/cases"&gt;tons&lt;/a&gt; of applications, spanning a multitude of industries, so it’s well supported.&lt;/p&gt;

&lt;p&gt;Every aspect of Ant Design is completely thought-out down to the smallest detail. It’s built based on a &lt;a href="https://ant.design/docs/spec/introduce"&gt;design system&lt;/a&gt; created by the makers.&lt;/p&gt;

&lt;p&gt;It is specially created for internal desktop applications and is based on several principles and unitary specifications. With Ant Design, you can easily create a consistent “look” across all components of your application.&lt;/p&gt;

&lt;p&gt;There’s also a mobile version of Ant Design for React Native, you can read about it &lt;a href="https://mobile.ant.design"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Material UI
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://material-ui.com/"&gt;Material UI&lt;/a&gt; is a group of components designed around the Google Material spec. With all the necessary components to create a killer React application, Material UI provides an easy way to integrate the Google Material style system into your application.&lt;/p&gt;

&lt;p&gt;MaterialUI has an active set of maintainers and a strong community behind it. It currently has over 54k stars on &lt;a href="https://github.com/mui-org/material-ui"&gt;GitHub&lt;/a&gt;, making it one of the most popular component libraries out there.&lt;/p&gt;

&lt;p&gt;Even better, the components are completely independent of each other and only inject the styles they need to display, which is better for performance.&lt;/p&gt;

&lt;p&gt;If you’re looking to build a lightweight, consistent, and clean interface quickly, Material UI is a good choice for you.&lt;/p&gt;

&lt;p&gt;You can learn more about Material UI &lt;a href="https://material-ui.com/getting-started/installation/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  React Bootstrap
&lt;/h2&gt;

&lt;p&gt;You’re probably familiar with the popular Bootstrap library. React Bootstrap is a remake of Bootstrap for React, replacing styles with components.&lt;/p&gt;

&lt;p&gt;If you’re coming from a web dev background, you’ll probably feel comfortable working with React Bootstrap due to familiarity.&lt;/p&gt;

&lt;p&gt;It has gained popularity over the years and now has over 18k stars on &lt;a href="https://github.com/react-bootstrap/react-bootstrap"&gt;GitHub&lt;/a&gt; and over 500k downloads on&lt;a href="https://www.npmjs.com/package/react-bootstrap"&gt; NPM weekly&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It’s by far the best way to get started with Bootstrap in React.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blueprint UI
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://blueprintjs.com/"&gt;Blueprint UI&lt;/a&gt; is another React component library. It’s optimized for building data dense applications that need to be supported on all platforms. It’s not a mobile first toolkit, but rather designed for desktop applications.&lt;/p&gt;

&lt;p&gt;With over 16k stars on &lt;a href="https://github.com/palantir/blueprint"&gt;Github&lt;/a&gt;, it’s well supported and very popular with developers. If your application needs to display large amounts of data, BlueprintUI is probably a good fit.&lt;/p&gt;

&lt;p&gt;To get an overview of how it works and the components it offers, you can check it out on CodeSandbox &lt;a href="https://codesandbox.io/s/nko3k41y60"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Semantic UI React
&lt;/h2&gt;

&lt;p&gt;Semantic UI React is the official React integration for Semantic UI. It’s jQuery free and uses a declarative API approach that makes it cleaner and simpler to use.&lt;/p&gt;

&lt;p&gt;Semantic UI React has 11.5k stars on &lt;a href="https://github.com/Semantic-Org/Semantic-UI-React"&gt;Github&lt;/a&gt;, so while not as popular as some of the other frameworks, is well supported by Semantic.&lt;/p&gt;

&lt;p&gt;If you’re looking to build apps with React and want to ensure 100 percent Semantic-friendly code, you should definitely &lt;a href="https://react.semantic-ui.com/"&gt;check it out&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rebass
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://rebassjs.org/"&gt;Rebass&lt;/a&gt; is a very lightweight library to create theme-able components based on the &lt;a href="https://styled-system.com/"&gt;Styled System&lt;/a&gt; library.&lt;/p&gt;

&lt;p&gt;Rebass is a primitive component library, meaning it’s default stylistically unopinionated (you inject your own style), and focuses on only primitive components (such as buttons, layout components, etc.)&lt;/p&gt;

&lt;p&gt;If you don’t want to rely completely on component libraries and intend to extend an already existing one during development, you should definitely check out Rebass.&lt;/p&gt;

&lt;p&gt;It’s rapidly gaining popularity. The project currently has over 6k stars on &lt;a href="https://github.com/rebassjs/rebass"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fluent UI
&lt;/h2&gt;

&lt;p&gt;If you’ve used Microsoft products, you’ve used Fluent UI. &lt;a href="https://developer.microsoft.com/en-us/fluentui/#/"&gt;Fluent UI&lt;/a&gt; is a set of UI components built from Microsofts design language.&lt;/p&gt;

&lt;p&gt;The UI library offers compatibility with Desktop, Android, and iOS devices and is used by sites such as Office 365, OneNote, Azure DevOps, and other Microsoft products.&lt;/p&gt;

&lt;p&gt;It’s packed with a lot of prebuilt components that makes it easy to prototype applications extremely quickly.&lt;/p&gt;

&lt;p&gt;The library has 9k stars on &lt;a href="https://github.com/microsoft/fluentui"&gt;Github&lt;/a&gt; and is well supported by Microsoft.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evergreen
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://evergreen.segment.com"&gt;Evergreen UI&lt;/a&gt; is a component library designed by Segment. It’s an open sourced project that has components for all essential web functionality.&lt;/p&gt;

&lt;p&gt;One of the best things is they explain all &lt;a href="https://evergreen.segment.com/components/"&gt;design decisions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Evergreen’s design is light, simple, and intuitive. You can use it to get started building elegant user interfaces pretty quickly.&lt;/p&gt;

&lt;p&gt;Evergreen has almost 10k stars on &lt;a href="https://github.com/segmentio/evergreen/stargazers/"&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chakra UI
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://chakra-ui.com"&gt;Chakra UI&lt;/a&gt; is a simple and modular component library with all the necessary web building blocks.&lt;/p&gt;

&lt;p&gt;It’s designed with accessibility specs in mind, complying with WAI-ARIA.&lt;/p&gt;

&lt;p&gt;All the components are easily theme-able, as all values can be referenced throughout the application.&lt;/p&gt;

&lt;p&gt;It’s also very easy to compose new components by putting all the building blocks together.&lt;/p&gt;

&lt;p&gt;It has almost 9k stars on &lt;a href="https://github.com/chakra-ui/chakra-ui"&gt;Github&lt;/a&gt;, and is rapidly gaining popularity within the React developer community.&lt;/p&gt;

&lt;h2&gt;
  
  
  Grommet
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://v2.grommet.io"&gt;Grommet&lt;/a&gt; is a React framework that provides accessible, modular, responsive, and theme-able components in a tidy package.&lt;/p&gt;

&lt;p&gt;Grommet provides support for W3c’s WCAG 2.1 spec out of the box, so it’s already accessible for everyone.&lt;/p&gt;

&lt;p&gt;Grommet has powerful theming tools that make it easy to customize any aspect of each component.&lt;/p&gt;

&lt;p&gt;Grommet is used by a multitude of large companies, such as Netflix, Github, and Uber, and has almost 7k stars on &lt;a href="https://github.com/grommet/grommet"&gt;Github&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;Choosing a React component library is no easy task as there’s no one size fits all solution. I recommend carefully looking at your needs, preferred developer style, and looking at each framework to see which one appeals the most to you.&lt;/p&gt;

&lt;p&gt;In the end, the best framework is the one that works for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep in Touch
&lt;/h2&gt;

&lt;p&gt;There’s a lot of content out there, I appreciate you reading mine. I’m a young entrepreneur and I write about software development and my experience running companies. You can signup for my newsletter &lt;a href="https://newsletter.cometcode.io"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to reach out and connect with me (I love meeting new people!) on &lt;a href="https://www.linkedin.com/in/caelinsutch"&gt;Linkedin&lt;/a&gt; or &lt;a href="https://twitter.com/caelin_sutch"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>reactcomponents</category>
    </item>
    <item>
      <title>The Best and Essential Frontend Tools</title>
      <dc:creator>caelinsutch</dc:creator>
      <pubDate>Sun, 02 Aug 2020 00:22:31 +0000</pubDate>
      <link>https://dev.to/caelinsutch/the-best-and-essential-frontend-tools-5cda</link>
      <guid>https://dev.to/caelinsutch/the-best-and-essential-frontend-tools-5cda</guid>
      <description>&lt;p&gt;The internet is chock full of various programming tools to help the modern developer make things faster and with a higher quality than ever before. If you’ve come across this article, you probably already know quite a lot about the programming fundamentals, like HTML, CSS, and JS, but let’s talk about some of the tools that make coding a true joy.&lt;/p&gt;

&lt;p&gt;Getting to know the tools of the trade can make your job easier and keep you on top of the skills you need to remain relevant.&lt;/p&gt;

&lt;p&gt;In this article, we’ll break down some of the tools that are essential to success as a developer, along with a recommendation of my favorite tools, all well tested and proven. Even better, all of these tools are &lt;strong&gt;completely free.&lt;/strong&gt; Excited? Let’s get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  1. A Solid Code Editor
&lt;/h2&gt;

&lt;p&gt;A code editor serves as the centerpiece of a developers life. When you’re spending all day in your code editor, you want to make sure that it’s the best one available, configured perfectly for your needs.&lt;/p&gt;

&lt;p&gt;Of course, all editors provide the basic functionality needed to write, edit, and save code, but the good ones go above and beyond with features like autocomplete, visual themes, and extensive plugin libraries.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QsVVWulh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AvwgCez_1du9vf4LUfpkvHA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QsVVWulh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AvwgCez_1du9vf4LUfpkvHA.png" alt="Atom IDE"&gt;&lt;/a&gt;&lt;em&gt;Atom IDE&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Free Option
&lt;/h3&gt;

&lt;p&gt;My favorite free editor is &lt;a href="https://atom.io"&gt;Atom&lt;/a&gt;, which is supported by Github. Atom is an open sourced editor that is chocked full of features and has a healthy plugin library to add even more features.&lt;/p&gt;

&lt;p&gt;Atom is also fully customizable with CSS, so you can fiddle and customize the theme to your liking. Quite a few ready-to-go themes are available as well.&lt;/p&gt;

&lt;p&gt;Since it was created by the team at Github, it also has fantastic Git and Github support, making using these tools even easier!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mfgOWk9V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AAAWE8FzSsH7D5Y8nwNQJlg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mfgOWk9V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AAAWE8FzSsH7D5Y8nwNQJlg.png" alt="Jetbrain’s Webstorm"&gt;&lt;/a&gt;&lt;em&gt;Jetbrain’s Webstorm&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Paid Option
&lt;/h3&gt;

&lt;p&gt;If you can afford it (or you’re a student), the &lt;a href="http://jetbrains.com"&gt;Jetbrains&lt;/a&gt; line of code IDE’s are fantastic. WebStorm is their web developer IDE, and features like IntelliSense (autocomplete), huge plugin library, amazing support, and insane functionality make it my favorite IDE to use.&lt;/p&gt;

&lt;p&gt;Plus, if you code backend in Java, Python, Go, or any other language Jetbrains probably has an IDE that supports that language that is similar to WebStorm, meaning you only have to learn one IDE!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3JFo3wPd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AoNmXhYhbrBLtZ69u3m8P7Q.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3JFo3wPd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AoNmXhYhbrBLtZ69u3m8P7Q.jpeg" alt="Git"&gt;&lt;/a&gt;&lt;em&gt;Git&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Version Control
&lt;/h2&gt;

&lt;p&gt;Version control is without a doubt critical if you work on a team, but even if you’re working on your own, using version control is a great way to stay organized and keep your code history in case something breaks (as it often does).&lt;/p&gt;

&lt;p&gt;By far the most popular Version Control System (VCS), and my recommendation, is &lt;a href="https://git-scm.com/"&gt;Git&lt;/a&gt;. Git is a distributed version control system, which you probably know from the popular online code repository management system &lt;a href="//github.com"&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Git boasts a number of features, such as a powerful CLI, “safe” history keeping, and easy-to-use functionality.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0ZKbafN---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AyxHvT2IrqrsQXsl3niE_4A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0ZKbafN---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AyxHvT2IrqrsQXsl3niE_4A.png" alt="HTML5 Boilerplate"&gt;&lt;/a&gt;&lt;em&gt;HTML5 Boilerplate&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Frontend Boilerplate
&lt;/h2&gt;

&lt;p&gt;While each site you create as a front-end developer is unique, you don’t have to do all your coding from scratch. Boilerplates are code templates you can use to kick off your development process. These sets of HTML, CSS, and JavaScript files help you spend less time doing the routine work of setting up your site files while feeling confident that your site follows modern best practices.&lt;/p&gt;

&lt;p&gt;I use &lt;a href="https://html5boilerplate.com/"&gt;HTML5 Boilerplate&lt;/a&gt;, a powerful boilerplate that comes with analytics, icons, modernizr, normalize.css, and a ton of other goodies that make it really easy to create a new website.&lt;/p&gt;

&lt;p&gt;HTML5 Boilerplate was created by hundreds of developers from around the world, and is always kept up to date with the latest best practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Frontend Assets
&lt;/h2&gt;

&lt;p&gt;Now that you have your awesome boilerplate site setup, you need some assets to make that site look stunning. By selecting nice icons, fonts, and other design assets, you can make a boring site look incredible.&lt;/p&gt;

&lt;p&gt;While there are literally thousands of front-end assets available, there’s a few I particularly recommend. When looking at frontend assets, you want a high degree of customizability and ease of use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gs5I5pe6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AYJ-KAtQ6h56jLHnM_ktJZg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gs5I5pe6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AYJ-KAtQ6h56jLHnM_ktJZg.png" alt="Google Fonts"&gt;&lt;/a&gt;&lt;em&gt;Google Fonts&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Any good design starts with a good font, and &lt;a href="https://fonts.google.com/"&gt;Google Font &lt;/a&gt;has you covered. With hundreds of free fonts available, you’ll always be covered regardless of what style your website is.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vnqn-QnL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AvaFnB667sepmIuzHrYT2Yw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vnqn-QnL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AvaFnB667sepmIuzHrYT2Yw.png" alt="Font Awesome"&gt;&lt;/a&gt;&lt;em&gt;Font Awesome&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now you need some killer icons. Look no further than one of the biggest icon libraries around, &lt;a href="https://fontawesome.com/"&gt;Font Awesome&lt;/a&gt;. They use SVG supported icons, meaning they look great at any resolution, and offer a high degree of customizability for all their fonts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YGYgNmW3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2A1dShxI32J6usTmFfb3iX4w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YGYgNmW3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2A1dShxI32J6usTmFfb3iX4w.png" alt="Undraw"&gt;&lt;/a&gt;&lt;em&gt;Undraw&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you’re looking for some beautiful illustrations for your website, &lt;a href="https://undraw.co"&gt;UnDraw&lt;/a&gt; has you covered, with hundreds of customizable and free website SVG illustrations.&lt;/p&gt;

&lt;p&gt;And finally, you probably want some awesome photos. For that, I always turn to &lt;a href="https://unsplash.com"&gt;Unsplash&lt;/a&gt;, which has tons of royalty free photos that you can use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YAGXlhWG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AUvjq7Xtb3xUDqYX8xeeq1g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YAGXlhWG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AUvjq7Xtb3xUDqYX8xeeq1g.png" alt="Chrome Dev Tools"&gt;&lt;/a&gt;&lt;em&gt;Chrome Dev Tools&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Developer Tools
&lt;/h2&gt;

&lt;p&gt;As you build your site, you’ll want to make edits “live” in the browser to either the HTML or CSS, as well as see what code is affecting which parts of the site.&lt;/p&gt;

&lt;p&gt;Dev tools are a function built into modern web browsers that let you see the code behind each section of a site right in the browser with just a few clicks. (Hint: dev tools also let you peek at the code behind any website so they’re also a great way to learn a thing or two from other developers.)&lt;/p&gt;

&lt;p&gt;Chrome is the current industry leader in web browsers, so I recommend their developer tools for their simplicity and ease-of-use. Plus, they have &lt;a href="https://developers.google.com/web/tools/lighthouse"&gt;Lighthouse&lt;/a&gt; built in, making it easier to analyze your site performence.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JyCoKIeZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AQewKIck_Cf2PfHTRk--JOw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JyCoKIeZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/NaN/1%2AQewKIck_Cf2PfHTRk--JOw.png" alt="Vercel"&gt;&lt;/a&gt;&lt;em&gt;Vercel&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Deployment Options
&lt;/h2&gt;

&lt;p&gt;Now that you want to deploy your site, you’ll need a provider to host it to the web. Whether you’re building a static site or a complex web application in React or Angular, I recommend using &lt;a href="https://vercel.com"&gt;Vercel&lt;/a&gt; to make it really easy to host your site. They integrate easily into the Github workflow, and support every popular framework.&lt;/p&gt;

&lt;p&gt;Even better, you can host your website completely free through their platform! Another great choice is &lt;a href="https://www.netlify.com"&gt;Netlify&lt;/a&gt;, who I also use for some projects.&lt;/p&gt;

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

&lt;p&gt;Hopefully with all these tools, your developer experience will become way better and easier than before. Todays technology and services makes it easier than ever to build awesome websites. I’m looking forward to seeing the amazing things you’ll be creating!&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep in Touch
&lt;/h2&gt;

&lt;p&gt;There’s a lot of content out there, I appreciate you reading mine. I’m a young entrepreneur and I write about software development and my experience running companies. You can signup for my newsletter &lt;a href="https://newsletter.cometcode.io"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to reach out and connect with me (I love meeting new people!) on &lt;a href="https://www.linkedin.com/in/caelinsutch"&gt;Linkedin&lt;/a&gt; or &lt;a href="https://twitter.com/caelin_sutch"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>10 Habits to Improve your Life</title>
      <dc:creator>caelinsutch</dc:creator>
      <pubDate>Sun, 02 Aug 2020 00:21:46 +0000</pubDate>
      <link>https://dev.to/caelinsutch/10-habits-to-improve-your-life-1j57</link>
      <guid>https://dev.to/caelinsutch/10-habits-to-improve-your-life-1j57</guid>
      <description>&lt;p&gt;It’s common knowledge that habits can be incredibly powerful to changing your life. Entire books have been written about it, such as Atomic Habits by James Clear.&lt;/p&gt;

&lt;p&gt;The fact is, the discipline, focus, and consistency that comes with habits can drastically change your life for the better if implemented right. There are tons of healthy habits to adopt, but it’s best to focus on building one habit at a time, and slowly building up your inventory of habits. Before you know it, you’ll be crushing it every single day!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QBjJYvjy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/8064/0%2AIc6Up_Tpetd8JY2g" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QBjJYvjy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/8064/0%2AIc6Up_Tpetd8JY2g" alt="Photo by [Matt Ragland](https://unsplash.com/@mattragland?utm_source=medium&amp;amp;utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral)"&gt;&lt;/a&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@mattragland?utm_source=medium&amp;amp;utm_medium=referral"&gt;Matt Ragland&lt;/a&gt; on &lt;a href="https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Lets take a look at some of the most essential habits to create:&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a Morning Ritual
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vHQfTje3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4620/0%2A2zYlhn05220VHrze" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vHQfTje3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4620/0%2A2zYlhn05220VHrze" alt="Photo by [Jake Givens](https://unsplash.com/@jakegivens?utm_source=medium&amp;amp;utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral)"&gt;&lt;/a&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@jakegivens?utm_source=medium&amp;amp;utm_medium=referral"&gt;Jake Givens&lt;/a&gt; on &lt;a href="https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.bakadesuyo.com/2011/04/does-your-mood-in-the-morning-affect-your-ent/"&gt;Research shows&lt;/a&gt; that your morning attitude affects your entire day! If you can establish a good morning routine that puts you in an energized, happy, and focused mood, that feeling will rub off on your entire day.&lt;/p&gt;

&lt;p&gt;Believe it or not, your feelings rub off on your entire life. You can’t ignore or fight your feelings, so make those feelings good ones!&lt;/p&gt;

&lt;p&gt;From &lt;a href="https://www.amazon.com/Antidote-Happiness-People-Positive-Thinking/dp/0865478015/?tag=inverse03-20"&gt;the Antidote: Happiness for People Who Can’t Stand Positive Thinking&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;…when experimental subjects are told of an unhappy event, but then instructed to try not to feel sad about it, they end up feeling worse than people who are informed of the event, but given no instructions about how to feel. In another study, when patients who were suffering from panic disorders listened to relaxation tapes, their hearts beat faster than patients who listened to audiobooks with no explicitly ‘relaxing’ content. Bereaved people who make the most effort to avoid feeling grief, research suggests, take the longest to recover from their loss.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A good morning ritual can make your feelings right and leave you feeling happy, and a happy life means a more productive workday.&lt;/p&gt;

&lt;p&gt;There is of course lots of research on what good morning rituals are, and that is out of the scope of this article, but activities like running, a hearty breakfast, meditation, or morning reading can do wonders for your mood.&lt;/p&gt;

&lt;p&gt;Having a structured start to your day can also help you eliminate stress, anxiety, and mental fatigue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read Everyday
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  A reader lives a thousand lives before he dies … the man who never reads only lives one
&lt;/h1&gt;
&lt;h1&gt;
  
  
  - George RR Martin
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lGANd-dm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/8000/0%2AcLOUXOg6Jgb9vqYP" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lGANd-dm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/8000/0%2AcLOUXOg6Jgb9vqYP" alt="Photo by [Jaredd Craig](https://unsplash.com/@jaredd_craig?utm_source=medium&amp;amp;utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral)"&gt;&lt;/a&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@jaredd_craig?utm_source=medium&amp;amp;utm_medium=referral"&gt;Jaredd Craig&lt;/a&gt; on &lt;a href="https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Reading books is a great way to gain more knowledge, increase creativity, and relax. Immersion reading can also increase your productivity and have a calming affect similar to meditation.&lt;/p&gt;

&lt;p&gt;Whether it’s fiction or nonfiction, taking the time to read a little everyday (I generally read before I got to bed) has a powerful and cumulative affect.&lt;/p&gt;

&lt;p&gt;I generally enjoy nonfiction books, because they are pertinent to what I’m working on, struggling with, and give actionable advice to overcome challenges I face either personally or professionally.&lt;/p&gt;

&lt;p&gt;Looking for a good list of books to start off with? I recommend &lt;a href="https://www.abebooks.com/books/50-essential-non-fiction-books/index.shtml"&gt;Abe’s list of Nonfiction&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Focus on Single Tasking
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  The fastest and most effective way to do anything is to put your whole heart and mind behind a singular focus.
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;p&gt;The human brain isn’t built to multi task, you end up simply switching between tasks very quickly, which can break the focused and concentrated work that is super effective.&lt;/p&gt;

&lt;p&gt;While there’s no harm in occasionally multi tasking, constantly switching between tasks can harm your productivity.&lt;/p&gt;

&lt;p&gt;Instead of trying to do multiple things at once, create al list of everything you have to do today and start tackling each one individually. You’ll probably find that you can complete the items faster and with higher quality than if you tried to do multiple things at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make Time to Exercise
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GZ2FNMQ---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/13440/0%2A1D5q8TpD9cNqVywt" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GZ2FNMQ---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/13440/0%2A1D5q8TpD9cNqVywt" alt="Photo by [Fitsum Admasu](https://unsplash.com/@fitmasu?utm_source=medium&amp;amp;utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral)"&gt;&lt;/a&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@fitmasu?utm_source=medium&amp;amp;utm_medium=referral"&gt;Fitsum Admasu&lt;/a&gt; on &lt;a href="https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Whether it’s a walk, jog, or full gym workout, taking the time for physical exercise has been scientifically proven to pump up creativity and &lt;a href="https://www.health.harvard.edu/blog/regular-exercise-changes-brain-improve-memory-thinking-skills-201404097110"&gt;enhance your cognitive skills&lt;/a&gt;. If you’re still not convinced, exercise can also boost your mood by &lt;a href="https://www.self.com/story/benefits-of-exercise"&gt;increasing&lt;/a&gt; the production of Endorphins, the chemicals that control your mood.&lt;/p&gt;

&lt;p&gt;It’ll also increase your energy to make you feel more awake at work. Being on top of your workout game has a multitude of effects from the physical affects of decreasing risk for a variety of diseases to improving your mental health.&lt;/p&gt;

&lt;p&gt;Getting in the habit of working out on a regular schedule can have dramatic affects!&lt;/p&gt;

&lt;h2&gt;
  
  
  Go on Social Media Less
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  Post Less, Do More, Compare Less, Reflect More, Flex Less, Accomplish More
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;p&gt;While I’m not recommending a complete break from social media (as there is a lot of value that can be gained from it), I do recommend actively thinking about what you’re spending the time looking at and how much time you’re on social media daily.&lt;/p&gt;

&lt;p&gt;Studies have shown that social media use is directly related to &lt;a href="https://www.forbes.com/sites/amitchowdhry/2016/04/30/study-links-heavy-facebook-and-social-media-usage-to-depression/#49bf88134b53"&gt;depression&lt;/a&gt;, and can also increase the clutter and stress in your mind. The average person spends at least 2 hours a day on social media. If you cut out one of those hours, you’ll have an extra 7 hours per week!&lt;/p&gt;

&lt;p&gt;Making the commitment to limit your social media use every day will free up time for more gratifying and productive actives, like meditation, reflection, and reconnecting with the people and world around you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tend to Your Spiritual Needs
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iWfriAgn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/11232/0%2Ao28PpbzjV5uR1lGX" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iWfriAgn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/11232/0%2Ao28PpbzjV5uR1lGX" alt="Photo by [Greg Rakozy](https://unsplash.com/@grakozy?utm_source=medium&amp;amp;utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral)"&gt;&lt;/a&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@grakozy?utm_source=medium&amp;amp;utm_medium=referral"&gt;Greg Rakozy&lt;/a&gt; on &lt;a href="https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While this may be controversial, I believe that humans are inherently spiritual beings. Whether you believe in a religion or not, taking time to reflect on the bigger questions in life that extend beyond our physical reality can actually increase your mental health. Religious or spiritual beliefs are &lt;a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3426191/"&gt;proven&lt;/a&gt; to help people cope with stressful life circumstances.&lt;/p&gt;

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

&lt;p&gt;Focusing on establishing these baseline habits will help your life become happier and more productive. I recommend focusing on one at a time, and committing yourself fully to that habit.&lt;/p&gt;

&lt;p&gt;I usually write down a habit that I’m trying to implement every two weeks, and try to commit to it every single day. A habit tracker, whether physically or digitally, can help you remain focused and committed.&lt;/p&gt;

&lt;p&gt;If you can nail down each of these habits, I guarantee you you’ll find yourself more satisfied with the life you’re living.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep in Touch
&lt;/h2&gt;

&lt;p&gt;There’s a lot of content out there, I appreciate you reading mine. I’m a young entrepreneur and I write about software development and my experience running companies. You can signup for my newsletter &lt;a href="https://newsletter.cometcode.io"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to reach out and connect with me (I love meeting new people!) on &lt;a href="https://www.linkedin.com/in/caelinsutch"&gt;Linkedin&lt;/a&gt; or &lt;a href="https://twitter.com/caelin_sutch"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>habits</category>
      <category>productivity</category>
      <category>selfimprovement</category>
      <category>selfcare</category>
    </item>
    <item>
      <title>The Best and Essential Frontend Tools</title>
      <dc:creator>caelinsutch</dc:creator>
      <pubDate>Fri, 31 Jul 2020 03:09:15 +0000</pubDate>
      <link>https://dev.to/caelinsutch/the-best-and-essential-frontend-tools-1pl9</link>
      <guid>https://dev.to/caelinsutch/the-best-and-essential-frontend-tools-1pl9</guid>
      <description>&lt;p&gt;The internet is chock full of various programming tools to help the modern developer make things faster and with a higher quality than ever before. If you’ve come across this article, you probably already know quite a lot about the programming fundamentals, like HTML, CSS, and JS, but let’s talk about some of the tools that make coding a true joy. &lt;/p&gt;

&lt;p&gt;Getting to know the tools of the trade can make your job easier and keep you on top of the skills you need to remain relevant. &lt;/p&gt;

&lt;p&gt;In this article, we’ll break down some of the tools that are essential to success as a developer, along with a recommendation of my favorite tools, all well tested and proven. Even better, all of these tools are &lt;strong&gt;completely free.&lt;/strong&gt; Excited? Let’s get started!&lt;/p&gt;

&lt;h1&gt;
  
  
  1. A Solid Code Editor
&lt;/h1&gt;

&lt;p&gt;A code editor serves as the centerpiece of a developers life. When you’re spending all day in your code editor, you want to make sure that it’s the best one available, configured perfectly for your needs. &lt;/p&gt;

&lt;p&gt;Of course, all editors provide the basic functionality needed to write, edit, and save code, but the good ones go above and beyond with features like autocomplete, visual themes, and extensive plugin libraries. &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%2Fi.imgur.com%2F5w9tfm6.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%2Fi.imgur.com%2F5w9tfm6.png" alt="Atom IDE"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Free Option
&lt;/h2&gt;

&lt;p&gt;My favorite free editor is &lt;a href="https://atom.io" rel="noopener noreferrer"&gt;Atom&lt;/a&gt;, which is supported by Github. Atom is an open sourced editor that is chocked full of features and has a healthy plugin library to add even more features. &lt;/p&gt;

&lt;p&gt;Atom is also fully customizable with CSS, so you can fiddle and customize the theme to your liking. Quite a few ready-to-go themes are available as well.   &lt;/p&gt;

&lt;p&gt;Since it was created by the team at Github, it also has fantastic Git and Github support, making using these tools even easier!&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%2Fi.imgur.com%2FJVBwg2U.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%2Fi.imgur.com%2FJVBwg2U.png" alt="Jetbrain's Webstorm"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Paid Option
&lt;/h2&gt;

&lt;p&gt;If you can afford it (or you’re a student), the &lt;a href="http://jetbrains.com" rel="noopener noreferrer"&gt;Jetbrains&lt;/a&gt; line of code IDE’s are fantastic. WebStorm is their web developer IDE, and features like IntelliSense (autocomplete), huge plugin library, amazing support, and insane functionality make it my favorite IDE to use. &lt;/p&gt;

&lt;p&gt;Plus, if you code backend in Java, Python, Go, or any other language Jetbrains probably has an IDE that supports that language that is similar to WebStorm, meaning you only have to learn one IDE!&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%2Fi.imgur.com%2FSMROnSB.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.imgur.com%2FSMROnSB.jpg" alt="Git"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Version Control
&lt;/h1&gt;

&lt;p&gt;Version control is without a doubt critical if you work on a team, but even if you’re working on your own, using version control is a great way to stay organized and keep your code history in case something breaks (as it often does). &lt;/p&gt;

&lt;p&gt;By far the most popular Version Control System (VCS), and my recommendation, is &lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;Git&lt;/a&gt;. Git is a distributed version control system, which you probably know from the popular online code repository management system &lt;a href="//github.com"&gt;Github&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Git boasts a number of features, such as a powerful CLI, “safe” history keeping, and easy-to-use functionality. &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%2Fi.imgur.com%2FUBYw1Ye.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%2Fi.imgur.com%2FUBYw1Ye.png" alt="HTML5 Boilerplate"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Frontend Boilerplate
&lt;/h1&gt;

&lt;p&gt;While each site you create as a front-end developer is unique, you don’t have to do all your coding from scratch. Boilerplates are code templates you can use to kick off your development process. These sets of HTML, CSS, and JavaScript files help you spend less time doing the routine work of setting up your site files while feeling confident that your site follows modern best practices.&lt;/p&gt;

&lt;p&gt;I use &lt;a href="https://html5boilerplate.com/" rel="noopener noreferrer"&gt;HTML5 Boilerplate&lt;/a&gt;, a powerful boilerplate that comes with analytics, icons, modernizr, normalize.css, and a ton of other goodies that make it really easy to create a new website.&lt;/p&gt;

&lt;p&gt;HTML5 Boilerplate was created by hundreds of developers from around the world, and is always kept up to date with the latest best practices. &lt;/p&gt;

&lt;h1&gt;
  
  
  4. Frontend Assets
&lt;/h1&gt;

&lt;p&gt;Now that you have your awesome boilerplate site setup, you need some assets to make that site look stunning. By selecting nice icons, fonts, and other design assets, you can make a boring site look incredible.&lt;/p&gt;

&lt;p&gt;While there are literally thousands of front-end assets available, there’s a few I particularly recommend. When looking at frontend assets, you want a high degree of customizability and ease of use.&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%2Fi.imgur.com%2Fh8p0aze.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%2Fi.imgur.com%2Fh8p0aze.png" alt="Google Fonts"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Any good design starts with a good font, and &lt;a href="https://fonts.google.com/" rel="noopener noreferrer"&gt;Google Font &lt;/a&gt;has you covered. With hundreds of free fonts available, you’ll always be covered regardless of what style your website is. &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%2Fi.imgur.com%2Fd0LyvB4.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%2Fi.imgur.com%2Fd0LyvB4.png" alt="Font Awesome"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you need some killer icons. Look no further than one of the biggest icon libraries around, &lt;a href="https://fontawesome.com/" rel="noopener noreferrer"&gt;Font Awesome&lt;/a&gt;. They use SVG supported icons, meaning they look great at any resolution, and offer a high degree of customizability for all their fonts. &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%2Fi.imgur.com%2Fwy6W2Sx.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%2Fi.imgur.com%2Fwy6W2Sx.png" alt="Undraw"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re looking for some beautiful illustrations for your website, &lt;a href="https://undraw.co" rel="noopener noreferrer"&gt;UnDraw&lt;/a&gt; has you covered, with hundreds of customizable and free website SVG illustrations. &lt;/p&gt;

&lt;p&gt;And finally, you probably want some awesome photos. For that, I always turn to &lt;a href="https://unsplash.com" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;, which has tons of royalty free photos that you can use. &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%2Fi.imgur.com%2FF6ODQpU.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%2Fi.imgur.com%2FF6ODQpU.png" alt="Chrome Dev Tools"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Developer Tools
&lt;/h1&gt;

&lt;p&gt;As you build your site, you’ll want to make edits “live” in the browser to either the HTML or CSS, as well as see what code is affecting which parts of the site. &lt;/p&gt;

&lt;p&gt;Dev tools are a function built into modern web browsers that let you see the code behind each section of a site right in the browser with just a few clicks. (Hint: dev tools also let you peek at the code behind any website so they’re also a great way to learn a thing or two from other developers.)&lt;/p&gt;

&lt;p&gt;Chrome is the current industry leader in web browsers, so I recommend their developer tools for their simplicity and ease-of-use. Plus, they have &lt;a href="https://developers.google.com/web/tools/lighthouse" rel="noopener noreferrer"&gt;Lighthouse&lt;/a&gt; built in, making it easier to analyze your site performence. &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%2Fi.imgur.com%2FXsOETzy.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%2Fi.imgur.com%2FXsOETzy.png" alt="Vercel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  6. Deployment Options
&lt;/h1&gt;

&lt;p&gt;Now that you want to deploy your site, you’ll need a provider to host it to the web. Whether you’re building a static site or a complex web application in React or Angular, I recommend using &lt;a href="https://vercel.com" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt; to make it really easy to host your site. They integrate easily into the Github workflow, and support every popular framework.&lt;/p&gt;

&lt;p&gt;Even better, you can host your website completely free through their platform! Another great choice is &lt;a href="https://www.netlify.com" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt;, who I also use for some projects.&lt;/p&gt;

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

&lt;p&gt;Hopefully with all these tools, your developer experience will become way better and easier than before. Todays technology and services makes it easier than ever to build awesome websites. I’m looking forward to seeing the amazing things you’ll be creating!&lt;/p&gt;

&lt;h1&gt;
  
  
  Keep in Touch
&lt;/h1&gt;

&lt;p&gt;There's a lot of content out there, I appreciate you reading mine. I'm a young entrepreneur and I write about software development and my experience running companies. You can signup for my newsletter &lt;a href="https://newsletter.cometcode.io" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to reach out and connect with me (I love meeting new people!) on &lt;a href="https://www.linkedin.com/in/caelinsutch" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt; or &lt;a href="https://twitter.com/caelin_sutch" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>tools</category>
    </item>
    <item>
      <title>Why Deno is Awesome</title>
      <dc:creator>caelinsutch</dc:creator>
      <pubDate>Wed, 29 Jul 2020 19:28:15 +0000</pubDate>
      <link>https://dev.to/caelinsutch/why-deno-is-awesome-3e8h</link>
      <guid>https://dev.to/caelinsutch/why-deno-is-awesome-3e8h</guid>
      <description>&lt;p&gt;You’ve probably heard of Deno, the supposed legendary new Javascript runtime that allegedly solves many of the inherent problems with node. Created by Ryan Dahl, the maker of NodeJS, Deno includes various features that make developers lives simpler.&lt;/p&gt;

&lt;p&gt;Like most JS developers, the first thing that I thought when hearing about another JS framework was fear and a preparation for a painful process of learning a new technology, but Deno has been surprisingly awesome for developing modern and fast JavaScript code.&lt;/p&gt;

&lt;p&gt;Lets take a look at why Deno is so attractive to developers in 2020.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reliance on Modern JS Import Syntax
&lt;/h2&gt;

&lt;p&gt;Back when node was created in 2009, the module import syntax relied on the &lt;code&gt;require&lt;/code&gt; method. Modern Javascript uses the the &lt;code&gt;import&lt;/code&gt; syntax. For example, lets take a look at this code snippet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Traditional JS Method&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;module&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;module&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// ES6 Module Method&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;module&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;module&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;If you work with modern frameworks like React or Angular, you’re probably using the ES6 module syntax. Deno uses the ES6 module syntax by default. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why ES6 Module Import Syntax is Better&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;With &lt;code&gt;import&lt;/code&gt;, you can selectively load in modules from a package, saving memory&lt;/li&gt;
&lt;li&gt;With &lt;code&gt;require&lt;/code&gt;, loading is synchronous (meaning it happens in the process foreground), with &lt;code&gt;import&lt;/code&gt; loading is asynchronous, which drastically improves performance when importing modules.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Decentralized Packages
&lt;/h2&gt;

&lt;p&gt;With NodeJS, you’re probably used to using NPM to keep track of and load modules using a &lt;code&gt;package.json&lt;/code&gt;. Whenever you want to use an external package, you have to first install the package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i package
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Then import it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;moment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;moment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Whenever someone wants to run your package locally, they would have to install all the packages separately. If you’re running multiple projects on your machine that rely on the same packages, there’s no easy way to share packages between projects, so duplicate packages will be installed on your machine, wasting space.&lt;/p&gt;

&lt;p&gt;In Deno, packages are imported from a URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;moment&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://deno.land/x/moment/moment.ts.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Deno automatically caches packages on your machine after installation, so &lt;strong&gt;packages are only installed once&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Native TypeScript
&lt;/h2&gt;

&lt;p&gt;If you don’t know what TypeScript is, you probably should do some reading on it &lt;a href="https://cometcode.io/posts/typescript/"&gt;here&lt;/a&gt;. Normally, in Node getting TypeScript to work is a multistep process. You’d have to install typescript, update the &lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;tsconfig.json&lt;/code&gt;, and make sure your modules have @types supported.&lt;/p&gt;

&lt;p&gt;With Deno, &lt;strong&gt;TypeScript support is natively baked in!&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Top Level Await
&lt;/h2&gt;

&lt;p&gt;In Node, the &lt;code&gt;await&lt;/code&gt; keyword can only be used in async functions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://google.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;With Deno, you can use await anywhere, including top level code, so you &lt;strong&gt;don’t have to declare an async function before using await!&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// No Async Needed!&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://google.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This is a drastic improvement that makes code simpler and easier to write!&lt;/p&gt;

&lt;h2&gt;
  
  
  Access to the Browser API
&lt;/h2&gt;

&lt;p&gt;Using the Browser API, which includes access to methods like fetch, normally isn’t accessible by default, you have to install an NPM package. &lt;/p&gt;

&lt;p&gt;Deno automatically has access  to the Browser API, so you can call fetch without importing any other packages. &lt;/p&gt;

&lt;p&gt;This makes code significantly simpler, and eliminates having to import additional modules. &lt;/p&gt;

&lt;h1&gt;
  
  
  Deno’s Future
&lt;/h1&gt;

&lt;p&gt;Deno has many other advantages besides these, far more than can be covered in this article. &lt;/p&gt;

&lt;p&gt;Combined, all these features make it easier to write clean, modern, and fast JavaScript code. As a React and Angular developer, the modern features and native TypeScript support of Deno are naturally appealing.&lt;/p&gt;

&lt;p&gt;Will Deno ever replace NodeJS? Probably not anytime soon. NodeJS is quite entrenched in the market, but more and more JavaScript developers are switching to Deno for their next project. &lt;/p&gt;

&lt;h1&gt;
  
  
  Keep in Touch
&lt;/h1&gt;

&lt;p&gt;There's a lot of content out there, I appreciate you reading mine. I'm a young entrepreneur and I write about software development and my experience running companies. You can signup for my newsletter &lt;a href="https://newsletter.cometcode.io"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to reach out and connect with me on &lt;a href="https://www.linkedin.com/in/caelinsutch"&gt;Linkedin&lt;/a&gt; or &lt;a href="https://twitter.com/caelin_sutch"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>deno</category>
      <category>node</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Introduction to Low Code</title>
      <dc:creator>caelinsutch</dc:creator>
      <pubDate>Tue, 28 Jul 2020 01:29:35 +0000</pubDate>
      <link>https://dev.to/caelinsutch/introduction-to-low-code-1843</link>
      <guid>https://dev.to/caelinsutch/introduction-to-low-code-1843</guid>
      <description>&lt;p&gt;Low code is an industry practice for software development that's taking the industry by storm.&lt;/p&gt;

&lt;p&gt;The market for low-code platforms was 4.3 billion in 2017. It is &lt;a href="https://www.csoonline.com/article/3404216/4-security-concerns-for-low-code-and-no-code-development.html"&gt;predicted to grow&lt;/a&gt; to more than$27 billion by 2022.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Low Code?
&lt;/h2&gt;

&lt;p&gt;Simply put, &lt;strong&gt;Low Code is a software development methodology that focuses on UI first, relying on prebuilt frameworks and tools to reduce the amount of code written.&lt;/strong&gt; Companies like &lt;a href="https://www.caspio.com/"&gt;Caspio&lt;/a&gt; are building tools that make it incredibly easy to turn data into a working application.&lt;/p&gt;

&lt;p&gt;Low code has been in practice since 2011, and the market is maturing fast. Low code solves a few key problems:&lt;/p&gt;

&lt;h3&gt;
  
  
  Time to Product
&lt;/h3&gt;

&lt;p&gt;Low code can drastically reduce the time it takes to go from an idea to a working concept. This ties into the Agile development process, and makes it easier to iterate through ideas. This works great for non technical founders who want to illustrate to investors or Alpha users the value of a product.&lt;/p&gt;

&lt;h3&gt;
  
  
  Easy to Pivot
&lt;/h3&gt;

&lt;p&gt;The ability to make drastic shifts as you are proving out your business model is essential. Startups and new products experience massive swings during the ideation phase. For larger companies, this can also make it easier to A&amp;amp;B test larger applications, and see what really sticks for customers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Decreasing Technical Debt
&lt;/h3&gt;

&lt;p&gt;Larger software applications can rely on the Low Code technique to outsource time intensive features that would be hard to build and maintain for smaller companies. For example, real time server communications and other generic software tasks can be accomplished using a pre built solution, saving time and money.&lt;/p&gt;

&lt;h3&gt;
  
  
  Democratize Programming
&lt;/h3&gt;

&lt;p&gt;Traditionally difficult and time consuming tasks that require a large team of developers can be done easier with Low Code. &lt;/p&gt;

&lt;h2&gt;
  
  
  Current Issues
&lt;/h2&gt;

&lt;p&gt;As with all things, there are quite a few problems that the Low Code industry needs to solve. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Artificial Intelligence/Machine Learning:&lt;/strong&gt; Low-code leverages AI currently by &lt;a href="https://www.zdnet.com/article/exclusive-industry-first-ai-low-code-platform-helps-you-build-apps-without-a-developer/"&gt;assisting users with suggestions&lt;/a&gt;, &lt;a href="https://www.appian.com/platform/artificial-intelligence/"&gt;Google AI capabilities&lt;/a&gt;, and &lt;a href="https://techcrunch.com/2019/11/04/microsoft-launches-power-virtual-agents-its-no-code-bot-builder/"&gt;chatbots&lt;/a&gt;. Any modern technology stack should be able to implement AI and ML. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Increased Functionality&lt;/strong&gt;: Currently, Low Code platforms have a limit to how complex applications can be made. In the future, making more functionality easier to use will further increase the value of "Low Code" companies.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single Platform Lock In:&lt;/strong&gt; Once you've developed on a low code platform, it can be time consuming and difficult to transfer to a different company. Making it easier to migrate data between platforms will increase adoption for companies cautious of entrusting all their data with a single provider. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; As with most new tech, security for Low Code platforms can be difficult to implement, leaving gaping security flaws for applications. Inexperienced users can easily create an application that leaks user information. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Community Support:&lt;/strong&gt; Having a larger support community of employees and other customers will make new developers more open to developing on these platforms. &lt;/p&gt;

&lt;h2&gt;
  
  
  Looking to the Future
&lt;/h2&gt;

&lt;p&gt;By 2024, low-code application development &lt;a href="https://www.gartner.com/en/documents/3956079/magic-quadrant-for-enterprise-low-code-application-platf"&gt;will be responsible&lt;/a&gt; for more than 65% of application development activity. As platforms simplify, more and more people will be empowered to solve problems around them with low-code solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep in Touch
&lt;/h2&gt;

&lt;p&gt;There's a lot of content out there, I appreciate you reading mine. I'm a young entrepreneur and I write about software development and my experience running companies. You can signup for my newsletter &lt;a href="https://newsletter.cometcode.io/"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to reach out and connect with me on &lt;a href="https://www.linkedin.com/in/caelinsutch"&gt;Linkedin&lt;/a&gt; or &lt;a href="https://twitter.com/caelin_sutch"&gt;Twitter&lt;/a&gt;. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>How AI and ML will affect Web Development</title>
      <dc:creator>caelinsutch</dc:creator>
      <pubDate>Mon, 13 Jul 2020 19:35:16 +0000</pubDate>
      <link>https://dev.to/caelinsutch/how-ai-and-ml-will-affect-web-development-10fl</link>
      <guid>https://dev.to/caelinsutch/how-ai-and-ml-will-affect-web-development-10fl</guid>
      <description>&lt;p&gt;Recent developments in the fields of Artificial Intelligence (AI) and Machine Learning (ML) have transformed industries, from robotics to autonomous cars. It goes without saying that the continued development of these technologies will drastically transform all industries.&lt;/p&gt;

&lt;p&gt;For web developers, the impact of AI and ML may initially seem murky. However, the prevalence of web development firms across the globe and the increasing complexity of web applications points towards the emergence of AI and ML to create smarter and more customized applications for users.&lt;/p&gt;

&lt;p&gt;By using AI, developers have the opportunity to drastically transform how applications react to the individual needs of users, from chatbots, marketing, and creating customized experiences for individual users.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is AI?
&lt;/h2&gt;

&lt;p&gt;At this point, you've probably heard the term AI so many times that it has turned meaningless, relegated to the category of buzz words that often have no real world application.&lt;/p&gt;

&lt;p&gt;However, this is far from the case. AI is already used in countless applications, like Smartphones, voice search, Roombas, and many more commonly seen products.&lt;/p&gt;

&lt;p&gt;In this article, we'll be talking mainly about Machine Learning (ML), which is a subcategory of AI that involves training an algorithm to solve a specific problem, much like you train a dog to sit.&lt;/p&gt;

&lt;p&gt;If we look at voice search for example, it would take years to develop an application that will recognize and parse words from audio using a traditional algorithmic approach (by parsing the voice file for various tones and using a search/match algorithm) but is relatively easy by using AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI in Web Development
&lt;/h2&gt;

&lt;p&gt;The core concepts of AI, such as neural networks, rely on complex mathematics that is out of the scope of this article. However, industry leaders, such as Google and Facebook, have developed and open sourced libraries and API's that abstract many of the complex work behind Ai and ML algorithms to make it easier to integrate these powerful tools into any application.&lt;/p&gt;

&lt;p&gt;Lets look at some examples of how AI and ML is currently integrated with the web:&lt;/p&gt;

&lt;h3&gt;
  
  
  Customization of User Experiences
&lt;/h3&gt;

&lt;p&gt;Facebook, one of the most popular social networking sites in the world, uses AI to create customized user experiences for each individual users. The default feed is a machine created set of curated content that was designed and optimized to fit your needs based off of your previous in-app behavior.&lt;/p&gt;

&lt;p&gt;By using AI, Facebook can create and customize an interface specifically to fit your needs as a user&lt;/p&gt;

&lt;h3&gt;
  
  
  Digital Marketing Optimization
&lt;/h3&gt;

&lt;p&gt;Digital marketing, specifically in the field of analyzing customer behavior, uses AI to process large amounts of data to make informed decisions based on customer needs. This helps companies make smarter decisions on building features, fixing bugs, and optimizing applications for user engagement and happiness.&lt;/p&gt;

&lt;h1&gt;
  
  
  Resources to Explore
&lt;/h1&gt;

&lt;p&gt;If you're interested in exploring how AI can be applied to your application, I recommend reading about the libraries below that abstract many of the complex algorithms behind AI.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.tensorflow.org/js"&gt;TensorFlow.js&lt;/a&gt; - One of the most popular ML and AI libraries&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://ml5js.org/"&gt;ml5.js&lt;/a&gt; - High level interface for TensorFlow&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://cs.stanford.edu/people/karpathy/convnetjs/"&gt;ConvNetjs&lt;/a&gt; - Deep learning models in browser&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;AI can be a powerful tool for improving an applications value and increasing customer satisfaction. Interested in hearing more? Signup for my newsletter that covers AI and ML news.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>web</category>
    </item>
    <item>
      <title>Story Driven Development</title>
      <dc:creator>caelinsutch</dc:creator>
      <pubDate>Wed, 08 Jul 2020 04:25:01 +0000</pubDate>
      <link>https://dev.to/caelinsutch/story-driven-development-2a0i</link>
      <guid>https://dev.to/caelinsutch/story-driven-development-2a0i</guid>
      <description>&lt;p&gt;At Bytes Robotics we use the Story Driven development process to drive feature development and requirement gathering. Stories read different than traditional business documents. Rather than taking a removed third party perspective, you’re transported into the world of the user, feeling what they feel, understanding what they believe, and more importantly, realize and recognize future flaws based on what they know.&lt;/p&gt;

&lt;p&gt;These of course can’t be drawn out novels documenting the tales of the software, but it’s important to cast formulaic and dry business requirements into a semblance of a story. Stories are written in the present tense, imagine your software once it’s complete, what will the user be seeing and doing?&lt;/p&gt;

&lt;p&gt;Lets take a look at an example story for an ecommerce website:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;As a&lt;/strong&gt; user&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I can&lt;/strong&gt; click a button&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So that&lt;/strong&gt; I can complete a purchase&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This isn’t quite the story you’re looking for. It’s dry, requirements-esque, and still raises some fundamental questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the user want to make a purchase?&lt;/li&gt;
&lt;li&gt;Does a user want to click a button?&lt;/li&gt;
&lt;li&gt;How can the user most effectively conduct a transaction&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;As a user I can purchase an item.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is too general. How is the user purchasing an item? With one click? Is there a summary screen?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As a user I can review the list of items I want to purchase, then confirm those choices before purchasing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The above story is a bit better, it presents the idea that the user wants to confirm his/her choices, and says what the user wants without explicitly going to how and what. However, this is still too broad. What does the user want to review in terms of information? What kind of options do we provide? All these questions should be answered.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As a user I am presented with photos of the items, prices, quantities, and options before agreeing to enter the purchasing process. I can see my total spending, and be able to remove items, modify quantities, and see how that affects my total cost.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here we start getting into the process visually and provide the reason why we want all these features, to see the total cost.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As a user I can to see the total amount I will be spending with a breakdown of what composes that cost. I want to be able to modify items in my list to achieve the optimum cost for me.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hmm, we’re still missing something, who the “user” is. Adding personas to our story adds a way to differentiate between a variety of users. A 60 year old grandmother from Alabama will want a vastly different experience than a 20 year old tech entrepreneur in silicon valley. There is no single, magical user, but instead real people with their own unique experiences. By modeling real people, we can understand that features in software can be and are interpreted differently by different users.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Nicole, a young women in silicon valley, can quickly purchase the item she is looking at now.&lt;/p&gt;

&lt;p&gt;John, a grandpa in the Midwest, can carefully analyze the total cost of his purchase and adjust it to fit his budget by modifying quantities and types of items/&lt;/p&gt;

&lt;p&gt;William wants to review items like John, but add additional confirmation of cost after selecting a payment method to easily sync up the transaction with his bank account.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Story telling is important for developing applications that are designed around users. At Bytes Robotics, we do this in a round table discussion, where developers, product owners, and executives gather around to hear the different aspects of the story that make our product unique and effective.&lt;/p&gt;

&lt;p&gt;The other part is feedback. During our discussion, anyone can comment or suggest changes or modifications to a story. We can also take the stories that we’ve developed and back them up with real world data from customers.&lt;/p&gt;

&lt;p&gt;By focusing on story driven narratives, we can bring our product into peoples real lives, and have the opportunity to build rich, engaging, and useful applications that add long term value to the customer.&lt;/p&gt;

</description>
      <category>theory</category>
      <category>develop</category>
      <category>productivity</category>
      <category>software</category>
    </item>
  </channel>
</rss>
