First Two Weeks as a Software Engineer
About a week ago, a friend of mine welcomed me back to the world of the gainfully employed. Last week I started working as a Software Engineer at Real Gravity, and it’s been a whirlwind of Ruby, Agile Development, ssh keys, config files, spec tests, commits, and lots more. I’m really excited to be part of this team, and happy that I get to build my programming chops working with a great group of people on coding challenges I’m really interested in.
Where am I and what am I doing here?
I’m on the Distributed Computing and Analytics team, and I am going to be working on some things I’m super excited about: metrics through monitoring and events. What that really means is I’m going to help build out some internal libraries which will route and parse event messages, and will feed summaries of that data to a visible metrics and monitoring system so we can see event data in real time as they flow from embedded video players to our servers. I’m learning quite a bit about our log message and events system using Rsyslog and zeromq, which are message routing and transportation for linux systems. I have an awesome mentor at work who’s spending lots of time explaining the code base and message routing things to me, often two or three times. I’m challenging myself to ask many questions, and everyone is checking in with me and making sure I am getting up to speed without getting lost or overwhelmed.
What is the work environment like?
We practice agile development, which means we have a standup meeting every morning at 10am. The nice thing about our meeting is it’s all done in a chat room through Hipchat, and we just enter in what we’ve been working on today and yesterday, and if there is anything blocking us from our work. I like the chat room version of it since we have a record of things we worked on for the week, and it keeps this meeting short and sweet. Every code change we do (with the exception of a handful of config file changes) gets its own short-term branch, and we commit and push to that branch frequently until the code is ready to be merged into the master branch. Through this process I learned how to merge the master into my branch, so if anything else changes, I can deal with merges and conflicts before my branch is ready to be merged. That way, when someone is doing a code review and my code is ready to merge, it’s easier to do an automatic merge from github. We talk a lot about the structure of what we’re going to build before we even get to writing code, and much of that discussion is informal - it’s an environment where we’re encouraged to ask questions and bounce ideas off one another as long as we’re available to answer questions. I’ve also been really happy with how welcoming and open everyone is - there are differing ideas about ways to implement code or projects, but there’s lots of pro and con discussion about it, and egos are laid to the side. We all communicate to make sure we’re on the same page.
Our engineering team is small, so I’ve at least had conversations with all the engineers and nearly everyone in the office. They are a great group of people, and we make each other laugh on a daily basis. Common interests and hobbies have made for some really interesting conversations. I feel like I fit in and am in the right place, people-wise and technology-wise.
What about those gender issues?
I’m the only female engineer, and one of 4 women in the office; two women introduced themselves on my first day and let me know how excited they were to have another woman in the office. In the first week, there were a couple mentions of my gender in relation to the fact that I’m in an engineering role; since women engineers are still pretty rare, people were excited not only for a new engineer to mold, but also the fact that I happened to be female. I think one or two days in my first week, I caught them apologizing for swearing; I have a tendency to curse like a sailor at times so they figured out quickly that swearing doesn’t bother me. I don’t feel like I’m treated any differently because of my gender. I don’t feel out of place or uncomfortable at all in this team, and I feel like I can speak up if someone says something that makes me feel uncomfortable.
What happens in the first week?
I really really wanted to get my dev environment totally setup on the first day, but it spilled into the second and third day. A couple days ago I was still mucking about with my ssh config that’s been not working as expected. Ah well - I’m planning on eventually getting my dev environment config files and whatnot on github or chef or something so it goes a little more smoothly next time around (which hopefully won’t be for a while). One thing I did have ready to go were my ssh keys and ssh config, so that helped me get connected to github and our servers pretty quickly. I had also played around a bit with Ruby in the weeks before starting, so at least knew how to get a basic ruby environment setup to allow me to install gems and run a framework. Another helpful thing was my mentor giving me a copy of his git and irb configs - he’s customized a bunch of stuff, and whatever customization I don’t like, I can change. The first three days were really exhausting, with lots of meetings, code and infrastructure overview, discussing code and infrastructure in depth with my mentor, and basically just sitting in on anything that could prove useful to me down the road. On Thursday, I finally had a chance to write some code! I helped work on some tests for our existing events processing helper class, which really helped me understand how that code library worked. There were commits and code reviews, changes, more commits, and finally my test was merged to master. I also reviewed and merged a pull request or two, which is a great way to learn. I’d review the request, make notes about what I didn’t understand, and ask questions.
The first week at Real Gravity was a bit like the first week at Hackbright, with a little more independence since I’m not pair programming. There’s a rush of information to absorb, lots of reading up on new systems and new code, lots of questions. I was pretty exhausted at the end of every day, and realized I probably need more than 7 hours of sleep at a time now that I’m driving my brain pretty hard.
Do I really know enough to do this?
I definitely do! I also know enough to know when I don’t understand something or have gaps in the way something works, and I end up asking lots of questions. Since I’ve become pretty comfortable with Python, making a jump to Ruby wasn’t so difficult. Most of the things I don’t know are syntax specific, and I can just look those things up. Towards the end of the first week, my work mentor asked me how I thought I was doing, and I answered that I thought I was doing OK, but wished that I were able to be a bit more productive more quickly. He assured me that he was pleased with the progress I was making, and that I was learning quickly. I tend to push myself a little harder, and that’s generally a good thing to do, since it keeps me motivated and learning.
How hard is it?
It’s the fun kind of hard, where I’m pushing myself to understand, putting the pieces of the puzzle together, making connections. I’m enjoying it, though I know that I’m definitely pushing my capacity for knowledge, much like I did at Hackbright. I would like to get past the point where I’m drained from learning - it’s a bit like drinking from the firehose right now, so I’m tired every night and Saturdays are recovery days. I only have myself to blame for that though - it’s kind of how I learn, and I did give everyone the OK to throw information at me in an (organized yet) willy-nilly fashion. I also have to get used to working again with distractions - all the engineers’ desks are clustered together, so sound bleeds in the small space and I have to figure out what to pay attention to. I’m going to pickup some good headphones this week so I can shut some stuff out, since earbuds just aren’t cutting it.
Overall, I’m really happy I made the decision to work at Real Gravity. I’ve got some fantastic mentorship and smart, knowledge-sharing friendly coworkers to help fill in the gaps. I’m going in a direction, career-wise, that I wanted to be going in, much sooner than I would have anticipated.