How to fix the ugly focus ring and not break accessibility in React

header image

Creating beautiful, aesthetic designs while maintaining accessibility has always been a challenge in the frontend. One particular barrier is the dreaded “:focus” ring. It looks like this:

focus outline on a button

After clicking any button, the default styling in the browser displays a focus outline. This ugly outline easily mars a perfectly crafted interface.

A quick Stack Overflow search reveals an easy fix: just use a bit of CSS, outline: none; on the affected element. It turns out that many websites use this trick to make their sites beautiful and avoid the focus outline. Continue reading “How to fix the ugly focus ring and not break accessibility in React”

What is the best way to hire QA Engineers?

engineers working

If you are a leader in engineering, hiring is one of your most important responsibilities. It can also be one of your most demanding tasks. It can be challenging and expensive to attract talented engineers that meet your qualifications and are a good fit for your organization.

Have you ever considered looking outside of your traditional hiring pipelines to find engineers; perhaps inside your own company? There are people you see every day who don’t yet have the title of engineer but are ready and willing to learn. Here at Eventbrite, we’ve had several folks move from our customer support teams to engineering. We’ve found that high performing customer support representatives (CSRs) have skills well suited to engineering.

In January, I wrote How To Move From Customer Support to Engineering in 5 Steps. I promised to follow up with a post for leaders in engineering who want to support these career moves. Read on to discover how to find the best QA engineers for your team.

Customer Support Representatives make excellent QA Engineers

At Eventbrite, we’ve observed that roles in Quality Assurance (QA) are a good fit for those coming from customer support. Here are four reasons why you should take a closer look at your hidden talent pool.

Customer empathy

When I was in customer support, I would invite software engineers to sit next to me to shadow my calls with customers. One time, a customer called in to get help using a particular feature. During the call, the software engineer observed the customer’s difficulty with the feature because of a small UX flaw in the product. After the shadowing session, the engineer immediately went to his desk to fix the flaw. He saw firsthand the customer’s pain and did not want any others to suffer the same way.

This type of customer empathy helps build delightful, user-friendly products. However, encouraging customer empathy among development teams can be difficult. Most software engineers don’t have the time to talk to customers or to shadow your support team’s calls.

Folks from customer support speak with customers every single day to help them understand how to use your product. They have built a wealth of knowledge about all the various user flows, edge cases, and sticky situations your customers encounter. They have spent hours teaching a customer how to use the more difficult parts of your product, and have been on the receiving end of a tirade from an angry customer encountering a bad bug. Finally, they know what makes your customers happy and what makes them want to search for a competitor.

This profound amount of customer empathy makes people in customer support exceptionally well equipped to help improve your product. Why not give them a voice by hiring them into a software development team? There they can recommend product solutions and suggest changes in project requirements. Their inclusion will help to create delightful experiences the first time around, not only after hearing user feedback.

Product expertise

CSRs are complete experts in your product. Just as they know your customers, they also know your product through and through. They know all the quirks, nuances, and flaws — and how to work around them. Many CSRs have your product entirely memorized too. I once saw a CSR walking a first time customer through their account. She was guiding them on setting up their first event page and how to use our advanced features. She did this all while walking around the office with no computer screen in front of her. She relied only on her memory to lead the customer step by step through links, pages, forms, and buttons to publish their event. She knew the product inside and out.

This deep product knowledge makes CSRs excellent at identifying test cases. They are especially good at finding test cases that your software development teams might otherwise have found as critical bugs in production.

Critical thinking skills

Most folks in customer support don’t have degrees in computer science, but what they do have is a unique strain of troubleshooting expertise. CSRs often have to think of solutions and workarounds to appease a customer on the spot. Picture this: a CSR is on the phone with a client who is experiencing a bug. A thousand people are waiting impatiently to get into the event. Even in this high-stress situation, the CSR can calm the customer while searching for a solution to the issue. This way of working requires a particular type of critical thinking skill that doesn’t bend under pressure.

Another benefit of this expertise is an unparalleled ability to anticipate problems proactively. CSRs have seen every manner of bug, design flaw, and user error in the past; they can help your development teams anticipate these problems when building new features so that you can develop a firm foundation for your product.

It’s easy to hire CSRs to engineering

Hiring someone from customer support into engineering is so much easier than hiring externally. You don’t have to go through a lengthy and expensive hiring cycle. You know that the candidate is a good fit at the company because they already work there. Moreover, you won’t have competing offers from other companies to entice your candidate away from you.

While it is easier to recruit internally, there are a few things you should consider when trying to attract talent from other parts of your organization into engineering.

Provide learning opportunities to those outside engineering

Many people outside of engineering want to learn coding basics, but they might not know how to get started. When I was in customer support, Eventbrite offered me the opportunity to take a very basic online HTML course which sparked my interest in programming. It also recharged my commitment to building my career at Eventbrite after I felt it slow down after some time in my role in customer support.

