We ♥ Thinkers

We ♥ Developers

We ♥ Designers

We ♥ Engineers

Take the Programming Challenge

Resumes are a bit, well, meh.

Real code?
Now we’re getting somewhere.

Every developer at Art+Logic has written a clean, elegant solution to our Programming Challenge.

Apply For These Positions


The best software is a marriage of business goals, design, and code. We specialize in multi-faceted, cross-platform projects with complex technical requirements, beautiful design, and grand business goals.

1. We craft beautiful custom software for great clients

Our business revolves around taking a client’s vision and bringing it to life in a form that’s better than they imagined it. Some of our clients are themselves skilled development shops, some are a few people with an idea and some funding. They come to us from every possible industry, often with problems and ideas that other developers have already told them aren’t practical or feasible to tackle. We combine their industry and domain knowledge, requirements, and our sane and humane development practices to consistently deliver great software.

2. We work with developers distributed across the US and Canada

Art+Logic is a continent-wide team of over 50 great developers spread over the US and Canada. From reading the trade magazines, you’d think that there wasn’t any development talent once you got 50 miles outside of the Bay Area, except for a few small pockets of talent in New York City and Boston. That’s a pretty dumb idea. We also disagree with the idea that work is mostly a place you go — it’s a thing you do, and given the right environment, support, and culture, you should be able to do great work from wherever you work best. For most of us at Art+Logic, that workspace is at home, where we can maintain control of noise, distractions, and other factors that can make it difficult to remain productive throughout the work day.

We like to say that we don’t telecommute, because there’s no place for us to telecommute to. If you’ve had bad experiences working remotely in the past because you’ve been left out of what was happening in ‘the office’ — we’re different. The tools, infrastructure, and work practices that we’ve adopted over the years let us work together effectively, efficiently, and very collaboratively without regard to the physical distances between any two of us.

3. We work with an extensive range of languages and technologies

Long, long, ago, we got our start creating desktop applications in C++ for Windows and Macintosh. As things changed in software development, we changed as well, adding web and mobile development capabilities as early as was feasible — one of the iPhone applications available on the opening day of the iOS app store was written by Art+Logic. It also seems obvious now, but we were one of the first companies to put a web server inside a piece of networking equipment for device configuration.

There’s a great opportunity for developers who are intent on staying current and expanding their skills.

4. We're generalists (in general)

Our ideal developers are proficient in many aspects of software development and expert in a few. Because all of our work is custom, we need to be able to flex as a company with the needs of our clients. By focusing on staffing our engineering group with developers who bring both breadth and depth of skills from the entire field of computing, we remain able to propose the best solutions to our clients’ problems, not just the solutions that happen to fit comfortably within the bounds of what we’ve done before.

You’ve probably worked with someone who tries to meet every request with the same response, whether because it’s what they learned a decade ago and they haven’t kept up with the field, or because they’re always looking for excuses to use the latest bit of shiny tech that’s not really ready for use in production. We don’t have room for those developers.

5. We develop applications, even when we're developing for the web

There are plenty of development shops out there that put together beautiful (but essentially static) websites. That’s not our focus; we think of ourselves as software developers, and we’re looking for people with solid capabilities as developers of complex applications, whether those applications are deployed as traditional desktop applications, web applications, mobile applications, or embedded firmware.

6. We staff our projects using small, developer-driven teams

We are biased toward doing things that let our people do their best work with a minimum of bureaucratic overhead and ‘process theater’, while retaining the ability to respond quickly to new or changed requirements. Keeping a developer in the project management seat also helps make sure that our development plans are always grounded in reality. Keeping team sizes as small as is reasonable also guarantees that everyone working on a project has a visible role in the success of that project; there’s nowhere to hide.

7. We thrive on long-term relationships

. . . both with our developers and with our clients. Even though our work is all project based, we prefer to maintain a much longer time horizon than individual projects. It’s common for us to work on multiple projects for a client over many years, and the same is true for our developers (the median tenure of an Art+Logic developer is over 5 years.) We work to keep our developers fresh and engaged by being aware of potential burnout, whether that’s because of working too long with a single language or technology, or because of too many months working on the same project. There are always opportunities to get involved with something new.

8. We seek and value awesomeness

You’ve heard things like this before, I know. The weird thing is that we really mean it. We’re a small enough company that each person we hire has the opportunity to have a huge impact on the quality of our service. Instead of looking to fill a certain number of seats with people listing a specific set of buzzwords on their resumes, we’re working to build a portfolio of amazing developers who consistently deliver better-than-expected software to our clients. Each person on our team was the smartest person at their last job.

