Onward and Forward: I’m at Red Hat now!

This entry is part 1 of 4 in the series Joining Red Hat

I’ve been in development a relatively long time and I like to think I’ve come a long way. My career has included a lot of different kinds of work that I’m proud of and learned so much from. I’ve also spent two-thirds of that time at one great, wonderful place: Caktus Group. The people I’ve worked with have been a privilege and much of the work I’ve done has been so very rewarding.

Nothing lasts forever and I want to continue to grow as a software developer. I’m not going to do that in the same environment at this point in my career or my life. I needed something new! I’ve made the tough decision to leave after nearly eight years.

So, onward and forward to new things! Next week I’m starting a new job at one of the most respected companies in the open source community: Red Hat. I’m sure I’ll bump into a lot of people I know from the years, and I’m going to be getting heavily back to my Python roots in this position so everyone can expect to see me at Python meetups again, probably at PyCon, and actively hacking again on old and new projects on my Github, on the open source work I’ll do at the new gig, and I’ll be certainly doing heavy tech blogging again as I’m finding new and great things to learn every day.

It would be cliche to call this bittersweet, but damn is it accurate.

I’m Gonna Hit The Ground Running

This entry is part 2 of 4 in the series Joining Red Hat

I already wrote about leaving Caktus to start a new job at Red Hat and that first day was today. I’ve never really had this kind of new-hire orientation before, having spent all my previous software career as a freelancer and just transitioning from a contractor to employee at my last company. I didn’t know what to expect.

I’ve been thinking a lot about what this transition means for me as a developer, obviously. I’m making than a transition in companies here. I’m moving back to full-time Python work from years as one of those Full-stack web developers. While software always has many moving parts I’m transitioning from an environment with multiple diverse client projects to working on more focused, coherent works to deep dive into. Moving from Ubuntu to Red Hat Enterprise Linux, MacOS to GNOME, thirty coworkers to over 10,000.

So it was time for a change and clearly I decided to just take them all at once. Software development is inherently change and new: by virtue of being built everything you make is new, even if similar to the things that came before it. You always learn something new, even as you grow in the experience you can bring to every new project. I have to ask myself two really important questions about how this is going to work:

  • How can I make all the twelve years of experience I have make me as successful as possible applying it to such a new environment and such new kinds of projects?
  • How can I absorb as much of the new experiences I’m going to have in the next few years and avoid being either overwhelmed or leaving too much on the cutting room floor when adapting that experience into my developer-mind?

There might be good answers to those questions, but I don’t quite have them yet. This is something I’m going to get wrong, but not totally wrong. I’m going to make some mistakes and learn to make some adjustments and I’m not going to be phased when that happens. If I can expect course corrections later, then the best thing I can do now isn’t to decide exactly how I’m going to do great, but to decide how I’m going to keep doing better.

I love software because I love solving problems. Knocking a new job out of the park is just one more problem.

My Software Job Transition Strategies?

This entry is part 3 of 4 in the series Joining Red Hat

I’ve been spending a good deal of the last two days preparing mentally for starting a whole new challenge as a developer. New things aren’t new to me, but this is different and big enough really call for some Deep Thoughts ™. For one thing, I’ve made a big move from the world of Python web development to totally other Python work and while web development has never been the only thing I do, it has been the only work that paid the bills.

That transition isn’t one that bothers me or daunts me, though. Instead, I’m thinking about transitioning to the scope of the work I’m getting into. For a long time, I juggled multiple clients and client projects every day, so no single project usually took up most of my time. Every developer juggles time through the day, but exactly how that works in each company and on each project varies a lot. I was looking for a place that I could really focus in a way that I haven’t for a long time. I think I found that, but now I have to deal with the consequences.

What exactly happens when a developer experiences a big shift in working scope and all the temporal expectations around the work we do?

One of my concerns making this change is the way I on-board to all the new work when it is something of a shakeup compared to the work I’ve been used to doing. I don’t want my acclimation to get in the way of the first tasks I’m giving or, worse, to get in the way of other people on my team. So that’s the word of the day: acclimation.

I need to focus my first couple days on maximizing my ability to acclimate to new tools, new projects, new workflows, and new teams. Everything is changing all at once and I’m going to have lots of questions and lots of problems I need to reach out to people for, or that will be answered or solved as a natural part of the on-boarding process. If any of that information slips my mind or has to get drilled into me repeatedly before it sticks then I’m taking up more of my time and someone else’s than I need to, so Transition Strategy #1 is that I will Take All The Notes.

 