There are many ways to provide learning opportunities to those outside of engineering. You could run a half-day workshop on the basics of Python, SQL, or Javascript, or provide Udemy subscriptions for the team. Alternatively, you could offer shadowing sessions for others to learn what a “day in the life of an engineer” looks like. We’ve also seen success with educating non-technical folks at Eventbrite about our engineering processes. One of our engineering directors, Eyal Reuveni, recently hosted a popular series of talks that included “Software Engineering Concepts, Explained Non-Technically,” “How We Write, Test, and Release Code at Eventbrite,” and “How the Internet Works.” You’ll be able to identify and recruit those who were most excited by these learning opportunities.

Encourage tangential work

These are tasks that are just outside the scope of your regular assigned role. As a CSR tangential work for me was anything that wasn’t answering phone calls and emails. I was able to triage bugs, which exposed me to our internal tools as well as SQL, databases, logging, and even the command line interface. As a QA Engineer, my tangential work was finding ways to start to make an impact in the code. I started to fix small bugs, write Python scripts to automate bug statistics, and pair program with my teams on building small features. This work wasn’t in the job description for my QA role, but it helped keep me engaged at work. These bite-sized opportunities were an excellent way for me to try out a software engineer role. Switching from customer support to full-time software engineer seemed impossible, but by taking on these bite-sized pieces of work, I was able to build experience and interest in the career path.

It’s also important to note that you should provide opportunities for people to do this work during their work hours rather than expect them to work overtime or outside of work. Reward high performers with 10% of their work hours spent on tangential work. By encouraging this type of behavior in your company culture, you’ll see greater retention of employees. High performers will choose to look for internal moves that align with their career growth rather than look externally.

Reach out to high performers in other roles

Your coworkers on the other side of the office may not know that opportunities in engineering exist for them. They may not know that you are willing to hire people into engineering without a technical degree; that was the case with me. I learned that you could be an engineer without a technical degree for the first time at a Girl Geek Dinner. At the event, I heard a software engineer speak about her experience moving into engineering from customer support at her company. My mind was blown; before this, it had never occurred to me that this was even a possibility.

Spread the word by proactively reaching out to high performers to gauge their interest in a career change. Assure them that they would be well supported in this transition along the way. Make sure you have a plan for how to onboard them and provide them with a mentor (check out our resources on the topic here, here, here, and here).

Final thoughts

You might be wondering if all of these benefits are worth the risk of hiring someone who doesn’t have previous experience in a QA role. I’ll let our VP of Engineering, Galen Krumel, sum up why it’s a lower risk to hire a QA Engineer internally from customer support than it is to hire one externally:

“Working on the front lines and helping customers solve their most difficult problems is a challenging job. You can only really be successful at this if you are passionate about the customer experience, understand the product deeply, and are driven to solve difficult problems. These are the exact same traits that we look for when hiring QA Engineers. And when they’ve already established a track record of getting things done, and have a strong set of relationships inside the company, it takes away nearly all of the risk of hiring an unknown entity from the outside.”

Beyond being less risky than hiring someone from the outside, looking inside your company to find engineers can be far easier and more cost-effective than looking externally. Also, as we’ve learned, customer support representatives hold an abundance of knowledge about your product and customers. High performing CSRs will look elsewhere if their company doesn’t keep them challenged and some studies even show that average CSR turnover is between 30-45%. If these CSRs leave your company, they take all of the invaluable knowledge about your customers with them (and potentially to your competitors!). Keep that knowledge with your company; even better, retain that customer-centric knowledge within your engineering team where it will be put to good use as you build your product.

Do you have experience hiring engineers from other departments at your company? Let us know in the comments below or reach out on Twitter (@snazbala).

How To Move From Customer Support to Engineering in 5 Steps

When I explain that I did a career move from customer support to full-time software engineer at Eventbrite, I’m often met with dubious looks: “Wait, what? How is that even possible? How did you do that?”. They are even more surprised to learn that I didn’t go back to school or even take a coding boot camp.

With the right strategy, you don’t need a technical degree to become a software engineer. Read on to learn about several steps you can take to move from a customer facing role at your company into engineering.

A pipeline to Engineering within Eventbrite

I’m not the first to do a career move from customer support into software engineering. At Eventbrite alone, eight people have moved to technical roles in engineering from our customer support team. This pipeline has also been beneficial for our dev teams in many ways. For instance, we’ve seen an increase in customer empathy when a former customer support representative joins, which usually helps to boost quality in our product development. In fact, roles in quality assurance (QA) are an especially good fit for those coming from customer support. This step in the pipeline can be a good choice for those looking to later move to full-time software engineering roles. (For more info on Eventbrite’s QA philosophy, check out Andrew’s post on rethinking quality).

As a high performer in customer support, you too can move from a customer facing role at your company into software engineering. However, you won’t get there by continuing to do only your assigned role. You need to take some actions to put yourself into a position to succeed.

A step by step approach

