<?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: Doug Black</title>
    <description>The latest articles on DEV Community by Doug Black (@dougblackjr).</description>
    <link>https://dev.to/dougblackjr</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%2F12690%2F6020323.jpeg</url>
      <title>DEV Community: Doug Black</title>
      <link>https://dev.to/dougblackjr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dougblackjr"/>
    <language>en</language>
    <item>
      <title>Find A String in a Massive Git Repo</title>
      <dc:creator>Doug Black</dc:creator>
      <pubDate>Wed, 08 May 2019 16:36:28 +0000</pubDate>
      <link>https://dev.to/dougblackjr/find-a-string-in-a-massive-git-repo-22h9</link>
      <guid>https://dev.to/dougblackjr/find-a-string-in-a-massive-git-repo-22h9</guid>
      <description>&lt;p&gt;Figure I would share this, as I just needed to do this.&lt;/p&gt;

&lt;p&gt;We have a massive git repo for an &lt;a href="https://engaugeanalytics.com/"&gt;Engauge Analytics&lt;/a&gt; project we are working on. Tons of these branches have active work being done, and some were just skipped during the pruning process.&lt;/p&gt;

&lt;p&gt;I needed to find 10 characters.&lt;/p&gt;

&lt;p&gt;Technically, I needed to find the method that contained those 10 characters, but I knew those 10 characters would be the key to finding it.&lt;/p&gt;

&lt;p&gt;Let's say you're looking for a string title &lt;code&gt;the magic string&lt;/code&gt; in one of your many git branches in your repo. You 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;git grep "the magic string" `git show-ref --heads`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the string exists in your repo, anywhere, you'll get 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;***c5cd1d8:path/to/file.js:let a = "the magic string"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you have that data, it's as easy as finding the branch!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git branch --contains ***c5cd1d8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There may be an easier way to do this. What do you recommend?&lt;/p&gt;

</description>
      <category>git</category>
    </item>
    <item>
      <title>Help! I'm a Tech Lead</title>
      <dc:creator>Doug Black</dc:creator>
      <pubDate>Mon, 03 Dec 2018 12:53:17 +0000</pubDate>
      <link>https://dev.to/dougblackjr/help-im-a-tech-lead-3f18</link>
      <guid>https://dev.to/dougblackjr/help-im-a-tech-lead-3f18</guid>
      <description>&lt;p&gt;&lt;a href="https://i.giphy.com/media/6BK4RVBsgXwBy/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/6BK4RVBsgXwBy/giphy.gif" alt="Current feeling"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recently became the Technical Lead at the company I work for, &lt;a href="https://www.primitivesocial.com/"&gt;Primitive Social&lt;/a&gt;. We're a smaller software team, but growing somewhat quickly. The job description is a little fluid, as its a new role and I have some privilege to turn it into what it needs to be.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My question for you: What does it need to be&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What are the most essential parts of being a tech lead? What do you wish your tech lead would do for you?&lt;/p&gt;

&lt;p&gt;And what do you think are some of the most important technical standards you think need to be written? (There are no wrong answers, every answer has value, no matter how "obvious")&lt;/p&gt;

</description>
      <category>techlead</category>
      <category>leadership</category>
      <category>career</category>
    </item>
    <item>
      <title>CORS, In A Way I Can Understand</title>
      <dc:creator>Doug Black</dc:creator>
      <pubDate>Wed, 14 Nov 2018 11:40:57 +0000</pubDate>
      <link>https://dev.to/dougblackjr/cors-in-a-way-i-can-understand-501d</link>
      <guid>https://dev.to/dougblackjr/cors-in-a-way-i-can-understand-501d</guid>
      <description>&lt;p&gt;Two days ago, I tweeted my frustration:&lt;/p&gt;

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

