Ask HN: What makes a good place to work?
For some time I've wondered what makes a place of employment more than just a sweat-to-cash conversion machine, something you can enjoy. As a developer, I know I have my preferences, and I know my current colleagues more-or-less share them. But do others? Are there any universal developer-values that make one place more attractive than another? Besides fat stacks of cash of course.
Couple years ago on a whim I started studying for MBA, and now that it's drawing to a close, the school is asking me to do some research. I've decided to tackle this question - what makes a good place to work, for a software developer?
So I'd like to ask you to take five minutes of your time and help me - would you please fill out https://survey.mikoss.lv/ ? The diversity of HN crowd should make for some interesting data. Thank you in advance!
72 comments
[ 2.4 ms ] story [ 109 ms ] thread- A purpose and mission you can believe in
- Opportunity for personal and professional growth
- A high quality team to work along-side and be inspired by
- A diverse and inclusive atmosphere
You pay nothing to breathe oxygen. How valuable is it to you?
When you do unpaid work, it means that it's work that doesn't matter, which means it isn't providing you with much in terms of valuable skills.
- vim
- no javascript
- no overtime
- no on call
- personal projects on fridays
Also my current employer is very, very active in philanthropy and charitable activity. While I don't personally take advantage of those opportunities all that much, I know a lot of other people in the company do, and it's a big factor why they enjoy working here.
Is that the same across all industries in USA? From what I've talked with some finance guys from the states, they have their hardships when it's time to close the year (or maybe quarter), but get to slack off later on. Only in software does it seem to go from mad rush to "normal" level to mad rush, never dipping below. Or am I mistaken?
The company would send an invoice to the customer. Payment would be 30 days after the month end that they got the invoice.
They had a sort of Just in time system - all the orders for components would be placed in month one, for delivery on the first day of month two. Everything would be booked into stores, and then kitted out onto the shop floor. The product would be built, and delivered, before the end of month 2, which meant that payment would be received sometime in month 3.
Sometimes components would be late, or there'd be more to book into stores and to kit up for the shop floor, or the wrong item would be sent in. All of these push production back a few days, and since production was aiming for shipping on day 30 without delays it meant that there was always a crunch from day 25 to 30, every month.
What the company could have done is taken one or two people from inspection and put them onto goods in at week one of the month and inspection at weeks two, three, and four of the month.
I have met people that are hell to work and/or interact with, though the word toxic does not come to mind when trying to describe them, therefore I'm curious.
To me, "toxic" means that they poison others. Someone can be hard to work with, but if I don't have to work with them very much, I don't have to care. But if the whole group gets tangled up in their drama, then they're poisoning the whole group.
Like, my brother isn't a drunk, but when that old friend from high school comes around...
Narcissists, scoffers, and people with insolent pride
[1] http://brucefwebster.com/2008/04/11/the-wetware-crisis-the-d...
And they are extremely toxic and dangerous. It is best to avoid them, keep them away, or leave if you can't make them leave.
Despite my nitpicking, that's a really solid list.
1. A team I like working with.
2. Enough pay to support my lifestyle.
As I've gotten older, I've discovered that what I do doesn't matter, only who I do it with. Oh, and my health.
However, given my previous experience with how fast I work, don't expect it faster than tail end of may / early june.
- Stability (can remain in the same job 5+ years)
- Money and benefits
- Close commute
I find that the Work/life balance part of it is the most important because this is the most important factor that influences almost everything else: cooperative culture, better teamwork, no toxic environment, less politics, no stabbing in the back, etc.
Now, in this business, I get that crunch time happens sometimes. I accept it as part of the job, as long as it's rare. One month a year is reasonably rare. (On my current job, it was one night in seven years.) One month out of two is not rare, and I won't put up with it.
When you're learning to code early on the push to become a "stronger" developer makes it easy to pursue this.
Individual office with lockable door, and you get the key when you move in, rather than hunting someone down to ask for it.
Work weeks are maximum of 40 hours.
You have one boss at a time, and you know who that person is. Your supervisor's boss will never ask you to do anything directly.
No on-call after hours, ever.
A wall of separation exists between work life and social life. Social opportunities with co-workers exist, but can be skipped without consequence.
Performance that exceeds expectations is recognized and rewarded.
In fact I know some companies hate hiring from people who worked at places like Amazon, because they try to bring such a brutal overwork ethic that can ruin the balance other people are striving to achieve.
It seems as though companies that require security clearance placed higher value on doors, locks, and the dangers of overheard conversation. They have always had at least 3 standard-height cubicle walls per employee. Although windows are apparently a security risk.
But no one seems to care about whether employees can lock up their own workspaces upon leaving work. My offices of late have always had locks, but no one ever bothers giving me the key. To anything. Not the door, not the desk, not the cabinets. That's why I can now pop the lock on office furniture with just a paper clip and a binder clip. I'd only leave anything valuable in my workspace if I had a key to the door lock, and as you can see from the table above...
1. Being able to work from home.
2. Being able to work from home full time.
3. Getting paid well.
4. The work is gratifying and challenging.
Personally, everything else is fluff and unnecessary: Ping ping tables, free drinks, beer carts, the right "fit" or culture (no place is an exact fit, and even if so, people come and go).
One of the conclusions I've come to is that the group dynamic is unique to the individuals in the group. This means that people who get along with each other have a better experience at work than those who don't (which is kind of obvious) except that the mix is important too.
When I first started hiring I focused on the technical requirements of the role and experienced hiring people who were incompatible with other members of the team. And I have also experienced people who just made everyone else on the team more functional. Sometimes it is obvious, people who are blatantly prejudiced or misogynistic, sometimes it is more a subtle introverts and extroverts.
But when you get it right and people get along well, and the problem is an interesting one, and everyone feels like they are contributing in a way that is both valued and part of the bigger plan, they respond very favorably on surveys about great places to work.
As an employee I look for checks on antagonistic behavior of peers, and enough transparency so that I understand what is important and what isn't. And of course a level of autonomy and delegation that is appropriate for my experience level. Nothing really crimps my style like a manager telling me how to do my job every day.
I've known employees however for whom what is important is simply the quantity of office 'perks.' Free stuff like food, t-shirts, and field trips. They do enough work to not get fired but not much more, and they really don't take anything outside the office (as soon as they leave the building they forget any and all work efforts, or at least put them out of their mind).
Bottom line, a good place to work is where you get along with the people you are working with and share respect. Pretty much everything else is noise.
I had a coworker who could be described as a 'social butterfly', someone who can talk to anyone for hours on end and make them feel comfortable. They would spend half an hour with each interview candidate, not asking any technical questions, but just having a friendly conversation. Then they would give a 'yes/no' opinion of whether we should hire the candidate. All of their preferred hires were very successful and fit in with the team. It was remarkable. Some people are just excellent at reading others. Most people really aren't sadly.
The worst jobs I have had were nothing but running defense day in and day out. Putting out fire after fire, with management who evidently hired me to put out fires yet don't trust me to do it right. There must always be a little defense, but primarily I want to be running offense, getting in front of things, and driving forward. It's empowering, satisfying, and you leave for home every day thinking "without me, XYZ wouldn't have gotten done" rather than "what urgent thing did I fail to respond to today?"
When applying for a role, I'd try to figure out how to probe interviewer to get a feel for whether or not I'm applying to be on the offense or defense team. It makes a big difference morale-wise, job satisfaction-wise, sanity-wise!
There are some people who really enjoy the Maintainer role, and will not enjoy being on a Creator team, and vice versa. It's always important to know which you are, so you don't find yourself going crazy or facing a skills mismatch.
Current trends in software ("agile" in particular), seem to push against allowing this kind of distinction to develop, and give negative connotations to maintaining code developed by another team ("thrown over the wall" seems to be the preferred expression).
Any thoughts on how to structure things so that maintainers and creators can both focus on their strengths without too much tension?
If the project had been any less of a mess (lucrative, highly lucrative mess), somebody in management would have insisted on "not wasting the talent" and moved him to churning out new features. Because features are always more important, unless the bugs become perfectly capable of sinking the whole project.
The whole premise of various Agile methodologies (at least as I see it) is building minimal viable solution that solves the problem at hand without investing in bullet proof solution, because requirements may change (not necessarily client requirements. Internal design requirements as well) and that investment may be gone. From management perspective a minimax game to maximise "billable hours", which rarely include bugfixes and do not include maintenance. Though it seems to sweep under the rug the fact that next sprint may be built on top of weak assumptions under that MVS.
Without long term goals a team needs a person who is experienced enough to see problems down the road, caring enough to refactor stuff themselves and capable enough to squeeze deliverable required by ticket and maintenance duties into story point value - rockstar developer, and those tend not to be available in bulk.
I say unfortunately, since those companies tend to look like (and are) Oracle, IBM, Microsoft, etc. Oracle, in particular, has a policy that you can make any lateral move you want at almost any time; at the cost of pushing out your eligibility for a raise.
This kind of flexibility doesn't exist in most startups; I've personally been turned down for a lateral move within a startup because I "failed" a whiteboard interview. Startups also don't tend to attract the Maintainer personality since they are considered startups because they're creating something new.
I also think they have trouble with easily accepting lateral transfers because there's so much raw talent banging on the doors that it's appealing to bring in outside help on new projects. Especially since a transfer will be viewed as a loss of critical knowledge about the project that just switched into maintenance mode. What's missed is that the person who requested the transfer is probably going to leave anyways because of a the mismatch with their new job role and what they want to do.
I.e. the first group wants a feature request and ship it fast in a package (or maybe in small steps, doesn't matter), the second group doesn't really "ship", they are reactive problem solvers - sometimes sniffing out the weirdest edge cases on a whim. And group three prefers to write the first 80% of a solution, like an MVP, improve their coworkers' happiness, but aren't so good at following through to polish the last 20%.
2. Have a contract that lets me own anything that I create that doesn't relate to my work.
3. Have enough free time to pursue interesting hobbies.
That's about it, really. Autonomy at work is important too, but I can overlook a lot of bullshit if I have something to look forwards to at the end of the day.
I like to learn and make things. That's a big part of why you hired me. Don't restrict what things I can learn and make. Don't claim ownership of things you don't pay me to do. Not only is it unenforcable and unethical, it encourages me to leave at the drop of a hat if I think I'm on to something. I don't understand why this is a controversial topic with so many employers.
I gave everything else 1 star.
This has always been pretty binary for me.
When I have loved working on what I was working on, nothing else could have screwed that up. I just kept plowing on, motivated almost solely by compulsion.
When I have not loved what I was working on, nothing else could have helped except working on something else that I loved working on.
I did not build in any 'hard' differentiator for source, but I should be able to get a feel for the distribution by the timestamp of answers, as I tried to space out the submissions to social media sites. I'll try to remember that for when it's time to publish the results.