Imagine this conversation: an engineering manager is chatting with her team about a new role she’s opening up for a QA engineer to join. What if at the moment she announced this, her team immediately piped up with “We should hire {insert name} for that role, {he/she} would be fantastic at that!”? How do you guarantee that your name is the one brought up?

For me, the five steps outlined below were crucial to making sure I’d be recognized when a hiring opportunity came up for a QA engineer position. I was later able to make another transition to a full-time software engineering position because I continued these practices of putting myself into a position to succeed.

Step 1: Be a top performer in your day job

Before everything else, dedicate yourself to excellence in your core role. You want to be recognized as a highly qualified individual. Maintain a high customer satisfaction rating while still answering a high number of customer queries. Your company will likely be more willing to provide you with new opportunities in engineering if you are a top performer in your current role. Top performers are smaller risks for lateral moves, and no company wants to lose high-potential talent to another company.

Step 2: Build relationships in engineering

You’ll need to get friendly with engineering so that your name is top of mind when new opportunities are available. Grab a 1:1 lunch with individual developers and ask them about their path to software engineering. I talked to a mix of engineers: QA engineers, senior software engineers, junior software engineers that had gone through coding boot camps.

Gain some name recognition by leading a hackathon team and presenting your team’s work to the company. You don’t need engineering experience to do this. In fact, I led a project with a cross-functional team of support members, engineers, and marketers having no technical expertise at all. It was a small project, but it allowed me to work with engineers and to show my interest in engineering projects to the company. Plus there were plenty of engineering leaders watching the project demos who afterward recognized my name.

Step 3: Leverage your product expertise

Your product and customer expertise are invaluable to product and engineering. Leverage this knowledge by sharing it with your engineering teams and advocating for your customers. Reach out to engineers to ask for help when a customer encounters a bug. Alternatively, tell a product manager about your ideas for small product improvements that would enhance the customer experience.

The first time I did this was intimidating, but I was surprised to find that the engineers on the other side were more than happy to help. By doing this, you’ll establish yourself as a trusted customer expert. Engineers and product managers will begin to turn to you when they have questions or ideas for how to build the product, and later they will want to have your expertise on their teams full-time.

Step 4: Invest in your technical learning

Prepare yourself for a transition to engineering by learning the basics of whatever programming language your company uses. There are abundant resources for you to learn new technical skills. I started with Python, Javascript, and SQL by taking free Codecademy classes online. If your company already has a good learning culture (check out Randall’s post on supporting junior engineers), ask to attend peer-led training or to participate in a mentorship program to supplement your learning. Show everyone around you that you invest in your learning by spending time outside of work developing these new skills. Even a consistent 30 minutes per day can be very effective. If you demonstrate a growth mindset by dedicating time to improving yourself, you will also build trust with engineering leaders who will be more willing to disregard your lack of formal technical education.

Step 5: Advocate for yourself

Carefully look for situations that might help you, today or later on. Even bite-sized opportunities can be beneficial in the long run, but you must advocate for yourself to take them on and reap the rewards.

While I was still in customer support, I looked for an opportunity to get involved with our Support Triage team. That team’s responsibility is to investigate incoming bug reports and send them to engineering. It wasn’t an official position, but I saw that they were overwhelmed with their workload and I volunteered my help. I was able to contribute to the team by investigating bugs, but I also got to learn about our bug process, try out new tools, and talk to engineers. Through this work, I built a reputation for submitting well-investigated and detailed bug tickets. That helped me stand out when a QA position was later opened up.

Another example of advocating for myself happened after I was in QA for a few months. I asked for help from my manager to learn how to fix small bugs I reported, resulting in dedicated pair programming time. After that, I asked for small feature projects that I could pair on with my team’s developers to continue building programming skills. Some time later, I asked my leaders in engineering to move me to a full-time software engineering position. They helped me make the transition with little hesitation. Even though I have no formal education in computer science, I had proven to them that I was invested in my learning and capable of being a software engineer.

Final thoughts

My collegiate track and field coach’s favorite piece of advice to me was to “Put yourself in a position to succeed.”

In the running world, this meant pushing hard during practice sessions to get a little bit faster, stronger, and better every day. This way you allow yourself to be successful on race day when it matters the most. You had already put in miles of effort and hours of mental practice to support a personal best at the finish line. This same strategy applies to lateral career moves as well. Take the time now to prepare and put yourself in a position to succeed so that you are ready for new opportunities when they arise.

I hope that the steps above will help you get closer to achieving your career dreams of moving to software engineering from a customer support position. Of course, beyond these five steps, there are many other details to discuss such as communication strategies, technical learning tips, and how to create a support system.

If you have any questions or want to chat more about how I made this career move, feel free to reach out. Leave a comment below, or you can also reach me at @snazbala on Twitter or through my website at saharbala.com.

P.S.: Engineering leaders, keep an eye out for a follow-up post. I’ll cover why you should hire QA engineers from customer support and how you can create a supportive culture for these lateral career moves.