Live data from Hacker News

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

news.ycombinator.com

161–170 of 306 posts

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

#161

The Joel Test : https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-s... * The Joel Test Do you use source control? Can you make a build in one step? Do you make daily builds? Do you have a bug database? Do you fix bugs before writing new code? Do you have an up-to-date schedule? Do you have a spec? Do programmers have quiet working conditions? Do you use the best tools money can buy? Do you have testers? Do n…

Joel's test is a good baseline. Ok, some things might or might not apply in some cases (are you really not going to put out a feature before fixing a minor low priority bug?), and I've seen companies follow these items but still be atrocious places, anyway.

My point is: a lot of software wasn't built using these principles. Software that's used in a lot of places and/or got very popular (also note there's no "unit tests" in those items)

So yeah, these are all good, but what I would set as priority (in my mind)

- Source control

- Quiet/comfortable working conditions (the "best tools" might be merged here - though the meaning of best tools is debatable)

- Bug database

- One step build

- Candidates writing code on interviews

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

#162

Earlier quoted context omitted.

> Young dev from large corp: "Sigh, ok, just saying in 2 years from now we wont be in a good spot". Except in my experience it’s not two years , it’s two months . And I can set up two micro instances with terraform in less than an hour. So soon you’re burning your three months of runway with development at 20-50% efficiency, and have no ability to pivot, if needed, because your infrastructure is rigid and hardcoded.…

> And I can set up two micro instances with terraform in less than an hour. The post was more of a metaphor than a concrete example. However, as a manager I can’t count how many times my team has declared that they can do something in under a day only to have it become a part-time job for someone to maintain indefinitely, or a multi-week rabbit hole as they debug some unexpected behavior, or technical debt as they ne…

When I was managing a large, distributed team of mostly mediocre engineers (at a poor bigco), it was common to take the best case estimate (provided by a senior engineer or architect), add 50-100% because due to lack of similarly experienced engineers responsible for day-to-day coding, add 25-30% for SQA, and add 50% for "business" delays (usually LOB heads who couldn't agree on features, or who asked for utterly stupid things that we'd have to explain away before we even got started ... like a web UI with a 52 column table meant to emulate the previous Excel-based "system"). The result was frustration all around because the senior engineers knew our estimates were crazy high compared to what they'd be able to do independently, our business stakeholders were mad because of the cost, and our CIO couldn't understand why it seemed literally nothing was doable in less than several thousand person hours. Good times.

But when you 1) don't have an constructive relationship between CIO/CTO and business leaders, and 2) offshore everything not to follow-the-sun but purely to save money (and then pay bottom of the barrel even in lower cost regions -- that company still only pays engineers 10-12 lakh in south India), you're going to get an inefficient org creating crap quality software.

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

#163

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,…

> Young dev from large corp: "Sigh, ok, just saying in 2 years from now we wont be in a good spot". Except in my experience it’s not two years , it’s two months . And I can set up two micro instances with terraform in less than an hour. So soon you’re burning your three months of runway with development at 20-50% efficiency, and have no ability to pivot, if needed, because your infrastructure is rigid and hardcoded.…

> Except in my experience it’s not two years, it’s two months. And I can set up two micro instances with terraform in less than an hour.

Fucking that. Only skip the basics entirely if you don't plan to hire anyone in those 5 months (no or inadequate tests, no scripted way to create a dev instance? You just cut their first-two-months productivity in half.) and are 1000% sure no-one's gonna horrifically break prod, and don't mind dev velocity dropping ~10% (and/or bug rate and "of shit it's on fire" calls increasing alarmingly) every month over the next 6 months.

There's a lot of room between "we need a k8s cluster with autoscaling, three kinds of databases, lambdas, blah blah" and "LOL develop on prod YOLO!" IME this kind of thing never gets added in month 4 because there's already too much tech debt. Add it in month 1. A couple days and 10s of dollars/month setting up or buying tools & services to keep your team confidently moving fast over the next half-year is some of the most valuable work you'll do.

[EDIT] oh and in the specific case of Infra as Code or fully-scripted deployments, around month 4 when your stuff's a bit more complicated it makes your answer "yeah, give me these couple pieces of info and put me in touch with one of their tech guys and I'll have it done by lunch tomorrow" instead of "uhhhh... fuck... uh.... two weeks? Hopefully?" when your sales guy says "we've got a huge deal almost closed but they need our thing hosted on govcloud/on-prem/European servers, can we do that?"

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

#164

The Joel Test : https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-s... * The Joel Test Do you use source control? Can you make a build in one step? Do you make daily builds? Do you have a bug database? Do you fix bugs before writing new code? Do you have an up-to-date schedule? Do you have a spec? Do programmers have quiet working conditions? Do you use the best tools money can buy? Do you have testers? Do n…

Jeez

Do you use source control? YES

Can you make a build in one step? NO

Do you make daily builds? NO

Do you have a bug database? NO

Do you fix bugs before writing new code? NO

Do you have an up-to-date schedule? NO

Do you have a spec? NO, NEVER.

Do programmers have quiet working conditions? YES

Do you use the best tools money can buy? NO

Do you have testers? NO

Do new candidates write code during their interview? NO

Do you do hallway usability testing? NO

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

#165

Counter these examples with small companies paralyzed by process, introduced by well-meaning hires from large companies with plenty of capacity. A large company is a marathon run. Discipline, strategy, training matter. A small company is running from a bear with your hair on fire.

