<?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: Bastion Fennell</title>
    <description>The latest articles on DEV Community by Bastion Fennell (@bastionthedev).</description>
    <link>https://dev.to/bastionthedev</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%2F140851%2F5aa5cde4-af53-4835-a712-c1db80a16cc6.jpg</url>
      <title>DEV Community: Bastion Fennell</title>
      <link>https://dev.to/bastionthedev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bastionthedev"/>
    <language>en</language>
    <item>
      <title>Traction: A Management Book Review</title>
      <dc:creator>Bastion Fennell</dc:creator>
      <pubDate>Mon, 11 May 2020 16:39:33 +0000</pubDate>
      <link>https://dev.to/bastionthedev/traction-a-management-book-review-25md</link>
      <guid>https://dev.to/bastionthedev/traction-a-management-book-review-25md</guid>
      <description>&lt;p&gt;For those of you who don't know, in my free time I really enjoy reading two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Management books&lt;/li&gt;
&lt;li&gt;Roleplaying books&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Surprisingly, they're actually very similar types of content! We explored this a bit in my last post &lt;a href="https://dev.to/bastionthedev/dungeon-master-to-dev-manager-what-dnd-taught-me-about-leadership-4lk1"&gt;Dungeon Master to Dev Manager&lt;/a&gt;. Both types of book offer the reader a system of thinking, a way to view the world. Good management books give you a new lens with which to view and address most problems rather than just a tool to address a specific problem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.eosworldwide.com/traction-book"&gt;&lt;em&gt;Traction&lt;/em&gt;, by Gino Wickman&lt;/a&gt; introduces us to the Entrepreneurial Operating System (EOS), a complete top-to-bottom paradigm for running your business. The book pulls a lot from other well respected books and pairs those with Wickman's many years of experience helping businesses succeed to give you a complete system to run your entire business.&lt;/p&gt;

&lt;p&gt;Overall, I would give &lt;em&gt;Traction&lt;/em&gt; 4.5/5 stars! Here at &lt;a href="https://www.volusion.com/"&gt;Volusion&lt;/a&gt; we've started using it as the main system across our business, and the effect has been &lt;strong&gt;staggering&lt;/strong&gt;. It's brought alignment in both our cultural values and our business goals from the leadership team to every employee. If you want a one stop shop to define everything you need for your business, look no further!&lt;/p&gt;

&lt;p&gt;Let's talk about some of the highlights!&lt;/p&gt;

&lt;h2&gt;
  
  
  What is EOS
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QYNmFDdC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n5tvmbnuyun26kby1k2p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QYNmFDdC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n5tvmbnuyun26kby1k2p.png" alt="EOS Model"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;EOS is made up of 6 main components:&lt;br&gt;
Vision&lt;br&gt;
People&lt;br&gt;
Data&lt;br&gt;
Issues&lt;br&gt;
Process&lt;br&gt;
Traction&lt;/p&gt;

&lt;p&gt;In the book, each of these components gets an entire chapter dedicated to the systems involved and the nuances of implementing it. Similar to roleplaying books, &lt;em&gt;Traction&lt;/em&gt; is like the core book. You can learn everything you need to effectively use it with this single book. However, for anyone who wants to dig in more, EOS has &lt;a href="https://www.eosworldwide.com/traction-library"&gt;an entire library of books&lt;/a&gt; to help you learn more and implement EOS in the best way for your company.&lt;/p&gt;

&lt;p&gt;Wickman calls this system an Operating System for good reason. It's very specific and breaks every part of your process down in a way that can be understood within this system. As a developer, having such a clearly defined API for interacting with the business is incredible!&lt;/p&gt;

&lt;p&gt;Let's talk a bit more about those components!&lt;/p&gt;

&lt;h3&gt;
  
  
  Vision
&lt;/h3&gt;

&lt;p&gt;Vision is the first (and possibly most important) component to get clarity on. EOS uses what's called the &lt;a href="https://www.eosworldwide.com/vto"&gt;Vision/Traction Organizer&lt;/a&gt; to consolidate all of the core ideas of your company in a way that anyone can understand at a glance. It includes your core values, issues, niche, mission statement, and even short and long term goals!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FFcnE9Zv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/lfo7cf4kpz1w0r3khnrx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FFcnE9Zv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/lfo7cf4kpz1w0r3khnrx.jpg" alt="Vision/Traction Organizer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just being forced to write all of these things down on paper is incredibly powerful. It's easy for companies and teams to fall into the trap of everyone having a different vision for the company, different goals. If you can get the whole organization to align towards a single goal, you can tackle big challenges and do amazing work.&lt;/p&gt;

&lt;h3&gt;
  
  
  People
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eW5AqpIu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rtsxmf0crrhzv16gtwcl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eW5AqpIu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rtsxmf0crrhzv16gtwcl.jpg" alt="Right People, Right Seats"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;People is the next, and often toughest, component. This section is divided into the idea of getting the "right people" into the "right seats." If you can do that, everything else starts to fall into place much easier.&lt;/p&gt;

&lt;p&gt;Figuring out if you have the "right people" means figuring out if the people you're working with match the core values you defined in the "vision" component. They recommend using their &lt;a href="https://www.eosworldwide.com/people"&gt;People Analyzer&lt;/a&gt;, which is basically just a spreadsheet of people and how those people match the company's core values.&lt;/p&gt;

&lt;p&gt;After making sure you have the "right people," next you have to get them into the "right seats." When someone is in the right seat, it means they "Get it, want it, and have the capacity to do it." Is everyone in your organization working to their full potential, and are they a good match for the work they're doing?&lt;/p&gt;

&lt;p&gt;Again, just writing these things down on paper adds a lot of clarity. It helps you understand how much you may have compromised on your core values, who's overloaded, who's underperforming, and more. Unfortunately, Wickman direly warns that no company has successfully implemented EOS without having to make personnel changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dODfUIsf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wv75wzhoqcwsf5nla1yv.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dODfUIsf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wv75wzhoqcwsf5nla1yv.jpeg" alt="Scorecard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The data portion is very straightforward. Once you have the right people in the right seats, the next step is defining and measuring success. Everyone should have an objective measure of how well they're doing. Easy, right?&lt;/p&gt;

&lt;p&gt;Unfortunately, it's the actual definition of these measurables that's the hard part. Crafting them in a way that alerts you about problems before they happen, not after, is even harder. Once these measurables are defined though, you can check them weekly and know at a glance how well you, your business, or your team is doing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issues
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dQoduPP---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kw8xesna3eabq8ph2q9s.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dQoduPP---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kw8xesna3eabq8ph2q9s.jpg" alt="Qwack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Issues are a part of &lt;em&gt;every&lt;/em&gt; business. If there weren't issues, there wouldn't be so many books about how to solve them! &lt;em&gt;Traction&lt;/em&gt; requires the leadership team to be transparent about their issues and to be honest about whether those issues are going to be solved now or later.&lt;/p&gt;

&lt;p&gt;The big tool &lt;em&gt;Traction&lt;/em&gt; recommends here is the Identify, Discuss, Solve (IDS) system for meetings. The most important part of that trio is Solve. After discussing an issue, you should have one of two things: an actual solution, or a person selected to find that solution. If implemented well, you can finally say goodbye to discussing the same problems over and over again!&lt;/p&gt;