&lt;p&gt;I was an hour in to diagnosing a tiny browser error that was breaking the entire project: "CORS error, Access-Control nice try, you can't do that, ha ha" (I'm paraphrasing).&lt;/p&gt;

&lt;p&gt;Apparently, it resonated with a bunch of friends online.&lt;/p&gt;

&lt;p&gt;So it got me thinking: What is CORS and how can I explain it so even I can understand it?&lt;/p&gt;

&lt;h2&gt;
  
  
  First, What I Learned CORS Was
&lt;/h2&gt;

&lt;p&gt;Cross-Origin Resource Sharing (CORS) is a simple, browser- and server-implemented security protocol that tells which sites can communicate with which other sites.&lt;/p&gt;

&lt;p&gt;Basically, if Site A (your site) wants to call Site B, it needs your permission to do so. But, it stops Site B from calling Site C, without your permission, and causing possible damage to your data or site, or stealing information, or any other variety of terrible things.&lt;/p&gt;

&lt;p&gt;A great example of this would be an ad fed to you from a third-party source (which you allow) that wants to call &lt;a href="http://www.stealallthispersonsdata.org" rel="noopener noreferrer"&gt;www.stealallthispersonsdata.org&lt;/a&gt; (which you don't allow). The ad will show, but the data won't be stolen.&lt;/p&gt;

&lt;p&gt;That is, if you set CORS up correctly.&lt;/p&gt;

&lt;p&gt;And there are some beginner things to set up CORS. Here goes the way I look at it:&lt;/p&gt;

&lt;h2&gt;
  
  
  My Imperfect Metaphor
&lt;/h2&gt;

&lt;p&gt;My wife and I need to step out of the house and we leave our 10 year old daughter in charge.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why You Need CORS
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;We don't give our daughter any instructions on who to let in and what they can do. Stranger knocks on door, daughter lets stranger in. Stranger invites more strangers, robs our house, spray paints the cat, and steals our personal information.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;CORS gives a framework of who is allowed in and allowed to call whom.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting the Access-Control-Allow-Origin
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;We tell our daughter, "Don't allow anyone in except for Miss Patty (our neighbor)." A knock at the door happens, and our daughter asks who it is. She then can make a decision based on who we told her to allow in.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This allows you to tell the browser which sites you will allow in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting the Access-Control-Allow-Credentials
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;We tell our daughter, "Don't allow anyone in except for Miss Patty, or anyone who knows our secret code word."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Typically CORS doesn't include cookies or other authentication in its requests. Setting this to true throws cookies in the request as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting the Access-Control-Allow-Methods
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;We tell our daughter, "You can invite one friend over, but they can't paint the wall."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This tells the CORS request to allow which methods of request: GET, POST, PUT, DELETE. So, if you wanted a site to do a GET, but not to update anything, you can do that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting the Access-Control-Max-Age
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;We tell our daughter, "You can invite one friend over, but they have to leave at 6 PM."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This one is really imperfect. This sets the value in seconds to cache preflight request results, such as the data in Access-Control-Allow-Headers and Access-Control-Allow-Methods headers.&lt;/p&gt;

&lt;h3&gt;
  
  
  There's More!
&lt;/h3&gt;

&lt;p&gt;CORS is a concept I'm just beginning to understand. Help me fill in the blanks! What's missing here? What can be added to the metaphor?&lt;/p&gt;

</description>
      <category>cors</category>
      <category>browser</category>
    </item>
    <item>
      <title>Things I Learned Building an Analytics Engine</title>
      <dc:creator>Doug Black</dc:creator>
      <pubDate>Sat, 20 Oct 2018 23:15:49 +0000</pubDate>
      <link>https://dev.to/dougblackjr/things-i-learned-building-an-analytics-engine-2mmj</link>
      <guid>https://dev.to/dougblackjr/things-i-learned-building-an-analytics-engine-2mmj</guid>
      <description>&lt;p&gt;Oh man, am I excited. This side project has been awhile coming.&lt;/p&gt;

&lt;p&gt;I just released Engauge Analytics (&lt;a href="https://engaugeanalytics.com/"&gt;https://engaugeanalytics.com/&lt;/a&gt;), a web analytics engine that allows you to get meaningful data from your website without stalking your users like some other large entities &lt;em&gt;cough cough Google and Facebook cough cough&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;What’s more, the paid tiers of Engauge allow you to get full, automated SEO evaluations of your sites, AND machine-learning driven content evaluations that help you know how your audience will react to your content BEFORE THEY VISIT.&lt;/p&gt;

&lt;p&gt;It’s the geekiest thing I’ve ever made, and I’m crazy excited for it. But it was PAINFUL to make.&lt;br&gt;
&lt;a href="https://i.giphy.com/media/ZylxpySpaBlhESsNGL/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/ZylxpySpaBlhESsNGL/giphy.gif" alt="Much fire, many hurt"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are some of the lessons I learned while building it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Think About What You're Creating Before Building It&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://i.giphy.com/media/457NTDOuMmDfO/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/457NTDOuMmDfO/giphy.gif" alt="My first uh-oh"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was deep into building the UI for the app, with the analytics engine running and testing. A friend of mine got me a call with a friend who worked on product in a major company.&lt;/p&gt;

&lt;p&gt;I walked him through the product from start to finish, using fancy words like "proprietary".&lt;/p&gt;

&lt;p&gt;His first question: "So who are you making this for?"&lt;/p&gt;

&lt;p&gt;Great question. I hadn't really thought about it.&lt;/p&gt;

&lt;p&gt;So, side projects are fun and challenging. The biggest lesson I learned up front: If you're going to market it, think about who you're marketing it to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ask For Feedback&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://i.giphy.com/media/MF3fDJIFZ0ORO/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/MF3fDJIFZ0ORO/giphy.gif" alt="Let's escalate quickly!"&gt;&lt;/a&gt;&lt;br&gt;
Two weeks before release, I invited a number of users to test it in alpha and give feedback. The feedback was awesome, and lead to a lot of common-sense features that I had missed.&lt;/p&gt;

&lt;p&gt;Some of it was a little tough to hear. This was my baby, and I was incubating it from scratch and asking folks for feedback on how that baby should be raised was sometimes painful.&lt;/p&gt;

&lt;p&gt;But, with every suggestion came an opportunity to grow the app. Not every suggestion got implemented, but some of it showed me that the app would go nowhere without it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Data Got Big Quick&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://i.giphy.com/media/3o6Zt83sUrmHPYdgkM/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3o6Zt83sUrmHPYdgkM/giphy.gif" alt="I mean, biiiiig"&gt;&lt;/a&gt;&lt;br&gt;
So, the way the app is set up, I knew the database would get big quick. I just didn't realize HOW big.&lt;/p&gt;

&lt;p&gt;It was so big with the alpha users that it crashed the entire thing. I had to quickly scale, and think about scaling in a much bigger way.&lt;/p&gt;

&lt;p&gt;Scaling the server and DB was easy, but I'm still not totally pleased with this. Any feedback for a relational database that scales large and gives quick queries?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enjoy the Journey&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://i.giphy.com/media/z9AUvhAEiXOqA/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/z9AUvhAEiXOqA/giphy.gif" alt="It'll work out"&gt;&lt;/a&gt;&lt;br&gt;
Maybe you've been here, too: "Side project is done, now what's next? Let's build something else! A space monitor API that looks at dark matter, utilizing....webpack!"&lt;/p&gt;

&lt;p&gt;This seems to be the first side project in a long while (maybe ever) that hasn't given me the itch to move on immediately. This is built, and I want to see it grow and succeed and scale like crazy.&lt;/p&gt;

&lt;p&gt;I have to admit, I'm still really learning about it. I'll post some more, maybe some how-tos, on how I built some of this. But, I know there are still areas of growth in this that I haven't even touched. Do I copyright it? Patent the algorithms? Scale to a different database structure? Multi-tenancy?&lt;/p&gt;

&lt;p&gt;Time to keep learning!&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>sidehustle</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>Are Google and Facebook Evil?</title>
      <dc:creator>Doug Black</dc:creator>
      <pubDate>Tue, 11 Sep 2018 10:07:10 +0000</pubDate>
      <link>https://dev.to/dougblackjr/are-google-and-facebook-evil-bac</link>
      <guid>https://dev.to/dougblackjr/are-google-and-facebook-evil-bac</guid>
      <description>&lt;p&gt;Just a question I've been pondering lately. I'm working on a side hustle called &lt;a href="https://engaugeanalytics.com/"&gt;Engauge Analytics&lt;/a&gt;, something like Google Analytics with a machine learning component. But, I tagged this "Analytics Without the Evil".&lt;/p&gt;

&lt;p&gt;It was right around the time that the &lt;a href="https://www.nytimes.com/2018/03/19/technology/facebook-cambridge-analytica-explained.html"&gt;Facebook Cambridge Analytics scandal&lt;/a&gt; happened, and I think I coined it on a whim. It also comes at a time when &lt;a href="https://www.wired.com/story/facebook-twitter-congress-testimony-dorsey-sandberg/"&gt;Facebook, Twitter, and Google (well, not Google) are all sitting before the US Congress&lt;/a&gt; to discuss foreign influence in elections and other data issues.&lt;/p&gt;

&lt;p&gt;So, I guess, my question is....&lt;/p&gt;

&lt;p&gt;Are Google and Facebook and the like that use our personal data for their own good evil? Are their actions in these circumstances wrong?&lt;/p&gt;

</description>
      <category>google</category>
      <category>facebook</category>
      <category>discuss</category>
      <category>data</category>
    </item>
    <item>
      <title>[Entry] Appointment Scheduler</title>
      <dc:creator>Doug Black</dc:creator>
      <pubDate>Tue, 08 May 2018 14:51:19 +0000</pubDate>
      <link>https://dev.to/dougblackjr/entry-appointment-scheduler-758</link>
      <guid>https://dev.to/dougblackjr/entry-appointment-scheduler-758</guid>
      <description>&lt;h1&gt;
  
  
  What I built
&lt;/h1&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/LT6YtcJ6dZI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;This scheduler allows you to create appointments to be scheduled in different rooms. You can create rooms, create appointments to be added directly to the scheduler, move appointments between rooms and time slots on the scheduler, schedule appointments without a time to be added later (drag and drop them on).&lt;/p&gt;

&lt;p&gt;The scheduler uses sockets to communicate with others on the schedule, so that appointments time slots lock out when you are scheduling there, or when you are editing an appointment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo Link
&lt;/h2&gt;

&lt;p&gt;Project currently lives here: &lt;a href="http://scheduler.dougblackjr.com/"&gt;dev.to Scheduler: scheduler.dougblackjr.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: This app is made for desktop viewing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/dougblackjr/devto-scheduler"&gt;https://github.com/dougblackjr/devto-scheduler&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I built it (what's the stack? did I run into issues or discover something new along the way?)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  STACK:
&lt;/h3&gt;

&lt;p&gt;php7.2&lt;br&gt;
&lt;a href="https://laravel.com/"&gt;Laravel&lt;/a&gt;&lt;br&gt;
&lt;a href="https://vuejs.org/"&gt;Vue.js&lt;/a&gt;&lt;br&gt;
&lt;a href="https://redis.io/"&gt;Redis&lt;/a&gt;&lt;br&gt;
&lt;a href="https://pusher.com/"&gt;Pusher&lt;/a&gt;&lt;br&gt;
&lt;a href="https://fullcalendar.io/"&gt;fullcalendar&lt;/a&gt;&lt;br&gt;
&lt;a href="https://fullcalendar.io/scheduler"&gt;fullcalendar Scheduler&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/CodeSeven/toastr"&gt;toastr&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.digitalocean.com/"&gt;Digital Ocean for hosting&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ISSUES:
&lt;/h3&gt;

&lt;p&gt;There were two challenges.&lt;/p&gt;

&lt;p&gt;The first was locking the time slots on the calendar, which have no backend model created for it. In order to show someone across the ocean that the time slot is being edited, and to avoid overlap, I used Redis to create a key that specifically targets that slot on that day for those times for that particular resource.&lt;/p&gt;

&lt;p&gt;The second, and possibly more challenging, was dealing with time zones. When I had tried this in the past, I relied heavily on the browser to deal with time. But if someone was halfway around the world, the time slots would get all borky. Therefore, I throw pretty much everything at the server in order to deal with timing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Resources/Info
&lt;/h2&gt;

&lt;p&gt;Here's my random dump of thoughts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pusher made this a thousand times easier.&lt;/li&gt;
&lt;li&gt;Though I love my friends around the world, if y'all could move to Eastern Standard time, I would appreciate it.&lt;/li&gt;
&lt;li&gt;I created this because scheduling is hard. I'm grateful for the already created things that made this possible. Please steal my code and make it better.&lt;/li&gt;
&lt;li&gt;Thank you to dev.to for being a positive community and for making this all possible!&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>pushercontest</category>
      <category>laravel</category>
      <category>pusher</category>
      <category>vue</category>
    </item>
    <item>
      <title>I Made a Thing</title>
      <dc:creator>Doug Black</dc:creator>
      <pubDate>Sat, 17 Jun 2017 17:51:08 +0000</pubDate>
      <link>https://dev.to/dougblackjr/i-made-a-thing</link>
      <guid>https://dev.to/dougblackjr/i-made-a-thing</guid>
      <description>&lt;p&gt;It's only been 9 months since I have been in full-time web development. Though I have been freelancing for years, doing development as my primary role was an entirely different animal.&lt;/p&gt;

&lt;p&gt;We were a smaller team when I started, and I was handed a huge project. We had a content block on our primary site that needed to pull content from our 12 other properties, and update it in real time. And it was all mine.&lt;/p&gt;

&lt;p&gt;I spent 3 months developing something in &lt;a href="https://laravel.com/"&gt;Laravel&lt;/a&gt;, a project I called Feedbot. Being my first time jumping into Laravel meant learning the use of Eloquent models, creating custom helpers and services, working with Slack integrations. Since Laravel lives on the bleeding edge of technology, I had to get a new server up and running with php7 and secure it.&lt;/p&gt;

&lt;p&gt;This has been my favorite project to date in my role, and it lead me to some strong conclusions.&lt;/p&gt;

&lt;h2&gt;
  
  
  No One Cares as Much as You Do
&lt;/h2&gt;

&lt;p&gt;As Feedbot was coming alive, a la the Frankenstein monster, I got more and more excited. The day I finished and allowed for some code review was one of the most exciting days I've had a Dev.&lt;/p&gt;

&lt;p&gt;It was done and working. I deployed. I was ecstatic! I wanted it to be the talk of everyone there: this important machine was complete! Much like a new parent, I wanted to post pics of my baby, Feedbot, on my social media and inundate people with talk about it.&lt;/p&gt;

&lt;p&gt;But there were no balloons. No party. No gigantic loudspeaker announcing, "Feedbot is alive! Rejoice!" Don't get me wrong, people were happy it was up. But it wasn't to the level I had anticipated. In fact, the times people mention Feedbot are the times it stops working.&lt;/p&gt;

&lt;p&gt;No one may know the work that happens behind the metaphorical curtain of what you are doing. But YOU will know. You will be able to beam with pride every time you get a click, a notification, an empty error log. And you can still celebrate it, rely on your work, and enjoy it.&lt;/p&gt;

&lt;p&gt;And your team and your users can know that you will take care of it. It's your baby, and you want it to grow!&lt;/p&gt;

&lt;h2&gt;
  
  
  No One Knows the Project Like You Do
&lt;/h2&gt;

&lt;p&gt;...and that's both good and bad.&lt;/p&gt;

&lt;p&gt;There was a day a few months after launch that we realized Feedbot had stopped posting. Where content should have been live in an hour, we were missing days of stuff. I quickly jumped into action, and found one of our sites cookies were causing the issue. On 16 different pages.&lt;/p&gt;

&lt;p&gt;Three lines of code, and we were back in business.&lt;/p&gt;

&lt;p&gt;There's something powerful about knowing the inner workings like no one else. It means that when there's an emergent problem, your team and users can look to you to make it right in a hurry. It also means that you have a little bit of job security.&lt;/p&gt;

&lt;p&gt;But that's not good. &lt;a href="https://dev.to/lukebearl/the-bus-factor"&gt;What if you get hit by a bus tomorrow?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because you know the project like no one else, it's up to you to document it, and document it well. You have to give your team a roadmap to know what your models are pulling from where, your controllers are controlling, and your views are making visible. Good documentation will mean that your team won't need you to make something right, and that your good work will outlast you. In fact, writing the documentation before you begin developing will ensure you have a clear trail toward your goal.&lt;/p&gt;

&lt;p&gt;If you are the only one who knows the project, it will inevitably fail without you. And the only legacy you may leave is legacy software.&lt;/p&gt;

&lt;h2&gt;
  
  
  No One Grows as Much as You Will
&lt;/h2&gt;

&lt;p&gt;Being a freelancer for my early Dev years lead to some pretty bad practices. One I discovered pretty fast.&lt;/p&gt;

&lt;p&gt;One of Feedbot's early database iterations was built how I usually built databases: Terribly. But it worked, and that was a win in my eyes.&lt;/p&gt;

&lt;p&gt;My boss took a look, and recommended that we change the database structure to make it faster and bring it up to modern conventions. This meant redoing 90% of the app, and that was devastating (my boss still claims he made me cry that day, but I'm not so sure).&lt;/p&gt;

&lt;p&gt;What I did realize pretty quickly was that I was reinventing the wheel in a lot of my current code. I quickly became familiar with Eloquent relationships, and knocked my code down by 800 lines. 800 lines!&lt;/p&gt;

&lt;p&gt;I'm newer to the field of Dev, but I find that everything changes all the time. Because we're in a constantly changing environment of tools, languages, frameworks, and hardware, you must constantly be changing and growing. There are people who know more than you, no matter how long you've been doing it, and many see things from a different angle than you. It is up to YOU to glean that information and to use it to grow.&lt;/p&gt;

&lt;p&gt;The next time we had a Laravel project, it was much easier for me to make recommendations, to recommend model structures and begin migrations, to write documentation with know-how, and to get the ship back on course when things began falling off. Another Laravel project, Lunchbot (a Slackbot to tell us what's for lunch each day, somehow more lauded than Feedbot ever was), only took 5 days to complete.&lt;/p&gt;

&lt;p&gt;Every project you are doing should be increasing your knowledge base, and leading you to become the best developer you can be.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You've made things, too! What did you learn from your process?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>youngdeveloper</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Hi, I'm Doug Black</title>
      <dc:creator>Doug Black</dc:creator>
      <pubDate>Sun, 28 May 2017 12:24:57 +0000</pubDate>
      <link>https://dev.to/dougblackjr/hi-im-doug-black</link>
      <guid>https://dev.to/dougblackjr/hi-im-doug-black</guid>
      <description>&lt;p&gt;I have been coding for 7 years.&lt;/p&gt;

&lt;p&gt;You can find me on Twitter as &lt;a href="https://twitter.com/dougblackjr" rel="noopener noreferrer"&gt;@dougblackjr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I live in Philadelphia, the greatest City on Earth.&lt;/p&gt;

&lt;p&gt;I work for American Bible Society.&lt;/p&gt;

&lt;p&gt;I mostly program in these languages: PHP, Ruby on Rails, JS.&lt;/p&gt;

&lt;p&gt;I am currently learning more about gitflow and Vue.js.&lt;/p&gt;

&lt;p&gt;Nice to meet you.&lt;/p&gt;

</description>
      <category>introduction</category>
    </item>
  </channel>
</rss>
