Live data from Hacker News

Ask HN: Are my expectations on code quality and professionalism too high?

news.ycombinator.com

111–120 of 306 posts

Re: Ask HN: Are my expectations on code quality and professionalism too high?

#112

Those seem like reasonable policies to aim for. What isn't immediately clear is whether they are missing because of a lack of understanding or a lack of willingness to change. If it's the former and you've come into the small company with more experience than most people there, you might get a long way and become quite popular with your colleagues if you share the benefit of that experience intelligently. For example…

This has been my experience as well.

If it's a skills problem, by all means set everything up and be the hero.

If it's a cultural problem, run.

Re: Ask HN: Are my expectations on code quality and professionalism too high?

#113

Earlier quoted context omitted.

Your scenario can be a lose-lose situation as it applies to the question. Speaking from experience, you can do the “agile” approach do fail fast, release faster, but with no buy-in from leadership to address the breaks in the future, your compounding problems on problems. So, short-term, you have happy leaders who see releases as they want, and unhappy devs who are in a shitshow of code. Long-term, if your startup is…

Is there any situation under which leadership shouldn't buy in to exactly what tech wants to do?

Does a captain of a ship do exactly what his crew wants all the time? No, because they're steering a ship and sometimes they have to make moves that not everyone will agree with.

Re: Ask HN: Are my expectations on code quality and professionalism too high?

#114
As others are saying: it depends.

Without knowing more about your situation and its context within the larger org, it's difficult to make any judgments.

All I'll say is that I've internalized all these best practices and yet here I am running various products on various VPS's with a git post-receive hook and then logging in to the servers and recompiling or restarting. I have no tests, the code is not properly commented, and I've only written typespecs (Elixir) for the crucial bits of some of these apps, and I truly believe I've made the right decisions.

In recent weeks I've pushed for refactoring, and I managed to get some hours to work on a better deployment strategy. When more money becomes available I'll push for writing tests and working on documentation. The goal then would be to remove the 'bus factor' of 1.

I imagine you're nowhere near this particular scenario, but I imagine you're on a scale somewhere and I hope you figure out what the right standards are for you.

Re: Ask HN: Are my expectations on code quality and professionalism too high?

#115

Me as a manager at a startup: "Look, we have 5 months of runway. Does that make sense?" Young dev from large corp: "Yes. But if you don't use Terraform we wont be able to see our infrastructure changes over time. We don't even have a proper code review process." Me as a manager at a startup: "We have two micro instances. Do not install Terraform. Finish the import prototype... now." Young dev from large corp: "Sigh,…

The time when you have 2 micro instances is the best time to implement terraform. You can do it in 5min, existing infra is obvious, and you likely can explain it to 2 other people and be done. Once you're established, growing, and accumulating features it will take weeks/months. (And if you need a duplicate environment for staging, how many clicks will it take?)

I thought the same thing, but after reading what the comment said again it wasn't a "use terraform or don't" story, it was terraform vs "import prototype".

Generally for most resources, I feel like I can write terraform just as fast as I could create the resources in the console.

Probably not a good example, but I agree with the sentiment that you have to prioritize the business.

Re: Ask HN: Are my expectations on code quality and professionalism too high?

#116
post #36

I have been in both kinds of companies. 20 years ago, having none of these basics was almost the norm. It can work, and sometimes I even miss those days, because it can be fun and very fast paced. However, it also comes at a price. There's a constant, high stress level because things break all the time, even on production, and you have to be quick to fix them, often directly on production. I wouldn't want to go back,…

> 20 years ago, having none of these basics was almost the norm

I guess I worked at one of the best then. It still went out of business.

Re: Ask HN: Are my expectations on code quality and professionalism too high?

#117
There are definitely small and medium sized companies that follow the principles you describe. However, there are lots that do not. Trying to transition a company from "do not" to "do" is quite difficult.

Whenever I hear stories like this, I try to ask the person to imagine how the relatively good practices were born in the better company. The pressures are similar. The people are similar. There are two really big differences: the current situation of the organisation and the approach you take to move toward a better way of working.

One of the easiest ways to change culture is if everybody in the culture is unhappy. Revolution is just a suggestion away. When you look at things like the first XP project (whether you believe it was a success or not), it's well documented that they were able to use XP because they were just so sick of the thing they were doing previously.

