Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What makes a good place to work?
90 points by silversmith on Apr 5, 2017 | hide | past | web | favorite | 71 comments
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!

Here's one thing I've been thinking about more and more: If you think about your tech job as a sports game, you have offense plays and defense plays. Offense can involve anything from creating great things, building sw architecture, designing features, presenting results to management, prioritizing workload, thinking ahead, and planning for the future. Defense includes fixing bugs, cleaning up technical debt, putting out fires, dealing with angry customers, defending the team from micromanaging execs, answering pop quizzes from the boss, justifying your actions, proving you're doing your job right, doing postmortems, and looking backwards. The offense plays are all about creating stuff and driving things that happen, while the defense plays are always about responding to things that happen and anticipating so you can respond better.

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!

Creators vs. Maintainers.

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.

Good point, I'd like to add another model: "people who want to ship stuff to the customer" vs "people who strive on solving emergencies" vs "people who love to create internal tools"

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%.

I agree.

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?

Finding the right balance usually requires, unfortunately, a very mature company with a policy of keeping talent happy and a strong R&D department (which requires a lot of income to maintain). The creators get to thrive in R&D while the maintainers get to thrive in working on very mature (and usually profitable) codebases.

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.

Mostly long-term perspective, I think. Sprints (releases, versions, however you call it) are very lucrative, because being short term they offer quick turnout, sense of quick progress (in terms of tickets closed, features delivered) and bring easy to achieve victories, visible in probably every daily team call/meet.

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've seen this kind of senior maintenance developer being allowed to flourish only once in my career. In my opinion, the key was project scope. It was complex enough and had been in production long enough so that this maintenance wizard always had a wide range if issues to choose from. He got the reputation of knowing the whole complicated mess by heart, and being able to resolve the problems nobody else could. As a result, the management did not dare move him to new feature development, he got to work on what he liked, did it good, and thus cemented his position more and more.

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.

Wow, that's deep. Well said and I think that's exactly the situation I'd like to be in as well--being a member of the offensive push.

For discussion purposes, in order:

  - A team I enjoy working with.
  - Career growth, solid pay and benefits.
  - A culture that doesn't tolerate toxic people or excessive politics.
  - A quiet environment where I can concentrate and/or remote work days.
  - An interesting project.
I used to care more about working with resume building technology. As I've gotten older, I care a lot more about interpersonal issues and my work environment.

I've narrowed my list down:

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.

I guess I didn't go in the details enough - the professor asked me to steer the research more towards what could be applied in hiring process. You can show solid pay and interesting projects in an interview, but interpersonal relations and culture take time to clarify. For example, when I started working in my current company, I couldn't stand another guy there. But over the next year I both came to recognise what he was doing as highly important for the company, and found a perfectly ordinary human being underneath the image left by the first impression. Today we are often working together on projects, and both benefitting from each others skill set. But I absolutely loathed the guy on the first day.

I've found over the years that technologies don't build resumes, results do. If you can say that you designed, implemented and tested software for $COMPANY's $PRODUCT resulting in $NUMBER successful product launches worth $N million in revenue, it doesn't matter so much what the technology used was. My resume used to be a laundry list of platforms and languages, but it was not as effective as when I re-wrote it to focus on business results. Now that I'm more focused on management, I don't even mention the technologies I've used, except for what I'm current on (current job).

I'd put your third item above your second, and your fifth above your fourth.

Despite my nitpicking, that's a really solid list.

Would you care to elaborate on what you consider to be toxic people?

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.

The problem isn't toxic people. No one wakes up saying, gee, it's a great day to be toxic today. The problem is toxic environments that incentivize people to become toxic. This usually happens due to overly stressed environments, that don't have Work/life balance, with deadlines that are way too aggressive, thus culminating in a pressure cooker environment, that's sure to blow up sooner or later. Once, you relax those constraints, everything else can work out and people don't have to become toxic.

Strangely, the worst people I had to deal with were self-centered little-capable know-it-all egoists. Whatever question arises they have their opinion and know better. Thrown at a problem they try to raise their hands and float out of there or half-ass minimum viable prototype and leave it for others to fix. They go out of their way to make things suit their personal agenda. Need half of their hour to make a release? Sorry, cannot delay my daily jog. They promised something will be done (probably to client)? Will try to maneuver three levels of management to coerce someone to do it, because they lack competence to do it themselves and are not willing to learn. Such were the people I found barely bearable to work next to.

