<?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: Tim</title>
    <description>The latest articles on DEV Community by Tim (@timotdev).</description>
    <link>https://dev.to/timotdev</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%2F52124%2Fab633c93-2185-45bc-ad75-af14bbde2d51.png</url>
      <title>DEV Community: Tim</title>
      <link>https://dev.to/timotdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/timotdev"/>
    <language>en</language>
    <item>
      <title>The 8 Things Learned From My First Developer Job</title>
      <dc:creator>Tim</dc:creator>
      <pubDate>Sun, 29 Sep 2019 22:02:37 +0000</pubDate>
      <link>https://dev.to/timh1203/the-8-things-learned-from-my-first-developer-job-2l3p</link>
      <guid>https://dev.to/timh1203/the-8-things-learned-from-my-first-developer-job-2l3p</guid>
      <description>&lt;p&gt;I want to share some things I learned with my first dev job at a small commercial real estate startup. My official title was Associate Full-stack Software Engineer and I worked with about 5 or 6 different applications built with different stacks.  Some of the technologies include React, Next.js, Node.js/Express, Ruby on Rails, PostgreSQL, Docker, AWS, Cypress, Auth0, and some others. I hope that this helps give you some insight into some things that you can practice or bring awareness to while you're on your dev path.&lt;/p&gt;

&lt;h3&gt;
  
  
  Javascript Is A Loosely Typed Language
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g6_mTSmc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/4M1SJPW.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g6_mTSmc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/4M1SJPW.png" alt="Javascript is flexible"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I never really understood the need for Typescript or Flow libraries until now. Even though we did not use either library in our codebase, I had to fix issues/bugs that involved something as simple as something returning a string versus a number. To the new developer, the browser developer console can show the string of a number 1 versus the number 1 differently. Using &lt;code&gt;typeof &amp;lt;data&amp;gt;&lt;/code&gt; can help you discern what type it is. Spend some time and figure out the differences between null, undefined, and void too. While you're at it, make sure your logic with if/else if/else statements are pretty solid and practice the ability to think of edge cases. This is something I am still working on but I was still able to solve issues in my company just because of type issues.&lt;/p&gt;

&lt;p&gt;Typescript is something I plan to pick up and I feel like it's a great time since v3.5 was introduced recently.  ReasonML is another recent addition which is slightly different from Typescript that's fun to look into if you have the time. I would recommend Typescript since a lot of job descriptions list "React or Angular, Redux, and TypeScript" used in their codebase. As fun as new toys are to play with, you have to understand that there are codebases out there that still have older technologies and it will only benefit you to learn them too. Besides, the underlying concepts are usually the same so when it comes time to pick up something new, you're ready right out of the gate to race ahead.&lt;/p&gt;

&lt;h3&gt;
  
  
  Commit Early, Deploy Often
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AZiiOzDZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/fh3CnHO.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AZiiOzDZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/fh3CnHO.jpg" alt="Try to deploy on Thursdays."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I always had already good habit of making meaningful commits when I first learned to code so it helped me out. It's easy when you're coding solo and pushing up your own code. Situations get complicated when you're dealing with CI/CD tools, multiple branches, working with other developers. Some good reasons to push up your code is so that it gets saved in a secondary location (Github), lets other developers review your code earlier, allows the deployment tools (CircleCI, Heroku, or AWS) to run their tests for code errors, and gives your managers a chance to test the features out and give you feedback quickly.&lt;/p&gt;

&lt;p&gt;Strangely, I was averse to the permanence that all my code was saved on the interweb forever and I would look back and regret that it wasn't the best code I had written. News flash to the perfectionist developers out there that probably suffer from this but you can find consolation knowing that you can just make new branches and new changes to merge to that branch.&lt;/p&gt;

&lt;p&gt;Maybe you really are a perfectionist so commands to delete feature branches are useful. To delete a local branch, try &lt;code&gt;git branch -D &amp;lt;branch name&amp;gt;&lt;/code&gt;. To delete a branch on a remote like Github, try &lt;code&gt;git remote push --delete origin &amp;lt;branch name&amp;gt;&lt;/code&gt;. Those will help you clean up a bit if you want more control. &lt;/p&gt;

&lt;h3&gt;
  
  
  Write Helpful PR messages
&lt;/h3&gt;

