Article summary
As with many other college seniors, this year is going to be crazy for me. I have to make a lot of big decisions that will have a huge impact on my life. Thankfully, I was able to get one of those big decisions out of the way early: where to work once I graduate this spring. I started at Atomic Object this January, and it’s exciting to finally be working in the software industry. There are plenty of things to learn and some really difficult challenges, but so far, working at Atomic Object has been rewarding and enjoyable.
What I’ve Learned
This was my first real web development project, and I got to drink straight from the firehose. Atomic teams share ownership of their entire codebases, so I had to learn the build tooling, the Rails codebase on the backend, and the web application on the frontend. This meant learning the linux command line, Ruby, Rails, RSpec, Cucumber, ERB, VIM, jQuery, HAML, SCSS, etc.
I started off by spending some time going through the Rails tutorial. This tutorial covered the basics of the Ruby language, Rails, RSpec and REST. I found this tutorial to be overwhelming at times, but it gave a lot of good information that brought me up to speed with the different terminology used in Rails development. After going through this tutorial, I felt like I could communicate with my team about our Rails project.
Next I jumped into pair programming on some new features and bug fixes. I was able to practice what I learned in the Rails tutorial in a very real way. My team gave me pointers about some of Rails’ hidden features, including the different naming conventions that Rails uses to tie the project together. Along with that, they showed me how the project was structured and where to find stuff in this large codebase.
To develop my efficiency in Ruby, I solved problems on Ruby Quiz. These short challenges allowed me to practice the basic Ruby functions, like list manipulation using .map() and .select(). Solving these problems forced me to explore the Ruby docs and get more familiar with the language.
I also used Ruby Quiz to practice Javascript. Since the problems posted on this site are not specifically tailored for Ruby, I could choose any language for my implementation. I think I’ll refer to Ruby Quiz if I ever need practice in another language.
What Was Challenging
It was a challenge to decide where to start my learning. Between Ruby, Rails, Javascript, and all the other web development tools used on my project, I had more than enough to keep me busy. College prepared me to think through problems, but it did not expose me to all the “tools of the trade” needed for web development.
While learning all these knew technologies, I made this process a lot more complicated by also learning VIM. Not only was I in an unfamiliar work place, coding in an unfamiliar language in the unfamiliar web platform, I was now also using a completely foreign text editor which forced me to actively think about all my keystrokes. My learning experience would have been a whole lot better if I didn’t accidentally delete half my code by a few errant keystrokes.
I also felt the pressure to contribute to my team’s success. While I was going through these tutorials, I tried to help my team with bug fixes and new features in our current project. It was hard to follow what the issues were because I didn’t know the Rails environment, but this forced me to think at a more conceptual level instead of worrying about the implementation details.
What I’ve Enjoyed
I liked being able to jump between tutorials and real-world scenarios. I was able to use the concepts I learned and try to apply them to my team’s project. I’m hoping this will help me remember all the little nuances of Rails since I get to experience them in actual projects.
Even though I don’t have the expertise that my team has, I still feel like I can make a contribution the the project I’m working on. I can still participate in the problem-solving and give my thoughts which may help the find a solution. Even just asking how something works sheds some light on what might be causing some sort of bug.
Final Thoughts
My time so far at Atomic Object has been challenging but rewarding. Most days I have to struggle to find where the bugs are in a very large codebase, but with enough effort, I can find and fix the bug and go home satisfied. Being a software developer can be challenging, and learning to become a software developer might be even harder, but so far, I’m enjoying this job.