Remix.run Logo
trevor-e 4 days ago

> Your job is to deliver code you have proven to work.

Strong disagree here, your job is to deliver solutions that help the business solve a problem. In _most_ cases that means delivering code that you should be able to confidently prove satisfies the requirements like the OP mentioned, but I think this is an important nitpick distinction I didn't understand until later on in my career.

newsoftheday 4 days ago | parent | next [-]

There's no distinction there, proving the work is correct is within the scope of helping the business solve a problem; not without and not beside it. So your point is hot air, making a distinction where none exists.

casey2 4 days ago | parent [-]

The distinction does matter. Requirements can be and often are wrong when the rubber meets the road. If the cost of implementing requirements correctly is $1,000,000 and the value of the product is $1000 then even choosing to clarify requirements has failed the business. The non failure mode here is to write the code for less than $1,000. Even if the code doesn't work at all!

tech-ninja 4 days ago | parent | prev | next [-]

> In _most_ cases that means delivering code that you should be able to confidently prove satisfies the requirements like the OP mentioned

That is an insane distinction that you are trying to do there. In which cases delivering code that doesn't satisfy the requirements would solve a business problem?

claar 4 days ago | parent | next [-]

IMO, it's not insane at all - I didn't understand this until I moved from developer to executive.

Solving the business need has precedence over technical correctness.

Satisfying "what I think the requirements are" without considering the business need causes most code rework in my experience.

adrianmonk 4 days ago | parent | prev | next [-]

I will make up some numbers for the sake of illustration. Suppose it takes you half as long to develop code if you skip the part where you make sure it works. And suppose that when you do this, 75% of the time it does work well enough to achieve its goal.

So then, in a month you can either develop 10 features that definitely work or 20 features that have a 75% chance of working. Which one of these delivers more value to your business?

That depends on a lot of things, like the severity of the consequences for incorrect software, the increased chaos of not knowing what works and what doesn't, the value of the features on the list, and the morale hit from slowly driving your software engineers insane vs. allowing them to have a modicum of pride in their work.

Because it's so complex, and because you don't even have access to all the information, it's hard to actually say which approach delivers more value to the business. But I'm sure it goes one way some of the time and the other way other times.

I definitely prefer producing software that I know works, but I don't think that it's an absurd idea the other way delivers more business value in certain cases.

p2detar 4 days ago | parent | prev | next [-]

I didn’t read it this way, but I admit the comment is somewhat vague. I thought GP meant that not all solutions require delivering code. In my job when I get a support inquiry, I first try to think what exactly is the customer’s end-goal. Often support didn’t get what the customer’s real pain is. Some solutions are reduced to pointing them to some unusual workflow that solved their problem. This way I don’t need to tinker any code at all.

trevor-e 4 days ago | parent | prev | next [-]

No, what I meant is sometimes the solution is not delivering any code at all.

Many times in my career, after understanding the problem at hand and who initiated it, I realized the solution is actually one of:

1) a people/organizational problem, not technical 2) doesn't make sense to code a complicated system when it could be a simple Google Sheet 3) the person actually has a completely different problem 4) we already have a solution they didn't know about

My issue with the OP is that it highly emphasizes delivering code. We are not meant to be code monkeys, we are solving problems at the end of the day. Many people I've met throughout my career forget that and immediately jump into writing code because they think that's their job.

nrhrjrjrjtntbt 4 days ago | parent | prev | next [-]

When you can ship Redis for example instead of rolling your own cache.

theshrike79 4 days ago | parent | prev [-]

Not all problems are "work" vs "doesn't work".

We're not talking about making a calculator that can't calculate 1+1. This might be a website that's a bit slow and janky to use.

25% of users go away because it's shit, but 75% stay. And it would've too much effort to push the jank to zero and retain a 100%.

A website that takes juuuust too long to load still "satisfies requirements" in most cases, especially when making loading instant carries a significant extra cost the customer isn't willing to pay for.

sharkjacobs 4 days ago | parent | prev | next [-]

Maybe I'm not late enough in my career to understand what you're saying, but what kind of problems are you helping the business solve with code that hasn't been proven to work?

trevor-e 4 days ago | parent | next [-]

Sorry I wrote that hastily and my wording seems to have caused much confusion. Here's a rewrite:

> The job is to help the business solve a problem, not just to ship code. In cases where delivering code actually makes sense, then yeah you should absolutely be able to prove it works and meets the requirements like the OP says. But there are plenty of cases where writing code at all is the wrong solution, and that’s an important distinction I didn’t really understand until later in my career.

Although funnily enough, the meaning you interpreted also has its own merit. Like other commenters have mentioned, there's always a cost tradeoff to evaluate. Some projects can absolutely cut corners to, say, ship faster to validate some result or gain users.

SoftTalker 4 days ago | parent | prev | next [-]

Getting a big customer to pay for a product that your sales team said could do X, Y, and Z but Y wasn't part of the product and now you need some plausible semblance of Y added so that you can send an invoice. If it doesn't work, that can be addressed later.

ambicapter 4 days ago | parent | prev [-]

Getting a big sale by hacking together a demo that wouldn't scale up in the slightest without a complete rework of your backend.

antod 4 days ago | parent | prev | next [-]

It's more than just solving a problem though, you should be solving the given problem without creating new problems. This is where the working/secure code aspect comes in.

nrhrjrjrjtntbt 4 days ago | parent | prev | next [-]

> Strong disagree here, your job is to deliver solutions that help the business solve a problem.

Sure. That is every job though. It is interesting to muse on. Hard for us to solve a problem without a computer (or removing one!)

gardenhedge 4 days ago | parent [-]

Yeah, more correctly, the description should be:

"Your job is to deliver technical solutions that help the business solve a problem"

Where the word technical does the work of representing your skill set. That means you won't be asked to create a marketing campaign (solution) to help the business sell more product (problem).

draw_down 4 days ago | parent | prev | next [-]

Man we better hope the solution to that problem is working code. Otherwise we better start working the fryers or something.

doganugurlu 4 days ago | parent | prev [-]

Didn’t know your code could satisfy requirements without working. /s

My priorities are as follows: 1) code works 2) code satisfies requirements

Not sure how anyone can prove their code satisfies requirements when it doesn’t run.