&lt;h3&gt;
  
  
  Process
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Nothing can be fine tuned until it's consistent&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Process is an important but oft forgotten component of EOS. To successfully implement this step, first you have to decide on your Core Processes. Then you must document them and distribute them and make sure everyone follows the process. No exceptions.&lt;/p&gt;

&lt;p&gt;Once it's documented and being followed, it's easier to see where the issues and inefficiencies in your business are. It's also possible to see what impact the changes you make actually have instead of trying to discern them from the day-to-day chaos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traction
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5-Z1YXXy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/f9b3h5jbw0onxh5kipau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5-Z1YXXy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/f9b3h5jbw0onxh5kipau.png" alt="Traction"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's the name of the book, so obviously this is a big one. The "secret sauce" of the whole thing. Traction is about accountability and discipline. This goes hand in hand with the scorecards you make in the Data component of EOS.&lt;/p&gt;

&lt;p&gt;With this component, you define measurable quarterly goals (called Rocks), then you set up weekly meetings to see how everyone is achieving against their Rocks. Everyone has at least one Rock, though leadership typically has a few more that they're responsible for.&lt;/p&gt;

&lt;p&gt;One of the most important parts of Rocks is that they can't be changed mid-quarter. Obviously, circumstances may force you to change them, but ideally these Rocks give you clarity for the quarter and define what success (or failure) looks like for you and the organization. It gives people not only ownership but also accountability for what they're supposed to do this quarter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bringing it All Together
&lt;/h2&gt;

&lt;p&gt;In the end, none of the stuff that &lt;em&gt;Traction&lt;/em&gt; brings to the table is necessarily ground-breaking or revolutionary. It's not meant to be. What it's meant to be is a set of simple tools that you can use across the organization to create clarity, drive accountability, and create the traction you need to get things done!&lt;/p&gt;

&lt;p&gt;These simple tools can be used by anyone and understood by anyone, which is what makes them so powerful. Along with the actual tools, it also gives you a shared language across the organization so people know what you're actually talking about. Rocks, IDS, Core Processes, etc. Having that shared language makes everything flow more smoothly, clears up a lot of confusion, and allows you to focus on solving real problems instead of just misunderstandings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Like I said, here at &lt;a href="https://www.volusion.com/"&gt;Volusion&lt;/a&gt; we're going all in on &lt;em&gt;Traction&lt;/em&gt; and EOS! It's the system we use to run everything from top to bottom, and it's been wildly successful in bringing both clarity and direction to the organization.&lt;/p&gt;

&lt;p&gt;Even if you don't buy in 100% to EOS, you can still find something new or a different way to approach your business problems in this book.&lt;/p&gt;

&lt;p&gt;Hopefully I'll write a follow up post later this year to talk more about how we've implemented it specifically at Volusion!&lt;/p&gt;

&lt;h2&gt;
  
  
  Plugs!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.volusion.com/careers"&gt;Volusion is hiring!&lt;/a&gt; Times are tough right now and a lot of people are out of work. Volusion is currently hiring devs, product, and design in Austin, TX!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/bastionthedev"&gt;I have a Twitter!&lt;/a&gt; I'd love to get better connected to the Dev.to community! I also tweet far more frequently than I blog...&lt;/p&gt;

&lt;p&gt;And of course, if any of this post intrigues you, you can learn more at &lt;a href="https://www.eosworldwide.com/"&gt;EOS Worldwide&lt;/a&gt;. There is a whole company dedicated to helping other companies achieve success through EOS, and there's a whole library of books around all different aspects. You're sure to find something interesting!&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;h3&gt;
  
  
  Books Referenced in &lt;em&gt;Traction&lt;/em&gt; for Further Reading
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Mentioned multiple times:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Unique Ability: Creating the Life You Want&lt;/em&gt;, by Catherine Nomura, Julia Waller, and Shannon Waller&lt;br&gt;
&lt;em&gt;The E-Myth&lt;/em&gt; and &lt;em&gt;The E-Myth Revisited&lt;/em&gt;, by Michael E. Gerber&lt;br&gt;
&lt;em&gt;The Five Dysfunctions of a Team: A Leadership Fable&lt;/em&gt; by Patrick Lencioni&lt;br&gt;
&lt;em&gt;Mastering the Rockefeller Habits: What You Must Do to Increase the Value of Your Growing Firm&lt;/em&gt;, by Verne Harnish&lt;br&gt;
&lt;em&gt;Think and Grow Rich&lt;/em&gt;, by Napoleon Hill&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mentioned once&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Focus: The Future of Your Company Depends on It&lt;/em&gt;, by Al Ries&lt;br&gt;
&lt;em&gt;You 2: A High Velocity Formula for Multiplying Your Personal Effectiveness in Quantum Leaps&lt;/em&gt;, by Price Pritchett&lt;br&gt;
&lt;em&gt;The Four Obsessions of an Extraordinary Executive: A Leadership Fable&lt;/em&gt;, by Patrick Lencioni&lt;br&gt;
&lt;em&gt;Risking&lt;/em&gt;, by David Viscott&lt;br&gt;
&lt;em&gt;Nuts! Southwest Airlines' Crazy Recipe for Business and Personal Success&lt;/em&gt;, by Jackie Freiberg and Kevin Freiberg&lt;br&gt;
&lt;em&gt;Good to Great: Why Some Companies Make the Leap...and Others Don't&lt;/em&gt;, by James C. Collins&lt;br&gt;
&lt;em&gt;One Minute Manager Meets the Monkey&lt;/em&gt;, by Hal Burrows, Ken Blanchard, and William Oncken&lt;br&gt;
&lt;em&gt;Leadership&lt;/em&gt;, by Rudolph Giulani&lt;br&gt;
&lt;em&gt;How to Win Friends and Influence People&lt;/em&gt;, by Dale Carnegie&lt;br&gt;
&lt;em&gt;Managing by Values&lt;/em&gt;, by Ken Blanchard&lt;br&gt;
&lt;em&gt;First Things First&lt;/em&gt;, by Stephen Covey&lt;br&gt;
&lt;em&gt;Death by Meeting: A Leadership Fable...about Solving the Most Painful Problem in Business&lt;/em&gt;, by Patrick Lenceoni&lt;br&gt;
&lt;em&gt;Confidence: How Winning Streaks and Losing Streaks Begin and End&lt;/em&gt;,&lt;br&gt;
by Rosabeth Moss Kanter&lt;br&gt;
&lt;em&gt;Small Giants: Companies That Choose to Be Great Instead of Big&lt;/em&gt;, by Bo Burlingham&lt;br&gt;
&lt;em&gt;Happier: Learn the Secrets to Daily Joy and Lasting Fulfillment&lt;/em&gt;,&lt;br&gt;
by Tal Ben-Shahar&lt;/p&gt;

