GET EMAIL UPDATES FROM POWERTOFLY
By signing up you accept the Terms of Service and Privacy Policy
BROWSE CATEGORIES
GET EMAIL UPDATES FROM POWERTOFLY
popular

24 Companies Still Hiring During COVID-19

[Last updated on August 27, 2020]

With unemployment and job-security-related anxiety on the rise, it's only natural to feel concerned about landing a new job in the current climate. But COVID-19 hasn't impacted all companies equally.

READ MORE AND DISCUSS Show less
CircleCI

"How to communicate on a remote team: tools and templates for engineers"

Below is an article originally written by Hannah Henderson, Engineering Manager at PowerToFly Partner CircleCI, and published on March 31, 2020. Go to CircleCI's page on PowerToFly to see their open positions and learn more.

Communication is hard, communication on a remote team is harder. Fortunately, it can be as effective on a distributed team as it is on a colocated one, if not more so. This post delves into ways our team has learned to counter the two biggest challenges of remote communication: understanding tone and upholding a collaboration framework.

Although this post is written from my point of view of as an Engineering Manager, the practices described and templates linked are valuable for anyone on a remote team: they are the result of collaboration, ideas, and retrospective takeaways from people throughout our Engineering organization.

Getting to know a distributed team

Hyper-communication goes a long way towards ensuring that folks understand their peers' intent. This is especially true early in a groups' formation when trust, the hallmark of an effective team, is first getting built. To lay that foundation of mutual understanding, spend time getting to know the individuals on your team, and helping them get to know each other.

Do this by:

  • Conducting asynchronous introductions to collect information and set expectations.
  • Implementing these agreed-upon standards in synchronous sessions.
  • Adjusting guidelines as-necessary based on input from the team.

Keep in mind that on a highly-distributed team, it can be difficult to find overlapping working hours on everyone's calendar. This overlap is synchronous time. Synchronous time is valuable, and should be treated as such. Know what you're hoping to achieve before entering synchronous interactions. Use your asynchronous time for focused individual work and to prepare for synchronous interactions.

Asynchronous introductions

