How to waste time and overcomplicate things
ryanwarnock.me
ryanwarnock.me
In business, the situation is usually even worse. The customer needs some problem solved. They assume the easiest way there is to get a different problem solved. They ask a customer support-type person about that. The CS person assumes a solution is best, and then go to a project manager. The PM assumes a particular implementation is best, and goes to a developer.
By the time the developer is trying to solve the customer problem, it has been transformed into a different problem at least four times, by mere assumptions that rarely have anything to do with reality.
Always, always ask "Why am I doing this? What evidence do I have that suggests this specific thing absolutely needs to be done?"
One of my favourite quotes is "It ain't what you don't know that gets you in trouble, it's what you know for sure that just ain't so."
----
It's not a small effect either. I've heard serious, well-reasoned estimates ranging between 50 % and 99 % of our work being completely unnecessary busywork.
Imagine that. In the most pessimistic (optimistic?) case you could spend half the year sipping drinks on a beach and still get just as much truly useful work done.
I had a good reason to write those scripts because I thought I had a problem, if I had tried to find evidence that I actually had that problem and I needed those scripts (by just doing a test run) I quickly would have realised it was all unnecessary.
The world is a lab. Shape it in ways which you think will prove your hypotheses false.
I can see and understand the pointlessness happening, which is a bit alienating when other people think they are doing hard important work and I think/know they aren't, and I need their buy in to avoid them asking me to also do things I know are pointless.
If I wanted to do pointless things (and I'm not sure I'm even capable of that) I could probably get paid a lot more by changing job, but I'd rather change my job to be less pointless, as it seems better for my mental health.
There are also some more formalised versions of the scientific process applied to the workplace. Mike Rother's Improvement Kata come to mind.
Edit: also get good at negotiation! People are complicated and refuse help even when they obviously need it. Being a good negotiator ideally helps everyone.
Second edit: another thing is leading by example. That's been very powerful in my experience.
I get handed a task which has been decided by layers of several people, I complete the task and then the client comes back to me, wondering why what they want doesn't work, the problem, the task I was asked to complete doesn't solve the original client problem or only partly solves it because many people that did not understand the issue or do not have the technical understanding defined what needed to do and the issue is I had no visibility of the original issue, which I could of easily advised or sorted had I been involved in that.
What happens is they decide what needs to be done and then send me the task, I have no idea of the original problem or what this task does in relation to the chain of everything else.
Instead it's me looks bad and me the client is upset with, while the others that decided this have long gone and moved onto something else.
It makes me a pain in the ass, of course, but a highly effective pain in the ass, I hope, and it seems also one that customers appreciate.
Edit: Oh, and whenever someone says "the customer needs X and Y" the important follow-up is "what makes you believe that?"
Sometimes there's a good reason. Often it's "they said during a meeting that so-and-so, which makes me think that maybe so-and-so, which, if so-and-so, implies that so-and-so."
Yeah, that. If possible, the right thing to do is go to that customer and ask "hey, a quick question, what are you trying to achieve when you use that X or Y feature your asked for?"
In my experience, the odds of they answering your question are about as large as the odds of they saying "what are you taking about? I have no need for X or Y and never asked for them." While if you keep talking to the PM, that second answer will never come through.
Why?
Because this is exactly what happens. IT-adjacent business customer comes and says they need X. Often via a couple conversations we can figure out that Y will do a much better job solving their problem, we develop it, and everyone goes away happy.
Of course, sometimes this results in curious escalations where the customer is frustrated that they aren't getting X, but this is becoming more rare, because aforementioned leadership knows that what the customer wants isn't always what they need (nor best for the company).
Basically, you had to have the project designed, before pitching it. After that, it had to go through a lot of folks, flinging poo at it (They called these meetings "Design Review" meetings, or "DRs").
It certainly resulted in relatively successful outcomes (and I saw failures, where managers let stuff pass without that level of detail), but I think it also killed a lot of good stuff. Some ideas are worth approaching, even if the approach has not been fully mapped-out.
I'm a huge fan of "Evolutionary Design"[0-1]. It has served me well, but is not for the faint of heart (or the inexperienced). If you don't have a lot of experience (as opposed to intelligence and/or education), then I do not recommend this approach.
I am also a fan of "biting off more than you can chew"[2]. Again, I would only recommend this for experienced people, if it is for shipping projects.
If not for shipping projects, then go for it. Knock yourself out.
[0] https://littlegreenviper.com/miscellany/forensic-design-docu...
[1] https://littlegreenviper.com/miscellany/evolutionary-design-...
[2] https://littlegreenviper.com/miscellany/thats-not-what-ships...
That said, even a very rough outline of an idea should be subjected to an appropriate amount of high-level criticism.
Caveat: One may have to reframe the problem to really solve it http://www.azarask.in/blog/post/the-wrong-problem/ | https://archive.is/uLlkx
Can you give some examples? Have you identified any specific methodology/process at play here which can be learned?
This is why I made it a habit to (almost) always ask my customer for a use case.
Working with someone else’s assumptions without first reviewing them inevitably leads to new problems. Because someone had a _faster_ way…
I'm the author of this post. I'm not sure who shared it and it is a little bit embarrassing that my first blog post which ends up on hacker news is about how I stuffed something up. I'm sure we've all had similar experiences at one point or another.
Cheers to learning from our mistakes.
I hadn't spoken to him in around a year so it was actually a nice way to start a little chat :)
People spend months messing around with all sorts of ridiculous bullshit and then go and post on HN about how complicated React is. But somehow it was just fine in 2016 when the API surface was like twice as big. The only difference is that in the last few years everyone has somehow become convinced that the "best practices" are to spend 6 months inventing a 3D printer at the start of every project while your competitor builds your product in a weekend with just a chisel.
Taking that solution, and running with it, will often be a disaster.
Not because the client is an idiot, or uninformed .. but because the client often won't be in a place to understand the greater context.
'Greater context' here involves functionality in macro sense (new features need to live within the landscape of current features), as well as the technical constraints and costs associated with carrying out any work. It's information a client most likely won't have access to.
How can it be solved?
Research problems, not solutions.
Ask for a description of the problem; refuse any solutions. Understand what needs to be improved.
Solutions come later.
IIRC the solution steps should be Step 1: make it work, Step 2: refactor, Step 3: optimize. I think you did Step 1: unoptimize, Step 2: undo
I think you've managed to describe my development process fairly accurately and gave me a good chuckle. Thanks for that.
In a setting with many people and departments, and each having their own agendas, things get really complicated. Information is misunderstood, twisted, biased and acted differently when it reaches actual person who does the work.
Sadly the article really doesn't live up to that title in terms of what I was hoping it would do as it's just a personal antidote about someone setting up a video encoding system but something I gotta work on I guess!
I hate talking politics but it angers me so much I just can't get over it. The money-capital system supposed to drive innovation is exploited by big corp just to make more money, dominate markets, or just make people feel safe doing almost absolutely nothing wasting time and getting payed for it.
A sad world.
[1] https://dev.to/wuz/stop-trying-to-be-so-dry-instead-write-ev...
Rather than assume the veracity of my thoughts or approach, or my memory of how things work or how I previously implemented something or solved a problem, I remind myself that I’ll save time and effort if I stop, review and consider what I’m planning to do.
Do I need to do this? Of course not. But when I don’t, I sometimes find myself wasting time, and inevitably returning to check my assumptions.
That's unfortunate indeed. Is it planned to be implemented at some point?
> I regularly run into random hiccups and playback issues which I haven't had happen with infuse
Could it be that Jellyfin buffers are too tiny? Or that it's using a higher framerate? In any case, it sounds like it's worth reporting to the Jellyfin project.
Have fun