These are more than likely narcissists.

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.

I don't completely agree with your assertion. A toxic narcissist person will create a toxic environment and if the person is not dealt with immediately then the consequence is an environment that incentivizes toxic behavior which results in other people being or appearing to also be toxic. The narcissist wants/needs the appearance of other people being toxic so they can hide among them and keep people from pointing at them.

The Dead Sea Effect [1] nicely describes this sort of "toxic environment" in a pretty well-written piece from 2008. In the author's case, he traces it back to the inability to bring people into and out of an organization.

[1] http://brucefwebster.com/2008/04/11/the-wetware-crisis-the-d...

Toxic meaning they make everyone around them bad as well.

Like, my brother isn't a drunk, but when that old friend from high school comes around...

A toxic person is someone who becomes an impediment to you getting your work done, either directly by sabotaging your efforts or indirectly by mobilizing others on your team against you.

Not the person you're asking, but:

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.

>what you consider to be toxic people?

Narcissists, scoffers, and people with insolent pride

In my 30 years of experience, the single biggest factor is your manager, the person you report to. My last permie gig (2010-12) had great tech, great pay & great colleagues, but all that was negated by shitty slave driving chaotic management. Conversely my 2004-2010 permie role was at a firm that had a bad reputation as brutal hire and fire shop. But 2004-7 was a career highpoint for me. I built great software and a great team, got promotions and bonuses. Then my manager left for another role, I was exposed to the vicious politics at the next level up, and things went south. Now I'm a contractor bootstrapping on the side. If I get my venture off the ground I want it to be a dev shop that folk never want to leave.

One of the managers at my very first job put it best: a good manager is like an umbrella, shielding you in the downpour but somewhere out of sight in the sunshine. Meaning, a good manager isolates the employees from in-fighting in the above levels and takes the blame coming down, but exposes the team to praise when a project is going smoothly.

Isn't that a bit like a leaky abstraction. Even with an umbrella your ankles will get wet! For example if you have to work with other teams members who are toxic to get a project done then there is only so much your manager can do if that toxicity is the median behaviour.

My criteria:

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).

I have thought a lot about this question over my career both as an employee and as a manager wondering how to make the environment better.

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 think "team fit" as you've described is probably the most important factor for me. But it's a really tough thing to interview for / create within a team.

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.

Some of the extra items:

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.

I find there tends to be a tension between going above and beyond, and striving to keep a culture of work life balance.

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.

That office with a door.... Who offers that these days, and can I please go work there?

Personally, it's gone like this:

  Year  Workspace     Door?  Locks?  Key?  Window?
  1     1/4 cubicle   no     no      no    yes
  2     pair office   yes    no      no    yes!
  3-4   home          yes    yes     yes   yes
  5-6   office        yes    no      no    no
  7     5/8 cubicle   no     no      no    yes!
  8     1/4 cubicle   no     no      no    no
  9     office        yes    yes     no    no
  10    3/4 cubicle   no     no      no    yes
  11-12 full cubicle  no     no      no    no
  13-14 office        yes    yes     no    no
  15-17 office        yes    yes     no    no
Locations are 1-4 Chicago, IL; 5-8 Madison, WI; 9-17 near-South military-industrial complex, USA

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. Get paid enough to pursue interesting hobbies in my free time.

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'd say a big one for me is hours. I'm currently capped at 40 hours a week and couldn't be happier.

This seems to be a uniquely (?) american cultural issue - in my eastern eouropean working experience the long weeks are few and far between, and it's generally accepted that you take it easy when the crunch time is over.

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?

I used to work in sub-contract electronic engineering in the UK.

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.

The survey is missing team dynamics type of stuff. Do I enjoy working with the people I interact with most frequently. If I don't, everything else in the company could be the best in the world, but I would still hate my job. I think there are two components to that...are they competent and how well I can get along with them.

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.

- Good work/life balance

- 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.

