My Top 10 Traits in a Development Job

A PC in a home office

Photo by Caspar Camille Rubin on Unsplash

In my almost two decades as a developer I’ve become increasingly aware of what matters to me in a job, having been in half dozen different environments that excel in some traits but are lacking in others.

This list is my list of the things that are most important to me in a dev job at this time in my life.

This list changes with time as my circumstances and priorities change.

This list is likely different than your list.

It’s rare to find your “dream job” that fits all of your criteria.

Oftentimes you must compromise some of the less important traits for some of the more important ones.

I’ve done this.

It’s OK, as long as you understand the trade-offs you’re making.

Early in your career you have fewer choices. You can’t afford to be picky.

This is OK, because you likely have…

✔ More time
✔ More to learn
✔ Fewer limitations
✔ More to experience

I share this list in hopes that it will help someone out there think critically about their next career move.

So without further ado, my Top 10 Desired Traits in a Development Job (roughly in order of importance):

1. Remote-First Culture 🏡

Being able to work remotely is key for me - I won’t ever work in an office again if I can avoid it.

The freedom to see my kids when they get home from school, have a coffee break with my wife, and just share more “regular” moments of daily life with my family is priceless.

I can’t get back the hours I’ve spent commuting to and from work, but going forward I can appreciate the time that I won’t spend sitting behind the wheel every day.

The company should be remote first, with remote work ingrained in the company culture.

I don’t want to be the odd man out on a team of mostly co-located coworkers.

It’s not enough for a company to simply slap a few Skype invites on their meeting requests and call it a day.

A healthy expectation for remote workers is needed.

Bad: Since you’re remote, you should be available 24/7.

Good: 40 hrs/wk is enough. Though there may be an occasional week where extra hours are needed, usually you put in your 40 hrs & then go enjoy your non-work life.

2. Culture of Craftsmanship 🛠

craft (n.): an art, trade, or occupation requiring special skill

Good software is produced when development is viewed as a craft.

Bad software is produced when development is viewed as an assembly line process.

I want to work with colleagues who view their work as a craft to be honed.

I don’t want to work for a company that views development as mechanical process that can be streamlined by simply adding more metrics, KPIs, and process.

Benefits of a culture of craftsmanship:

✔ Higher quality
✔ Pride of ownership
✔ Continuous improvement

3. Software is the Product 💾

There is a big difference between working for a company where software development is a supporting function vs. one where it is the primary function.

Cost center vs. profit center mentality.

I recently tweeted about this.

When viewed as a cost center, the emphasis is on keeping costs down.

This usually means minimizing investment the people and processes involved in producing software, since it is not the company’s core function.

When viewed as a profit center, the emphasis is on maximizing profits.

This usually means investing in the people and processes involved in producing the main product, which contributes directly to the company’s bottom line.

In my experience, the cost center attitude is “Get it done.”

The profit center attitude is “Get it done well.”

I much prefer the latter.

4. Observes Development Best Practices 👨‍💻

This one is a byproduct of a culture of craftsmanship.

A team that strives to produce quality software follows best practices.

Best practices include…

✔ Clean code
✔ Defensive code
✔ Design patterns
✔ Consistent style
✔ SOLID principles
✔ Automated tests
✔ Minimize complexity
✔ Side-effect free functions
✔ etc…

Using good development practices promotes…

👍 quality
👍 reliability
👍 readability
👍 maintainability
👍 robustness

A clean, well-structured, well-tested codebase is also more enjoyable to work in.

This is the kind of codebase I prefer to work in.

5. Observes DevOps Best Practices 💻

A company that prioritizes software quality prioritizes DevOps.

An investment in DevOps goes a long way towards improving the lives of the developers.

The benefits of DevOps automation are many:

☑ Higher stability
☑ Higher throughput
☑ Easier deployments
☑ Reduced human error
☑ Less developer time spent on deployments

6. Talented and Driven Colleagues 👩‍💻

I want to work with colleagues who will make me better by working alongside them.

These aren’t people who simply punch the clock to earn their paycheck.

They’re talented, smart, curious, and driven individuals who take pride in their work.

I’ve worked with several people like this over my career, and they’re responsible for much of my growth as a developer, for which I’m indebted.

You can’t help but grow in your craft if you’re interacting with talented individuals on a daily basis via design meetings, code reviews, debugging sessions, architectural discussions, etc…

7. Anti-Enterprise 🏢

By “anti-enterprise,” I mean a company where there is minimal corporate process/bureaucracy.

I prefer working for a small, fast company over a large, slow enterprise.

I have a low tolerance for waste.

I prefer to spend my time creating value rather than sitting in meetings and entering support tickets.

I want to be empowered to do the things that I need to do to do my job.

I don’t want to have to…
↪ spend 15 minutes entering a change request
↪ to have a dev database restored
↪ that will take a week to complete
↪ that would have otherwise taken me 5 minutes
↪ if given the adequate permissions.

I don’t like to be handcuffed by process.

I have no desire to climb the corporate ladder or play status games.

8. Potential for Professional Growth 📈

I want to be challenged to grow professionally.

My growth as a developer is a function of…

1️⃣ my own initiative,
2️⃣ the project(s) I’m working on, and
3️⃣ the people that I’m working with.

The greatest periods of growth in my career have been a result of not only own initiative, but also the fact that I was working on interesting projects with, more importantly, smart colleagues (#6).

Your potential to grow as a developer will change over the course of your time with a company.

Often this potential is greatest when you first join and diminishes over time, but not always.

New projects or new team members can rekindle the fires of growth.

9. Clear Line from Contribution to Value ➡

I want to be able to see how my contribution contributes to the success of the company.

This contributes to a greater satisfaction in a job well done.

It’s easier to see how your contribution affects the overall success of the company when …

✔ the company is small (#7), and
✔ software is the product (#3).

10. Compensation/Benefits/Equity 💵

This one comes last in my top 10, but that doesn’t mean it’s not important.

I want to be compensated fairly for my work. Ideally that includes equity in the company.

If my contribution is tied to the success of the company, I prefer my compensation to be as well.

Once equity enters the equation, you shift from purely trading time for money, to trading time for money + a stake in something of potentially great value.

Being well-compensated is one way that a company can show me that my contribution is valued.

There you have it. My Top 10 Desired Traits in a Software Development Job.

What are some things on your list? Drop your comment on the original thread here.

– Jon

I’m a developer and solo SaaS founder who likes to build things and share what I learn with others. If you’re interested software development, launching things, or random early morning thoughts, consider following me on Twitter or subscribe to my newsletter.

Thanks for reading!