Apprenticeship : Tools for Staying Grounded
I came into an apprentice position with Revelry keen to grasp and execute the day to day of a software engineer. Coming from a background in freelance design and development, with very light back-end experience, I was prepared to focus on building my engineering chops. From comprehending and improving large-scale, well-established applications to crafting interfaces for new clients, opportunities for learning the ins and outs of engineering have abounded. I want to share what I’ve found to be invaluable during the learning process as a new software developer.
Stepping into a role as a software developer has been my most daunting professional experience. I stepped into the role knowing that I had a lot of learning ahead of me. At times I grew frustrated, thinking I was far behind and that I needed to know everything at once. I learned that the only way that I would be happy with my progress was by practicing patience. I had to learn not to be too hard on myself, and accept that I was growing, in order to strike a happy medium. One of the most challenging and most motivating things about working in software development in general is that we have to learn constantly. It is an ever changing arena, and staying up-to-date is demanding. Don’t burn out. Remember, you’re only human (not a computer).
Know When to Ask for Help
On the same token as having patience is staying humble and knowing when to ask coworkers for help. Working in an agency setting means that there are deadlines, expectations, and clients waiting, even if you are in a learning phase. Whether pairing with a fellow engineer (remotely via Screenhero, or just side by side) or throwing my problem into Slack, recognizing when I need to reach out for help is essential. Having a team that is invested in each other’s success is crucial to the success of the team as a whole. Just recently, I decided to reach out after spending too much time determining whether I should handle a Rails migration with raw SQL or through Active Record. I asked for guidance in our engineering channel in Slack and watched a debate unfold between our senior engineers. The issue was quickly resolved and I wound up learning more than I would have had I spent another half hour resolving the issue on my own. When in doubt, ask for guidance. Your senior engineers with decades more experience are there to help.
Own Your Process
Forethought is required to efficiently solve problems that you are presented with, even when you’re still learning how to solve that specific problem. Developing a process for learning and working in software development has made me a more confident and efficient developer. When I’m fixing a bug, the first step is always to understand the issue by reproducing it, then moving on to debug it. If it’s a multi-step fix, I will write down the steps and record the files and lines where the fixes need to happen. When I begin working on a pre-existing application, I thoroughly read through the stack, look through the gemfile, check out the schema, and sift through the mocks to view the different application flows. Revelry has given me an appreciation for process, as we are constantly working on refining our own inter-agency affairs. Process provides both a structure for success and a method for staying transparent and accountable.