The Inaugural Monthly Retro

Reflecting on My Apprenticeship

Malina Tran
Tech and the City
6 min readJun 26, 2016

--

I feel very fortunate to be a resident apprentice at 8th Light. Very few companies are intentional about supporting new programmers and fostering a learning-oriented environment. Few places would pay people to simply learn, even if they aren’t generating revenue and helping the company’s bottom line. Economically, the apprenticeship is a smart strategy. By investing in people, the company is also growing a steady stream of well-equipped programmers and consultants with a shared understanding of quality code.

In the past few weeks, as I’ve been acclimating to L.A.’s relatively chill pace of life and meeting up with friends, this question always pops up: “So, what do you do at work?”

To which I respond with either:

a) “Building a tic-tac-toe game”
b) “Getting paid to learn things,” or
c) “I feel like I’m back in school, honestly” (or a combination of these responses).

Whichever one of the above, my response tends to lead to befuddlement among family members and friends.

But it’s all true. So far, the apprenticeship feels like an extension of coding school (which was a short three months) and independent study. I have mentors to help guide me and other apprentices at various stages giving feedback on a daily basis. Rather than topically learning concepts, I feel like I’m diving deeper into them. What I do on any given day is largely self-determined, but within the purview of my mentors and the larger task at hand. But I still set goals and reflect on achievements and blockers through standup, virtually and in-person. I scratch whatever itches, particularly when it’s in the parameters of my project (which is yes — a game of tic-tac-toe).

As I am entering into my fourth week, I’d like to broadly reflect on my progress, lessons learned, and challenges that I’ve faced. And so begins the first of my blog’s new mini-series, “End of Month Retro.”

Week by Week Overview

  • Week 1
    I was tasked with doing Ruby Koans, which requires you to learn about aspects of the language by writing code to make tests pass, and write a tic-tac-toe game in Ruby that would adhere to SOLID principles and TDD. I also started reading Sandi Metz’s seminal book on Ruby, Practical Object-Oriented Design in Ruby (aka Le POODR), and writing one blog post for each chapter.
  • Week 2
    Same as last week, except I finished Koans and POODR. I did my first standup video and we had Mini Conf in the afternoon with 8th Light CEO Paul Pagel. It was a nice combination of technical talks and internal company updates.
  • Week 3
    More tic-tac-toe, but I scratched some of the code to do true TDD.
  • Week 4
    Incorporated Minimax and made some design changes to tic-tac-toe. Started reading The Pragmatic Programmer.*

*I know, it’s past tense to correspond with the other weeks. But that’s this week’s goals!

What I like about 8th Light is the motto: “Software is our craft.” It’s similar to Etsy’s engineering team motto, but I ‘m sure they like touting it since “craft” is a double entendre — representing both software and the independent vendors who use their platform.

Reflection

Cue Christina Aguilera’s hit single. In addition to a weekly summary, I would like to capture the emotional aspect of undertaking the apprenticeship program.

The Good Stuff
This has been a pretty cool couple of weeks! I like the workplace culture and feel really excited for the future, particularly as I am learning more about myself, what I know and don’t know, and how I operate and learn. In terms of what works for me, I’ve been tracking my TODOs on a Trello board for task management. I need to get into the habit of doing Pomodoro again for time and personal energy sustainability. I’ve been writing a post just about every day and it’s been a positive experience of reinforcing lessons and reflecting. I previously had a blog during my time at coding school (wow, my picure is a favicon!), and it’s nice getting into the groove of learning/reading and writing. Also, I think I have a knack for blog titles. #humblebrag

As the weeks have progressed, I am learning an incredible amount of the theory and practice behind object-oriented programming. While I feel like I’ve started from zero (we touched upon OOP in a single lesson at GA), I gradually feel more confident in my knowledge and execution. On the more technical level, I am building a better habit of writing tests first and breaking apart the functionality of methods to be more testable units. I enjoy refactoring.

Challenges
There are two main things. First, getting into the TDD zone has not been easy. I think part of it is not knowing what I can and can’t do, what is and isn’t considered TDD. This has felt like it has become easier, which is good, but I still feel rather slow so I spend a good chunk of time outside of work hours working on my game and blogging. This leads to my second challenge, which is fleeting moments of imposter syndrome. This can be pretty debilitating for me. But I think it’s natural, when you’re a beginner, to feel overwhelmed by the sheer amount of knowledge that you currently don’t possess.

Always Be Improving
All in all, I’ve enjoyed being intellectually challenged and stimulated, and simply doing things that make me uncomfortable. There’s a saying: “I don’t know is how you grow.” So true and so real! Here are some goals that my mentors have helped me outline:

  • Work on setting realistic deadlines and communicating them if they adjust. The action item for this is to do an end-of day update. This is something I’d like to work on since it’s hard for me to project the duration of certain tasks. Often, being delayed is more due to encountering unexpected errors than me being a procrastinator. Particularly this week, I was intentional about updating whether I would complete a task, giving an update, and meeting a deadline.
  • If having difficulty with code, submit a pull request and send to my mentors. This is a lot more useful than asking general questions and is a good way to track feedback.
  • Pairing with others and engaging with others as much as possible. Also, asking questions is part of this. Everyone has been incredibly helpful and I learn a lot about how things are done. There is so much value to pairing! I’ve done this a few times already, but I think it’s a good habit to build. I’d like to be a better pairing partner and be more communicative about my thought process and intention.

What I love is that everyday I feel like I’m pushing myself. I am in this perpetual cycle of uncertainty and it’s humbling, but it has been a source of motivation. There isn’t a day when I don’t feel as if I’m throwing myself into the gauntlet. I really appreciate that my mentors are understanding with me making mistakes and patient with my progress. Learning is so fundamental to the process of being a programmer.

And that’s what I like about coding and being in an environment of coders: there is always, always much more to learn. It’s not a job in which you learn a set of skills and then coast for the rest of your tenure. It’s a long and challenging journey (8.5 months of apprenticeship, but a lifetime of writing code!). And I need to harness my energy and sustain myself for the road ahead by being engaged, striving for improvement, and having a positive outlook.

(PS: do I need permission to use the 8th Light logo?)

--

--