9. What you can do + What you've done before

We’re happy to look at developers’ resumes to get a feel for the variety of experiences that someone has had. However, we’ve found that there’s little correlation between the length of someone’s CV and how they’ll actually perform when a genuinely complex development task is placed in front of them.

This is why every developer who works at Art+Logic had to complete and submit code that completes the Programming Challenge. It’s not a puzzle — we don’t care if you know why manhole covers are round or how many piano tuners there are in Chicago. So far, none of our clients have hired us to solve puzzles.

Instead, the Programming Challenge is a short set of programming tasks that aren’t that different from ones that might be assigned as part of a real project, so you have an opportunity to audition for us under something similar to actual project conditions. Solutions must not only work correctly according to the requirements laid out in the challenge instructions, but the code itself needs to be impressive enough to the developer reviewing it that she recommends moving you forward in the process.

10. We look for a different kind of programmer, differently

Typically, companies wait until they have an urgent need to hire someone, then place an ad, interview a few people from the stack of applications that arrive, and hope to hire the best candidate that is identified by that process, keeping their fingers crossed that this person will be able to put out whatever fire caused the urgent hire in the first place.

We don’t do that.

We’re always looking for great developers, whether we have an immediate place for them or not. Our recruiting process runs continuously in the background, identifying people we’d like to work with as soon as an appropriate opportunity surfaces. When the rate of new projects starting exceeds the rate of existing projects being completed, we reach out to that group of already vetted developers, looking for the best match of skills, availability, and likelihood of long-term success at Art+Logic.


We’re a small, friendly and talented team. We craft beautiful digital solutions for awesome clients across all platforms.


Art+Logic developers all work remotely from across the US and Canada. Most of us work from our home offices, but some of us prefer to rent office space or work at a coworking facility. We do our best to accommodate the unique schedule and work-style requirements of our people, but because our work is highly collaborative within project teams, it’s important that everyone have a reasonable amount of overlap with traditional middle-of-the-day business hours. This means that we’re not a suitable option for anyone looking to pick up a handful of night & weekend moonlighting hours. We’re only considering developers who are able to regularly work 30 or more billable hours per week.


Being a distributed company is built into Art+Logic’s DNA — since being founded in 1991, we’ve acquired, built, and stumbled across tools and practices that let us work efficiently and productively, even though no two of us are in the same location.

For most of our collaboration, we rely on the suite of tools provided as part of Google Apps for Business — we use Docs for shared documents, Groups for project-specific communications (both within the team and between Art+Logic and clients), and Hangouts/GChat for real-time voice/video communication.

After evaluating all of the open source and commercial project management and task/bug tracking systems, we decided to build a homemade system called Trantor to handle these issues, as well as less visible, but crucial things like invoicing clients for the work we’ve done. We use git for source control.


We prefer to work with relatively small project teams at Art+Logic. Every project consists of at least a project manager/developer, with additional assistance from our QA and design departments as needed. Projects scale up from there, typically maxing out somewhere between 5-7 developers.

Project Managers are responsible for:

  • All technical communications with the client
  • Collaborating with clients to define and specify the project’s requirements
  • Breaking milestone requirements into higher level features, and further subdividing features into well-defined development tasks
  • Assigning tasks to developers on the team (and verifying that tasks are completed correctly and completely)
  • Working with the client to sequence the feature requirements into a series of iterative milestone plans
  • Managing the project’s budget

Additional support is provided on each project by an Account Manager, who is responsible for maintaining a healthy business relationship with the client and a Project Supervisor, who helps ensure that each project runs smoothly, whether from a standpoint of verifying that Art+Logic practices and policies are being followed or ensuring that the project is adequately staffed for its actual needs.


All code written for Art+Logic projects follows a programming style guide that traces its roots back to a style guide agreed on by our founders in 1991. By following a common Art+Logic style on all of our projects, it becomes much easier for developers to move between projects. There’s little time wasted when joining a project team wondering where certain types of files should be stored, or rehashing the tired debate of tabs-vs-spaces. Even though we typically move from client to client when moving between projects, working on each of those projects should feel like working on an Art+Logic project.

You can read our Programming Style Guide and also our Development Practices Manifesto, which establishes our overall ethos of how software development should be approached.

We want to be the place where you can do the best work of your career.

Art+Logic is an EEO advocate. We don’t discriminate on the basis of race, color, religion, sex, disability, national origin, age (over 40), or other protected veteran status.