What is > Full Stack Web Developer?
Daily responsibilities primarily consist of coding database-driven web applications and other web-related development work. In a typical day, you will likely work mostly with Python-based web applications using frameworks like Django that interact heavily with a PostgreSQL database. In the course of that work, you will have to interact with related technologies like JavaScript, Angular, HTML, and CSS/SASS. This is not primarily a design job. It will require a lot of in-depth programming and database work including the ability to architect maintainable code that gets the job done. While we do prefer to do most of our back-end work in Python, we will occasionally take projects in other languages if they seem to be a good fit for us and the customer. Some days you will jump from project to project as issues come up. At other times you may work primarily on one project for weeks or months. The ability to take ownership of a project, engineer a sound technical solution, and “drive” a project to completion is essential. Our customers have varied needs and so we tend to have varied responsibilities and projects. We have a focus on serving the customer and making software conform to their company rather than making the company conform to software.
Principles:
- Good work ethic: you work hard and like to work hard. You also work efficiently, seeking to make the best use of your time.
- Dedicated: you really desire to contribute to and improve our company; you are not just earning a paycheck. You demonstrate a high level of “ownership” for and initiative with projects that are assigned to you.
- Teachable: you have a willingness and desire for feedback/correction. You are always looking to improve. You are willing to ask for help even if it makes you “look bad.”
- Resourceful: you know how to solve problems or are at least able to explain that the problem is not solvable with the requirements given. You use all resources at your disposal in an efficient manner to troubleshoot. You know when to ask someone for help and when more effort is needed on your part.
- Technical Prowess: you just “get” programming, computers, technology. The thought of solving a problem in an entirely new programming language, one you have never even heard of before, excites you.
- Technical Diversity: while we all have our preferences when it comes to programming languages or operating systems, you should be willing to work with anything, in any language, if that’s what it takes to get the job done. If you are easily led into a “______ rocks, everything else sucks” mentality, this isn’t the job for you.
- Flexible: we are small, things change. You should be able to “roll with the punches.”
- Professional: at the end of the day, you like what you do, you take your job seriously, you do it extremely well, and you pay attention to the details.
Technical Skills:
- Are able to write modular, well-tested, and maintainable code
- Know at least two software development domains (SQL, Front-End, Back-End) really well and are capable of radiating that knowledge to our team and beyond
- Are able to work on multiple projects as needed
Leadership:
- Leads the design for customer projects with feedback from other engineers
- Proposes new ideas for improving the development team, customer projects, and/or our tech stack
- For Team Leads (see below): invests in other team members to see that they are growing as individuals and to facilitate productivity within our team.
Code Quality:
- Leaves code in substantially better shape than before
- Fixes bugs/regressions quickly
- Monitors overall code quality/build failures
- Creates tests religiously and makes sure the rest of the team is doing the same
- Proactively identifies and reduces technical debt
- Proactively defines and solves important architectural issues that may hinder development
Communication:
- Provides thorough and timely code feedback for peers
- Able to communicate clearly on technical topics
- Keeps issues up-to-date with progress
- Helps guide other merge requests to completion
- Helps with recruiting and interviewing
- Is able to manage conversations directly with customer contacts when needed.
Performance & Scalability:
- Excellent at writing production-ready code with little assistance
- Able to write complex code that can scale with a significant number of users
- Avoids premature optimization
Everything Else:
- You can reason about software, algorithms, and performance from a high level
- You are (or are willing to be) committed to automated testing in your software development process
- Strong oral and written communication skills
- Self-motivated and have strong organizational skills
- US citizen or ability to work in the United States without sponsorship
- Bachelor’s Degree in computer science (or similar degree) or ability to demonstrate comparable education & experience
- Languages & Tools on a scale of 1 (novice) to 5 (expert)
- Proficient (4): Prefer significant experience working with Python in a web development context. If not, than similar experience in other dynamic languages (Ruby, PHP, JavaScript (Node))
- Proficient (4): Database Development (SQL, multiple-joins, views, triggers, stored procedures)
- Proficient (4): Writing unit and functional tests. Believing in a TDD approach is a big plus.
- Competent (3): HTML(5), CSS/SASS, web standards
- Competent (3): JavaScript, Angular, JSON, etc.React
- Competent (3): Distributed Version Control (Git, Mercurial)
- Competent (3): Networking fundamentals (HTTP, DNS, TCP/IP, etc.)
- Competent (3): Linux and related tools
What we Offer:
- Salary:
- We are happy to talk about money as one of the first parts of our conversation so we don’t waste each other’s time if we aren’t in the ballpark.
- Our offer will take into consideration your salary history, experience, references, and a skills assessment.
- Benefits:
- Medical, dental, and vision coverage
- Flexible PTO/Vacation
- Stock Options
- Flexibility:
- While we expect a regular schedule during normal business hours (fitting in the window of 8-6 ET), we are pretty flexible when schedule changes are needed for legitimate reasons.
- It’s not uncommon for our employees to take time off during the week and make it up during the evening or weekend so as to avoid needing to use PTO.
- Telecommuting/Remote:
- Remote candidates are encouraged to apply.
- Many of us work from home frequently, even those of us who are local.
- We do have offices in Louisville, KY, Charlotte, NC, and Grand Rapids, MI, if you are local and prefer to get away from home to focus on work.
- Our development team operates with a remote-first approach, and all tools/planning are designed for our distributed team.
- We Care:
- One of the best things about working for us is that we really value work/family balance.
- It’s easy to say, harder to do. We all need to make a living, our company needs to be successful in the marketplace, and hard decisions sometimes need to be made. But, at the end of the day, we really care about our employees, their families, their needs, and their desires.