Notes are only as useful as you can get out of reading them. Every day there’s going to be a running log of the things I learn, the things I try to do, everything I observe. That journal is going to get routinely, through the day, rolled into a living outline of the questions, tasks, and understanding I accumulate over the first few weeks. At any time those notes need to be a snapshot of my brain because it is going to be an overwhelmed brain and it needs all the help it can get.

Of course, those notes are going to be far from perfect. I’m going to make mistakes in them and I’m going to understand things wrong when people explain something new to me, so my notes will reflect mistakes as well as understanding. Transition Strategy #2 is going to be failing as fast as a person, not just a rule for software. I’m going to ask someone early before I waste more time than I should. I’m going to take advantage of the experience and knowledge around me to get up to speed and become valuable as soon as possible. I believe my reaching out as a new team member is a good investment for the team and won’t let things like fear of looking dumb to keep me from getting a helping hand.

With notes and with people I’m going to get a ton of information and I’m going to have a lot of knowledge to sift through. That’s inevitably going to take time no matter how much I try to reduce it, be more efficient, or offset my blundering with careful planning. I’m going to decide that’s okay. It is expected, it’s a normal part of a transition, and I’m not going to get held down further by frustrations that I’m not adjusting fast enough or well enough when I’m really just progressing in a totally expected pace with totally expected problems. Transition Strategy #3 will be patience, both for the time this transition takes and for me to figure it out.

Two Weeks Into the New Job: What’s Working and What Isn’t?

This entry is part 4 of 4 in the series Joining Red Hat

Not counting my orientation I’ve now completed two weeks of work in the new job as a Quality Engineer at Red Hat. There’s been adjustment and learning and getting to know a new team and HR paperwork and fun and rough edges.

I think its a good time to take a step back and figure out what’s going well and what isn’t and how to turn some of the later into the former.

So, let’s start with the good. What’s been going well at the new job?

  • The product I’m on the QE team for is built using the back-end and front-end web technologies I’ve been using for a decade in some areas (Django) and at least years in others (React). Without even peering inside this has already given em some insight that’s made the transition and some of testing a lot easier. Familiarity is helpful even when I’m not directly building the product, it turns out.
  • At all levels I’m clearly supported in my transition and see the same support going to other recent additions, so I feel pretty comfortable experimenting and exploring where I feel I need.
  • Respect is going both ways. Even as the New Guy I don’t feel like I can’t speak up to argue against a point. The rest of the team is immediately accepting of my input as if we’d been working together for months. I think that goes both ways, because I definitely need to rely on the assumptions of their knowledge and when I reach out I’m confident of getting what I need.

But, a new job is still a new environment, a new workflow with new expectations, and a differnet technology stack and practice. With all the positives and the remarkably smooth transition there’s still bound to be some rough edges.

  • I’m set in my ways after a decade building the same kind of products with largely the same stacks and teams! The move into a team that uses much  of the same technology also means a move to a team that uses that technology differently. That doesn’t mean wrongly, of course, but I am a developer with strong opinions about the ways I do things. I think there’s more room to push for the cases where I’d like to change something for subjective reasons, but so far I’m still finding the accepted edges around which I can make those pushes.
  • Quality Engineering is a top-down view and I have deeply ingrained experience with a bottom-up view of building software. I’m not yet used to focusing on production and production-like environments rather than light developer environments for my day-to-day work. There’s some overhead involved in essentially a QA role that, as a developer in my previous role, I have really strong urges to strip away. Removing those layers would be a detriment to the whole point of the end-to-end tests we need to do, so I have to fight it.
  • The deep knowledge and established practices of Quality Assurance and Engineering is pretty foreign to me as an explicit pursuit. Sure, I’ve tested my software and I’ve worked with QA professionals. What I lack is a lot of the cultural experience that this niche of the software industry has built up, just like the niches I’ve been a part of in the past. That’s something I can learn from a vast selection of material, but a lot of it will take time to absorb through working with more experienced folks and just gaining my own experience slowly.

Of course, I hope that I can continue to have more of the positive experiences than the negatives experiences. So far, that has absolutely been in the case. I’ve already made good contributions to the work and I’m sure I’m in a positive to do some great work. That’s exciting! I’m not under any illusions that I’m walking in like a rock star. I know there’s an enormous amount I have to learn, but I’m likewise realistic in that I understand my own experience is still bringing a lot to the table.

It feels good to be confident. Is also feels good to have so much to learn.