What I've been up to...
Submitted 2 months ago
Well once again, it's been a long time since I've posted! I've been busy at my job as a software engineer, and have even gotten a promotion from Engineer I to Engineer II. I'm even working on a plan with my manager to get to Engineer III! In the time since my #100DaysOfCode and #144HoursOfCode days, I've learned so much and have really grown as an engineer.
The surface area of projects and technologies my team touches is large, which means that I've had lots of opportunities to learn new things. This can sometimes be overwhelming, but part of thinking like an engineer is being able to break large and complex problems down into small, more manageable ones and outlining clear questions when you're feeling stuck. When I was learning to code I worked in isolation and didn't have anyone to bounce my ideas off of, but more and more I'm sharing my architectural opinions and bringing up valuable questions and concerns in technical plannings with my team. On the topic of technical plannings, they're vital especially for big projects because they allow the team to bounce ideas off of one another and think of multiple approaches and possible snags so that we can effectively navigate through them. They're also really good practice at communicating technical topics clearly and in a way that other folks can understand. When I was working alone while learning to code documentation was my lifeline, and it definitely continues to be as I work on an engineering team. One cool thing I've been able to do is start contributing to documentation to help other people, and there are several ways to do this. In addition to the standard wiki article, there are research documents, doc blocks for functions, and PR reviews. Signing off on other peoples' work is daunting, but I've also gained confidence that I ask helpful questions and that my opinions can be insightful and helpful to my team members. Pulling down and testing code on my own machine is another way that I gain confidence in my code reviews. Another area that I've improved in (and am also still working on improving even more) is asking for help. I didn't have team members when I was learning to code, and now my team is quite small and doesn't have more senior folks on it so I can feel guilty taking time away from my team members' work to ask for another set of eyes. Ways I'm approaching this challenge include knowing that asking my teammates for help can also help them gain skills, utilizing a specific meeting we have twice per week to bring up interesting technical problems, and reaching out to subject matter experts outside my team (scary!) when their expertise lines up with my problem.
Even though I've advanced a lot, the impostor syndrome that you hear about is definitely real and I'm not immune to it. I hold myself to a really high standard and can be hard on myself, so I have to challenge some negative self-talk at times and sometimes even look back through past work to remind myself that I am capable - this job is hard but I have broken down tricky problems before and can do it again. We use a matrix of major skill categories at work to determine which engineering level (engineer I, engineer II, engineer III, and so on) you should be at and the ones I'm most confident in are:
* communicating, collaborating, and having good working relationships within and outside my team
* seeking to understand/understanding the big-picture goals for a project and basing technical decisions/opinions on that
* being open to suggestions/feedback and demonstrating that I can implement them
The ones that I'm working on relate to my nuts-and-bolts technical skills - which makes sense because I'm in an Engineer II role, which is learning-focused. To help solidify these skills I've put together a learning plan filled with topics that I want to become more quick-on-the-draw with. I've also got plans to research a couple of specific topics deeply to become a subject matter expert on them, which will allow me to be an important resource for my team.
In terms of updates to this website, I've let it languish over the past couple of years and I wish I hadn't. I'm glad I let myself spend time on things other than coding (coding for at least an hour every day outside of work is a big commitment), but the site could absolutely use some updates and has accumulated some tech debt in my neglect. One of the biggest issues is that it was accumulating thousands of spam comments on the blog posts because there was no prevention measure in place on the form. To fix that, over the past couple of days I added Recaptcha to the comments form and also deleted all comments because most, if not all, of them were trash. Implementing Recaptcha itself was not very time-consuming thanks to the magic of the recaptcha gem here, but the entire update was non-trivial. I've got a personal computer now and it didn't have any gems installed on it, nor several homebrew packages that I needed. First I started installing older versions of the gems which were specified in my Gemfile, but that caused a lot of issues as many of the gems were outdated and started tripping over one another. I fared better once I removed the version specifications in my Gemfile and installed the latest version of everything. Next I also had to remember how to do things like use the rails server and rails console commands and deploy to Heroku (which also required some setup). Heroku also informed me that my Heroku stack was nearing its end-of-life and that I needed to update that as well. But we're here now, on the other side, with a working site (I definitely crashed it with one deploy - using rails console on the Heroku server gave me a helpful enough error message to proceed), working Recaptcha, and no spam comments.
Going forward website-wise, I'd like to do some major style updates, update the link to my resumé, and add an updated photo and info to my About page. I'd also like to make it so that I receive a comment on a post, I get an email so I can know to check it out. I'm in the middle of learning React with Kent C. Dodds' Epic React course, so it'd be cool if I could find a way to practice that as well. That's all for now, but I'm setting a reminder to come back in a month (and every month going forward) to keep this place freshened up!