Except that lack of some of these basics makes small companies extremely hard to pivot and modify their products for larger customer base - pretty much cementing their fate as a failures.

Even small teams of 3 people can benefit from basic code reviews and CI pipeline that makes them significantly more capable of responding to new business requirements than startups bogged down in 5 months of technical debt.

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

#166
post #99

Align it with business needs and observable outcomes. Does the company suffer from outages? (Not just have them—but actually suffer from them.) When there's a production incident, do a root cause analysis. If some of the root causes are related to coding and deployment practices, make notes of that. Start aggregating that information. Soon you'll have evidence that you can reduce outages by changing practices. Does P…

Agreed. I've found that part of the problem is how we (engineers) communicate value to non-engineers. It's not right to get upset with a laymen/business people without putting some effort into explaining. I've always found this type of communication effective:

- This database change will improve our page load time from 3s to 1s at the cost of 25% of a sprint's capacity.

- This library version change takes X amount of time because there are 45 sites in the code we need to change, and that impacts 120 test cases which we need to rerun.

- Not adopting this puts us at risk of an incident like .

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

#167
I use to work at Salesforce/Pardot for about a year. They had A LOT of security in place (VPN, 2FA, etc.) and were managed very well. Deployments weren't automated but everyone that had code in the deployment had to be on deck in case shit hit the fan. I learned a lot working there and having them drill security into my head I was able to use that in future organizations that I worked at.

The startup that I joined after that had passwords stored in plaintext via a google spreadsheet. Code was not stored in VCS and updates were done in production. I helped the organization adopt scrum and added some development processes in place and added tools to help me and the small team (me +2) of developers manage the different codebases a little better. No one wanted to do this but I forced it anyway.

The organization I'm at right now was similar but has a lot of different challenges.

Each organization you join will be different, the culture will be different. Some will be focused on quality and some will not. You need to understand a few things and be able to communicate with executives and/or managers to accomplish your goals.

Executives do NOT GIVE A SHIT about automated deployments, code coverage, code reviews, etc. They view those things as wastes of time and the "code monkeys" should just get back to work. I'm not saying this is the case 100% of the time, but you need to change how you communicate with these people. Explain what tech debt is and how small investments in time can reduce this. Yes, going from 0% code coverage to 80% is going to take time, and this is something you will need to explain to them.

Some devs are similar and I think that's mostly because no one sticks around long enough at a company to maintain their shit code.

Depending on your role you are either in a position to force these things to happen or you are in a position where you need to bring others up to your level. Both are difficult in their own ways and will require a large time investment on your part. However, BOTH will require you to help others raise their expectations.

The other thing I want to leave you with is a conversation I had with a mentor a long time. Being in a similar situation he told me to not hold others to MY expectations. Hold others to THEIR expectations. This comes back to helping others improve. Bring others UP to your level.

If none of this helps, you may want to quit and find another position elsewhere, but keep in mind, this will be something you are going to run into in many organizations and you are going to have to learn to deal with it.

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

#168
To expect any company you work at to follow these standards isn't unreasonable, but if that's what important to you in a job, you have to ask.

It is unreasonable to expect every company to follow these practices.

Also you have to realize that these practices don't universally increase development velocity. Code review, high levels of unit test coverage, and deployments take time.

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

#169

Earlier quoted context omitted.

> And I can set up two micro instances with terraform in less than an hour. The post was more of a metaphor than a concrete example. However, as a manager I can’t count how many times my team has declared that they can do something in under a day only to have it become a part-time job for someone to maintain indefinitely, or a multi-week rabbit hole as they debug some unexpected behavior, or technical debt as they ne…

When I was managing a large, distributed team of mostly mediocre engineers (at a poor bigco), it was common to take the best case estimate (provided by a senior engineer or architect), add 50-100% because due to lack of similarly experienced engineers responsible for day-to-day coding, add 25-30% for SQA, and add 50% for "business" delays (usually LOB heads who couldn't agree on features, or who asked for utterly stu…

It sounds like you had distributed decision making authority but concentrated accountability for the outcome. Worst-case scenario.

> the senior engineers knew our estimates were crazy high compared to what they'd be able to do independently

Interestingly, I worked at a company where teams of engineers were given wide latitude to design, implement, and deliver their features in isolation. The theory was that engineers could be more productive if they were left alone to make the decisions.

I'd say it worked about 1 in 4 times. The other 3 out of 4 times, engineers created their own labyrinth of over-engineering, spent too much time building things as reusable frameworks instead of simply getting the job done, and over complicating the system with unnecessary "Wouldn't be cool if..." type features.

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

#170
post #165

Counter these examples with small companies paralyzed by process, introduced by well-meaning hires from large companies with plenty of capacity. A large company is a marathon run. Discipline, strategy, training matter. A small company is running from a bear with your hair on fire.

Except that lack of some of these basics makes small companies extremely hard to pivot and modify their products for larger customer base - pretty much cementing their fate as a failures. Even small teams of 3 people can benefit from basic code reviews and CI pipeline that makes them significantly more capable of responding to new business requirements than startups bogged down in 5 months of technical debt.

Sure its dangerous. But the question was, why is it so chaotic in a some small startups?

And you can't have everything. You can insist on process all the way to bankruptcy. Whatever the risks, sometimes the one that succeeds is going full-on to the finish line.

Post reply on HN