</description>
      <category>management</category>
      <category>books</category>
      <category>leadership</category>
    </item>
    <item>
      <title>Dungeon Master to Dev Manager, What DnD Taught Me About Leadership</title>
      <dc:creator>Bastion Fennell</dc:creator>
      <pubDate>Sun, 05 Apr 2020 21:51:30 +0000</pubDate>
      <link>https://dev.to/bastionthedev/dungeon-master-to-dev-manager-what-dnd-taught-me-about-leadership-4lk1</link>
      <guid>https://dev.to/bastionthedev/dungeon-master-to-dev-manager-what-dnd-taught-me-about-leadership-4lk1</guid>
      <description>&lt;p&gt;&lt;em&gt;The room darkens as the sunsets final rays filter through the windows. We gather around the table, various cups and containers that once held caffeinated beverages litter the room now only serve as a reminder of how long we've been at this. The end is near, everyone hold their breath as you...&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;For "Deploy the hotfix to prod" go to page 66&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;For "Sneak attack the lich" go to page 34&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Roleplaying, Storytelling, and Leadership
&lt;/h2&gt;

&lt;p&gt;Roleplaying and software engineering have long run in the same circles. Back in my day, they were both considered "nerd hobbies" that no one popular would be caught dead doing. Nowadays though, both have seen a sort of renaissance. Now, engineers are cool and almost everyone knows about Critical Role!&lt;/p&gt;

&lt;p&gt;I've been roleplaying and storytelling (another term for being a dungeon master) for about as long as I can remember. Building worlds with other people has always been something I've enjoyed. For better or for worse, because of that I tend to view the world through the lens of a lifelong storyteller. Through that lens, I think there are some lessons we can learn when it comes to leadership. So, what are we waiting for? Let's dive right in!&lt;/p&gt;

&lt;h2&gt;
  
  
  Have a Plan, But be Prepared to Improvise
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0ksx2yf1wta15atjfixd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0ksx2yf1wta15atjfixd.png" alt="Don't railroad your team!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is an especially hot concept in modern roleplaying. As more of the roleplay market have day jobs, a lot of "prepless" roleplaying games have started popping up, games where people with day jobs don't have to spend hours putting together characters and campaigns for. The idea for these systems is that the storyteller is just another player. The storyteller is playing to see what happens, just like the players.&lt;/p&gt;

&lt;p&gt;I find it helpful to strike a balance, both when it comes to leadership and storytelling. As a storyteller, I want to come to the table with a general plan, but I also want to encourage my players to build something I could never think of and make the story even better! When that happens, I need to be ready to pivot and work those ideas into the narrative.&lt;/p&gt;

&lt;p&gt;Similarly, as a dev lead, you want to have a general plan for a milestone or epic or whatever. However, you also want to leave room for creativity and be prepared to change your plan. One of your teammates might have an idea you never thought of, or product might entirely reprioritize. In either case, you need to adjust the plan but still keep things rolling smoothly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make Sure Everyone Has a Chance to Contribute
&lt;/h2&gt;

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

&lt;p&gt;In storytelling, there is a concept of a "spotlight." At any given moment, one or two characters have the spotlight. For that moment, it's like that character is the protagonist! It's your job as a storyteller to make that character shine, show off what makes them special, and leave them feeling like they just did something amazing that only they could pull off!&lt;/p&gt;

&lt;p&gt;The tricky part about spotlighting is that you have to distribute it around the table. If one character is always in the spotlight, the other players will quickly get bored. Sometimes it requires a bit of coaxing, and not &lt;em&gt;every&lt;/em&gt; game will highlight &lt;em&gt;every&lt;/em&gt; player, but when everyone feels like they're making an impact it leads to a better story that everyone has fun making.&lt;/p&gt;

&lt;p&gt;Spotlighting has pretty easy corollaries in leadership. Making sure you acknowledge the contributions of everyone on the team (not just one or two high achievers) and that everyone has a chance to build something they're proud of are the two big ones. To really spotlight effectively though, you need to know what drives your teammates, what truly excites them. The more you know about that, the more you can find and tailor tasks to that person and make them feel as successful as possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  You Should Also Be Having Fun!
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A LOT&lt;/strong&gt; of people are dungeon masters because no one else in the group wanted to be, so they felt they had to pick up the banner and run with it. At a certain point, you have to ask yourself&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is this what I want to do?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It can be easy for senior devs to kinda "fall into" management positions rather than seek them out. Similarly to storytelling and being a player, managing and being an individual contributor are completely different skillsets that are rewarding in completely different ways. Not everyone wants to be a manager, and that's okay!&lt;/p&gt;

&lt;p&gt;At some point, you need to make sure you're doing what you actually want to do. It often feels like the only way to progress at a certain point is going into management. Luckily, we're getting better as a community at offering higher level technical tracks that are separate from management tracks. Hopefully this trend continues and we can let people who want to code, code and people who want to manage, manage. That way no one falls into a role they don't want.&lt;/p&gt;

&lt;h2&gt;
  
  
  In The End, It's All About Collaboration
&lt;/h2&gt;

&lt;p&gt;The &lt;em&gt;most&lt;/em&gt; important takeaway from all this is that the dev lead is just another team member. It's not your job to run everything and prepare everything and micromanage everything as a lead. It's your job to bring the best out of people and make them feel like they've achieved something every day. To make your teammates feel delighted at work.&lt;/p&gt;

&lt;p&gt;As long as you approach a problem collaboratively instead of competitively, anything is solvable!&lt;/p&gt;

</description>
      <category>leadership</category>
    </item>
    <item>
      <title>Learning with Clicker Games Part 2: CSS</title>
      <dc:creator>Bastion Fennell</dc:creator>
      <pubDate>Fri, 22 Mar 2019 16:29:28 +0000</pubDate>
      <link>https://dev.to/bastionthedev/learning-with-clicker-games-part-2-css-196i</link>
      <guid>https://dev.to/bastionthedev/learning-with-clicker-games-part-2-css-196i</guid>
      <description>&lt;p&gt;This is the second part of a three part series:&lt;br&gt;
&lt;a href="https://dev.to/bastionthedev/learning-with-clicker-games-part-1-html-1i4b"&gt;Part 1, Layout with HTML&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Part 2, Styling with CSS&lt;/strong&gt;&lt;br&gt;
Part 3, Interaction with JS&lt;/p&gt;

&lt;p&gt;In this part, we'll be learning CSS! In the first part of this series, we built out the bare layout of our clicker game using HTML. Now we're going to take that layout and make it look better!&lt;/p&gt;



&lt;p&gt;When I initially got into web development, CSS was one of the first things to really hook me. Being able to really manipulate what the users are seeing and interacting with... It was like magic! And just like magic, the rules can be complex and arcane. Nevertheless, it gets the job done!&lt;/p&gt;

&lt;p&gt;With any luck, by the end of this post our clicker game will look like this:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/BastionTheDev/embed/MxqXQM?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you're already familiar with CSS, take a stab at styling it yourself! You'll see we did add a little bit more content as well, just to make the game more user friendly. The general HTML is the same shape as what we built in part 1 though.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is CSS?
&lt;/h3&gt;