&lt;p&gt;I feel that most companies will have some guideline on this but mine was not as stringent. I just wrote about the things I did for the PR and the branch that I am submitting the PR to. So my PR might look something like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yQ5l868w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/tSkRXnN.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yQ5l868w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/tSkRXnN.png" alt="A sample PR description."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When first working on a new feature, it was extremly helpful to send an initial push to the repo with a change to the changelog/release notes. From there, you can make a checklist for yourself using &lt;code&gt;- [ ]&lt;/code&gt; which you can start checking off after your finish certain tasks. This helps you keep track of your progress and helpful for other people to see you're really cranking it out. This tip was something I picked up from Lambda School since we had to document what features we built during different project sprints. From my medical days, there's a saying that goes: if it's not documented, it didn't happen. I guess that one stuck to me pretty well.&lt;/p&gt;

&lt;p&gt;I found that having the &lt;code&gt;- [x] PR target =&amp;gt; development&lt;/code&gt; really helped me in messing up from merging into the wrong branch. I'll admit that I did accidently merged into the master branch before but it was resolved pretty quickly.&lt;/p&gt;

&lt;p&gt;At the end of 2 weeks, it's also easy to go back and see all the PR's you made and quickly see what you did. There's the Jira, Trello, or Asana board for this usually but being able to reach into the PR and see the exact code I've pushed up helps with explaining the exact features I made for that sprint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing Can Be A Pain
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bQbeT06R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/5oH8dni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bQbeT06R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/5oH8dni.png" alt="Try Cypress testing."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We learned Jest and Enzyme in Lambda School but we used Cypress at the startup. It was another testing tool I had to learn but luckily it was an end-to-end testing library and was easier to pick up in my opinion rather than unit testing or integration testing. I learned that if my tests didn't pass, it wouldn't get deployed since CircleCI build would fail for any failed tests. Sometimes writing the tests took me longer than writing the actual code. With things to learn like fixtures, stubbing, and learning the testing library syntax, it's like learning another complete code language.&lt;/p&gt;

&lt;p&gt;If you're able to, familiarize yourself with the different testing libraries. I recommend Jest, react-testing-library, and Cypress. I've read and picked up that Enzyme was falling out of favor since it's convoluted. Nonetheless, many companies are still using it as far as I know. Start writing tests for your apps and know that it is time well spent. I also heard that testing the UI is much more difficult than other tests. Learn what you can and I'm sure your company will have guidelines and other devs to help you out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Be Open To Adopting New Tools
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jmW0Sn23--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/QdL4Zio.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jmW0Sn23--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/QdL4Zio.png" alt="GitKraken UI."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It was toted that every great developer should know how to work the command line. While I do agree with that, I also agree with learning things that can help you move faster too.  See the cool tips below on how I learned the command line to do most of what I need during my average workday. However, my lead developer recommended that I try GitKraken. I was averse to these kind of softwares (GitKraken, Git Tower, Github Desktop) since it simplified the process and would not prepare me well for my dev job. After taking my time and learning the command line codes, I noticed that it's a lot easier for me to click and make changes rather than typing out every single command. Don't forget, you have to look them up sometimes too if you forget.&lt;/p&gt;

&lt;p&gt;Take the case of code reviews where I had to hope on Github and navigate to the PR request and use the Github's side by side file comparison to discern the differences between the old repo and the proposed commits. With GitKraken, I loaded up the tab with the repo already opened, can quickly see the changes in a much easier view, and resolve conflicts much faster.&lt;/p&gt;

&lt;p&gt;It was also pretty helpful for me to quickly see the own code and files that I have maded changes to before making commits and pushing up changings. Let's admit it...it's quicker for me to click on 3 specific files to the staging area and type a commit message in GitKraken than doing it in my iTerm terminal.&lt;/p&gt;

&lt;p&gt;Cool tip: I used the 2 free Udacity courses about Github to learn the ropes. Check out the awesome Richard Kalehoff course's about &lt;a href="https://www.udacity.com/course/version-control-with-git--ud123"&gt;Version Control with Git&lt;/a&gt; and &lt;a href="https://www.udacity.com/course/version-control-with-git--ud123"&gt;Github &amp;amp; Collaboration&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cool tip #2: Checkout DataGrip as a substitute for PGAdmin4. It was a lot easier for me to use and load up.&lt;/p&gt;

