Hacker News new | ask | show | jobs
by mdoms 1609 days ago
Another story on the front page right now is "how I built a date picker". In 2022, people are still building date pickers. Imagine the progress our field could make were it not for the navel gazing, NIHing and pointless reworking.
11 comments

Is that navel gazing? Is a carpenter talking about making a table in 2022 navel gazing? Maybe not the sexiest topic but I'm not sure that's the term I would use.
Software engineering isn't equivalent to carpentry, it is equivalent to CAD. So you can ask if designing new tables in Solidworks is a waste of time. And to this, I'd say the answer is not so clear-cut.
I would say it is sometimes a good use of time to build a date-picker as a learning exercise
Designing tables in Solidworks is a great idea if you're trying to learn CAD.
Recently, I spent around 3 hours building a regex to check if a string is a valid date... Usually this shouldn't take more than 30 minutes, but the environment in which it was to run used some form of incomplete postgres with basically no documentation, so it was a long trial-and-error process of figuring out what to do. Now, equipped with this knowledge, it would potentially be great for me to be able to document my process, so that others won't have the same problem, but a) I already wasted way too much time on this and b) there is no good place to document it. The best thing I could think of would be a medium blog post, which is a band-aid.

All that said, I feel like documentation is getting better in newer technologies.

> In 2022, people are still building date pickers.

Automotive engineers in 2022 are still creating new designs of water pumps and alternators. The new design meets some new requirements for the particular application, be they thermal, spatial or cost-related.

The date picker designed in 2022 is to be used with 2022 applications, IDEs, toolchains, etc.

Lookup YouTube on how many people built a chair, desk, or any other basic piece of furniture. In a craft you have to do the basics yourself sometimes.
And yet, those people do not get paid hundreds of thousands of dollars a year, believe their work to be at the height of economic efficiency, or think themselves generally more intelligent than the average person.

Software engineering is not a craft. It is a discipline. If society is paying people these exorbitant sums to be the equivalent of digital Etsy moms, we're getting a raw deal.

I don't know what software engineering is ans I strongly suspect you don't, either. I fact, I think that software engineering is just a term invented to give non-programmers (professors, managers, consultants) a somewhat technical career path. There is certainly no engineering happening when someone creates a new web service or a new device driver. I don't think there's engineering involved in Amazon's latest cloud service or googles latest feature.

Regardless, programming is a craft. And programmers are essentially crafts(wo)man. Everything's handmade, there's only unicates, there's no formal education besides some guild rules (aka coding interviews) and the science of computing which tells you how and why a program works or doesn't but not how you create it.

There has been some research into actual engineering practices for software. But the underlying science often gets ridiculed, not applied, by practical programmers.

> I don't know what software engineering is ans I strongly suspect you don't, either.

I do actually. I am retired now, have 25 years of experience, and a physics degree from a prestigious college. I built control systems for microscopes, founded an industrial control systems company, wrote linux drivers for tuner cards, and built downhole fluid simulation software used on oil rigs. I also did every other "soft" type of software development you can imagine.

But there's tons of rules, if the industry would bother to learn. Comparing software developers 25 years ago when I started to today is embarrassing. The question of the OP is probably not "does the software industry learn?" but rather "is the software industry forgetting things it used to know?"

Every discipline needs to evolve and Crafting is how you evolve it. The fact that the software industry evolves too fast is because the domain it's applied to is very large and thus we are constantly finding out problems that need crafting.

> And yet, those people do not get paid hundreds of thousands of dollars a year, believe their work to be at the height of economic efficiency, or think themselves generally more intelligent than the average person.

Designers can be payed more than a software engineer. And we don't know what they really think but there are plenty who think that they are better than anyone and are doing the society a big favor but people simply don't understand. (You don't have to go to far away from some software industry to find the most egregious examples of those :D)

While I share the sentiment, there are plenty of perfectly valid reasons one might need or want to do this--I can't comment on that particular article as it seems to have moved off the front page.

A few things that could justify rebuilding the wheel as it were:

1. The thing doesn't work for the environment it's being used in (corporate network, obscure mobile browser, screen reader, whatever)

2. The thing doesn't work for non-Gregorian calendars

3. The thing doesn't work consistency across various types of clients (this reason gives me some nostalgic flashbacks to the early days of jQuery)

4. The thing is fine, somebody just wants to see how the sausage is made to learn of it

There's probably other reasons one would want to re-invent a common UI element. It's really hard to say how objectively good or bad a particular attempt is without context and more clarity on what metric it's being judged by.

What's exactly wrong with reworking old things? I find that it is your kind of thinking is what leads to bad software, bad reinventions of the wheel and security issues.

People in our industry need to know how to make the fundamentals from almost-scratch. In electronic engineering I learned how to bias transistors and build RC-filters. Heck, in chemistry class we even learned how diodes and resistors are made. When I studied music I learned scales, chords and rhythm... why should I, if I could just download some WAV loop off the internet, or sample some old song?

I don't see why software has to be special. Haven't we commoditised the profession enough?

Unfortunately the browser implementations of the HTML5 datepicker only make sense for an audience that understands the US date notation. They can't be configured, as far as I know.
What? The html date picker just uses the system date picker. And the value is formatted as yyyy-mm-dd when you submit it, that's not the US date format.
After reading your reply I checked again and it does indeed work as expected on Windows at least, so that is great news to me.
I would be with you, but the default date picker in Android is soooo shit that I agree we need to think about this more.
This is true. Because other software engineers built things, I osmosed their knowledge through the Layer 8 network. All software engineers are linked through the Khala- our sacred union of mind and machine. This ushered in our golden age, the so called Boom of Kim Dotcom.

But a new era has arisen, with a new God from this combined mind. Copilot rises and casts a great shadow on us all.

In past years, children were born with monads in their minds, functors at their fingers. Teens rose from sleep speaking in bytecode and LLVM IR. But now that is lost, mankind’s combined mind is being eaten by the power of Copilot and the children’s fingers only hit Tab.

We should never have known each other so intimately. The risen god of our inbred mind is a dark spiral. Thought itself fades.

Hardly specific to software engineering, and maybe (but not certainly) that should tell us that there is something to navel-gazing and reworking of fundamentals and basics.
If creating furniture was physically as easy as writing software, I think many people would create their own furniture, just to create a chair that fits them exactly.

Similarly in software there is not "one size that perfectly fits everybody". Therefore there is much need for customization.

When you write software you are in effect not only creating the program. You are creating a system that consists of the computer, its program, and its user. The way the task is divided between what the human does and what the computer does can be done in very many ways. In some systems that results in a system where users need to do more but thus also have more options for controlling the system. Therefore there are so many different ways any "applications" can be written.

No program is an island. It is something that must interact with its users. It is always designed to be a part of a bigger system consisting of itself and its users.

..someone really ought to invent The Date Picker to Rule them All. Hm, maybe I'll give it a shot.
Actually, I think that's the reason people build new date pickers (or new anything else). The new (fill in the blank) to rule them all has to take every possible permutation of use cases into account, and as a result, is necessarily "bloated" for whatever purpose you intend to put it to. In most cases, it's not just bloated itself, it also depends on other (fill in the blank)s to rule them all that are themselves bloated, and inconsistently compatible. It's also necessarily way more complex than just annotating an HTML input form element - again because of the huge number of different cases it has to support, so take a while to learn how to use and to learn its own idiosyncrasies.