After surviving code school boot camp, I thought that the hardest days of learning were behind me. Then I started an apprenticeship at Haught Codeworks.
Let me be clear, code school was not easy. The Turing School of Software and Design has never billed its approach as a painless way to learn web development. We were told from day one that we would have to work harder than we ever had before to learn the skills we need for success within seven months. I was in class for 40 hours a week and put in at least that much time after school working on projects and homework. Still, we had teachers to guide us and help us grow gradually from knowing little to nothing to making full-fledged production applications.
My own apps had placed in the school demo competition and, as I graduated from Turing, I believed I could do whatever was asked of me in the real world of professional web development. I was just a bit ignorant of what that meant exactly.
Haught Codeworks isn’t a place where the whole team is working together on a single project on a single stack. With several clients, developers are all working on multiple projects, each with a separate stack of their own. Every project utilizes the best technology so the developers need to be comfortable in many different environments. The team has to learn and adapt quickly to be efficient and effective on each project.
And, unfortunately for me, the technologies used on these projects are all very different than what I learned in school. Even my old comfortable standbys of HTML/CSS have been replaced by Ruby-injected HAML and advanced SCSS.
I find myself trying not just to understand each complex project but also their underlying language and framework. In school, I created projects from the ground up, starting shallow and stepping up gradually in complexity as I moved from one task to the next. Here, I’ve had to jump into the deep end and learn while treading water and trying not to drown.
Also at school, I never had to worry about installing anything because I was the one who decided what went into each project. Here, it can take a few hours just to get a project up and running as I install all of the dependencies and figure out what issues are associated with those dependencies.
With the help of great mentors here, I’ve started developing a strategy to get up to speed as quickly as I can. Instead of learning first then trying, I have to simultaneously learn while trying. Here’s how I’ve gotten through so far:
- Try my best to read the code and figure out what’s happening - connect it from one place to the next to understand how everything works
- Look at completed projects similar to what I’m working on and emulate those as much as I can until I know enough to write on my own.
- Try to figure it out on my own first, but also ask questions when I hit a roadblock and/or the process of finding an answer is taking longer than it should.
Also, Marty emphasizes that when starting out it’s important to code well over coding fast. As an apprentice, I’ve been given projects that aren’t as deadline-driven as others so, if problems arise, I have the time to figure them out.
I’m grateful for this apprenticeship. I’m learning so much more than new technologies. I’m also learning the developer workflow, best practices of developers and how to manage my time while working remote.
I have lots more to learn and watching the developers here demonstrates to me that I will never stop learning, but now I know how to survive, and keep pushing forward, all while treading water.