&lt;h3&gt;
  
  
  Have A Decidated Developer Browser
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lBifzNeJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/qlJRWbW.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lBifzNeJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/qlJRWbW.png" alt="I use Firefox Developer Edition."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My main browser for checking news, visiting websites, financial managment, and other needs is Google Chrome. The browser I develop in is Firefox Developer Console. Besides your normal chrome browser with all your extensions, I would recommend installing other browsers to develop in as well. Why am I doing this? One, it's another popular browser besides Chrome that gets used a lot and lets you experience very subtle visual nuances that you might not see in Chrome as an example. &lt;/p&gt;

&lt;p&gt;Two, I store all the quick links on my toolbar on it so I have really quick access to the 6 different repos in the company, the Confluence documenation, the zoom channel we usually have standup on, the CircleCI development apps to see when my apps gets deployed, and about another handful of other links that I use daily. You end up saving time since you don't have to dig through your bookmark history for something that you use everyday anyways.&lt;/p&gt;

&lt;p&gt;Lastly, this improves your normal browsing experience on your regular browser since it's not bogged down with all the extensions from your development processes. Imagine loading on about 8-10 other extensions on your main browser when you're not even going to use them during your regular browsing experience. That's a waste of your resources. Put them only on your development browser. Here are some of the development extensions I like: LastPass, ColorPicker, Lighthouse, PerfectPixel, React Developer Tools, Redux Developer tools, and Resize Window and Viewport.&lt;/p&gt;

&lt;h3&gt;
  
  
  Take Great Notes
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--olllD06G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/QTYNrWT.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--olllD06G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/QTYNrWT.jpg" alt="Saves you time in the long run."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I wished that I had taken more notes and started a journal when I first began my job. Since things were moving so quickly, I only managed to jot down useful links about topics that were used in the applications as I was building/fixing them. Regardless, I still do have some great guides and articles written in the official docs or developers that I will always have if the topic comes up again.&lt;/p&gt;

&lt;p&gt;Where did I end up keeping my notes? Messaging myself on company's Slack channel was quick solution but I eventually moved it to my free Microsoft Onenote account. I kept all the company related information stuff including related company notes for myself. If I had taken more notes, it would also make it easier to update my resume along the process and to see how much I have progressed. There's no doubt in my mind that I learned a great deal simply by getting into the production code of the company.&lt;/p&gt;

&lt;h3&gt;
  
  
  Practice Explaning Things Out Loud To Yourself
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NSX-jGZI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/NnyVM0L.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NSX-jGZI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/NnyVM0L.jpg" alt="Self talk."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing we did a lot was having to explain our technical implementation to non-engineers. When you can be concise and clearly explain what you did, this gives a chance for people to put more faith in you. It was Warren Buffett that said a degree in communications is one of the most valuable you can get.&lt;/p&gt;

&lt;p&gt;There were situations in the code where it was quite complex to explain. For example, we have buildings that were considered premium and non-premium and they used different images/files depending on that classification. Instead of explain the logic of how I implemented my super cool pdf extension detector and convert it to an object, I just told them the rules of how it works. They didn't need to know whether I used an object, array, or any other data structures.&lt;/p&gt;

&lt;p&gt;You might have already practiced explaining your code in your coding school or during technical interviews but you should even start talking to yourself if you code solo. It's a helpful skill to develop. I talk to myself when I'm working on algorithms or data structures. I pretend that I'm standing in front of 2 people, one who is technical and another who is non-technical. I feel like if I can explain in a way that they both can understand in their capacity, I've done my job. If they have questions, they'll certainly ask you. Anticipating those questions doesn't hurt your chances either.&lt;/p&gt;

</description>
      <category>experience</category>
      <category>firstdevjob</category>
      <category>thingslearned</category>
    </item>
    <item>
      <title>What I Learned at Lambda School</title>
      <dc:creator>Tim</dc:creator>
      <pubDate>Fri, 22 Mar 2019 19:46:31 +0000</pubDate>
      <link>https://dev.to/timh1203/what-i-learned-at-lambda-school-f1e</link>
      <guid>https://dev.to/timh1203/what-i-learned-at-lambda-school-f1e</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fb1jnj9pl16owhbs4uknp.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fb1jnj9pl16owhbs4uknp.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hello world! I'm excited to be writing my first blog post on devTo. After some deliberation, I've decided to write on this platform over Medium, which I have written &lt;a href="https://medium.com/@timh1203" rel="noopener noreferrer"&gt;posts in the past&lt;/a&gt;. The main reason is that I feel that devTo is a friendlier, developer-centric platform. Let's get started!&lt;/p&gt;

