Ruby on Rails Developer - Remote
***Please read this entire job description carefully, as it provides a detailed overview of what it’s like to work at FullStack. We provide this information to help you decide if FullStack is right for you.***
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 60+ professionals is distributed across our three offices in California, Washington D.C., and Barranquilla, Colombia. 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 insurance, overtime pay, 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. If you like solving problems and helping people, then you will enjoy being a software consultant. If you don’t like solving hard problems, or if you rely on your manager or your team members to solve problems for you, or if you give up easily or are easily frustrated by hard problems, then you probably won’t be happy 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. If you’re looking to only work on new apps, or you’re unwilling to work on legacy systems, or you don’t like jumping from project to project, or you don’t like being on one project for more than a few months, then you might not be happy at FullStack. Here’s more information on the different project types.
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. To be successful at FullStack, you will need to possess the skills and work ethic to be able to build new applications from start to finish.
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. If you don’t like working on older systems which may have a variety of problems, and if you don’t have the problem solving skills necessary to successfully overcome these types of problems, then you might not be happy at FullStack.
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 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. To be successful and happy and FullStack, you will need to be able 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
Estimates, time tracking, and deadlines are challenges that are often encountered when consulting. Before clients hire us, they usually need to know how much we will charge them for our work, so that they can get their budget approved 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. Once we provide these estimates to clients, they expect us to hit them (or at least come close). As things change throughout the project we update the estimate to reflect the changes. To help our teams hit project estimates, we break the estimates down into sprint-based estimates. 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. The developers are expected to complete the stories within the allotted time. 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. Tracking time, working against estimates, and hitting deadlines is part of being a software consultant. These things aren’t necessarily fun, and nobody loves doing them. But they come with the territory when consulting. For 98% of the developers we hire, these things are no big deal, but for roughly 2%, these things are really troubling and are a source of unhappiness. So before accepting a job with us, make sure that tracking time, working against estimates, and hitting deadlines are things you can do well.
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 don’t let your team members down. If you’re more of a lone wolf, 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 FullStack isn’t the right company 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 isn’t simply 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.
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 expect team members to be available in Slack throughout the day, and 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 We’re Looking For
- 3+ Years of software development experience
- 2+ Years of professional Ruby on Rails development experience
- Four year college degree
- Experience with any of the following technologies a plus but not required:
- React Native
- Or proven ability in at least two modern languages
- Meaningful experience working on large, complex systems
- The ability to build complex applications from the ground up, as part of a software development team
- Strong work ethic
- Professional demeanor
- A positive mindset and can-do attitude
- Forensic attention to detail
- Excellent written and verbal communication skills
- 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.
Why FullStack Labs
We’re a medium-size team that’s growing fast, so everyone that joins has a direct impact on the direction and success of the company. Today’s hires will be tomorrow’s leaders. We strive for an open, flat, collaborative, work-hard play-hard environment. We offer competitive compensation with overtime pay, paid vacation, government benefits, etc. This is a full-time, salaried position (not contract or freelance).