Welcome to the Lounge

The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.

Javascript is like the ex-wife. You end up paying alimony for the rest of your life. And that's if you can actually get divorced. The judge tries to get you into marriage counseling -- You just need a new angular on life, it'll change your vue, you'll react so much better to stress. It'll rekindle the ember you once had.

Came across this in a man page, describing output formatting for a frequently used command:

A `%' character followed by any other character is discarded, but the other character is printed (don't rely on
this, as further format characters may be introduced). A `%' at the end of the format argument causes undefined
behaviour since there is no following character. In some locales, it may hide your door keys, while in others it
may remove the final page from the novel you are reading.

For extra rep points, name the command. (I'll upvote correct answers.) Anyone that does something involving wildcards and grep is automatically disqualified.

If it's any consolation, I was bored rigid writing the ISO9000 manual for my company back in the last century, so I added a "Dogs Inward Procedures" section which dealt with the care and snack feeding of dogs in the office, and the correct procedures for throwing sticks. As far as I know, it's still there.

ISO 9000 isn't about quality - it's about procedures. As long as you do exactly what your Quality Manual says you should do, you will pass ISO inspection - even if it is manifestly stupid!
Remember ISO inspectors aren't developers, or hardware engineers, or even accountants - they are document specialists (or more often recent-graduates-who-work-cheap-and-can't-get-a-job-anywhere-else-with-that-degree specialists)

Oh, and "dogs" plural - we worked in a coach house overlooking the orchard and there could be seven or eight dogs roaming around. Nice, relaxing atmosphere - if you have a coding problem there is nothing like throwing a ball round the orchard for dogs to play with to sort it out in your head!

Close enough. My quote is from the man page for GNU find, as packaged with Ubuntu. They used those last two sentences, but the preceding bit is different.

On a related note, the now-obsolete documentation for part of a VICTAB system, in the glossary of terms, included several derogatory "definitions" relating to brands of motor cars and other unrelated "stuff".

Good morning, Visual Basic! Hey, this is not a unit test. This is rock and roll. Time to rock it from the delegate to the lambda expression! Is that me, or does that sound like an Elvis Delphi movie? Viva Da Nang. Oh, viva, Da Nang. Da Nang me, Da Nang me. Why don't they get a rope and hang me? Hey, is it a little too early for being that loud? Hey, too late. It's 05:30! What's the "0" stand for? Oh, my God, it's early.

And I'd like to take questions from the audience: You sir, in the C++ tie?

Quote:

What the elephant are you doing up this early in the elephanting morning?

No idea - Herself was snoring, the cat was walking on my bladder, and the sun was aloft on what looks like another Glorious day in the People's Republic of Cymru (South).

I have recently started rereading Notes on Structured Programming by Edsger W. Dijkstra (published in 1972 when I was a young programmer). I had read this article before (1975). It provided insight that solved a very complex problem in the architecture for a relational database management system. (As an aside, this article is the source for the famous tenet "Program testing can be used to show the presence of bugs, but never to show their absence!")

Early on in his notes, Dijkstra suggests that "experienced and competent programmers" would be irritated by the length of his proof for the correctness of the program part:

d := D;whilenon prop ( d ) do d := f ( d )

To which he states

"Personally I am inclined to conclude from this length that programming is more difficult than is commonly assumed; let us be honestly humble and interpret the length of the proof as an urgent advice to restrict ourselves to simple structure whenever possible and to avoid in all intellectually modesty "clever constructions" like the plague."

I revisit Marc Clifton's lament about "dumbing down code so that it can be maintained by junior devs." I suggest that C# syntactic sugar ("LINQ (except for basic things), metadata, reflection, extension methods, and any of the C# 7.0 language features") falls under the domain of clever constructions. And it is here that I suggest that what is being called "dumbing down" is, in reality, a reasonable approach in the production environment.

Recall too that programmers do not usually own the code they produce. Because it is produced as a work for hire, the programmer's employer is the owner. And probably more importantly, the employer is in business to produce the code.

Therefore I suggest that an employer who desires that code be produced that can be maintained by junior developers is well within his rights (as well as within his obligations to his shareholders). Decrying such direction by an employer is intellectual arrogance on the part of the employee.

Why don't you go over to Q&A and tell them the good news. No need to learn anything anymore. The others are now responsible to make everything easy enough for them to handle.

Call me arrogant, but most juniors are idiots, more in the original greek sense of the word. I prefer helping them to overcome this (if you believe the ancient Greeks) natural state of ignorance and gain first experience in some area.

It always was the job of architects and seniors to make the code as complex as needed and as simple as possible. That's only one aspect of maintainability. Maintainability is the real goal, not dumbing down at all cost. If that means herding the juniors into a meeting room and giving them some training, then so be it.

I have lived with several Zen masters - all of them were cats.

His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

So CodeWraith got most of it correct. Over engineering is the bane of our industry, it destroys maintainability. I have a mantra - maintenance is the most expensive aspect of software.

gggustafson wrote:

that an employer who desires that code be produced that can be maintained by junior developers

I agree that this is both the right and the responsibility of the owner. However the "junior developer" must have a reasonable level of competence and are expected to learn and expand their skills so only feeding them the simplest code structures is doing a disservice to them and the employer.

I guess the issue is defining where over engineering begins. I failed to do this with one developer and we now have a project that no one can support as we eventually let the dev go .

probably more importantly, the employer is in business to produce the code.

Most often: the company is in business to make money, the employer to ensure that happens by managing managers who manage programmers who write code.

Complicated code that utilizes newer language features to achieve excellent results ... speed, less memory use, enables new features ... is going to get used: if the direct (adoption, updating, testing), or indirect (legacy compatibility) costs are tolerable.

The issue of willy-nilly adoption of new syntactic sugar: is a red herring

«... thank the gods that they have made you superior to those events which they have not placed within your own control, rendered you accountable for that only which is within you own control For what, then, have they made you responsible? For that which is alone in your own power—a right use of things as they appear.» Discourses of Epictetus Book I:12