React.js Developer (Remote)

FullStack Labs
Posted 4 years ago
We Work Remotely
FullStack Labs is a leading software consultancy seeking creative and skilled developers to join our fast growing team. Our mission is to design and develop technology that improves the lives of its users, while providing an exceptionally high level of service to our clients.

We are looking for experienced developers who want to be part of a fast-paced, dynamic environment, where everyone’s opinions and efforts are valued. We hire outstanding professionals and give them the opportunity to thrive in a collaborative atmosphere that values learning, growth, and hard work.

Our team of 70+ professionals is distributed across our three offices in California, Washington D.C., and Colombia (South America). Additionally, many of our team members who aren’t located near one of our offices, work remotely. We provide a highly competitive compensation and benefits package with health, dental, and vision insurance, overtime pay, 401k, PTO, etc.

What it’s Like to Work at FullStack Labs

FullStack Labs is a software consultancy. If you come to work at FullStack you will be a software consultant. Companies hire consultants to help them solve problems that they are incapable of solving on their own. So by definition, the problems that companies hire us to solve tend to be hard problems. Ultimately, solving problems is what we’re hired to do, and building technology is how we go about doing it. So as a software consultant at FullStack, your job will be to help us solve our client’s problems. To do this, you will need strong problem solving skills in addition to strong technical skills. Problem solving often comes down to being able to figure out solutions to problems when no obvious solutions exist. This ability to “figure it out” is often the most important skill possessed by our top performers, and will be critical to your success at FullStack.

FullStack provides three primary types of consulting services to clients: 1) Design and develop new web and mobile applications;2) Take over development of existing, legacy applications;3) Staffing and team augmentation. As a developer at FullStack, each project that you work on will fit into one of these three buckets. Some of our projects are relatively short (3 months or so) and some of our projects are long term (3 years). So depending on the length of the project you are assigned to, you may spend a lot of time on one type of project (a long term staffing project for instance), or if you’re assigned to shorter term projects, then you may jump from project type to project type more frequently. We’re looking for developers who are flexible and willing to work on all three types of projects, and are open to working on both long term projects and short term projects. Being flexible in regards to the types of projects you work on will be critical to your success at FullStack.

Design &Build

About one third of our projects are design / build, meaning we design and build the application from the ground up. This includes iOS, Android, and web applications. For these projects, we typically start with a design and discovery phase, which includes designing the app and building a clickable prototype, then building a development estimate based on the prototype. We also conduct a technical discovery process to uncover hidden technical challenges and solutions, prior to starting the project. To see a detailed description of the process we use to design and build new apps, please review our Playbook, which can be found in the About Us section of our website. As a developer at FullStack, you may be responsible for building new apps from start to finish. Sometimes this will be as part of a team with other developers, and sometimes (on smaller projects) you will do this on your own.

Legacy Systems

About one third of our projects consist of taking over development of legacy systems. Often these are apps that were built by other consultancies, and the client wants to move development to a new consultancy. Sometimes these are apps that were built inhouse, and the client has decided to eliminate their internal development team and outsource 100% of the work to us instead. The age and technology stacks for these legacy applications can vary. Sometimes the apps are pretty old, and other times they are relatively young. Sometimes these apps are well built, and other times they are in subpar condition. In all cases, the legacy system will come with its own unique set of challenges, and the client is counting on us to dig in and improve the quality of their app, and help them solve problems. As a developer at FullStack, you may be assigned to work on a legacy system, either individually or as part of a team, so it will be important that you have the desire and necessary skills to successfully work on older / existing applications.

Staffing / Team Augmentation

About one third of our projects consist of staffing / team augmentation. For these projects, we embed between one and ten developers into a client’s existing team, and the client is responsible for planning sprints, outlining work, etc. Often staffing projects are for larger, name brand companies, but sometimes they are for smaller companies as well. Sometimes the client is really good at planning sprints and outlining work, and other times it's incumbent upon us to help them determine what to work on. Sometimes, staffing projects can be short term (a couple of months) and sometimes they can be long term (a couple of years). In most cases, we follow the client’s way of doing things, as opposed to our way of doing things, so we have to be flexible and adaptive and willing to try doing things their way. Also, since we’re working on an existing app, these projects always consist of working on legacy systems, as opposed to building new apps. And since we’re embedding our developers into their team, there’s a lot of visibility internally at the client, so professionalism becomes more important. An important part of your success at FullStack will be your ability to embed yourself into a client’s existing team, learn their ways of doing things, quickly get up to speed on their application, quickly start helping them solve problems and overcome challenges, and conduct yourself in a professional manner that reflects well on FullStack.

Time Tracking, Estimates, and Deadlines