Work/life balance, absolutely. I've got a wife and kids. I don't live and die with the project meeting some arbitrary deadline. You want it to ship by a certain date? Fine. Control the feature list. You want it to ship by then plus have all the features everyone can dream up? Sorry, I'm not going to kill myself to make it happen.

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.

Crunch time should rarely ever happen unless the people having to crunch are the ones that agreed to and bought into the project, its scope, and deadlines. That is rarely ever the case. The implementors are rarely the ones that have enough say or control over scope, time, or budget. The one(s) that made the promise(s) should be held accountable for their failure(s).

There's also the factor that some people are chronic workaholics who can't separate work from real life.

When you're learning to code early on the push to become a "stronger" developer makes it easy to pursue this.

I'll fill out your survey, but also answer here for discussion:

- 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

- Money

That's under "professional growth". The idea that you advance in your career.

Things that advance your career don't always come with money upfront. Example: unpaid internships.

Unpaid internships are a lie told in industries who undervalue their hiring pool.

I disagree... Price is dictated by supply and demand. Industries are paying nothing for these interns because they can get away with it, not because they consider them worthless.

You pay nothing to breathe oxygen. How valuable is it to you?

When you need something done right, you pay for it.

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.

Ideally I am making something beautiful. This means languages and tools that are well designed and easy to use, enough time to make the program beautiful, and little or no bureaucratic paperwork to suck away energy.

It is required that I make something I believe in, that I think is actually helping people. Note that this can be different from making something that people ask for or something that tickles their fancy in the short term but causes damage in some way long term.

I would like to be paid the industry average for what I do. If I am paid a lot less, it had better be because I work for a nonprofit or something (see above about helping people). It's also dangerous to be paid a lot more than average, because I don't want to be a target for layoffs.

I work with a laptop in my lap. I am low maintenance. I don't really want free soda, ping pong tables, company picnics, free tickets to the game. I just want a company network that doesn't flake out, high-quality open-source software wherever possible, and minimal management.

You got into an MBA program on whim? Was it full-time?? I look at the sticker price for the degree (around 100K just base tuition for a top program; more than double that in lost income). Even a part-time program seems like an expensive proposition. I just cannot justify it as a mid-career tech professional.

Pay rate. While money is not the only thing in the world, a company that doesn't pay well probably isn't going to be enjoyable to work at, either. People who are worried about making ends meet are not always pleasant to be around.

  - clear understanding of the problem I am being asked to solve

  - major influence (if not outright ownership) of the solution to that problem
Good bullet points for anyone who works, not just software developers.

Being at least a mile from your nearest coworker, preferably hundreds or thousands of miles and not having to work unpaid overtime (slave labor). To be fair, the latter is by definition included in the former if you have any kind of sense and self-respect. That literally solves 99% of work problems. The other 1% is communication. I didn't say it was perfect.

I gave anything related to what I was actually working on 5 stars.

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.

- no mac

- vim

- no javascript

- no overtime

- no on call

- personal projects on fridays

What do you have against mandatory access control?

If you are look into a startup, beware of companies that are in "growing" phase. While this might get you all pumped, in most cases they just sideline you if you are not the decision maker (Which is what happens if you are a developer).

What do you define as a "growing" phase? 10 people? 30 people? 100-200 people? Uber 1000+?

Can you separate out the HN responses from the Reddit responses? Saw the same link in https://www.reddit.com/r/SampleSize/

In the end I'm striving for a larger sample size.

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.

Ability to work independently on something for non-trivial stretches of time. The kind of team-oriented working that needs daily synchronisation is bearable some of the time, but unsatisfying, and burns me out pretty rapidly.

Will you share the results when you're done? I'd love to see the patterns!

I would focus in career growth, a company where it is too bureaucratic and cumbersome to grow, eventually decays and causes employees to burn themselves out.

I filled it out. Good luck to you. I hope you'll share your findings.

Filled out, really interested to read the results if you publish them!

Agreed, when you publish, please post an article on HN with the results.

I will. Probably not the paper itself, but definitely the results.

However, given my previous experience with how fast I work, don't expect it faster than tail end of may / early june.

Coworkers can make any place less bad to work, or just bad.

When asking people to fill out survey forms, it is probably best not to be anonymous.


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact