A Thread 👇
This list changes with time as my circumstances and priorities change.
This list is likely different than your list.
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.
This is OK, because you likely have...
✅More time
✅More to learn
✅Fewer limitations
✅More to experience
So without further ado, my Top 10 Desired Traits in a Development Job (roughly in order of importance):
Being able to work remotely is key for me - I won't ever work in an office again if I can avoid it.
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.
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.
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 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.
✅Higher quality
✅Pride of ownership
✅Continuous improvement
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:
This usually means minimizing investment the people and processes involved in producing software, since it is not the company's core function.
This usually means investing in the people and processes involved in producing the main product, which contributes directly to the company's bottom line.
The profit center attitude is "Get it done well."
I much prefer the latter.
This one is a byproduct of a culture of craftsmanship.
A team that strives to produce quality software follows best practices.
✅YAGNI
✅Clean code
✅Defensive code
✅Design patterns
✅Consistent style
✅SOLID principles
✅Automated tests
✅Minimize complexity
✅Side-effect free functions
✅etc...
👍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.
A company that prioritizes software quality prioritizes DevOps.
An investment in DevOps goes a long way towards improving the lives of the developers.
☑️Higher stability
☑️Higher throughput
☑️Easier deployments
☑️Reduced human error
☑️Less developer time spent on deployments
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.
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.
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 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.
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.
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.
✔️the company is small (#7), and
✔️software is the product (#3).
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.
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.
What are some things on your list?
❔❔❔
