Help us design and build more awesome UI tools for developers.
- Employment type
- Closing date
This job posting is now closed, but we've left it online for anyone who'd like to reference it. Thanks to all who applied!
We're the tiny team behind open-source projects like Tailwind CSS, commercial products like Tailwind UI, and the book Refactoring UI. We're hiring another programmer to help us build more awesome UI tools for developers.
About the job
We're looking for someone to work closely with Adam (that's me, the guy who created Tailwind CSS!) to help shape and build the future of our tools and products.
You'd spend your time developing and improving existing projects, for example:
- Building new component and page examples Steve designs for Tailwind UI
- Implementing a componentization strategy for our Tailwind UI templates to extract repeated patterns and make our existing components easier to maintain and faster to develop
- Building a system for exporting and synchronizing our Tailwind UI component markup with separate Git repositories that we give customers access to
- Adding support for self-service upgrades to the Tailwind UI app
...as well as contributing directly at the product strategy and creative level to new projects, such as:
- Designing and developing official React and Vue libraries using Tailwind UI components
- Planning and developing a new Tailwind UI Ecommerce package
- Building a live interactive demo application using Tailwind UI to help potential customers see what's possible
- Adding support for multiple themes to Tailwind UI
We'd also do a ton of open-source work together, like:
- Working on new Tailwind CSS features like dark mode support or animation utilities
- Designing and building a typography plugin for Tailwind that makes it easy to style Markdown content
- Prototyping and evaluating the potential for a CSS-in-JS version of Tailwind
You and I would spend a lot of time pair programming, brainstorming on hard problems, prototyping different ideas, throwing them away, and prototyping them again. You wouldn't be just churning through tickets in a backlog — you'd be helping to design entirely new products, figuring out what exactly we're even building and why.
We're only three people (you'd be number four) which means that even though we each have our areas of expertise, we all wear many hats. We're looking for a programmer, but you'd also help out with things like:
- Managing GitHub issues and fixing bugs
- Writing and improving the documentation for the tools we make
- Answering customer support questions
- Troubleshooting problems for users in places like Twitter and Discord
If you've ever maintained an open-source project, working with us carries a lot of the same responsibilities. The difference is we all get paid for it and don't have to squeeze in all our work on evenings and weekends.
Here are a few recent projects you might have worked on if you were already part of the team:
- Building the first batch of Marketing Header components for Tailwind UI using Tailwind CSS, vanilla HTML, and a little bit of Alpine.js for the interactive demos
- Building a Transition component in React that lets Tailwind UI customers easily style enter/leave transitions with Tailwind utilities
- Refactoring the actual Tailwind UI application (a Laravel app) to read component data from an isolated SQLite database instead of from the same database that holds customer information, to simplify and speed up deployments without any down-time
We're looking for someone with very strong front-end skills who is an expert in a modern component framework like React or Vue, with experience in a back-end framework like Laravel being a big plus. More important than specific technical skills though is that you're a strong problem solver who loves to learn — we're not experts in everything and we don't expect you to be either.
You might not call yourself a designer, but you know great UI design when you see it and you know when something isn't up to par. Details matter to you, and if the text in a button is off-center by a pixel you will go to the end of the earth to figure out why.
We don't care if you went to school (I dropped out of both university and college!), we just care about what you can do and how you do it. We're all just makers and tinkerers, so as long as you love to build awesome stuff you'll fit right in.
Here are some of the technologies we work with day-to-day right now:
- The Tailwind UI web application is a traditional server-rendered Laravel 7 application, enhanced with a little bit of Alpine.js
- Tailwind UI components are authored in plain HTML + Alpine (but we'd love your help migrating to a more maintainable approach)
- The Tailwind documentation website is currently built with Jigsaw (a Laravel-based static site generator) and Vue.js, but we are planning to rebuild it with Next.js and MDX in the coming months
Some of the challenges that we expect to face on that project include:
- Designing user-facing APIs for these libraries that are extremely flexible and powerful, but also easy to get started with
- Coming up with an approach that supports multiple color palette options, while still being PurgeCSS-friendly
- Building the interactive components (dropdowns, modals, etc.) with all accessibility best practices in mind, including correct use of ARIA attributes, proper keyboard navigation, and handling complex issues like focus trapping
Pay and benefits
This is a fully remote, full-time (40 hour per week) position, and you can choose your own hours. All we ask is that you plan to overlap around ~4 hours per day with 8am-5pm EST because I am sick of always programming by myself.
The salary for this position is between $115,000 — $135,000 USD (or $160,000 – $195,000 CAD) based on experience, paid in your local currency. We'll do the currency conversion when you're hired and deal with any exchange fluctuation on our side.
The position includes 4 weeks (20 days) of paid time off, plus 10 additional days for local national holidays. You're also free to take additional time off here and there as needed for any reasonable reason, like of course if you are sick, but also if you need the morning off to take your pet to the vet, or need an afternoon off to drive a loved one to the airport, whatever. At the end of the day all that matters to us is that we're making progress on what we're building together — we're not interested in tracking time.
We are committed to working at a sustainable and healthy pace, and we believe 6-8 hours is more than enough time to get a solid day's work done.
We will buy you any equipment you need to do your best work, including a computer, external display, office chair — whatever you need. If you need to rent a desk at a co-working space, we'll pay for that as well.
We're a Canadian company, so the position is permanent/full-time in spirit but a contract role on paper since we can't actually hire anyone outside of Canada as a traditional employee. That means it does not include certain benefits like health insurance or a retirement plan, so we've tried to account for that in the compensation.
How to apply
To apply, write something specifically for this position that tells us why we're a great fit for each other, and what you see the future being like if we work together. Tell us what you're excited about in the industry these days, and what you're betting on for the future. Is there a project or feature you'd love for us to build together? Tell us about that too!
We don't ask for your resume but that doesn't mean we're not interested in what you've worked on in the past, we're just leaving it up to you to tell your own story the way you want to tell it.
We understand that not everyone has the same amount of time to dedicate to their application (I work from home with a two year old!), so don't feel like you need to spend 10 hours on it to stand out. As long as you sound like someone who could be a great fit when we're actually working together day-to-day with the same time constraints, we really want to meet you.
Give us a link to whatever you put together in the "Your application" field when applying.
We're accepting applications until May 27, 2020 at 10pm EST. There are no bonuses or penalties for submitting early or close to the deadline, so submit your application whenever works best for your own schedule. We're planning to start interviews early June, and aiming for a start date of mid July.
Can't wait to hear from you!