Promptworks builds ingenious software that lasts for innovative companies with big ideas.
We bring deep product development & software engineering expertise, human-centric design thinking, and transparent processes to the table to solve hard problems for companies as small as early-stage startups and as large as Fortune 50 corporations. Our clients spread across many different industries: green energy, healthcare, education, telecommunications, finance, and retail to name a few.
We are looking for people to join our team who value the same things we do: doing outstanding work, continuously growing ourselves as practitioners, maintaining work-life balance, and supporting the communities in which we work, live and learn.
About the position
As a Software Engineer with Promptworks you will work on multiple projects per year to solve complex problems for our clients, delivering high quality software as part of a cross-functional team of other engineers, UX designers, and a project manager.
You’ll work closely with your team to find and implement the best solutions to our client’s problems. And, you’ll work with clients to understand their business domain, objectives, users, and constraints.
Engineers at Promptworks get to work on the entirety of the stack: front-end, back-end, mobile (usually React Native), and some DevOps. While most of your previous experience is likely focused in one of those areas, you’ll get the chance to learn the other areas by contributing to existing projects. Occasionally, you’ll have to quickly pick up a new programming language & technology stack for a project, ramping up quickly, pulling from your own experience and that of your colleagues.
Most of the software we build is in the form of web and mobile apps, with some occasional integrations of other software and systems. We design, architect, build, and deploy the software ourselves. While we work in many different languages, lately our work tends to be in Python, Ruby, and Elixir on the backend, and React or Vue on the frontend, usually with TypeScript. On mobile, we tend to use React Native, because it’s usually a good fit for the types of apps we build. That said, we often get to dive into projects built by other developers, and recently have gotten to do significant development work in Go, Scala, Kotlin (mobile & backend), to name a few.
A key component of Promptworks’ culture is learning. We make sure to leave space for continuous professional development. Every engineer has a personalized professional development plan and we work hard to align project assignments and non-project work with your professional development goals.
Software Engineer responsibilities include:
- Finding and implementing creative, resourceful, robust, and timely solutions to our clients’ business problems
- Developing & deploying web, mobile, and cloud-based software within a cross-functional team and Agile framework
- Interfacing directly with our clients, gathering their needs, managing their expectations, and helping them understand implications, alternatives and tradeoffs of available solutions
- Pair programming with teammates (when helpful) as well as working independently
- Maintaining the high quality of our work product by performing code review and writing & maintaining automated tests suites & CI/CD pipelines
- Providing meaningful, actionable feedback for team members
- Sharpening skills & learning new ones using time provided by Promptworks for professional development
- Keeping abreast of changes in the technology landscape and investigating new tools, technologies and techniques in order to be better positioned to solve problems for our clients
- Helping team members grow professionally by sharing what you learn from your project work and professional development time. This can be via lightning talks, demos, blog/Slack posts, pairing, etc.
For applicants outside of the Philadelphia region, this will be a full-time, remote position. Standard working days are Monday through Friday in the Eastern time zone (with some flexibility). Occasional travel to Philadelphia will be expected.
About the ideal candidate
We hire passionate, pragmatic, intelligent, knowledge-hungry, fun-loving people.
The ideal Software Engineer candidate:
- Wants to work within a team of talented people and work closely with our clients
- Is passionate about building high quality software, continuously learning & improving, and solving challenging problems for our clients & their users
- Thrives on the variety of projects & technologies presented by consulting work, and is invigorated by the the challenge of coming up to speed on projects quickly
- Unphased by starting new a new project on one or two weeks’ notice and is comfortable context shifting to new projects and domains
- Comfortable working within the ambiguity often experienced in the early phase of projects as your team works towards clarity
- Is knowledge-hungry and delights in learning new languages, technologies and approaches, as well as new business domains
- Wants to share with others what they learn from working on our projects, from professional development time, and from their past experience
- Has strong opinions, held weakly, and loves to further understand the differences and tradeoffs between languages, tools and paradigms.
Required Skills & Experience
Minimum 2 years of professional web development building complex web applications with:
- One of our core backend languages: Python, Ruby, Elixir, and at least one backend framework, e.g. Flask, Rails, Django, Phoenix, etc.
- HTML and CSS
- HTTP and REST
- Relational databases & basic SQL
- Writing automated unit and feature tests
- Deploying applications to the cloud
Well rounded verbal and written communication skills, with the ability to effectively convey the value and tradeoffs of technical choices and approaches.
Experience with some of the following is a plus:
- Programming languages that help us think about problems in different ways, e.g. Go, Kotlin, Rust, Haskell, Clojure (and other Lisps)
- Mobile development, especially React Native, iOS with Swift, and Android with Kotlin
- Non-relational data stores, e.g. Redis, object storage, graph databases, etc.
- GraphQL or WebSockets
- Cloud architecture, e.g. Microservices, Serverless, API design, etc.
- Container orchestration: especially with Docker & Kubernetes
- Machine Learning & Data Science: especially choosing & integrating existing tools, and implementing & training ML systems & models
- Collaborative development via Pair programming or Code Review
- Product management, especially Agile, LEAN, and Usability Testing
- Tailoring solutions to match client/customer requirements and constraints
- Working in an agency as a software consultant
- Contributing to open-source
- Organizing and/or speaking at user groups, meetups and conferences
Diversity, Equity, and Inclusion
Promptworks is committed to creating a diverse, equitable, and inclusive environment for all people regardless of gender identity or expression, sexual orientation, race, religion, age, national origin, and veteran status.