News for hackers. Stuff that matters.
Re:You don’t need to work on hard problems (2020) by ChrisMarshallNY on Tuesday August 17, 2021 @07:41AM (#28208795)
I enjoy doing pedestrian stuff; really, really well.

Most of my work is open-source, as I don't really do anything particularly innovative or patent-worthy.

Most of the value in my work is how I do it.

I work carefully, document the living bejeezus out of my work, test like crazy, and spend a lot of time "polishing the fenders."

This is something that anyone can do. It just takes patience, discipline, and care.

I'm weird. I enjoy the end results enough to take the time to do the job well.

It's been my experience that the way I work is deeply unpopular. Some people actually seem to get offended, when I discuss how I work.

Go figure.

Re:You don’t need to work on hard problems (2020) by gilbetron on Tuesday August 17, 2021 @11:00AM (#28210604)
One of the easiest periods in my career is when I was in charge (with one other coworker) with modifying a certain capability in a large, distributed "web application" (it was a for a DDOS detection/mitigation appliance and associated web UI). Every time it needed modification, there was around 50-75 code locations that had to be tediously updated. When I first encountered it, I had created a document outline all the locations and the pitfalls around modifying them, along with tests to verify them. I performed the process a couple of dozen times over the 2 years. It was trivially easy, easily tracked, and I was always given plenty of time to get it right (good managers). I've never had a project manager happier with me because my estimates were always spot on (it's the type of work that is easy to estimate after the first 2 or 3 times you do it), and management understood exactly what I was doing, and no one else wanted to do it.

I have since found that people still really don't want to do that work, are grateful when I will do it, and (except for one instance) management recognizes it as important, slow, tedious work. The only issue I have is that it gets boring, and so 80% of the effort goes into motivating myself to get it done ;)

Re:You don’t need to work on hard problems (2020) by tharkun__ on Tuesday August 17, 2021 @09:08PM (#28216647)
I've said it before here on HN I think but I always find it interesting/hilarious to what lengths people go to avoid a little bit of manual work. Like something that literally takes 2 minutes of manually doing the same sequence of click/type combo for 40 items total. Instead they must spend 2 days trying to automate it. And very likely still fail to do so.

Then on the other end I once automated a process ('running a report') that took one of the senior Devs at that place an entire day to compile in: exactly one day. Suddenly that report could be run when people actually needed it (once a month) but they only ran it every half year because of cost and blocking a resource for an entire day.

Your case feels like it might be somewhere in between (given I have zero context/actual knowledge of what these updates are/why they can't be centralized somehow. Has anyone tried?

Re:You don’t need to work on hard problems (2020) by gilbetron on Tuesday August 17, 2021 @09:29PM (#28216781)
Not there anymore (my story was about 6 years ago), and I was able to reduce it somewhat, but it was mostly a case of lots of, effectively, microservices that needed updating in case-specific manners. To reduce it further would take major architectural changes that would take more time than simply doing repeating the process I had created, even if done for a couple of decades.
Re:You don’t need to work on hard problems (2020) by TameAntelope on Tuesday August 17, 2021 @11:17AM (#28210806)
Depending on the details of what you mean by your description of how you work, you'd either be a godsend to a startup or a nightmare. It's kind of funny how it could still be either!

I personally have gone in the opposite direction, where I spend most of my time making sure I'm not going to cause irreversible damage, and then just letting the not-critical bugs into the wild, because I'd rather ship a flawed product now and get feedback on it from actual users, than wait to ship a product until it's "perfect" and get no feedback until then.

But I respect the hell out of what you're describing here, because for every one of me, there needs to be one of you. The trick, in my experience, is getting you and I to work happily together. It's very difficult, but when it works, it's wonderful for both of us.

I just wrote a "guiding principle" for my dev team that reads:

"As long as a risk doesn't have catastrophic (irreversible) harm severity (consequences), it may be worth allowing the risk to actualize before attempting to mitigate or eliminate it."

I'm guessing you'd hate that? Any way I could make it marginally more tolerable?

Re:You don’t need to work on hard problems (2020) by ChrisMarshallNY on Tuesday August 17, 2021 @11:51AM (#28211204)
I suspect that this comment might answer your question (Godsend or Nightmare -probably both. Old Testament Godsend): https://news.ycombinator.com/item?id=28211073
Re:You don’t need to work on hard problems (2020) by tharkun__ on Tuesday August 17, 2021 @09:29PM (#28216779)
Disclaimer: I'm not who you are answering to.

But whoa that's quite the story. I suspect that you are a godsend for the typical startup which will probably tend to be on the "physically sick from looking at the code" side of things and you are gonna pull in the other direction. In the end the startup would end up in a great 'middle ground' if neither side quits in frustration over the other.

Which is basically what your parent says is the hard part. To balance it out.

There's a lot of 'good enough' code and functionality you can 'get away with' that will actually be useful for your customers. And they can get it and use it now and not in 1 year from now. What is missing in a lot of companies is the 'sticking with it' meaning actually not just throwing the MVP out there and leaving it but collecting and _acting on_ that user feedback. Which is next to impossible with sickening code but easy enough with '80/20 rule code'.

Re:You don’t need to work on hard problems (2020) by toto444 on Tuesday August 17, 2021 @08:12AM (#28209008)
I have been thinking a lot on a problem with the idea to find a tech solution that could help solving it. The more I was thinking about it the more I realized that what I think is the the best way to solve the problem does not involve any tech at all.

That's how I started working a a static website. I have been working on it for a few years now. I have realised my strength is that I can work on a problem for a very long time. My website solves a lot of very tiny problems one by one. Nothing impressive when you look at them individually. However after solving hundreds of them a big picture starts emerging.

When I was younger I wanted to solve very hard problems. I have let that idea go and have no regret about it.

Re:You don’t need to work on hard problems (2020) by ChrisMarshallNY on Tuesday August 17, 2021 @08:17AM (#28209046)
> and have no regret about it.

A worthy life goal. I feel that way, myself.

Re:You don’t need to work on hard problems (2020) by tenaciousDaniel on Tuesday August 17, 2021 @11:01AM (#28210608)
So I've seen both sides of the "unpopularity" issue. On the one hand, the other comments about pushing too fast for new features are valid.

On the other hand, it very much depends on the developer in question. I'd say roughly 50% of the devs who claim to be in your category are, in fact, wasting dev cycles on pedantic things that have no impact on the end user. As an example, I had one developer take 6 months to build a (relatively simple) top nav for a web app. This shouldn't have taken more than 1-2 weeks, even with a careful eye for detail.

Re:You don’t need to work on hard problems (2020) by gilbetron on Tuesday August 17, 2021 @03:34PM (#28213904)
I've developed different red flags over the decades, and while I don't doubt you've encountered developers that are really slow, one of my red flags is the time estimate of "1-2 weeks". That's the off-the-cuff estimate that people give when they have no idea how long something will take. "A week or two" is "I can't imagine it would take very long, but my imagination isn't very good" ;)
Re:You don’t need to work on hard problems (2020) by drdec on Tuesday August 17, 2021 @03:45PM (#28214009)
Before it became a video game, Fortnight was a popular facetious codename for projects at my employer.
Re:You don’t need to work on hard problems (2020) by ChrisMarshallNY on Tuesday August 17, 2021 @03:41PM (#28213968)
Re:You don’t need to work on hard problems (2020) by ChrisMarshallNY on Tuesday August 17, 2021 @11:39AM (#28211073)
> I had one developer take 6 months to build a (relatively simple) top nav for a web app. This shouldn't have taken more than 1-2 weeks, even with a careful eye for detail.

Oh, you mean "bikeshedding."

Here's an example of the difference between basic quality, and High Quality:

If you look at most of the repos for SPM modules in my portfolio[0], you'll see that the vast majority have test harnesses. I prefer using test harnesses[1].

These test harnesses tend to be pretty damn robust apps. Many are "ready for app store" robust. A lot of folks would just publish them, "as is." I've been writing apps for a very long time. I'm pretty good at this.

I can write a fairly decent test harness, with full app capabilities, in less than a day. If I take the time to localize it, maybe add a day or so.

Here's an example of some test harnesses[2]. Note that there are four of them. These represent the four different target environments for Apple (iOS/iPadOS, WatchOS, TVOS, and MacOS). I'll probably need to fork iOS and iPadOS, in the future, but we're not there, yet. A single codebase is still good for both (But I hope that SwiftUI makes supporting multiple platforms easier. We'll see...).

They test a Bluetooth framework[3].

It probably took me around a week or so, to write each one. They are pretty damn good. I deliberately went "over the top," with them, because I like to exemplify what I consider halfway decent Quality coding practices. I think they are all "App Store ready."

I decided to actually go ahead, and create a set of apps, based on these[4], [5], [6]. Here's the codebase for those apps[7].

I spent well over a month, on each, after merging over the test harness codebases, to make them ready for the App Store. Lots of UX testing, removing code that only applied to testing, and adding "friendlier" user interface. I didn't do much "eye candy," like animations. If I did that, then I probably would have spent another month on each. Animations tend to bring ... interesting ... bugs. I'm going through that, right now, with the app currently under development.

I'm working on an app that I started about a year ago. Actually, I started it over ten years ago, if you include the two servers that I wrote, upon which it depends.

One of the reasons that it has taken so long, is that I have truncated months of work, and tossed them in the garbage, because they were not the proper way to go. I have an "evolutionary design" process[8], that means this can happen. I plan for it. I've probably shitcanned three months' of work.

Another thing that I do, is have an "always beta" approach to Quality. I maintain the product at "incomplete, but ship Quality" status for as much of the project as possible. In fact, I've been sharing it with the team, using TestFlight External Testing, since Oct 3, 2020 at 7:47 AM (I got that from the TestFlight metadata). The initial Git checkin of the project was Sept. 4.

That means that the app has been stable and robust enough for user testing, and approval for basic App Store release (TestFlight External Testing is a more relaxed standard, but try pushing out a crasher, and see how far that goes).

I add localization support, accessibility, Dark Mode support, leak testing, etc., at every turn. It's very useful, because I can solicit immediate feedback from non-tech team members. It also means that the "basics" for App Store release are constantly being tested and validated.

Even more useful, if we want to ask for money, it's dam easy. We just loop the person we're begging from, into the TestFlight External Tester pool, and they can run the app without a Marketing chaperone, or sacrifices to the demo gods. We can also get valuable feedback from them.

It's really, really nice, and it has been, for many months.

I feel like we are now at a "starting point." Even though it has been a fully-functioning, release-ready app for the last couple of months, it still needs the "MVP treatment," where the testing pool is expanded, and we start applying it to "in the wild" scenarios. We've kept it to a small user pool, so far.

Lots of companies use their customers as guinea pigs for the first several releases; usually by shoving baling-wire-and-duct-tape junk down their throats (and making them pay for it), before hitting their stride. It's a deliberate strategy. Some months ago, I read a post, here, by a founder, declaring that "if you don't get physically sick at the quality of the code in your MVP, then you are spending too much time on code quality."

Basically, deliberately write garbage, and force it on your users. This has the very significant disadvantage of establishing a foundation of sand. Everyone always plans to "go back and do it right," but that never actually happens. That "physically sickening" MVP is the product for life.

One of the reasons that I took on this project, was the founder is a friend of mine. He is running it as an NPO (501c3), and putting his own money into it. He doesn't really have much of it, to begin with. Also, more alarmingly, he didn't actually have a particularly good idea of what, exactly, he wanted the app to be. That's a recipe for disaster.

He asked me to help him vet some development shops he was approaching, to realize his vision.

It was eye-opening. He got a number of ridiculous quotes. I know what is necessary for this type of project (not small). For example, when one said that they'll deliver a full multi-server, multi-client app for MVP in three months (firm), upon getting a vague, hand-wavy requirements spec, it was hard for me to keep a straight face. The most honest one, was one that quoted a valid price (six figures, and minimum six months), then basically said "come back when you know what you want." I respected that one.

After a few of these, I just got disgusted, and said "Screw this. I'll do it." I've been developing it for free, as a native iOS/iPadOS app. We have refined the specification and mission, as the app has progressed. Having a high-quality, ship-ready prototype, goes a long way towards developing a good app.

He has to pinch himself.

[0] https://stackoverflow.com/story/chrismarshall

[1] https://littlegreenviper.com/miscellany/testing-harness-vs-u...

[2] https://github.com/RiftValleySoftware/RVS_BlueThoth/tree/mas...

[3] https://github.com/RiftValleySoftware/RVS_BlueThoth

[4] https://apps.apple.com/us/app/blue-van-clef-for-mobile/id151... (iOS -Includes Watch app)

[5] https://apps.apple.com/us/app/blue-van-clef/id1529005127 (Mac)

[6] https://apps.apple.com/us/app/blue-van-clef-for-tv/id1529181... (TV)

[7] https://github.com/RiftValleySoftware/BlueVanClef

[8] https://littlegreenviper.com/miscellany/evolutionary-design-...

Re:You don’t need to work on hard problems (2020) by lytefm on Tuesday August 17, 2021 @04:53PM (#28214728)
> "if you don't get physically sick at the quality of the code in your MVP, then you are spending too much time on code quality."

While exaggerated, I'd definitely agree. If you don't quite know yet where exactly your company will pivot to in the next year or whether the company will still exist, it doesn't make sense to optimize for code quality - but for product-market fit instead.

> Everyone always plans to "go back and do it right," but that never actually happens. That "physically sickening" MVP is the product for life.

After having raised an 8 M Series A and hiring some more developers and UX experts, we're currently rewriting most of our app code. It's not an automatism that the bad code gets built on for eternity.

Re:You don’t need to work on hard problems (2020) by ChrisMarshallNY on Tuesday August 17, 2021 @05:00PM (#28214793)
Or you could hire people who do it right, the first time.

Take a look at my work. Feel free to browse the commit logs, and see how fast I write it. I "put it all out there."

It's quite possible to do very high-quality work, in very little time.

Just maybe not from folks just out of code bootcamp.

And...just to make it clear. I'm not looking for work. My dance card is very full, with the work I'm doing for free.

Re:You don’t need to work on hard problems (2020) by mathattack on Tuesday August 17, 2021 @08:55AM (#28209315)
Your kind of work is absolutely necessary for commercial software to run. You’d get crucified in an internal IT department where funding is entirely driven by new features, and 80% done usually has to be good enough.
Re:You don’t need to work on hard problems (2020) by jbverschoor on Tuesday August 17, 2021 @09:05AM (#28209398)
What I think is funny, is that developers get the most advanced tools out there (IDE, repl, debuggers, etc), for free. But deliver junk, blaming "the user"

The same is true for resource requirements and performance. People complain about their OS (windows, macos, sometimes linux or some VM), and that it takes 1 whole minute to boot, while some projects take a couple of minutes to start.

Re:You don’t need to work on hard problems (2020) by detaro on Tuesday August 17, 2021 @09:10AM (#28209427)
Heh, on the other hand it's also not uncommon to see complaints that developers refuse to pay for good tools, despite knowing first-hand that good software is hard to make.
Re:You don’t need to work on hard problems (2020) by 3pt14159 on Tuesday August 17, 2021 @09:54AM (#28209863)
My host OS takes about a second or two to boot and my VM OS takes about 5 seconds.

A whole minute would drive me insane. We should not be waiting this long for computers to turn on.

Re:You don’t need to work on hard problems (2020) by the_only_law on Tuesday August 17, 2021 @11:15AM (#28210782)
Currently my PC takes several minutes to boot, however I know the exact cause. I wonder how much boot time could be reduced by tuning settings, including not to start a lot if crap.
Re:You don’t need to work on hard problems (2020) by ornornor on Friday August 27, 2021 @08:32AM (#28326974)
And then, a few years down the line, “adding a simple button” takes a month because the foundation is rotten, the architecture is garbage, and spending any time refactoring or writing tests is “gold polishing” and “unnecessary work”. Never mind that everyone is afraid of changing anything in the application because ten other seemingly unrelated things will break. Fun times.
Re:You don’t need to work on hard problems (2020) by geebee on Tuesday August 17, 2021 @10:35PM (#28217207)
I like it too. I really enjoy knitting together data feeds from a bunch of different sources. I like using the ` character to deal with bizarro database headers that were imported from spreadsheets where people used strange characters or SQL syntax in column names. I like parsing JSON trees to pick out key value pairs according to odd patterns, getting the first nine characters of the names of a bunch of csv files on a website and adding whatever is new in them to a database where the column names are the first nine characters plus some other stuff. And so on. A lot of people find this hellacious, and for some reason, I kind of like it.

I read once that to be a good general practitioner physician, you have to kind of like dealing with bad breath and... well, it was a disgusting sentence, and you get all the info you need from the first half, so no need to take it further. But in a similar way, I kind of like totally messed up data sources.

Re:You don’t need to work on hard problems (2020) by commandlinefan on Tuesday August 17, 2021 @12:57PM (#28212084)
> I enjoy doing pedestrian stuff

I'm working right now on writing a shell script to exhaustively test a particular use case, because actually exhaustively testing it would (probably) take longer than writing the script. I'm doing this knowing full well that the next time this comes up two years from now, I'm probably not going to remember where I put this script, so I'll probably have to re-create it, but that's ok - because writing "boring" shell scripts is actually something I enjoy.

Re:You don’t need to work on hard problems (2020) by ryanianian on Tuesday August 17, 2021 @03:51PM (#28214064)
Put the script in a comment at the top of the code. It looks kinda funny and people tend to dislike that kind of thing in pull-requests, but I always just ask them to hold their breath and pretend the script isn't there. If the script isn't still useful the next time that code has meaningful change then remove it. I've never seen such scripts get removed - in fact they tend to evolve as the code they test/generate/modify does.
Re:You don’t need to work on hard problems (2020) by jacoblambda on Tuesday August 17, 2021 @06:44PM (#28215645)
Alternatively put it in a test scripts directory and put a comment linking to it in the header of the file (or readme if it's multiple files).
Re:You don’t need to work on hard problems (2020) by tharkun__ on Tuesday August 17, 2021 @09:43PM (#28216870)
No context here so I have to assume it's possible: why not include it in the automated test suite?
Re:You don’t need to work on hard problems (2020) by jacoblambda on Wednesday August 18, 2021 @08:55PM (#28229129)
Generally you should but depending on the type of test it might be prohibitive. I've definitely written up tests for validation purposes that I wouldn't use in a test suite normally before. Said tests usually require some complex or brittle setup and take hours or days to run. Because of that said tests are kept around for rare occasions.

Because they take so long and/or are so brittle, it's easier to just keep them on the side and update them when needed rather than deal with the back and forth on that in a project with a lot of code churn (i.e. when updating or retrofitting a legacy project). Once again, it's not ideal but it's better than nothing.

Re:You don’t need to work on hard problems (2020) by erichahn on Tuesday August 17, 2021 @05:23PM (#28215030)
Why not as its own file in the directory of the source code? Or in another directory...
Re:You don’t need to work on hard problems (2020) by ryanianian on Wednesday August 18, 2021 @09:54AM (#28220942)
I've seen junk drawer directories in repos full of similar files and usually the scripts don't get updated over time (perhaps the authors don't want to have their updates to the scripts reviewed). Having it with the file it manages commented out indicates it's intended as a purpose-built tool or historical artifact just for this file.

Beyond this it's just personal/team preference though.

Re:You don’t need to work on hard problems (2020) by tsian2 on Tuesday August 17, 2021 @03:21PM (#28213761)
I like to intentionally go after the small bugs which other people have put off because they seem to be relatively high-effort. I like the idea that I can focus on something that's bothering some people (occasionally and indefinitely) and make it never bother anyone again.
Re:You don’t need to work on hard problems (2020) by mattarm on Tuesday August 17, 2021 @11:42AM (#28211106)
I'm much like you, especially in personal projects. In a personal project that I plan to stay with long term there is no way I want to be chasing my own bugs all the time.

At work, I've found I work best with fast moving get-it-done types. They push me to accept imperfect work, and I've learned to see the value in that. I polish the imperfect stuff, and signal to the team when a "boring" quality improvement really could reap benefits.

Re:You don’t need to work on hard problems (2020) by RHSeeger on Tuesday August 17, 2021 @07:55AM (#28208907)
This is what I focus on. I found a new way to do something (that is relatively common with my work) in a way that made it easier later to maintain the work that was done. It made my day.
Re:You don’t need to work on hard problems (2020) by BiteCode_dev on Tuesday August 17, 2021 @12:25PM (#28211636)
Well sir, you would be my ideal colleague.