&lt;p&gt;CSS stands for &lt;strong&gt;Cascading StyleSheets&lt;/strong&gt;. It is essentially a set of rules that tells the browser &lt;em&gt;how&lt;/em&gt; the HTML should be rendered. The idea is that HTML is the content, while CSS is the presentation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Separating out presentation and content is also a way to help make our sites more understandable and accessible for things like screen readers. They can just pick up what they need from the HTML and ignore the CSS!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, what does it look like? Typically a little something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body { // tag
  background-color: black;
  color: white;
}

.upgrade-button { // classname
  width: 200px;
  height: 50px;
}

#header { // id
  height: 50%;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First, you put an identifier followed by &lt;code&gt;{}&lt;/code&gt;, then put the rules to apply to that identifier between the &lt;code&gt;{}&lt;/code&gt;. What are these identifiers? Well, they can be tags like &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;. They can also be what are called &lt;strong&gt;class names&lt;/strong&gt; or &lt;strong&gt;IDs&lt;/strong&gt;. Classes and IDs are attributes that you can define on an HTML element so that you can apply specific styles to it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="container wide" id="main-container"&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These attributes are a space separated list of identifiers. Classes can appear multiple times on the page, so they're good for recurring elements. IDs, however, should only appear once on a page. Use it to make sure that you only have one of an element.&lt;/p&gt;

&lt;p&gt;In CSS, we use a &lt;code&gt;.&lt;/code&gt; to say we're styling a class, and a &lt;code&gt;#&lt;/code&gt; to say we're styling an ID. So, to style the div above we could use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;div {}&lt;/code&gt; to style based on the tag&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.container {}&lt;/code&gt;, or &lt;code&gt;.wide {}&lt;/code&gt; to style based on the classes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;#main-container {}&lt;/code&gt; to style based on the ID&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cascading
&lt;/h3&gt;

&lt;p&gt;You can also combine identifiers to make them more specific. For example, &lt;code&gt;div.container.wide {}&lt;/code&gt; will only target div tags that have both the container and wide class applied to them.&lt;/p&gt;

&lt;p&gt;If multiple styles apply to the same tag, the more specific one will win. This is where the term &lt;strong&gt;cascading&lt;/strong&gt; comes from. If your stylesheet looked like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;div {
  background-color: black;
  width: 100px;
}

div.wide {
  width: 200px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then any div will get that initial div styling. If you add the &lt;code&gt;wide&lt;/code&gt; class to a div it will still get &lt;code&gt;background-color: black&lt;/code&gt; but the &lt;code&gt;width: 200px&lt;/code&gt; will override the width that only applies to div tags.&lt;/p&gt;

&lt;p&gt;Another way to add specificity is by selecting elements within other elements. If you add a space between the selectors, you're telling the browser, "anything within this element that matches this selector should get these styles."&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;div.wide a { }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will target any &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; tag within a &lt;code&gt;&amp;lt;div class="wide"&amp;gt;&lt;/code&gt; and apply the stylings. If you had another styling that just targeted &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; tags, it would override them.&lt;/p&gt;

&lt;p&gt;There are a lot of rules to remember with CSS, but there's just one last one that we care about right now. If two selectors match something with the same specificity, the last one in the stylesheet will be applied.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;div.wide {
  width: 200px;
}

