My plan to become a better developer in 2019.
Tags: rails, career, productivity, beginners
Published: 2019-01-22 17:14:12

---
title: My plan to become a better developer in 2019.
published: true
description: 
tags: ruby-on-rails, career, productivity, beginners 
cover_image: https://thepracticaldev.s3.amazonaws.com/i/gzhtf34ktcgr2e01pgv3.jpg
series: 
---

I know what you might be thinking: "It is almost February and the cliché New Year's resolution posts are still rolling on my timeline (now on dev.to)." And I do not blame you! But even that I do not normally take part of the New Year's resolution fever (normally I end up frustrated for not keeping them afterwards) this year I felt that I needed one, that I needed to formulate a good plan if I wanted to see tangible results by the end of the year. 

##The reason

Looking back at 2018, it was a year in which I established myself at my current (first) job as a Web Developer for a small IT consultancy company in Los Angeles, I got familiar with a lot of new web technologies and 'best practices', and I was part of the top Grow with Google applicants awarded with a full scholarship to the [Mobile Web Specialist Nanodegree](https://www.udacity.com/course/mobile-web-specialist-nanodegree--nd024) by Udacity.

Even that it does not sound like a bad year, the lack of tangible results made me feel defeated. I still did not have **a decent portfolio**, I did not finish most of the **online courses** that I started,  I was not contributing to **open source projects**, I did not know much about **TDD**, I was not writing enough **blog posts**, etc... 

Am I the only one who feels this way? How do the other amazing developers do it? How many years of my life do I need to spend my weekends coding to be a good developer?  

I knew I had to do things differently, but how?

Then, I did some research... 

First, I found that I was not the only one who felt that way. Erik Trautman explained on [this post](https://www.thinkful.com/blog/why-learning-to-code-is-so-damn-hard/) the multiple phases and difficulties of learning how to code. I realized that I am currently on the phase that he calls **The Desert of Despair**: 

>When you progress into the third phase, the scope of knowledge balloons wider. You now need to understand what tools to use, what languages to learn, underlying CS fundamentals, how to write modular code, object-orientation, good style, and how to ask for help (to name just a few). Every trip to Google or Hacker News takes you down another set of rabbit holes and overwhelms you with more things you don't know but feel like you should...

>Even if you're able to get some apps running, it's hard not to feel lost in the greater scheme of becoming a true professional. It's difficult to measure your progress. How do you know what you need to learn or if you're even learning the right things?

Also, Quincy Larson described perfectly my situation on his [tale of learning to code](https://medium.freecodecamp.org/a-cautionary-tale-of-learning-to-code-my-own-eddb24d9d5a7): 

>But as an individual, with so many options out there, it’s really hard to decide what to learn. I know because I was that dog circling around an intersection, chasing one car after another. A good programmer’s skill set can be described as T-shaped, with shallow knowledge in many areas, but deep knowledge in at least one. But after months of stress and hard work, I was shaped more like an underscore.

Second, I found that there was a way out. Luckily, Erik Trautman and Quincy Larson not only described my situation perfectly, but also suggested a way out. This is what they suggested: 

1. **Have a goal**. I realized that I was trying to learn too many things at once. I needed to write down my goal and learn to say 'no' to those interesting things that can be unproductive and distracting. 

2. **Find a path (write a plan)**. I needed to write a plan that will lead me to achieve my goal. This way I can decide which curriculum to follow and stick to it.   

3. **Focus**. I believe that this post will help me to keep my sanity and stick to this plan even when it gets difficult. I need to constantly trust my judgment and remember why I am writing this today. By sharing this to you I am publicly committing to follow this plan and write the results of it at the end of the year.

##The goal 

Going back to the T-Shaped type of programmer. I would like to have a good understanding on general Web Development concepts and technologies, but I would like to have a deeper knowledge on **Ruby on Rails**.

I have multiple reasons for choosing **Ruby on Rails**, but in order to keep it short, I just need to say that working with Ruby and RoR made me realize that I wanted to write code for a living (even after completing a CS degree). For more reasons of what makes Ruby on Rails so much fun to work with you can look at the [Rails Doctrine by DHH](https://rubyonrails.org/doctrine/). 

In conclusion, my goal is to become a better Ruby on Rails developer and eventually [land a Rails job](https://thoughtbot.com/upcase/videos/landing-a-rails-job) (remote, side-project, or agency work).

##The plan 

I decided to divide the plan into quarters. That way it will help me to stay focus on what I need to learn and have a good visual of the projects that I want to finish. 

1) I will start with some Web Development concepts, mostly the ones that I left inconclusive from last year. 2) and 3) I will start working on Ruby on Rails using [Upcase](https://thoughtbot.com/upcase/) by Thoughtbot and their [apprenticeship program](https://github.com/thoughtbot/apprenticeship/blob/master/onboarding-packet.md) as a guidance. 4) I will get some familiarity with Vue.js and put it all together on a final project.  

###Q1 - Web Development

####Objectives
* Improve Design skills
* Prototype monthly projects with Figma
* Improve GIT workflow
* CSS Grids and Flexbox
* SCSS
* Webpack Fundamentals
* Improve problem solving skills with Ruby
* Review Data Structures concepts. 
* BEM - Block Element Modifier
* 7-1 Pattern
* Write at least one post per month. 
 
####Resources
* [Design for Developers](https://frontendmasters.com/courses/design-for-developers/) by Sarah Drasner
* [Design for Developers](https://thoughtbot.com/upcase/design-for-developers) by Thoughtbot 
* [Mastering Git](https://thoughtbot.com/upcase/mastering-git) by Thoughtbot 
* [CSS Grids and Flexbox for Responsive Web Design](https://frontendmasters.com/courses/css-grids-flexbox/) by Jen Kramer
* [Advanced CSS and SASS](https://www.udemy.com/advanced-css-and-sass/) by Jonas Schmedtmann
* [Webpack 4 Fundamentals](https://frontendmasters.com/courses/webpack-fundamentals/) by Sean Larkin
* [DS and Algorithms Masterclass](https://www.udemy.com/js-algorithms-and-data-structures-masterclass/) by Colt Steele
 
####Projects
- Finish Personal Website (Portfolio). Lighthouse scores 90+
- Build 2 websites for a friend, business, non-profit. Lighthouse scores 90+

####Weekly Commitments
- Practice at least 4 Codewars Katas
- Study Resources related to project from 30 min to 1 hr a day. 
- Work on Projects for 5 - 10 hr per week.

###Q2 - Ruby on Rails (part 1)

####Objectives
* Deeper understanding of Ruby
* Understanding Fundamentals of TDD
* RSpec
* Build features like: Uploads to S3, Auth0, email transactions. 
* Deployment with Heroku.
* Deployment with Capistrano.
* Go to at least one Ruby LA meeting. 
* [Go to RailsConf](https://railsconf.com/)
* Write at least one post per month. 
 
####Resources
* [The Playbook: Video Edition by Thoughtbot](https://thoughtbot.com/upcase/the-playbook-video-edition)
* [Build Airbnb with Ruby on Rails by Code4Startup](https://code4startup.com/airbnb2)
* [Test-Driven Rails by Thoughtbot](https://thoughtbot.com/upcase/test-driven-rails)
* [Fundamentals of TDD by Thoughtbot](https://thoughtbot.com/upcase/fundamentals-of-tdd)

####Projects
* [Ruby Challenges by Thoughtbot](https://thoughtbot.com/upcase/ruby-challenges)
* Build Web Application using Ruby on Rails.
* Deploy Web Application

####Weekly Commitments
- Practice at least 4 Codewars Katas
- Study Resources related to project from 30 min to 1 hr a day. 
- Work on Project for 5 - 10 hr per week.

###Q3 - Ruby on Rails (part 2)

####Objectives
* Build features like: User Identification with SMS, real-time messaging, payments with Stripe, searching.  
* Clean Code and Refactor
* Write at least one post per month.

####Resources
* [Build Airbnb with Rails tutorial pt-2](https://code4startup.com/projects/build-airbnb-with-ruby-on-rails-level-2)
* [Intermediate Ruby on Rails by Thoughtbot](https://thoughtbot.com/upcase/intermediate-ruby-on-rails-five)
* [Refactoring by Thoughtbot](https://thoughtbot.com/upcase/refactoring)
* [Advanced ActiveRecord Querying](https://thoughtbot.com/upcase/advanced-activerecord-querying)
* [On Writing Software well by DHH](https://www.youtube.com/playlist?list=PL9wALaIpe0Py6E_oHCgTrD6FvFETwJLlx)

####Projects
* [Rails Testing Exercises by Thoughtbot](https://thoughtbot.com/upcase/rails-testing-exercises)
* Add new features to previous project.
* Refactor Code. 
* Improve Web Application Performance.

####Weekly Commitments
- Practice at least 4 Codewars Katas
- Study Resources related to project from 30 min to 1 hr a day. 
- Work on Project for 5 - 10 hr per week. 

###Q4 - Vue.js and Final Project. 

####Objectives
* Review and improve JavaScript skills.
* Have a good understanding of Vue.js
* Use Vue.js on Rails project. 
* Contribute to Open Source project.
* Write at least one post per month.  

####Resources
* You Don't Know JS. 
* [JavaScript from Fundamentals to Functional by Bianca Gandolfo](https://frontendmasters.com/courses/js-fundamentals-functional-v2/) 
* [Introduction to Vue.js by Sarah Drasner](https://frontendmasters.com/courses/vue/) 
* [Advanced Vue.js by Evan You](https://frontendmasters.com/courses/advanced-vue/)


####Projects
* [30 Days of Vue](https://www.fullstack.io/30-days-of-vue/)
* Create Application with Rails API Back-End and Vue.js Front-End.

####Weekly Commitments
- Practice at least 4 Codewars Katas
- Study Resources related to project from 30 min to 1 hr a day. 
- Work on Project for 5 - 10 hr per week. 

##Conclusion

As I mentioned before, by sharing this with you I am publicly committing to follow this plan and write the results of it at the end of the year. 

This guide is not definitive and I want to learn from you, so please let me know if you have any suggestions or advice. 

Thank you and wish me luck!