Senior Software Engineer (C#, Backend Web, Azure)

USA Remote or Reno, Nevada Full-time Allows remote

Compensation: $100,000

Do you do your own dishes? We've got a job for you (and it's not dishwashing ;-) ).

Do you put them in the sink and expect someone else to do them? Move on, please.

Do you get pissed (in a professional way) when someone else leaves their dishes in the sink?  Please apply!

TrainerRoad is looking to expand our engineering group. We're looking for smart software engineers who "get things done." We’re interested in remote candidates in the USA or candidates interested in working in our Reno office.

Areas of work include ASP.NET MVC Backend, API, Workers, Micro Services, MS SQL Azure, Azure Queues/Tables, Azure Blob Storage, SignalR, and ASP.NET Core (on our roadmap).

We're looking to hire: 1x Web Backend Developer

Web Development

You'd be joining other engineers who are focused on the backend of our website.

The backend team is the hub between our apps (iOS/Android/PC/Mac), front-end website and data storage. We have a massive amount of data, and it's very likely that you might queue up tens of millions of items to be processed quickly and efficiently. 

You'll also manage integrations with external APIs. You'll need to do all of this while not breaking our current system.

Cool Things we Do

  • Every PR has a set of unit tests and automated UI tests run against it.
  • Every PR is code reviewed.
  • We have a dedicated QA team to manually check your PR (it requires four testers to sign off).
  • Every PR that is approved is automatically deployed (CI).
  • We've got a beta system that has a flow of production data that helps you develop and test your code without worry of breaking things.
  • Everything is hosted on Azure. There's plenty of dev/beta/test servers and databases to use.
  • The web team has its own Product Manager.
  • We run two-week sprints.  The web team reviews, estimates, and discusses all sprint issues before they are free to be worked.
  • We often pair program.
  • The majority of our engineers are remote.
  • We have a front-end team that works in Angular 2+ (meaning you won't have to do UI work).
  • We have a skilled design team that handles the HTML/LESS for the website (again, no UI work for you).

Who We're Looking For

We want smart engineers who get shit done! Not only do you have to be smart, you have to be pragmatic.

Let's say you need to paint a room white.

Smart and Pragmatic Engineer: A pragmatic engineer fills up a sprayer (rather than use a paintbrush), gets to work, and makes sure they don't paint themselves into a corner.

Smart Engineer (but not pragmatic): A smart engineer who's not pragmatic might design a system to change the color of the room in just 30 seconds.  Sure, it would take 2 months to build the system but we could change colors so quickly!  It's totally optimized for repainting!

If the second example sounds like you, please do not apply.  We know it's fun to go hog wild in projects but we need to "get shit done".  There's a whole line of other engineers and designers waiting for that room to get painted so they can do their own work on it.

We're a Team, not a Family

It sounds harsh to say, but we're not a Family. I know lots of businesses call themselves a family, but I think it's BS. If you get drunk at work and yell at someone, we're going to let you go (although we would give Grandma a pass at Thanksgiving).

It's better to think of TrainerRoad like a sports team. Everyone has their role and their jobs.  It's our jobs as managers to bring new hires up to speed, train them in our system, and coach them to be successful.

If someone is not performing, we need to talk to them, coach them, find out what's going wrong and where we can improve.  If someone just can't perform to the standard level of the team and we can't coach them to get better, we have to let that person go.

Another clear sign that you have a high-performance team is that if everyone would "enthusiastically rehire" each other for their current roles.  It really makes work wonderful when you respect, trust and value your co-workers.

 

Required Technology Experience

  • C# Experience - Intermediate to Advanced proficiency
  • Cloud Experience - Azure or AWS

Optional Technology Experience

  • ASP.net MVC
  • LINQ
  • Web API
  • Azure
  • SQL
  • Build/Test CI (We use TeamCity)

Work Remote or in Reno, Nevada

We're looking for the best candidate we can find in the US. Three-quarters of our development team work remotely. It works very well with the help of Slack and Github.

We expect remote employees to overlap at least 6 hours with the Reno, Nevada office (we're there 8am-5pm Pacific time).

Salary

We're looking to hire engineers for 100k/year.  If you ask for more, we'll reject your application. If you're interested in the company please subscribe to our RSS feed at jobs.trainerroad.com for when a higher level job posting is open.

Perks

Your Resume should have:

  • Links to any open source projects you've contributed to (not required)
  • Github/StackOverflow username if you'd like
  • Examples of experience in the "Optional Technology Experience" area

Your Cover Letter should have:

  • Let us know why you want to work for TrainerRoad

We also Require

The best engineers only want to work with other great engineers. We've found that the best way to find great engineers is to have them code, not just answer trivia questions during an interview.

That's why we require applications to do a refactoring exercise as part of their job submission. The right candidate won't find this a pain in the ass; it should be enjoyable.

This also weeds out the vast majority of candidates who just fire off resumes everywhere.

You can download the refactoring exercise here: https://www.dropbox.com/s/95pt8m84znr1jf7/bike-distributor-refactor.zip?dl=0

It has a readme.txt in it with instructions.

Excited about our Company?

In your application let us know why you want to work with us and why you think you'd be a good fit for our company.

FAQs

Do I have to be a cyclist to apply?

Nope! Not everyone in the company is a cyclist. It helps if you're an active racer but it's not required. If you are a racer or TrainerRoad user, let us know!

What's unlimited vacation mean?

The CEO of TrainerRoad used to be an engineer at a Fortune 500 company where life was a grind. We believe employees put out their best work when they are happy and not burnt out.

If your brain just isn't working at 3 pm, we encourage employees to go home and rest up. It does no one any good to sit and stare at the computer screen for another two hours. We don't track that time.

Employees generally shoot for around four weeks of REAL vacation time (no slack checking) but some take more, and some take less.  The thing we care about is how productive you can be and how much value you can add to the company. Bottom line, we want people who are passionate and get things done. If you meet those requirements, everything else works itself out.

That being said, if you end up taking massive amounts of vacation, come in late, leave early and aren't producing outstanding work we're going to have a problem.

How do you work?

We're big believers in Deep Work and Flow. If you're not turning off Slack (snooze), going DND on your phone and shutting off the world for multiple hours a day you're probably not being as productive as you could be. The idea is a developer should be able to work on a chunk of work that they understand distraction-free for multiple hours totally.  This is the only way the company moves forward.

We try to work as pragmatically as we can.  We have excellent designers on staff who go from mockups to responsive HTML with light javascript work.

Development uses Github with a strict pull request process. We test, comment, refactor and improve each other's pull requests.

We have partial test coverage, and we're constantly improving in that area.

We have a QA team (we call them the Test Team) that checks every PR and does full regression checks for each App release, and we're continually getting more automated.

We have an Automation Team that only focuses on writing UI tests to speed up testing and find bugs faster.

We can one-click deploy our app on Alpha, Beta, and Production channels.

We can one-click deploy our website to Azure (includes smoke tests and warm up).

We have nightly builds that deploy to Test Flight and Google Play.

We often pair program via Slack.

We work off bi-weekly sprint issue lists on Github.

Developers get the super fast machines and awesome equipment. If it's going to let you be more productive, we want to spend the money on it.

You didn't ask about education, what's required?

Please put your education on your resume, but we're not going to reject someone because they don't have a degree in Computer Science. We understand that some of the best and most passionate engineers are self-taught.

How long until I hear a response from you guys? What's the process?

If you don't follow directions in this job posting, you'll be immediately rejected.  

If you did follow directions, our goal is to review your refactoring within a week of submitting your application. All refactoring reviews are done "blind"; meaning the reviewer doesn't know your name, resume or where you're from.  Code is code, and it should be reviewed that way without bias.

If we like your refactoring, we'll have you do a coding logic quiz. Nothing super in-depth CS wise.  We've found that the candidates who do the best on these exercises are very successful at TrainerRoad.

We'll take the top combined refactoring and coding quiz results and set you up for a team interview.

If the team likes you; we'll then set up a pair programming session with you and an engineer.  We'll give you a tour of our codebase and work on a real issue. This gives you a chance to run away from our codebase screaming and also demonstrate that you can communicate with us.

If all of the above is good, you're hired!  

I know this sounds like a lot of hoops to jump through, but it works so so well!  Once you're onboard, you'll love that everyone else went through the same process and is up to "your level" in terms of "get-shit-doneness".

What's with the dishes analogy?

Doing your own dishes is a GREAT analogy for our culture.  Don't leave shit around for someone else to clean up.  Do your own dishes.  Do you see someone making a mess? Let's discuss it (in a productive manner) so that we can nip that behavior in the bud.

We know we're really doing well when someone points out a manager not "doing their dishes" or causing an extra headache for a process that doesn't add value (it happens). Seriously, we need employees to call managers out on this.  I'm the CEO writing this; please oh please tell me if I'm messing up or not walking the talk.

Want more detail about the benefits?

You can see a preview of TrainerRoad's health benefits here: https://www.zenefits.com/benefits-preview/?token=3733c1ac-fc72-420a-b224-d9a25bcc1e27

This is the longest job posting ever, when does it end?

Right now! Congrats if you made it this far! We look forward to looking at your resume and refactoring exercise.

Apply for this opening at http://trainerroad.recruiterbox.com/jobs/fk0f772?apply=true