div.override {
  width: 150px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you had a &lt;code&gt;&amp;lt;div class="override wide"&amp;gt;&lt;/code&gt; then the override styles would be applied instead of the wide ones.&lt;/p&gt;

&lt;p&gt;That's enough theoretical stuff for now. If you want to dig into CSS specificity more, check out this &lt;a href="https://css-tricks.com/specifics-on-css-specificity/" rel="noopener noreferrer"&gt;post by Chris Coyier&lt;/a&gt; on exactly this topic!&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Our Classes in Order
&lt;/h2&gt;

&lt;p&gt;Let's get to building!&lt;/p&gt;

&lt;p&gt;If you followed along with our last post, you probably have something that looks a little bit like this:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/BastionTheDev/embed/BbLKyj?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;So how do we make it look a little bit nicer? When styling, the first thing we should do is organize our HTML with classes that are clear and understandable. That way, when you come back to your code, it's easy to understand what was going on.&lt;/p&gt;

&lt;p&gt;Let's take our first section, with the actual clicker button. If you look at the pen (codepen example) at the beginning of the post, we want to make the part with the clicker button more prominent. Luckily, it's already in its own div! We just need to add the class names.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Original
&amp;lt;div&amp;gt;
  Lines of Code: 0
  &amp;lt;div&amp;gt;
    &amp;lt;button&amp;gt; Write Code &amp;lt;/button&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

// With classes
&amp;lt;div class="clicker"&amp;gt;
  Lines of Code: 0
  &amp;lt;div class="clicker__button-area"&amp;gt;
    &amp;lt;button class="clicker__button"&amp;gt; Write Code &amp;lt;/button&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looking at that pen again, you'll see we did make a few tweaks to the layout itself. Let's adjust our HTML to match that new layout while we're here. You'll hardly ever get the layout right on your first try, but one of the awesome things about web development is how &lt;em&gt;fast&lt;/em&gt; the feedback loop is! Change something, check the browser, adjust it, check it, etc. etc.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="clicker"&amp;gt;
  &amp;lt;div class="clicker__button-area"&amp;gt;
    &amp;lt;div&amp;gt; 0 Lines of Code &amp;lt;/div&amp;gt;
    &amp;lt;button class="clicker__button"&amp;gt;&amp;lt;/button&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perfect! Now, the next two sections of "buyables" are pretty much the same, so we're going to use the same classes for both of them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Original
&amp;lt;div&amp;gt;
  Number of Extra Hands: 0
  Price: 10
  &amp;lt;div&amp;gt;
    &amp;lt;button&amp;gt; Buy Hands &amp;lt;/button&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

// With Classes
&amp;lt;div class="buyable"&amp;gt;
  Number of Extra Hands: 0
  Price: 10
  &amp;lt;div class="buyable_button-area"&amp;gt;
    &amp;lt;button class="buyable__button"&amp;gt; Buy Hands &amp;lt;/button&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;You might ask yourself why I'm writing the classes like this? These classes are roughly built on the &lt;a href="http://getbem.com/introduction/" rel="noopener noreferrer"&gt;BEM&lt;/a&gt; or &lt;em&gt;block, element, modifier&lt;/em&gt; spec. It's a good way to keep your classes organized!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If we take another look at the first pen, you'll see we made some changes to this section as well! So, let's update the layout to match. Let's also wrap the whole section in a new div to differentiate it from the clicker section.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="buyables"&amp;gt;
  &amp;lt;div class="buyable"&amp;gt;
    &amp;lt;div class="buyable__amount"&amp;gt; 0 &amp;lt;/div&amp;gt;
    &amp;lt;div class="buyable__text"&amp;gt;
      &amp;lt;div class="buyable__title"&amp;gt;
        &amp;lt;span class="buyable__title-text"&amp;gt; Extra Hands &amp;lt;/span&amp;gt;
        &amp;lt;span class="buyable__title-price"&amp;gt; 10 Lines of Code &amp;lt;/span&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div class="buyable__description"&amp;gt; More hands on the keyboard = more typing &amp;lt;/div&amp;gt;
      &amp;lt;div class="buyable__effect"&amp;gt; Adds 1 line of code per click &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button class="buyable__button"&amp;gt; Buy &amp;lt;/button&amp;gt;
  &amp;lt;/div&amp;gt;
  ...
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We should be able to use these same classes to update the other buyable as well! Go ahead and do just that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Actually Writing CSS
&lt;/h2&gt;

&lt;p&gt;If all goes well, we should have something that looks like this.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/BastionTheDev/embed/QoVxwr?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Still looks kind of ugly, but we're only dealing with the skeleton for now. Let's go ahead and get into the CSS and make it all pretty!&lt;/p&gt;

&lt;p&gt;First, let's add a &lt;code&gt;stylesheet.css&lt;/code&gt; file right next to our &lt;code&gt;index.html&lt;/code&gt; file. This is the file that we'll be writing all of our CSS into. Now, we need to tell the HTML where to get its' styles from. In the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; of the HTML, add&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;link rel="stylesheet" type="text/css" href="stylesheet.css" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This tells the HTML what the stylesheet is and where it is, so it'll actually load our styles onto the page. While we're adding links, let's also use one to bring in the Google Open Sans font&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before we go any further, let's check to make sure that worked. In your CSS, just put:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body {
  background: red;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, if you load up the page, you should immediately regret the decision and be bombarded by bright red. Now that we know they're linked, let's remove that line and add some nicer backgrounds for each section.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.clicker {
  background: #002b35;
}

.buyables {
  background: #fdf6e3;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;The colors we're using come from a palette called &lt;a href="https://ethanschoonover.com/solarized/" rel="noopener noreferrer"&gt;Solarized&lt;/a&gt; that I use development all the time. I figured it would be fitting for a game about writing code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There we go! We got the basic colors done, but it's all weirdly proportioned. Let's fix that. We want each main section to take up half the page, which we can easily do with the &lt;code&gt;height&lt;/code&gt; attribute;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.clicker {
  background: #002b35;
  height: 50%;
}

.buyables {
  background: #fdf6e3;
  height: 50%;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now there's a weird margin around the page still. Turns out, browsers add a default &lt;code&gt;margin&lt;/code&gt;. The &lt;code&gt;margin&lt;/code&gt; property defines the amount of extra space you want around the component. We'll go into a little bit more detail on that later, but for now, let's just override it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body {
  margin: 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;While we're at it, let's update the font-family to the open sans that we imported earlier!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body {
  font-family: "Open Sans";
  margin: 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perfect, now we have our canvas written out! Next step, let's tackle the top section. We want to have our lines of code and button content centered. You have a few options with this, but we'll use the one most of the industry is trending towards, &lt;a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/" rel="noopener noreferrer"&gt;flex-box&lt;/a&gt;. Flex box has a lot of intricacies, but for now think of it as a way to lay out content that behaves predictably.&lt;/p&gt;

&lt;p&gt;We'll want our main clicker area to be a flex box with some added attributes to make it center both horizontally and vertically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.clicker {
  display: flex; // Makes this div a flexbox
  align-items: center; // This centers things vertically
  justify-content: center; // This centers things horizontally

  background: #002b35;
  height: 50%;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That should have centered our content, now let's actually style that content. This introduces you to three new concepts: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;border-radius&lt;/code&gt; the roundness of the corners of a div.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;padding&lt;/code&gt; the space between the div content and its border. For spacing, in order you have padding, border, then margin.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;opacity&lt;/code&gt; how transparent the div is
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.clicker__button-area {
  background: #fdf6e3;
  border-radius: 8px;
  opacity: .8;
  padding: 30px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Last touches here, let's do some text formatting. We can use font-size and text-align to make our button a bit clearer and nicer looking.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.clicker__button-area {
  font-size: 24px;
  text-align: center;

  background: #fdf6e3;
  border-radius: 8px;
  opacity: .8;
  padding: 30px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As a final touch for this second, let's make the button look like a keyboard! I just pulled &lt;a href="https://upload.wikimedia.org/wikipedia/commons/e/e4/Keyboard-icon_Wikipedians.svg" rel="noopener noreferrer"&gt;this image&lt;/a&gt; from the wikipedia commons to use for our button. Let's add a &lt;code&gt;public/&lt;/code&gt; folder next to &lt;code&gt;index.html&lt;/code&gt; and put this at &lt;code&gt;public/keyboard.png&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When styling things like buttons or dropdowns, you have to override some of the browser's default styling. In this case, the default background, border, and outlines. The only new thing here is outline, which is basically a way to show users what element has focus.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.clicker__button {
  background-color: #fdf6e3;
  border: none;
  outline: none;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, let's introduce the idea of a background-image here as well. There are a few different ways to do images, but this will show us how to manipulate backgrounds! The main strange thing here is background-size. We're using &lt;code&gt;background-size: cover&lt;/code&gt;, which will stretch the image to fill the entire container. For a few other options to play with, check out the &lt;a href="https://developer.mozilla.org/en/docs/Web/CSS/background-size" rel="noopener noreferrer"&gt;Mozilla docs&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.clicker__button {
  background-image: url("public/keyboard.png");
  background-size: cover;
  height: 150px;
  width: 250px;

  background-color: #fdf6e3;
  border: none;
  outline: none;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Great, if all went well here, it should look something like this:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/BastionTheDev/embed/ywxEeQ?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;We've actually already pretty much used all of the CSS properties we'll need for the next section, with the exception of &lt;code&gt;font-weight&lt;/code&gt; and some higher level flexbox shenanigans. Go ahead and try to style the rest of the app yourself before continuing down this page!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Rest of the Owl
&lt;/h2&gt;

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

&lt;p&gt;All that's left really is the "buyables" half of the screen. This is where everything buyable lives, hence the name. Right now it's just extra hands and code monkeys, but down the road we might have more items and even things like upgrades here!&lt;/p&gt;

&lt;p&gt;When styling, I like to work my way from the biggest container down to the smallest one. Since we already styled the &lt;code&gt;.buyables&lt;/code&gt; area, that means the next step is the buyable itself.&lt;/p&gt;

&lt;p&gt;Since we're reusing classes here, if we style one card correctly it should style the other ones the way we want as well! Let's start by defining the size of the buyable cards.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.buyable {
  width: 600px;
  height: 75px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Right now we're giving everything fixed heights and widths for the sake of simplicity. This means we're essentially styling to a single page width. What we really want is for users to be able to access our apps from any device, meaning any screen width, and it still look good. This idea is called &lt;a href="https://developers.google.com/web/fundamentals/design-and-ux/responsive/" rel="noopener noreferrer"&gt;Responsive Design&lt;/a&gt; and it's becoming more and more important to consider.&lt;/p&gt;

&lt;p&gt;That being said, we'll save that for another time! For now, let's introduce you to borders!&lt;/p&gt;

&lt;p&gt;Borders wrap around our tags and sit between the padding and the margin. They have a few properties that you can define on them, like &lt;code&gt;border-radius&lt;/code&gt; that you've already been introduced to. A few others are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;border-color: white | red | #123456;
border-width: thin | thick | 10px;
border-style: solid | dotted | dashed;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most of the properties are self explanatory, they tell the browser the color, size, and type of border you want. It's a lot to type out every time we want a border though. Luckily, there's some shorthand we can use!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;border: 10px solid #123456;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This lets us define all three properties at once! Using that, let's give our cards a border now.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.buyable {
  border: 2px solid #002b36;
  border-radius: 8px;

  width: 600px;
  height: 75px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, let's add some padding to give our inner tags some breathing room, and margin to give the cards themselves some space.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.buyable {
  padding: 10px 20px;
  margin: 10px;

  border: 2px solid #002b36;
  border-radius: 8px;
  width: 600px;
  height: 75px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This introduces you to some new shorthand! We've seen &lt;code&gt;padding: 30px&lt;/code&gt; before as a way to add spacing, but what does it mean when there are two values? &lt;code&gt;padding&lt;/code&gt; is shorthand similar to &lt;code&gt;border&lt;/code&gt;, except that it's used for the more explicit values:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;padding-top
padding-right
padding-bottom
padding-left
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If there's just one value, it defines all of them to be that value. If there are two values, it's equivalent to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;padding: 1 2;

padding-top: 1;
padding-right: 2;
padding-bottom: 1;
padding-right: 2;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The way I remember which ones define which is that the first value always defines the top. You can also define all four, which will go in clockwise order starting from the top.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;padding: 1 2 3 4;

padding-top: 1;
padding-right: 2;
padding-bottom: 3;
padding-left: 4;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Last step, let's declare these cards as a flexbox container so we can arrange the inner tags a little easier!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.buyable {
  display: flex;

  padding: 10px 20px;
  margin: 10px;
  border: 2px solid #002b36;
  border-radius: 8px;
  width: 600px;
  height: 75px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this, we should have something a little like this.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/BastionTheDev/embed/VRGdrp?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Uh oh, what's going on with that white space between our two sections? Turns out there's a thing called &lt;a href="https://css-tricks.com/what-you-should-know-about-collapsing-margins/" rel="noopener noreferrer"&gt;margin collapsing&lt;/a&gt; that can make margins behave unexpectedly! To solve this, we'll add an &lt;code&gt;overflow: auto&lt;/code&gt; to the &lt;code&gt;.buyables&lt;/code&gt; div. The &lt;code&gt;overflow&lt;/code&gt; property tells a tag what to do if certain content goes outside of its box, but in our case it solves our collapsing margin issue.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.buyables {
  overflow: auto;
  background-color: #fdf6e3;
  height: 50%;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We've got our card container defined, now all that's left is the inside! Let's start all the way left with the amount. The first new flexbox property we're going to introduce here is &lt;code&gt;align-self&lt;/code&gt;. This property tells the tag how to align itself vertically in this flexbox, similar to &lt;code&gt;align-items&lt;/code&gt; earlier, so we can more easily center it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.buyable__amount {
  align-self: center;
  font-size: 24px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's move on to the text section! The second flexbox concept we're introducing here is &lt;code&gt;flex-grow&lt;/code&gt;. &lt;code&gt;flex-grow&lt;/code&gt; is a way to tell the browsers which tags we want it to expand within the flexbox first. It's a bit more complex than that, but that's good enough for now. We're going to use it to make the text section fill up all the space between amount and the buy button, minus a small margin.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.buyable__text {
  flex-grow: 1;
  margin: 0 20px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perfect! Let's dig into that text section, shall we?&lt;/p&gt;

&lt;p&gt;We have two elements within it that we want arranged fairly specifically, so we're going to use another flexbox.&lt;/p&gt;

&lt;p&gt;Let's reintroduce you to one more flex box property, &lt;code&gt;justify-content&lt;/code&gt;. This property tells the flex box how to position the elements within it relative to each other. We're using &lt;code&gt;space-between&lt;/code&gt; to keep our elements are far from each other as possible.&lt;/p&gt;

&lt;p&gt;We're also going to use the more specific &lt;code&gt;margin-bottom&lt;/code&gt; property, similar to the &lt;code&gt;padding-bottom&lt;/code&gt; we talked about earlier.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.buyable__title {
  display: flex;
  justify-content: space-between;
  margin-bottom: 5px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Within this title section, we're changing the fonts a bit. We want the title to stand out, so we're going to bold it using &lt;code&gt;font-weight&lt;/code&gt;. Some fonts let you get more specific with their weight, but we just need bold for now!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.buyable__title-text {
  font-weight: bold;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Just add a smaller font-size to the effect, and we've only got one thing left!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.buyable__effect {
  font-size: 12px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now all we have is the button! You can probably do this one by yourself, go give it a shot! If you want to get it pixel perfect like our codepen at the top of the page though, here's the CSS.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.buyable__button {
  align-self: center;
  background: none;
  border: 2px solid #859900;
  border-radius: 8px;
  color: #859900;
  font-size: 20px;
  height: 30px;
  width: 80px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  We Made It!
&lt;/h2&gt;

&lt;p&gt;Success! Our final product!&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/BastionTheDev/embed/MxqXQM?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;That was a lot to slog through, I know. However, these are the exact same things I use at work &lt;em&gt;every day&lt;/em&gt;. With only a handful of exceptions, all of the CSS properties I need are contained within this post.&lt;/p&gt;

&lt;p&gt;What I really want to try and get across though is &lt;em&gt;how&lt;/em&gt; to think about CSS. Starting from the outside and working your way in. Starting to look at a website and get an idea of how you'd need to break something up to organize it correctly for styling.&lt;/p&gt;

&lt;p&gt;Try taking what you learned here and rebuilding something that you've seen in real life! A tweet, a dashboard, maybe even this post! Try and tackle it like we have so far in the series. Break down what you think the HTML should be, build out the skeleton, apply the classes, then add styling.&lt;/p&gt;

&lt;p&gt;In our next post in this increasingly long winded series, we'll add some interactivity to our app using Javascript!&lt;/p&gt;

</description>
      <category>css</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I'm Bastion Fennell, and I support women devs.</title>
      <dc:creator>Bastion Fennell</dc:creator>
      <pubDate>Fri, 08 Mar 2019 21:53:06 +0000</pubDate>
      <link>https://dev.to/bastionthedev/im-bastion-fennell-and-i-support-women-devs-6pm</link>
      <guid>https://dev.to/bastionthedev/im-bastion-fennell-and-i-support-women-devs-6pm</guid>
      <description>&lt;h2&gt;
  
  
  I will advocate for gender equality by...
&lt;/h2&gt;

&lt;p&gt;Pushing for better and more inclusive interview strategies&lt;/p&gt;

&lt;p&gt;Fostering a workplace culture that is more accepting of &lt;a href="https://firstround.com/review/atlassian-boosted-its-female-technical-hires-by-80-percent-heres-how/"&gt;different communication and programming styles&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Being an active part of my local community and seek out opportunities to help women in tech&lt;/p&gt;

&lt;p&gt;Assuming the women I meet at conferences are developers&lt;/p&gt;

&lt;h2&gt;
  
  
  I hope to see my school/work/developer/tech community...
&lt;/h2&gt;

&lt;p&gt;Become less focused on combative approaches to programming&lt;/p&gt;

&lt;p&gt;Be more supportive of &lt;a href="https://insights.stackoverflow.com/survey/2018/#developer-profile-experience-and-gender"&gt;junior developers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Branch out from just bringing pizza and beer to meetups&lt;/p&gt;

&lt;h2&gt;
  
  
  My advice for fellow allies is...
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;l i s t e n&lt;/strong&gt;&lt;br&gt;
With both ears&lt;br&gt;
All the time&lt;/p&gt;

&lt;p&gt;The issues that underrepresented groups deal with every day are largely invisible because we've internalized the behaviors associated with them.&lt;/p&gt;

&lt;p&gt;Systemic issues are all around you, we need to be an active part of finding these issues AND solving them. No more expecting everyone else to come to us with problems and solutions. They don't deserve that extra emotional labor &lt;em&gt;on top&lt;/em&gt; of the biases fighting against them.&lt;/p&gt;

&lt;p&gt;If you have a platform of privilege, it is your duty to help those that don't. Being an ally can mean just being supportive, but it can also mean so much more.&lt;/p&gt;

&lt;p&gt;Let's try to help ease the emotional burden of finding problems, dealing with problems, and proposing solutions to problems.&lt;/p&gt;

&lt;p&gt;As long as we listen to the people most affected by these issues, we can do our part to help solve them.&lt;/p&gt;

</description>
      <category>wecoded</category>
    </item>
    <item>
      <title>Learning with Clicker Games Part 1: HTML</title>
      <dc:creator>Bastion Fennell</dc:creator>
      <pubDate>Tue, 05 Mar 2019 17:27:37 +0000</pubDate>
      <link>https://dev.to/bastionthedev/learning-with-clicker-games-part-1-html-1i4b</link>
      <guid>https://dev.to/bastionthedev/learning-with-clicker-games-part-1-html-1i4b</guid>
      <description>&lt;p&gt;This is the first part of a three part series:&lt;br&gt;
&lt;strong&gt;Part 1, Layout with HTML&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/bastionthedev/learning-with-clicker-games-part-2-css-196i"&gt;Part 2, Styling with CSS&lt;/a&gt;&lt;br&gt;
Part 3, Interaction with JS&lt;/p&gt;

&lt;p&gt;In this part, we'll be learning HTML! Our goal is to build the bare bones layout of our app. You could say right now we're laying out the canvas that we'll use for parts two and three of this series.&lt;/p&gt;



&lt;p&gt;Everyone has a different idea of what the "Perfect First Webapp" is when you're learning frontend development. Some people think you should build something like &lt;a href="http://todomvc.com/"&gt;TodoMVC&lt;/a&gt;, a fake portfolio site, or maybe even just trying to copy facebook. All of these are good, but I'd like to introduce a new idea to the mix:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Incremental games&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I first started learning how to program and taking an interest in software development, I certainly didn't think I would become a web developer. I wanted to make video games! While I didn't wind up in that industry, I still have that itch to build games every now and again. Incremental games are the perfect way to combine the worlds of web dev and gaming. So, let's get started!&lt;/p&gt;
&lt;h3&gt;
  
  
  What is an Incremental Game?
&lt;/h3&gt;

&lt;p&gt;Rather than tell you what an incremental game is, it might be best to show you. The game that got me into it initially was &lt;a href="http://orteil.dashnet.org/cookieclicker/"&gt;Cookie Clicker&lt;/a&gt;, which you can try out for free in your browser right now!&lt;/p&gt;

&lt;p&gt;Basically, incremental games (also called clicker games or idle games) are all about collecting a particular resource. At first, you have to click and interact with the game. As the game progresses, you start to use that resource to buy items that will automatically harvest that resource every second. Eventually those items outpace your clicking so all you have to do is manage what to buy next and check on it every now and again!&lt;/p&gt;

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

&lt;p&gt;We're going to be building our version of Cookie Clicker, called &lt;code&gt;Code Clicker&lt;/code&gt;. Original, I know. Instead of collecting cookies, we'll be "writing" lines of code! In our initial app, we'll have two items we can buy: Extra Hands and Code Monkeys. Extra Hands will make our clicks write more code per click, while Code Monkeys will automatically write one line of code per second.&lt;/p&gt;

&lt;p&gt;Now that we have an idea of what we're building, let's get started!&lt;/p&gt;
&lt;h3&gt;
  
  
  What is HTML?
&lt;/h3&gt;

&lt;p&gt;For any sort of web app that we want to build, we gotta start with some HTML, or HyperText Markup Language. Think of HTML as a way to communicate what we want the page to look like via text.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fun Fact&lt;/p&gt;

&lt;p&gt;HTML is based on &lt;a href="https://en.wikipedia.org/wiki/Standard_Generalized_Markup_Language"&gt;SGML&lt;/a&gt;, but has become the de facto web standard.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The main components of HTML are tags. HTML has a set of defined tags that have different effects on what we show on the page. There are &lt;strong&gt;a lot&lt;/strong&gt; of tags, but here are a few that we'll use in this project:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt; The tag that wraps the whole document and defines it as html&lt;br&gt;
&lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; This section doesn't have any displayed content, it only contains metadata for the browsers to use&lt;br&gt;
&lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; This section contains the layout of the page and what we will actually display to the user&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; Short for division, this tag is simply used to mark a division or piece of the page&lt;br&gt;
&lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; Short for paragraph, used to define a section of text&lt;br&gt;
&lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; Short for header, you can use h1 - h5 for different levels of header&lt;br&gt;
&lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; Short for anchor, used to create links&lt;br&gt;
&lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; A clickable button&lt;/p&gt;

&lt;p&gt;Using these tags we'll create the general layout of our app. Now, this is going to look ugly. The next step, which we'll cover in the next post, is to style it using CSS and make it look nice. HTML is just to build the layout.&lt;/p&gt;

&lt;p&gt;By the end of this part, hopefully we'll have something like this!&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/BastionTheDev/embed/BbLKyj?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The idea here is that we're writing &lt;code&gt;lines of code&lt;/code&gt; by clicking the &lt;code&gt;write code&lt;/code&gt; button. There are also a few things we can buy below it to start automatically incrementing lines of code. It's not interactive yet, we'll get to that in the third part of the series.&lt;/p&gt;

&lt;p&gt;So, how do we get here? Let's break it down. Create a file called &lt;code&gt;index.html&lt;/code&gt; and let's start building our layout! First, let's make the wrapping HTML tag.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;html&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That lets the computers know this is an HTML document. Notice that we have the opening tag: &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt; and the closing tag: &lt;code&gt;&amp;lt;/html&amp;gt;&lt;/code&gt; Anything between those two tags will be considered a part of it, or one of its children.&lt;/p&gt;

&lt;p&gt;Next, we put our two main sections.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The head is for our metadata, the body is for our display data. So, what is metadata? It's data that the browser can use, but isn't strictly used for the layout of the page. Let's put in some example metadata!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt; Code Clicker &amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; tag is what is displayed in the tab when you're on the page. If you open up your &lt;code&gt;index.html&lt;/code&gt; file in your browser now, you should see that the tab says &lt;code&gt;Code Clicker&lt;/code&gt; on it now! Next, let's add our top section, which will show how many lines of code have been written and give us a button to write more.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt; Code Clicker &amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;div&amp;gt;
      Lines of Code: 0
      &amp;lt;div&amp;gt;
        &amp;lt;button&amp;gt; Write Code &amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we're using div tags! These div tags serve two purposes: Putting the button and the text on separate lines, and defining this top section in the HTML.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you're more familiar with HTML, you might think we're a bit div happy in this app. Since this is a jumping off point for a web app, we want to start getting comfortable with divs now. We'll be using them for styles and with Javascript in the next couple of posts.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We're also introducing our first button! You could just use a div here, but it's important to make your interactive elements as clear as possible using things like button and input tags. That way, screen readers and people navigating via keyboard can still use your app. If you want to dig into this type of thing more or learn how to make your web app more accessible, check out the &lt;a href="https://a11yproject.com/"&gt;A11y Project&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Since we already know how to use each of the tags now, let's go ahead and just add the two 'buyable' items to our page.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt; Code Clicker &amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;div&amp;gt;
      Lines of Code: 0
      &amp;lt;div&amp;gt;
        &amp;lt;button&amp;gt; Write Code &amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;
      Number of Extra Hands: 0
      Price: 10
      &amp;lt;div&amp;gt;
        &amp;lt;button&amp;gt; Buy Hands &amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;
      Number of Code Monkeys: 0
      Price: 100
      &amp;lt;div&amp;gt;
        &amp;lt;button&amp;gt; Buy Hands &amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And voila! We have the basic layout of our app using nothing but HTML! In our next post we'll explore CSS and see how we can make this look better.&lt;/p&gt;

&lt;p&gt;How did your incremental app turn out? Let me know in the comments below!&lt;/p&gt;

</description>
      <category>html</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Software Development for Humans</title>
      <dc:creator>Bastion Fennell</dc:creator>
      <pubDate>Thu, 28 Feb 2019 16:47:17 +0000</pubDate>
      <link>https://dev.to/bastionthedev/software-development-for-humans-5bi9</link>
      <guid>https://dev.to/bastionthedev/software-development-for-humans-5bi9</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Be wary ye who venture into the depths below
// Here be dragons
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's a programming tale as old as time. You jump into the codebase, ready to be productive and push out a bug fix. The ticket was estimated at one day of work, should be easy to knock out.&lt;/p&gt;

&lt;p&gt;But no.&lt;/p&gt;

&lt;p&gt;The further you dig into the code, the less you understand it. You feel like you're taking crazy pills.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;How did this ever work???&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Someone is to blame for this... Who could have done it? You pop open your terminal, it's time to figure out who to &lt;code&gt;git blame&lt;/code&gt;. Your heart skips a beat as your trusty terminal seemingly turns on you...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bastion Fennell 2019-02-22 10:44:36 -0600
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It was &lt;em&gt;your&lt;/em&gt; code this whole time!&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer Empathy
&lt;/h3&gt;

&lt;p&gt;When we're developing software, especially in industry, it's easy to only think of one end user: the customer. While this isn't necessarily a &lt;em&gt;bad&lt;/em&gt; viewpoint, I'd like you to think about one more end user: the next developer. Specifically, the next developer who is going to be working on this piece of code. Especially because it's likely that next developer will be you.&lt;/p&gt;

&lt;p&gt;To build software for humans, we have to start to gain a little bit of empathy for that next developer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Empathy&lt;/strong&gt;&lt;br&gt;
em·pa·thy&lt;br&gt;
/ˈempəTHē/&lt;br&gt;
   noun&lt;br&gt;
   the ability to understand and share the feelings of another.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To develop that empathy, we just have to put ourself in the shoes of the next developer. Which should be easy, because we've all been that developer. We've all worked in existing codebases and had to figure out what is going on. While Developer Empathy is something you'll be honing your entire programming career, here are a few concrete techniques to make the next developer's life easier.&lt;/p&gt;

&lt;h4&gt;
  
  
  Don't be Clever
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fk7hvwfsh4tykyyi1exjz.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fk7hvwfsh4tykyyi1exjz.jpg" alt="Extra clever mousetrap"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As developers, we have a drive to try new things and patterns. Sometimes, these new things that are exciting to us aren't exactly clear to everyone else. When writing code, we want to make sure we're writing readable code instead of the smallest, fastest code possible.&lt;/p&gt;

&lt;p&gt;Of course, if performance is a huge concern or specifically what you're working on, you may still have to write some &lt;em&gt;clever&lt;/em&gt; code. You may actually need obscure APIs or complex single line calculations. For the most part, though, being a little clearer with our code and our intention with the code will make everyone's lives a little easier.&lt;/p&gt;

&lt;p&gt;This leads nicely into my next tip:&lt;/p&gt;

&lt;h4&gt;
  
  
  Verbosity Over Brevity
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for(i=0;i&amp;lt;100;)document.write(((++i%3?'':'Fizz')+(i%5?'':'Buzz')||i)+"&amp;lt;br&amp;gt;")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;FizzBuzz, as written &lt;a href="https://codepen.io/Thorpy/pen/qXZqNv" rel="noopener noreferrer"&gt;here in JS&lt;/a&gt;. Sure it works, and it's neat to look at, but it's almost impossible to understand at first glance. This is more a subset of "Don't be Clever", but it's important to be conscientious with how we name things and lay things out in our code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for(i = 0; i &amp;lt; 100; i++) {
    const fizz = i % 3 === 0;
    const buzz = i % 5 === 0;

    if (fizz) {
        document.write('Fizz');
    }

    if (buzz) {
        document.write('Buzz');
    }

    if (!fizz &amp;amp;&amp;amp; !buzz) {
        document.write(i);
    }

    document.write('&amp;lt;br&amp;gt;');
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I'm not saying my code or implementation here is perfect by any means, but it's at least understandable. If someone was given a ticket to print &lt;code&gt;Baz&lt;/code&gt; every time the number was divisible by 7, it would be super easy to do it. Being more clear in your intention when writing code is a way to think of the next developer who is going to have to understand that code.&lt;/p&gt;

&lt;h4&gt;
  
  
  Documentation
&lt;/h4&gt;

&lt;p&gt;My final tip is the same tip that everyone will tell you and hardly anyone will do: Add more documentation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Document, document, document!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sometimes, code &lt;em&gt;has&lt;/em&gt; to be complex. Sometimes it's hard to see where this console error actually came from. Sometimes you know that what you are working on will be used by a lot of people.&lt;/p&gt;

&lt;p&gt;In all these cases, try to add enough documentation to make it easy to understand. When you're writing the code, you have all the context for the problem. At least, you have most of it. Try to think about what parts of that problem will be hard to understand for the next developer, and add that in the comments somewhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  Here Be Dragon Slayers
&lt;/h3&gt;

&lt;p&gt;There is a lot more to consider when writing software for humans, but hopefully this will give you a good starting point! Together, we can go from just finding dragons to being dragon slayers!&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