Building estimates, tracking our time, and meeting deadlines are an important part of the value we offer to clients. Before clients hire us, they usually need to know how much we will charge them for our work, so they can get budget approval and make sure they can afford to engage us. In order to help them determine this, we build estimates. For new apps, the estimates are based on the prototypes created by our design team. For legacy systems, we generally build a product road map and create an estimate based on that. Since clients build their budgets and internal schedules around our estimates, it’s important that we complete work within the estimated time frame. Things change throughout the project, and when they do, we update the estimate to reflect these changes. To help our teams hit estimates, we break the estimates down into sprints. When our project managers and team leads create stories for each new sprint, they assign an estimated number of hours to each story. Then for each sprint (which lasts for two weeks) we assign each developer approximately 80 hours worth of stories. We then track our time against the assigned stories using Toggl (time tracking software), which we integrate with Jira. Each developer on the team is expected to complete the stories assigned to them during the sprint. Everyone misses sprints from time to time, which is to be expected, since estimating stories is hard. Rarely, developers will consistently miss sprint after sprint after sprint, which becomes a problem as it means we will miss the estimate for the entire project, and miss deadlines. In these cases, the developer’s manager will work with them to determine what we can do to help them get back on track and start completing sprints on time. Tracking time, working against estimates, and hitting deadlines will be an important part of your success at FullStack.

Being a Team Player

Our development teams usually consist of 1 - 3 developers, a project manager, a quality assurance professional, a designer, and product owner. At FullStack, software development is a team sport, and you will need to be a team player. The rest of your team members (and our clients) will be counting on you each and every day. So it will be important that you consistently do your best work, and help the team achieve its goals. If you’re more of a lonewolf developer, or if you’re looking for a remote position that will allow you to work by yourself with little communication with your manager or team members, then this probably isn’t the right job for you.

Working Hours and Remote Work

Our team is distributed across North and South America, and we all work during normal local business hours. Everyone is expected to work 40 hours per week, and we track how much everyone works using Toggl. Our time tracking process consists of more than just entering the hours you worked at the end of the day or the end of the week. We track our time by client, project, and feature, which affords our clients a lot of visibility into what we’re working on and what we’re getting done. An advantage of tracking time in this way, is that it allows us to pay overtime when FullStackers work more than 40 hours per week. We often offer OT but rarely require it. For developers who choose to work OT, it can significantly increase earnings by 25% or more per year. Alternatively, we also offer “PTO banking” which allows you to bank your overtime hours as additional PTO.

For communication with team members, clients, etc. we use Slack, and there’s a lot of collaboration throughout the day within our Slack channels. We ask team members to be available in Slack throughout the day, and be able to jump into a Zoom video meeting on short notice to collaborate with team members and meet with managers. We find that face-to-face video meetings are more effective than phone calls, and we do a lot of them, so you’ll need a strong internet connection and a presentable work environment and be able to jump into video meetings throughout the day.

Wrapping it All Up

Being a software consultant is a fun, challenging, and rewarding career choice for developers. Your contributions are highly valued by clients, and the work you do often has a direct and significant impact on client’s businesses. You will have the chance to work on a variety of projects for a variety of clients, which will help you quickly improve as a consultant and a software developer. You will get to work with modern languages and frameworks alongside some of the best developers in the world. So if you have the desire to be a part of an exciting, challenging and rapidly-growing software development consultancy, and if you are passionate about software development and consulting, please apply below.

What You’ll Be Doing
  • Work as part of a small team (two developers, one PM, one designer, one QA) to build React.js applications for FullStack's clients.
  • Architect, build and maintain excellent quality React.js applications with clean code.
  • Implement pixel perfect UI's that match designs.
  • Implement clean, modern, smooth animations and transitions that provide an excellent user experience.
  • Integrate with third-party API's.
  • Write unit and integration tests.
  • Complete two week sprints and participate in sprint retrospectives and daily standups.
  • Assist with building estimates.
  • Interface with clients via Slack, Zoom, and email.
  • Track your time throughout the day using Toggle.
  • Work with modern tools including Jira, Slack, GitHub, Google Docs, etc.
  • Be part of a community of React.js developers that share knowledge and help each other as problems arise.
  • Follow FullStack's detailed development process.
Requirements

A minimum of 3+ years of professional software development experience. 5+ years preferred but not required.
  • 1+ Year of professional experience working with React.js.
    • Demonstrated proficiency with Redux.
    • Demonstrated experience building complex React applications.
  • Experience with the following languages a plus but not required:
    • Node.js
    • Angular
    • Ember
    • Ruby on Rails
    • Python
    • React Native
  • A four-year college degree is required.
  • Meaningful experience working on large, complex systems.
  • Ability to take extreme ownership over your work. Every day is a challenge to ensure you are performing to the expectations you and your team have agreed upon, both in regards to estimates and to general process.
  • Ability to identify with the goals of FullStack clients, and dedicate yourself to delivering on the commitments you and your team make to them.
  • An understanding of React.js best practices and a commitment to following them.
  • Ability to work through new and difficult React.js issues and contribute to libraries as needed.
  • Ability to create and maintain continuous integration and delivery of React.js applications.
  • A positive mindset and can-do attitude.
  • Forensic attention to detail.
  • You’re passionate about software development...it’s not just your career, it’s your hobby. You’re constantly striving to learn new things and improve. You follow industry news, regularly tinker with new technologies, and read books and blogs to keep your skills current.
  • You work well within a team environment and enjoy working in the office with your colleagues.
    • Ability to consistently work 40 hours per week.