&lt;p&gt;Today, I am writing about what I learned at Lambda School over my 7-month program. Since I started in July 2018, I felt that I have grown so much in such a short time and met so many incredible people along the way. To preface with my experiences before Lambda School, so that you can better understand where I'm coming from, I left my cushy medical job as a pharmacist and tried different business ventures. Long story short, I found that coding was really cool and wished I studied this 8 years ago. I jumped into coding courses and built out small apps to learn and participated in local dev groups around Virginia. At one point, I decided that I wanted to round out my education in web development after about a year of self-teaching. In the span of about a year already, I managed to teach myself javascript, reactjs, nodejs, and mongodb. I knew there was still much more to learn on my path of web development. Therefore, I decided to enroll in Lambda School. I picked up other languages and computer science at Lambda School. It would also make the job search process a lot easier too since they have an awesome careers team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How you overcame struggles while studying at Lambda School? How have you grown personally? Professionally?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Initially, I didn't have many struggles with the front-end modules of the program since I had previous experience with it. Back-end was also familiar but I still managed to learn some new things as well. Things were especially challenging as we moved into the computer science curriculum of the course. The pace was more self-directed and the topic matter was especially challenging. Along the way, we also picked up new languages like Python, Django and C. &lt;/p&gt;

&lt;p&gt;I overcame struggles through a steadfast, logical mindset. I won't tell you it was easy but I will tell you that it's possible if you keep at it. If the challenge was big, I broke it down into smaller pieces and tried to understand them clearly. Once understood, I would piece together the puzzle and get a bigger picture. It also took a tremendous amount of patience to go through videos and topics on the subject matter. Worse comes to worst, I knew my stand-up group and cohort were within reach of a simple direct or channel message.&lt;/p&gt;

&lt;p&gt;I felt that I have grown tremendously in my personal development. I have learned that I can handle problems if I just stay calm. Frustration can limit progress but sometimes helps fuel me to seek more information. In terms of growing professionally, I felt that I have made so many connections while going through the curriculum from the amazing instructors to the ambitious students. I have learned to work better with other engineers when we did Lambda Build Week and Lambda Labs. I learned my own shortcomings and worked on improving those skills.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Walk us through your experience at Lambda. What trials did you come up against, and how did you overcome them?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most of the Lambda experience was guided by the instructors and was slowly tapered with the computer science curriculum. The trial I had to go through was learning to teach myself in a better fashion. I was accustomed to self-teaching at this point but when you're under time to produce code, the story changes. I overcame this challenge by making sure I understood the foundations of the topic well and took my time with them. A thorough understanding helped me when newer variations and alternate solutions came in. If I couldn't take anything away, I would try to at least to remember the basics of the problem presented and the implementation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What helped you most to stay consistent in showing up every day and doing your best?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I attribute most of my success to being well-rested and the recovery time outside of class. It's important to be calm, nourished, and awake for the most learning to take place. Just like Lebron James spends a lot of time recovering after games, I didn't want my performance doesn't suffer come game time. I am not a strong believer in going all in, as it's a quick way to burn out. I have at least learned this much from my medical career.&lt;/p&gt;

&lt;p&gt;In terms of doing your best, it was motivating to see my classmates working daily, which further motivated me to show up too. When I had problems, it felt good to have someone to lean on since we were both wading through the same problem. This was the main difference when I was teaching myself last year compared to attending Lambda School. The community helps a lot and helps keep you on task.&lt;/p&gt;

&lt;p&gt;I want to take this opportunity again for reading. I hope you learned more about me, the school, and web development.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ask me questions about anything! I've finished the full-time program and willing to help you. Interested in joining? You and I will receive $250 on your referral's first day of the full Lambda School program.&lt;br&gt;
Use my referral link: &lt;a href="http://fbuy.me/lqUJh" rel="noopener noreferrer"&gt;http://fbuy.me/lqUJh&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>lambdaschoolalumnus</category>
      <category>fulltime</category>
      <category>fullstack</category>
      <category>webdevacademy</category>
    </item>
  </channel>
</rss>
