Senior Software Engineer I
Fully Remote
Job Type
Full-time
Description

OUR TEAM

PICKUP’s Senior Software Engineers are talented and smart folks who get stuff done. Our engineers are expected to disrupt and challenge conventions to deliver value to the business faster, better, and safer. A Senior Software Engineer at PICKUP is a leader that works across many disciplines—the role of senior software engineer is no longer limited to cranking out code in your favorite language. We have embraced the devops philosophy, which means software engineers also need to understand deployment, operations, infrastructure, quality assurance, networking…and the list goes on and on!

Don’t worry—as a Senior Software Engineer I, we won’t expect you to be a master of all those disciplines, but we do expect you to be exceptional in a couple of them. Heck, finding someone who has deep knowledge of all those disciplines is a real rarity—we are all learning and should continue to learn—not only because working in technology demands it, but because it’s who we are.

We work together, apart—our team is 100% remote. Go take a walk when you’d otherwise be commuting. OUR


WORK

The applications we build and maintain range from dotnet/SQL Server hosted on servers to microservices deployed to kubernetes to AWS Lambda functions written in nodejs to an iphone/android app that is central to how we provide our service. At PICKUP, developers are our architects—we strive to drive architectural decisions as a team and not from specific individuals. Everyone on our teams has a voice in design decisions, tooling, and how the team operates.

We are constantly striving for improvement. Our team practices SCRUM on a two-week sprint cycle. At the end of every sprint, we discuss how to improve our work. When we encounter a production incident, we don’t consider the incident tied up until we’ve had our blameless postmortem where we discuss the cause of the problem and make a plan to keep it from ever happening again. We agree with Gene Kim that “Improving daily work is even more important than doing daily work."

We carry the pager on our team. We don’t have a separate organization to clean up our messes in production. We deploy what we build and support what we deploy. We share responsibility for two different on duty schedules—a weekly schedule where you are the point person that the robots call when bad things happen, and a daily schedule where you are the point person that handles issues from our users.


THE ROLE

The Senior Software Engineer not only performs technical duties to a very high standard, but also acts as a mentor to more junior engineers. Leading by example as well as through hands-on mentoring, the Senior takes on the responsibility to make more Seniors.

As a Senior Software Engineer, you’ll have demonstrated the ability to design and build a moderately complex application from the ground up. This doesn’t mean you had to do all the work yourself, but you should understand and have dealt with all of the intricacies of building, deploying and running an application, including security and operations concerns.

As you advance to the Senior level, you will be expected to produce solution and application architectures that not only cover their business requirements, but the non-functional ones as well (the -ilities: reliability, extensibility, maintainability, etc.). Architecture is a team sport at PICKUP, but top teams need top players, so we need our Seniors to be skilled at architecture.

Here’s a list of some of the more important responsibilities a person in the role of Senior Software Engineer I would take on.

  • Teach other engineers new skills or practices
  • Write and deploy high quality, tested code
  • Review your teammates' code
  • Work with our users to resolve problems (which come to us as tickets)
  • Promote and adhere to best practices while delivering efficient and effective solutions
  • Present bi-weekly demos of your work at the end of each sprint
  • Play nice with others. Build relationships with individuals on and outside of your team to elevate your ability to execute
  • Work in an Agile methodology (iterate, iterate, iterate)
  • Lead design sessions


Requirements

This role requires the attitude and confidence to work on difficult solutions and collaborate with teammates to do what is best for our customers and partners, our platform and our team. Individuals that are looking to become PICKUP engineers are flexible, logical, tenacious, curious, knowledge seekers that are also willing to challenge each other and the organization. While every iteration brings unique challenges and opportunities, the value our engineers bring to the organization is recognized and rewarding.

BASIC AND PREFERRED QUALIFICATIONS (EDUCATION and/or EXPERIENCE)

Here are some long lists of specific technologies and disciplines that we work with. The more of these you are comfortable with, the better fit you are for this role, though the ability to learn is paramount.

  • Bachelor’s degree from an accredited program in Information Systems, Computer Science, or related experience (preferred but not required)
  • Some of the following technologies
  • C#/ASP.NET/MVC
  • node.js
  • Docker
  • Kubernetes
  • bash
  • git
  • ReST Service Development
  • HTML/Angular/React
  • XUnit, mocha or similar unit testing frameworks
  • Kafka, Redis, Elasticsearch experience would be great
  • Experience with most of the following disciplines:
  • Quality Engineering (testing methodologies, automation)
  • User Experience (front-end design)
  • OOP and Design Patterns
  • Database Development (database design, report writing)
  • Business Analysis (writing user stories, collecting requirements)
  • CI/CD (value chain automation)
  • Software Development (multiple languages)
  • Cloud Technologies (we’re on AWS)
  • The desire and willingness to do what it takes to create an awesome team

MINIMUM QUALIFICATIONS, JOB SKILLS, ABILITIES

  • Ability to communicate well—in both verbal and written forms. Know your audience.
  • Ability to manage your time to get the right things done
  • Ability to solve problems
  • Comfortable with Software Development Life Cycle—specifically SCRUM
  • Aware of non-functional software requirements including security, scalability, and usability
  • Aware of design patterns, principles, and practices
  • Keen attention to detail, craftsmanship, pride in your work