Often this is not the case, though. Some people like what they are doing now, or doubt that another way will be substantially better. In this circumstance, I like to try to do something I call "aligning vectors" (which I'm pretty sure I stole from something that James Coplien wrote, so if so, I apologise :-) ).

Software is a team sport. When you think you have the correct way of doing something, it is tempting to go and do it. But if everybody goes off in different directions, following the ideas that they think are right, the result is that the team as a whole will certainly fail. Perhaps it won't be your fault (you walked in the right direction after all), but it hardly matters.

So what you need to do is to convince everyone to walk in the same direction. At first, it doesn't matter which direction you go. It is completely fine for everyone to walk in the wrong direction as long as you can change direction later. It is much easier to change everyone's direction after they are all going in the same direction to begin with.

This means that your first task is to align yourself with the majority - even if you disagree with it. Remember, at first you just need to get everyone walking in the same direction. That means that you need to walk in the same direction as the majority.

Next, you need to look at what other people are doing differently. If you think one person is doing something better than the others, try to align one of the others towards that person. This is where you need to be a bit clever, because not all people are equally easy to align.

In any group, there are early adopters, middle adopters and late adopters. Early adopters will try anything for giggles. Middle adopters need to have some kind of evidence that the thing is better for them to try it. Late adopters will not try it until the vast majority of people are already doing it. So your task is to find an early adopter and get them to try the better thing that someone else is doing.

Now here's the most important thing. You need to make sure that they are successful. You need to help that person and do everything in your power to see that they succeed. If they fail, it's best to say, "Oh, that was my fault (for whatever reason)", so that they feel OK about failing and will feel happy to try again with something else. If they succeed, you have to say "Oh, that's amazing! You are great!" so that they feel happy they tried something new.

Then you need to advertise the success. Once the middle adopters see the success, they will want to get a piece of the action. Encourage them gently and hopefully you will get one to bite. If you make them successful and make them look really good, then others will want to try.

Eventually you will have only the late adopters. The thing about late adopters is that they are usually very socially sensitive. They will be very uncomfortable with everyone else doing something other than what they are doing. They may complain. They may get angry (even at you). Just stay calm and suggest, "Why don't you give it a try? If it doesn't work, we'll learn something that everyone can benefit from." Usually they will, but if they don't, it is totally safe to let them do their own thing for a while.

Keep doing this (it takes a long time!) until everyone is going in the same direction (with the exception of 1 or maybe 2 late adopters). If you do a good job, everyone will trust you and will be very eager for suggestions about what to do next (because you have a history of helping them be successful). It is at this point you can introduce something new: "I don't know if this will work for this team, but in my last job we did X and it seemed to work really well".

The more success you have and the happier the early and mid adopters are, the more pressure the late adopters will put on themselves. They hate this kind of thing. They will either decide to join you, or they will quit. I've never seen another outcome (and it breaks my heart when they quit).

Anyway, I typed too much. YMMV :-)

Re: Ask HN: Are my expectations on code quality and professionalism too high?

#118
post #13

Oh my. Run away. If that is their current culture, there will be a lot of pushback if you want to initiate changes. Especially among the senior (responsible for the mess) ones who get defensive real fast. Maybe ask more about how their engineering culture is next time around during interviews.

If the author is not going to accept the challenge, then yes, run away is the best choice. On the other hand, the situation is unique, and the author can try to show himself with these challenges.

But I agree with the last sentence. This is a huge mistake, and it seems that the author did not ask these proper questions during his interviews. Perhaps, this is the most valuable lesson to him from the story. You have to know which company you are going to join and the state of engineering.

Re: Ask HN: Are my expectations on code quality and professionalism too high?

#119

I'm surprised at the comments here acting as if change is not possible. Do people really believe that there are 2 completely separate group of coders in this world... those who "get it" and meet the best practices, and those who reject those practices and fight to never improve? I'd say that there is a huge middle ground of coders who want to improve, but have business drivers that have stopped it from happening. And…

The reality in most startups is that everyone works on whatever will increase revenue the most. There's no point in testing, code reviews, CI, etc if you are not yet sure that you'll still be selling the same product 2 months from now.

That kind of makes it a moot point if people get it or not. They just do what needs to be done to help the company survive. Once the company is secure financially and has settled on a product, then it's kind of not a startup anymore.

Re: Ask HN: Are my expectations on code quality and professionalism too high?

#120

I'm surprised at the comments here acting as if change is not possible. Do people really believe that there are 2 completely separate group of coders in this world... those who "get it" and meet the best practices, and those who reject those practices and fight to never improve? I'd say that there is a huge middle ground of coders who want to improve, but have business drivers that have stopped it from happening. And…

The reality in most startups is that everyone works on whatever will increase revenue the most. There's no point in testing, code reviews, CI, etc if you are not yet sure that you'll still be selling the same product 2 months from now. That kind of makes it a moot point if people get it or not. They just do what needs to be done to help the company survive. Once the company is secure financially and has settled on a…

Right, but OP said mid-size companies, not startups.
Post reply on HN