Click here to Skip to main content
15,908,020 members

Welcome to the Lounge

   

For discussing anything related to a software developer's life but is not for programming questions. Got a programming question?

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.

 
GeneralRe: How to make simple code complicated Pin
Gary R. Wheeler24-May-19 3:49
Gary R. Wheeler24-May-19 3:49 
GeneralRe: How to make simple code complicated Pin
#realJSOP24-May-19 4:09
professional#realJSOP24-May-19 4:09 
GeneralRe: How to make simple code complicated Pin
Gary R. Wheeler24-May-19 4:43
Gary R. Wheeler24-May-19 4:43 
GeneralRe: How to make simple code complicated Pin
AFell224-May-19 5:50
AFell224-May-19 5:50 
GeneralRe: How to make simple code complicated Pin
Rick York24-May-19 5:03
mveRick York24-May-19 5:03 
GeneralRe: How to make simple code complicated Pin
Member 916705726-May-19 20:38
Member 916705726-May-19 20:38 
GeneralRe: How to make simple code complicated Pin
Member 1340620526-May-19 21:54
Member 1340620526-May-19 21:54 
GeneralRe: How to make simple code complicated Pin
David MacLean27-May-19 10:27
professionalDavid MacLean27-May-19 10:27 
We all admit that this happens, but we never stop to think about why it happens. Let me put forth a hypothesis - deadlineitis!

Programmers have been bamboozled into believing that software development should be an engineering discipline. While there are some things that engineering can offer to software development, there is much that the engineering discipline cannot "solve" for software development.

Let me defend this. "Engineering" is the discipline that says we can build massive structures by applying known smaller structures, that have mathematical descriptions which can be added together to present a mathematical model of the desired structure.

In software development, so-called "software engineers" repeatedly encounter instances of where there is NO smaller software structure - merely methods that "almost" work, methods which are "not quite" what is required, or even a lack of smaller structures that even come close to what is required. Add to this that combining all these "iffy" structures together leads to coupling problems - emergent behavior unanticipated by anybody. (And if you are looking for mathematical precision, well, good luck with that.) So software development winds up being a series of "experiments" - tweaking prior structures, and even developing your own structures, with the "requirements" for the structures being imprecise and unclear.

Under "project management", this is seldom, if ever, accounted for, because, like so much other stuff, the concept of "project management" was imported into the domain of software development from the engineering disciplines.

Imagine, if you will, the plight of an bridge engineer if he had to redefine what a "truss" was multiple times during the life of the project.

It's relatively easy to put together a bunch of well-known structures to complete a much larger structure on time, on budget, and safe (yet even then we have major cost overruns and major delays, and even failures of the final product).

The problem with software is the fact that compared to "physical" products, there is no conceptual limit to what an individual piece of software might be. You want it to do A, B and C. Why not? Could you get it to do D as well? No problem. How about E and F? Well, that may strain our resources a bit. Oh, we can't have that. How about if we eliminate C and D - could we get E and F for the same cost and in the same time?

And on and on it goes. So what happens when a software developer has to develop on of these base widgets, or tweak another. The programmer does not have a mathematical model to rely on, but just a natural language description of what has to be done. This is, of course, ambiguous, and the first kick at the cat fails. Two choices - tweak, or total rewrite. Over the course of development of this one widget, total rewrite is an option at the start, but hardly one over the course of time. And the deadline is looming. (Deadlines ALWAYS loom.) So it comes down to tweaking. Finally, unit testing succeeds. Hallelujah. You know that you should go back and refactor, and tighten up the code, but you're scheduled to work on another widget, so you start on that while the widget you've completed sits in the integration testing queue.

And just when you are deeply into the next widget, you are hauled away because your widget failed integration testing. You are already behind on that other widget, so you get all the information you can on how this widget failed integration testing, and you tweak the code, and unit test it, and put it back into the integration testing and you go back to that other widget, and on, and on, and on, and on.

And finally, after all developers have collectively torn their hair out by the roots, have lost an average of 20 pounds because "there's no time to eat", do not remember when it was the last time they sat down with their significant others, and have bloodshot eyes from putting in 18 to 20 hour days for the last of the project, QA says that they approve for release.

And six months from now, some new hire in maintenance is calling you up on the phone complaining that your code is too complex!

It is to weep.
GeneralRe: How to make simple code complicated Pin
jschell2-Jun-19 8:18
jschell2-Jun-19 8:18 
GeneralOpen Source Considered Dangerous PinPopular
Dean Roddey23-May-19 8:24
Dean Roddey23-May-19 8:24 
GeneralRe: Open Source Considered Dangerous Pin
User 1106097923-May-19 10:20
User 1106097923-May-19 10:20 
GeneralRe: Open Source Considered Dangerous Pin
BillWoodruff23-May-19 18:52
professionalBillWoodruff23-May-19 18:52 
GeneralRe: Open Source Considered Dangerous PinPopular
Member 916705723-May-19 20:35
Member 916705723-May-19 20:35 
GeneralRe: Open Source Considered Dangerous Pin
Corne Beukes24-May-19 0:13
Corne Beukes24-May-19 0:13 
GeneralRe: Open Source Considered Dangerous Pin
Dean Roddey24-May-19 7:02
Dean Roddey24-May-19 7:02 
GeneralRe: Open Source Considered Dangerous Pin
Kirk Wood24-May-19 3:15
Kirk Wood24-May-19 3:15 
GeneralRe: Open Source Considered Dangerous Pin
Dean Roddey24-May-19 6:28
Dean Roddey24-May-19 6:28 
GeneralRe: Open Source Considered Dangerous Pin
UziTech24-May-19 5:11
UziTech24-May-19 5:11 
GeneralRe: Open Source Considered Dangerous Pin
Dean Roddey24-May-19 6:30
Dean Roddey24-May-19 6:30 
GeneralRe: Open Source Considered Dangerous Pin
Patrick Fox24-May-19 5:19
Patrick Fox24-May-19 5:19 
GeneralRe: Open Source Considered Dangerous Pin
kalberts24-May-19 13:56
kalberts24-May-19 13:56 
GeneralRe: Open Source Considered Dangerous Pin
Dean Roddey24-May-19 16:39
Dean Roddey24-May-19 16:39 
GeneralRe: Open Source Considered Dangerous Pin
kalberts26-May-19 21:59
kalberts26-May-19 21:59 
GeneralRe: Open Source Considered Dangerous Pin
Dean Roddey27-May-19 7:06
Dean Roddey27-May-19 7:06 
GeneralRe: Open Source Considered Dangerous Pin
kalberts27-May-19 8:30
kalberts27-May-19 8:30 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.