1. 20
    1. 42

      Some of the ones I personally look for:

      • Are the perks technologists get universal? If I have unlimited vacation, does everybody in the company get unlimited vacation, or is support treated like second-class citizens?
      • Are benefits and salary transparent? Do I know how much everybody makes, and how that compares to the industrial average? Do I know what percentage of the company “ten shares” is? If we don’t have matching 401(k), do I know why?
      • Are we appropriately handling issues of diversity and conduct? Does our hiring practice or work culture avoid implicitly discriminating against women and minorities? Nobody’s using “your mom” or “cafebabe” as strings in unit tests, right?
      • Is there a process in place to handle abusive or aggressive coworkers? If a project manager made ten people cry and two quit in protest, will he be fired and not promoted?
      • Are physical and mental health issues treated appropriately? Will anybody have problems if I go on a 20 minute walk? Will people respect my triggers or think they’re a joke?
      • Can you guarantee that I’ll never, ever hear someone say “coding rockstar” unironically?
      1. 4

        Good points, thanks for your feedback. Can you explain ‘’‘people respect my triggers’’’ more detailed, please? I think I’m missing something.

        1. 9

          Generally it means: if you know I get upset about something, don’t bring it up when you don’t have to.

          1. 1

            Like what? Name some of your sensitivities, because I’ll be honest - my first thought was “or you could just man up, and learn how to deal with the fact that people don’t have to maintain lists of all the sensitivities people are trying to avoid.” But then I realised I’m not even sure what you mean.

            So please understand that I’m not trying to berate you or flog you, not personally. Just that something about what you said just gives me the creeps. I hope I am allowed to say this because I am not talking about you. I am talking about the general idea that the universe owes anybody anything. It doesn’t. Neither do people. We can say that treating others with respect should be mandatory, but let’s be honest. It isn’t. Safe spaces are a reaction to this. In my opinion, these are toxic.

            The planet is full of jerks. There’s also a rise of a victim-based mindset, soft spots must be avoided at all costs, hurt is blamed on the other, and heck, even saying “man up” is called sexist nowadays. We have these idiotic terms like “mansplaining”, people are placing blame all over the place, and criticising anything can instantly get you banned on social media groups.

            “You’re either with us, or you’re with the terrorists” is what GW Bush once said.

            I wish I had the vocabulary to explain what irks me about this and to explain what is wrong about this. But I don’t. I guess it comes down to one thing for me: I have always felt like bedng treated with respect by someone is a privilege, not a right. And to be honest, I feel more comfortable with this than with the social justice warrior / safe space mentality. So no, I think what you ask is a privilege, not a right. You can’t / shouldn’t be able to demand that people will avoid to talk about subjects that might bother you. On the other hand, you also don’t have to listen to what anyone says. You’re free to respond in whatever way you want. For me, the line that shouldn’t be crossed is with physical violence, or the threat of it, and there are a few other things that may cross the line. Sexual intimidation, to name one. Then again - this actually already fits into the “threat of physical violence” category, come to think about it.

            Arbitrary restrictions of free speech will create the biggest chilling effect otherwise, so I think it goes too far to demand from anyone that they must avoid anything.

            I hope people get what I’m trying to say, and hope no one takes this personally - I’m a bit allergic to the pro safe space mentality, but I am not trying to personally attack anyone here whose views are different from my own. Talking about triggers. I just guess this is one of my own.

            1. 9

              Maybe it’d help to hear one of my personal experiences with this. I’m a pretty mentally unstable person, for various reasons, and I treat it with extensive therapy and psychiatry. One of the ways this manifests is I have trouble handling the “Happy Birthday” song. It’s hard to describe exactly; the shape of people’s voices funnels into a punch to the gut that makes me feel trapped and in danger and need to escape.

              At my company everybody sings happy birthday on your birthday. And for everybody else, that’s fine! They shouldn’t have to ruin the day just because I don’t like the song. I’m a big boy, I can quietly excuse myself for the singing or hang around the corner and look uncomfortable. But if it’s my birthday, and they’re singing to me… the world bends and everybody has razor sharp teeth and the panic kicks in run run they want to kill and eat you too close TOO CLOSE

              So I ask them not to sing on my birthday and they think it’s weird but respect that. That’s what I mean by ‘respect my triggers’. I’m not asking anybody to bend over backwards for me, I just recognize that there’s a part of me that’s distorted and unstable and that sometimes, I may not have a rational motive behind a sincere request I make.

              1. 1

                Understood. I can totally respect that. Thanks for explaining. Or as we say with No Agenda (the podcast): Tyfyc. Thank you for your courage.

            2. 7

              I have always felt like bedng treated with respect by someone is a privilege, not a right.

              I don’t know about in general, but I’d expect it in a workplace setting at least. Coworkers don’t have to like each other or be friends (I don’t even necessarily like workplaces that try too hard on the “we’re all friends” thing with lots of social outings), but I’d expect some degree of professionalism and collegiality while actually at work.

              1. 1

                Well, yeah, of course I agree. But at the same time (in my expecience at least) the most rigid place where you have to earn to be treated like one of the team - and are considered a douche if you’re a similing, friendly, considerate person most of the time - is the workplace. Especially between my 16th and 26th it felt like this. Asking for anything felt futile in that period. For the most part I felt like the only thing I could do to gain a moderate amount of respect was to get old and bored with life, and shut up otherwise. It’s probably not like this everywhere, but I think it does apply to most places here in the Netherlands. If you stick your head out the crowd, especially by wanting to be treated in a certain way, is one of the surest ways to losing your job. I don’t like this culture at all, but it is what it is, and “don’t try to change it” has always been our culture’s motto, in a sense.


                (urgh. That’s one ugly typo I made.)

            3. 6

              I guess it comes down to one thing for me: I have always felt like bedng treated with respect by someone is a privilege, not a right.

              Surely the irony of what you just said, and what you espouse on your profile is apparent to you?

              Musician, writer, poet, annoyingly optimistic, respecting all life, pizza, and other stay at home parents relinquishing careerly life.

              Like what? Name some of your sensitivities […]

              Not sure what that’ll achieve in this thread, considering we’re talking about the principle in abstract and not literal line items. I’m more than happy to let you know my triggers in advance of any professional interactions–if we actually worked together.

              Arbitrary restrictions of free speech will create the biggest chilling effect otherwise

              Let’s for the moment forget the fact that we already have arbitrary restrictions of free speech in “Western democracies” (no need to bring up authoritarian governments as strawmen arguments), why does it even matter?

              This argument about “chilling effect” follows from an inane logic that one ought to be able to voice whatever opinion they want. Why? What good does that do? Sure, you can say that the grass is purple and the sky is zebra. What’s the point? What does that even mean? There’s infinite many speech that can be voiced, but add absolute zero value. Likewise, there are infinite many speech that can be censored while reducing absolutely zero value.

              There’s a happy medium somewhere between “censoring everything” and “not censoring at all”. Extremist positions are rarely tenable in the real world, thankfully.

              So no, I think what you ask is a privilege, not a right

              If it’s a privilege, as you say, then that means some authority can grant that privilege. So, why not the employer in this context?

              If I can use your own word, what “irks” me about your post is that you made a bunch of pontification and gesticulation while not making any logical sense (in short, your conclusion does not follow from your premises). Do you realize that what you said in one sentence is in direct contradiction with another sentence?

              Take, for example, what I just quoted above. You say that it’s a privilege, not a right. That implies the privilege can be granted. And that’s precisely what we’re talking about here. The granting of such privileges in a professional setting. No one is expecting this to be enshrined in some UN Declaration of Human Rights.

            4. 4

              (This is a deeply personal comment, and in no way, shape or form do I expect my experience to generalize. Nevertheless, my experience—for good or bad—forms my outlook on life and how I choose to interact with others.)

              I was raised in an environment where “man up” was said frequently, both to me and by me. Perhaps it’s a rationalization, but I think I’m better off for it. Complaining or crying was completely unacceptable. “Are you hurt? Do you need me to call 911?” I’d reply, “No” of course, and I’d get, “Then stop your complaining/crying/whatever.” And for the most part, I did, and it worked. On top of all this, when I was real young, I was bullied. A lot.

              When you put that all together, I (very fortunately) learned real fast that the only way I was going to live a fulfilling life was if I took responsibility for my own emotions. I wasn’t going to let someone else’s words ruin my day. And thankfully, I mostly did just that, although I’m not perfect at it. Words still hurt sometimes, it sucks, and then life goes on. I hold this philosophy to this day. I can’t really advocate for it, though, because it’s a deeply personal choice (perhaps not even a choice at all!) and I don’t really know how effective it is for others. Certainly, I know others have a similar practice, so I at least know the sample size is not 1, but still, you can’t just tell someone to “suck it up” if they aren’t already predisposed to that way of thinking.

              With all that said, I found your comment to be strangely off point. “Safe spaces” gets a lot of press on Twitter and perhaps on some college campuses, but the reality is a lot simpler than that. If someone is going to hurl an insult or make a comment that is too personal, all you need to do is ask, “Could you phrase that more productively?” Or perhaps, “What were you hoping to achieve with this?” Now, some people really are just trolls and want to watch the world burn, and whether they’re playing that as an act or not, I find them absolutely contemptible. But thankfully, most in my experience aren’t like that and they probably just didn’t mean to say something that you thought was unproductive. Most folks just apologize and move on.

              I have similar emotional reactions as you to words like “trigger” and “safe place.” They aren’t words I like using, precisely because they do play up the victim mindset (from my perspective, at least), and that’s just not my cup of tea. However, I do strongly believe in some of the ideas that those words tend to encapsulate, like respecting your fellow human. Someone doesn’t need to “earn” my respect. They get it by default because I want others to be their best selves. If I start playing some “earn my respect” bullshit with them, then all I’ve succeeded in doing is 1) started mind games with them and 2) put up barriers to collaborating with their best selves. At a minimum, I am going to be nice to people as best as I can. I don’t always succeed, and I apologize when I’ve failed. But I try. And you know what? I’m not afraid to say that it’d be nice if other people did the same. It’s the minimum we can do to ensure an open exchange of ideas. You can talk about free speech all you want, but if you encourage insults or jerky behavior (or perhaps more realistically, don’t discourage that behavior), then you wind up with a situation where people are afraid to stand up and speak their mind. That’s a bad thing. Whether it’s because they’re not able to “suck it up” or not does not matter.

        2. 1

          TDD - It Really Works

          I beg to differ. This is a baseless claim.

          1. 2

            This is just my personal experience, but I would say it’s a night and day difference between companies that TDD and companies that don’t.

            In my first week at a new I’ve fixed two long-term bugs (one was four years old, one was three months) that would never have made it into production had they been tested. They’re little things that a fully-fleshed out testing suite would’ve found.

      2. 2

        This…this is a great list. Does anyone know of any such companies?

        1. 1
      3. 1

        Can you guarantee that I’ll never, ever hear someone say “coding rockstar” unironically?

        My place of work nailed all your points until this one. Thankfully it never came from the development team itself.

      4. [Comment removed by author]

    2. 15

      What’s described isn’t a company, it’s a software project.

      1. 3

        Multiple projects with the same rules == company, isn’t it?

        1. 4

          Nope. I’m part of consulting company, so the “rules” in our project widely diverge, as we often support external projects.

          1. 3

            From what I know about Thoughtworks, they meet a lot of these requirements, and also are a mainly consulting-based company. Sure it’s a lot of work to ensure you can enforce your requirements when working with clients, but it probably pays off in the long run.

            1. 1

              Thoughtworks is often “we do the whole project from you”-consulting, because that sounds nicer then “team-selling”. We consult for specific technologies and are just 10 people, spread over 5 projects, most of the time.

              Sure, it makes sense, and they can do that, but I enjoy solving hard database problems where people have direct issues, I’m not gonna enter their building and start by introducing new development methodologies first. (unless they may be a source of the problem)

          2. 2

            Everything I wrote was about internal software projects, so I scaled this to the company. Maybe I’m wrong with these assumptions.

      2. 1

        This. I’m slowly thinking about career direction and while technicalities are interesting, the foremost thing is the business model and people - is it something I’m morally okay with? Do the people have a DNA where I feel like “the worst drummer in the band” (I.e. a feeling that I’m learning)? Will the work be spread such that I’m not just assigned things nobody else wants to do?

    3. 10

      One thing noticably absent: good relationship with coworkers. If that’s bad, the rest of it tends not to matter.

      1. 5

        I’m surprised by that absence. Or perhaps more specifically, it’s easily the number one most important thing to me above everything else, by far. Not only for the reasons you state—if it’s bad, then the rest doesn’t matter—but I’ve found the reverse to be true as well. I’ve been in a few situations many years ago where the work itself was soul draining, but the presence of good coworkers turned it into a positive experience for me.

        After “good coworkers,” my next thing is, “does the work I do pique my interest?” I guess that’s more personal, but I’m much happier when the work is stimulating. Still, I’m surprised nobody else has mentioned that at all!

    4. 8

      As long as I’m doing “agile”, kanban is infinitely preferable to scrum. However, as long as we’re being utopian, what I’d really like is projects with a full specification delivered upfront.

      1. 2

        Who should write the full specification? Traditionally, that’s been the software development group at companies I worked at.

    5. 8

      I tried introducing a git submodule with one project and it went very poorly. I would definitely not want to see a whole company organized with them.

      That said, I 100% love the weather is a great reason to work from home :)

      1. 5

        Agreed, I would much rather a monolithic repo with everything to do with your product than annoying submodules that are hard to fork and integrate.

        1. 1

          Really? I’m working with a couple of large open source projects that have everything in a single repo and it’s a pain every single time I fetch or pull from the upstream.

          1. 2

            In my experience if you try to split up your product repo forking becomes a huge pain in the ass. Especially if you do a fork per feature/fix and the changes span more than one project.

      2. 1

        Can you provide more details? What problems have you encountered with submodules?

        1. 4

          I think the hardest part was having to educate my team on cloning recursively & moving around. If you git checkout to a hash that has a different submodule, you get a dirty git state which is really weird. So you’ve got to git checkout && git submodule update or something, which is also confusing for people who aren’t expecting it.

          1. 2

            Ah, got it. I thought problem was related to tech debt/duties(aka non-human)

          2. 2

            Right, but a whole company organised around them wouldn’t have that problem, since everyone would be familiar with them after a short adjustment

            1. 2

              People will still forget, and recovering from a single, momentary, monday-morning brain-fart is unintuitive when you’ve got submodules complaining about conflicting hashes and dirty states. It’s an ongoing productivity suck that provides very, very little benefit.

          3. 2

            Merge conflicts are a nightmare too, unless I was just missing something when I used them. A hash is nice for computers but not so nice for humans.

          4. 2

            I prefer using subtrees over submodules.

    6. 7

      I agree with many of these, and there are a few I’m neutral on, but I think it’s a real shame to see so much momentum toward pair programming. I’ve done it before, and I will try very hard to avoid ever having to pair again as part of a regular workflow. I think it can be a fine way to help someone with a specific bug, or to get a new team member up to speed, but as a general practice I think it’s one of those things that can work for some people, and be a huge negative for others. There have been so many otherwise great teams that I’ve talked to who are doing interesting work, and I know I’ll never work with them because pairing is a big part of their culture.

      1. 1

        How many different people have you tried pairing with?

        1. 3

          I worked for about 9 months on a team of 8 that paired 100% of the time, I’ve also paired with a few other people here and there for workshops or because someone wanted some help learning something. In general the people that I’ve paired with have spent a lot of time pairing, and I believe that they know how to do it well, I just found it awful.

          The end of my 9 month run with the team that paired left me so burned out I seriously considered completely leaving tech and going into academia or something. I’ve given it what I believe is about the best possible chance for me to get on board with it, and I just abjectly loath it.

          Edit for clarity: The team of 8 pair-switched between 2 and 8 times per day. There was a run of 1-hour pair switching, but for the most part it was a mandatory morning and after lunch pair switch, along with a pair switch whenever the team transitioned from development to deployment, so I regularly paired with every one else on that team.

    7. 4

      I don’t actually like the part with the squashing. I don’t want to delete information that might make it easier to git bisect or that shows how a work item was created. I think explicit merges are good. Trivial merges (such as local history merges) should be removed with a rebase though, they don’t add any information.

    8. 3

      engineers apart from non-engineers

      • fire & ice

      I want the opposite, probably just as strongly.

      Everyone involved in a particular effort should be located as close as comfortable. This could mean anything from a war room, to adjacent offices, to all on the same chat room— depending on the organization, working styles, and other constraints. But I mean operations, testing, programmers, analysts, managers, et al. all together with as little special preference as possible.

      That said, there’s a difficult balance to be found in having, say, two engineers working on the related components adjacent to each other vs. cross-pollination like having your neighbor working on the front-end and you’re on the back-end…

      But, every time I’ve seen managers all off on one side; engineers all off on the other; and operations off in another building, I knew I’d have the “pleasure” of wasting some large percentage of my working hours on a toxic environment.

      We all have our own experiences and dreams born from them.

      I could be misinterpreting TFM and what author means by “non-engineers.”

      1. 3

        I’d take co-located end-users as the ideal. I only got to do it one project, but it really changed everything.

      2. 2

        I think non-engineers refers to the sales/support/marketing side of things. At least that’s how I interpreted it.

      3. 1

        By non-engineers I meant product managers, tech writers, UI/UX designers. From my observations their job is very communicative(not only chats/wikis) and it’s quite hard to be concentrated on some stuff. Maybe this is just my friends and me who’ve some troubles with a noise. (sorry for the late response) UPD: I agree that having someone closer to end-users is productive, but anyway.

        1. 2

          Thank you for clarifying. We definitely disagree.

          But, I definitely empathize as a response to disruptive teammates. I say this, too, having been a disruptive teammate before…

    9. 2

      It sounds like you’d want to work where I do now—they tick a lot of these boxes (pairing, squashing, no-merge commits, I could go on…). If you’re curious DM me.

    10. [Comment removed by author]

      1. 2

        Just curious, did you un-upvote your own comment, or did someone else downvote it?

        1. 6

          I downvoted it. (And I’ve been downvoting comments like that consistently since I’ve been a member.)

          1. [Comment removed by author]

        2. 4

          There’s a lot of questionable downvoting going on on this website lately, in my observation.