When your team is forming, use asynchronous time to collect information, set expectations, and allow folks to define their own boundaries.

  • Make sure you're familiar with the company's existing communication expectations. Stomping all over folks' toes is not a great way to build relationships. If you're new to a team, consider sending out a short message explaining that you'll be asking lots of questions while learning the ropes. If you use Slack, update your status to say something similar.
  • Send out a detailed questionnaire to learn what the team needs (or, at the very least, what the members of the team think they need). If you're a manager stepping into a new team, I recommend sending out some variation of this form to solicit as much input as possible and to suss out the lay of the land.
  • Define a team manifesto. Write this as soon as is reasonably possible. Broadly, this document should roll-up your understanding of what processes exist in order to codify healthy practices and value-signal. In the past, I've boiled this down to two sections:
    • People (please make sure you're familiar with everyone's write-up) - I expect teammates to get to know each other as people with rich lives, curious interests, and priorities outside of work. I signal that I really care about this bit by populating my own profile first, and listing everyone's name as its own section.
    • Team Process (you can skim this, it's good as a reference) - The frameworks defined in our team entente are important, and I sincerely hope we follow them. That said, process for the sake of process doesn't add value; I'm happy when we achieve our guidelines 80 percent of the time.
    To see how I've set loose benchmarks around topics like Async First communication, feedback preferences and programming values, check out this template.
  • Prepare for synchronous time. The logistics of organizing face-time on a distributed team can be difficult (especially during the month plus of global daylight savings misalignment). Ask folks to fill out a Team Schedule and remind them to populate their personal profile in the team manifesto.

Synchronous relationship building

Synchronous time is critical to the storming, norming, and performing phases of team development. Use this time to get to know your direct reports and to create space for folks on the team to get to know each other.

Note that asynchronous communication doesn't go away, it, along with synchronous communication, is further-established in your Communication Framework (below).

  • Build in time for water cooler chit chat. Remote teams don't cross paths at lunch or in the hallway. Create space and synchronous time to connect. This may mean padding meetings with time for banter; it definitely means creating chat groups for shared interests (which are also async-friendly). We have #random, #wordnerds, #keyboards, #babies, and #bread, to name a few.
  • Set up scheduled pairing. Randomly assign a pairing partner, and rotate partners once a week until everyone has paired with everyone else at least once. At the beginning of each matchup, the members of each pair should set up (best effort) three hour pairing blocks every day for the week. Sometimes, "best effort" only equates to an hour of pairing. Particularly on teams with a wide timezone spread, actually scheduling sessions ensures that folks are able to connect during their working hours.
    For us, after a few rotations through the whole team, folks were comfortable reaching out and ad-hoc pairing. During one of our retrospective meetings, we decided to stop scheduled pairing.
  • Make a team channel and share status updates. (This is also async-friendly.) We have a private team channel where folks post all manner of status updates: their good mornings when they hop online, notes about what they're picking up, lunch breaks, hot takes and random observations (debates about the plural form of "octopus" and whether or not an Xbox qualifies as an essential shelter-in-place item spring to mind).
    We use JIRA and Namely, and have integrated Kanban board updates with the channel, as well as weekly updates from Namely about folks' PTO and birthdays.

Setting up a communication framework

On a remote team, it is especially easy for information to fall between the cracks. It is important to set up process that acts as a communication forcing function. There's no need to run around after folks trying to extract information and context, let your process be the heavy. Our team takes an Agile-inspired approach with a recurring two-week cycle of meetings.

3-31-20-Planning Chart.jpg

Pro-tip: use the availability collected during asynchronous introductions to pick meeting times.

Meetings for knowledge transfer

Scrum-flavored methodologies are popular because they tend to work. That said, on a remote team the focus of each of these classic meetings is a bit different: they're all much more geared towards teasing out information disconnects and misalignment in advance.

Our standup is at the end of the day for our European teammates and in the morning for our West Coasters. These engineers won't overlap again for 20+ hours.

  • Standup (30 minutes, daily). This daily check-in is our only guaranteed synchronous time on any given day. Instead of a 5-15 minute session, we block off 30 minutes so there's time to properly exchange context and also to chat. We review a Kanban board, and, importantly, the standup leader shares their screen and takes update notes on every card as an alignment forcing function. These notes often come in handy during cross-team collaboration and even during incidents (rather like a well-written git log that actually includes the "why".) Schedule standup back-to-back with other regular team meetings so that you can roll straight from one into another, and get out early if time allows.
  • Planning (1 hour, weekly). We groom our backlog by Friday each week, and set up asynchronous points poker that everyone is expected to fill out by our Tuesday planning meeting. This allows us to spend the Planning meeting using estimates as indicators in deciding what treatment is appropriate for each card. Use this process to tease out context. Don't always ask the junior person to explain why they think something will be hard. DO ask a senior engineer that has given a high estimate to share what they know about the dragons in that space. Your goal is to expose information, not people. By the end of Planning, the cards in our Next Up column are ordered by priority and, we hope, are generally correct, and shovel-ready.
  • Retrospective (1 hour, fortnightly). An excellent time to check in on team processes and to decide how they can be changed to better suit the needs of the team. We have a Slackbot reminder asking folks to add topics to the meeting agenda. As team-appropriate concerns are raised in 1:1s, I will often seed the retrospective document with them. These conversations have led to larger discussions on topics like when and how to give code review (at what point is asking for a complete overhaul OK? Not OK? How do we push back without escalating disagreement?) as well as pairing preferences and retrospectives of on-call escalations. As much as possible, the questions, concerns, and thoughts of the folks on the team should drive the content of this meeting.
  • Big Picture (1 hour, fortnightly). This meeting reserves space for Product to keep Engineering in the loop about the grander vision of what we're doing and why. It should provide broader directional context for folks on the team so that:
    • They understand the value of their work.
    • They're better-equipped to make decisions that roll up into the company's goals.
    We sometimes use this meeting to learn about the ways our progress is tracked. For example, our PM might give a crash course in user adoption in Segment, or I might run the team through the way our velocity is surfaced to executives. Depending on the current needs of the PM and the team, this meeting can also be repurposed. It's a reserved window of synchronous time. It can be canceled, used for post-incident review, or turned into standup with extra time for coffee or fun.

For each of the above meetings, there's a more detailed breakdown in this Two weeks in the life of Foo Team meetings document, which is worth a skim. It includes recommendations on what to include in invite bodies (especially an agenda and a link to meeting notes stored in a single folder for improved discoverability), many examples of specific questions to ask, and several templates.

Calendar tips and tricks (because time zones are hard)

Configure your calendar to do some heavy lifting for you. I use Google Calendar, and have gotten tons of mileage from:

  • Adding my working hours. This feature notifies folks that when they send invitations that fall outside of my office hours.
  • Turning on world clock. Mine is configured to show the time in California, Japan, and Germany. When I click on a window in my calendar, the world clock displays local time for everyone at that window.
  • Adding my Pagerduty rotation to my calendar. I do not want to be notified by Pagerduty unless I'm being paged. I live by my calendar, so this helps me see when I am on-call without the extra notifications.
  • Adding the Zoom Scheduler to my calendar. Because 99.9% of my meetings are virtual, they all require a meeting room link. This annoying-to-configure extension puts a giant, handy "Make it a Zoom meeting" button on my draft calendar invites.

Conclusion

Effective remote communication requires intentionality. By adopting the practices in this guide, picking and choosing what works for your team, it's possible to establish the foundation of trust and communication framework that enable remote teams to flourish. The resulting communication will rival that of a collocated team, and will be inherently better for context-sharing and information discoverability.

CircleCI

"How to successfully work from home: strategies for remote work"

Below is an article originally written by Rosalind Lutsky, Copywriter at PowerToFly Partner CircleCI, and published on March 19, 2020. Go to CircleCI's page on PowerToFly to see their open positions and learn more.

Remote work is top of mind right now for many employees, teams, families, and companies suddenly faced with a very new work situation. For many people, this is the first experience they've had working from home for an extended period while also trying to figure out how to establish a new normal.

On top of the standard challenges involved with switching to a fully-remote setup, many people are also dealing with a host of unexpected changes – kids who need to continue learning while schools are closed, pets jumping in to join meetings, partners and roommates talking from the next room. We're also worrying about the safety and health of our friends and families. It's a lot to deal with.

CircleCI has a fairly distributed workforce – about 40 percent of our company works remotely and several of our teams are completely remote – but we still work collaboratively every day, regardless of location. Over the years, many of our remote folks have come up with a host of useful tips on how to stay productive and happy as a fully remote employee.

These tips aren't meant to solve all of the new and challenging issues associated with working from home, but we do think that the strategies that our more experienced colleagues have developed can inform us as we quickly adjust to this completely new reality.

Here are the best reads by our employees about working from home:

  • How to communicate on a remote team: tools and templates for engineers - Communication is hard, communication on a remote team is harder. Fortunately, it can be as effective on a distributed team as it is on a colocated one, if not more so. This post delves into ways our team has learned to counter the two biggest challenges of remote communication: understanding tone and upholding a collaboration framework.
  • Maslow's hierarchy of remote worker needs - Remote work is an art and a science - it's iterative, and not necessarily something that can be perfected overnight. That being said, there are certain areas of focus that can help you figure out what works best for you more easily, which is exactly what Customer Engineering Operations Analyst, Liene Verzemnieks breaks down in this post.
  • How my distributed team communicates so no context is left behind - A number of our engineering teams at CircleCI are mostly or fully distributed. One such team, led by Engineering Team Lead, Marek Nowak, has consolidated their four main tips for keeping their team productive and successful: overcommunication, pairing/collaborating, Slack usage, and meetings. This post describes how they've learned to use these tips to thrive as a fully distributed team.
  • Tools for effective remote pairing - The Plans and Pricing team at CircleCI is 100% remote and pairs almost 100% of the time. While this might seem like a challenge, the team has developed a number of strategies that make them consistently successful at pair programming. In this post, we break down some of our best tips for remote pairing that other engineering teams trying this for the first time might find particularly useful.
  • What it means to be remote-first vs. remote-friendly - There are tools and strategies that teams can use to keep everyone feeling supported, connected, and empowered - even at a distance. In this post, Product Manager, Rose Jen, details how CircleCI works to create a culture that puts remote employees first.
  • What to expect as a remote CircleCI employee - We often get asked in interviews what it's like to work for a distributed team. In this post, we asked engineers from across the organization to describe their experience, and share some tips for working as a fully remote employee.
CircleCI

"How to build confidence as an engineer: advice from CircleCI engineers and execs"

Below is an article originally written by Rosalind Lutsky, Copywriter at PowerToFly Partner CircleCI, and published on March 4, 2020. Go to CircleCI's page on PowerToFly to see their open positions and learn more.

Confidence is different for everyone – there's no one correct definition or expression of confidence. For one person it's built over time by successes and failures, and for others, confidence is natural but needs to be tempered and sharpened by time. It's also something many people struggle with that requires a lot of hard work and self-reflection for them to harness.

It's an abstraction that humans have to cope with every day.

We interviewed six CircleCI engineers at different stages of their career to find out what confidence meant to them and how it helps them succeed at work. A common thread we found is that confidence is a necessity for engineers. It's a requirement to make sure that they're not only building things that work, but that they also have the right systems, tools, and processes in place to make success repeatable.

"You want an engineering system that's basically the equivalent of a factory," said CircleCI VP of Platform Mike Stahnke. "You put in raw materials at one end, you get an output out the other end that is in a known shape and has known properties. That's one of the things that's always interested me about automation, and in particular CI. It's the factory floor for software building. The confidence you want in there is that I can make a change and it doesn't change the overall form of the thing I'm building on the other side, that it's still within all the quality measurements. And that's pretty much what CI is: a confidence-gathering process that's automated."

For CircleCI Software Engineer, Jacque Garcia, sharing knowledge and working through problems with others (and boxing) helped shape her confidence as an engineer.

"Pair programming is definitely really useful there too," she said "It's easy to want to solve something on your own, and just take hours and hours really trying to figure it out. When it could've been easily addressed by just asking someone, 'Hey, have you encountered this problem?'"

"Before pairing, I try to really understand what the problem is. Of course, there are times when you just have no clue. And that's fair, as well. I think that's also part of gaining confidence. You gain confidence by asking questions, and not being afraid to ask for help."

While it's impossible to land on a universal definition of confidence, there's no denying that it's key to building great software. We hope that these stories have shined a light on how others develop, sharpen and harness confidence while they code.

You can read the other posts in the series from Rob Zuber, Michael Stahnke, Stig Brautaset, Glen Mailer, Jacque Garcia, and Mike Marquez.

Loading...