News for hackers. Stuff that matters.
Re:The top bug predictor is not technical, it's organization... by jiggawatts on Wednesday December 18, 2019 @06:48AM (#21823945)
So, just a day ago, I got dragged into a meeting where many people were involved in a discussion about the new Cloud Enterprise Application Architecture Template. Or whatever.

It had a 3-tier architecture.

I asked: Why?

And they answered: Why not?

I answered: Because layers must only be introduced if needed. Is there a need?

They answered: The standard design is the need.

I clarified: Is there a technical requirement? Or perhaps an organisation one, such as disparate teams working on the two components?

They answered: No! Of course not! It's a unified codebase for a single app written by a single person! But it is not Enterprise enough! It must be split into layers! And then, you see, it will will match our pattern and belong.

I verified the insanity: Are you saying that this finished, working application isn't currently split into layers, but you want it split into layers simply so that it can have layers?

They chorused: Yes.

Re:The top bug predictor is not technical, it's organization... by hyperman1 on Wednesday December 18, 2019 @09:10AM (#21824956)
The 3 tier architecture was a reaction to VB and RAD-like tools, where things like data validation and database I/O were coupled directly to the input component. It was common for these frameworks to not even have an object for data transfer sitting between UI and DB.

This was the timeframe where more and more manual work was automated. Hence it was a common situation where input used to be given by a human, but now comes from another application. The simplest way to do that kind of retrofit was to drive the UI from the application: The application fills in its own gui fields which triggers the validation, then simulates a click on OK.

This caused al kinds of ungodly messes. You need a gui for background processes, reliability was low, etc.. 3 tier architecture were a way to say 'never again' to this style of programming. Forcing people in to it was necessary.

But that was another time. Mindlessly applying an architecture without understanding why is of course dumb. But not applying an architecture without understanding it's pros and contras is just as dumb. It all depends on the quality of the architects in question.

Not that I want to call you dumb, of course. IT today is different from 20 years ago.

Re:The top bug predictor is not technical, it's organization... by specialist on Wednesday December 18, 2019 @09:54AM (#21825403)
n-tiered architectures were born during the transition from "workgroup" to "client/server". This upheaval caused an industry-wide loss of programming lore.

It wouldn't have been too bad, except the ODBC interface inadvertently led to abandoning schema-aware programming models like VB's ADO, Paradox, FoxPro, etc.

At the same time, object oriented became fashionable.

So we ended up with ORMs, ActiveRecord, and various offshoots.

Mostly because no one remembers life before client/server.

Re:The top bug predictor is not technical, it's organization... by pjc50 on Wednesday December 18, 2019 @10:41AM (#21825918)
I was always a bit hazy on what these terms actually meant, and what we lost. It does seem like there was a brief golden age of easy "rapid application development" tools like FoxPro where you could wire some UI fields to a database without too much trouble. Now we have people trying to do the same in the web, badly.
Re:The top bug predictor is not technical, it's organization... by specialist on Wednesday December 18, 2019 @12:24PM (#21827103)
I also had no idea what client/server meant (at the time). My current oversimplified distinction:

Workgroup: I/O thru file system, clients responsible for locking, concurrency, etc.

Client/Server: I/O thru DB's protocol (eg TDS), server responsible for locking, concurrency, etc.

--

As for what was lost, I spent way too long (10+ years) trying to figure that out, trying to fulfill the desire to recover the ADO (Access Data Objects) programming paradigm. I think I succeeded, more or less, and am currently reorienting my life to work on it full-time.

Re:The top bug predictor is not technical, it's organization... by ksec on Thursday December 19, 2019 @02:53PM (#21838548)
I used to loathe FoxPro, now I actually miss it, it was simple enough to quickly get the job done. I have always thought in the 2000s that something better, more powerful and even easier to use would come. And looking back I felt a lot of times technologies general we reinvent the wheel and nothing better actually came out of it.

FileMaker may be an alternative, but I never understood why it hasn't caught on.

And I am not even sure if there are any product similar that is good on the Web.

Re:The top bug predictor is not technical, it's organization... by hyperman1 on Wednesday December 18, 2019 @10:32AM (#21825833)
I assume that's the windows 3.11 era? It was a simpler time, with small non-hostile networks, less critical software, and more humans in the loop. While 'workgroup' mostly means PC/DOS to me, the mainframes of the day had a comparable story unfolding.
Re:The top bug predictor is not technical, it's organization... by ratww on Wednesday December 18, 2019 @11:16AM (#21826343)
Funny thing, I remember lot of similar apps in enterprise businesses until the late 2000s. That only started to change when web apps and cloud-hosted software became the norm.
Re:The top bug predictor is not technical, it's organization... by aprdm on Wednesday December 18, 2019 @10:00AM (#21825484)
Can you talk more about workgroup?
Re:The top bug predictor is not technical, it's organization... by ratww on Wednesday December 18, 2019 @11:27AM (#21826470)
Not the GP, but I used to work in desktop development for enterprise businesses.

Most multi-user apps were two tiered: client and database. The way they worked was by connecting directly to the database and/or a shared filesystem in the local network. All validation happened client-side.

Database credentials and fine-grained file/directory permissions were the only security measures. That and the NAT. ;)

There's still software in the market that uses this model, like some niche ERPs from the 90s and software catered to small/mid businesses.

Re:The top bug predictor is not technical, it's organization... by johnchristopher on Wednesday December 18, 2019 @12:09PM (#21826925)
> Database credentials and fine-grained file/directory permissions were the only security measures. That and the NAT. ;)

It baffles me that the CCNA materials is still based around these use cases.

Re:The top bug predictor is not technical, it's organization... by wayoutthere on Wednesday December 18, 2019 @11:46AM (#21826684)
> The simplest way to do that kind of retrofit was to drive the UI from the application: The application fills in its own gui fields which triggers the validation, then simulates a click on OK.

> Not that I want to call you dumb, of course. IT today is different from 20 years ago.

The meteoric rise of RPA within IT shops is recreating the same situation. The more things change, the more they stay the same.

Re:The top bug predictor is not technical, it's organization... by dandelo53 on Wednesday December 18, 2019 @12:29PM (#21827151)
I think RPA is the merging functional and technical, which is what all the debate is revolving around... Change can't happen without change
Re:The top bug predictor is not technical, it's organization... by walterbell on Wednesday December 18, 2019 @12:25PM (#21827112)
What is RPA?
Re:The top bug predictor is not technical, it's organization... by dandelo53 on Wednesday December 18, 2019 @12:31PM (#21827166)
This link should resist time rot: https://www.google.com/search?q=top+rpa+vendors
Re:The top bug predictor is not technical, it's organization... by walterbell on Wednesday December 18, 2019 @01:08PM (#21827517)
"Robotic process automation" was indeed what came up in my web search for the term, but it seemed an unlikely fit for generic distributed app development. Why is robotic process automation sweeping "IT shops"?
Re:The top bug predictor is not technical, it's organization... by wayoutthere on Wednesday December 18, 2019 @01:15PM (#21827571)
Because rather than upgrading software and building APIs that integrate at a low level, IT shops are building software and APIs on top of UI automations. Some new fancy service desk platform the suits want may not have a connector to your 15 year old heavily-customized SAP instance (which is run by another team you have no influence with), and budget / time constraints leave RPA as the only option.

It's pretty easy to see why this would cause problems, but the consulting companies have been pushing hard on RPA because when it blows up in 5 years, who are you going to call? I say this as a consultant who has to sell this awful crap because "partnerships".

Re:The top bug predictor is not technical, it's organization... by walterbell on Wednesday December 18, 2019 @01:54PM (#21827981)
Thanks for the context. Seems like the latest incarnation of scripting 3270/mainframe terminals, telnet/expect sessions or web/selenium/headless browsers.

Copy&paste is the enterprise API/data integrator of last resort. Image/video is another integration point. iOS can screen capture full-page images of web pages, with tools for human annotation. Soon the local ML/bionic processor and AR toolkit can perform text recognition on those images, which means they can be live edited, re-composed and fed into another system.

> fancy service desk platform the suits want may not have a connector to your 15 year old heavily-customized SAP instance (which is run by another team you have no influence with)

This intersects with DRM and the title of the OP story. When OrgA and OrgB fail to partner/cooperate (e.g. no formal integration) or are actively hostile (implement DRM to prevent data movement between OrgA and OrgB products), it creates pain for customers and new business opportunity for OrgC and OrgD.

Which is why scraping and reverse engineering are never going away, they are society's last line of defense against vendor org dysfunction.

Re:The top bug predictor is not technical, it's organization... by wayoutthere on Wednesday December 18, 2019 @03:40PM (#21829183)
Oh it's so much worse than that. Swivel-chair / copy-paste integrations are often a better solution than RPA in today's world.

It was one thing scripting mainframe terminals, but the equivalent today are SaaS apps. The major enterprise vendors like Salesforce are pretty good about roadmaps and release schedules, but a lot of the smaller ones work on more of a continuous deployment model. This means your RPA integrations are constantly breaking, and suddenly you have to hire a whole bunch of RPA analysts to deal with fixing them. Or you can just hire a few more data entry people to do it manually.

Re:The top bug predictor is not technical, it's organization... by foobiekr on Wednesday December 18, 2019 @10:35PM (#21831851)
I ... I feel bad saying this, but I can totally see a use for RPA.

One, and more often than not, applications embed a ton of business logic in the client which is not easily available in the API.

Two, and honestly I feel dirty writing this, the UI is usually a lot better tested. Or tested at all.

I'm just the messenger, here. We were very adamant about NOT doing this in my previous company or our current projects, but I can totally understand the "it's good enough for humans, it's good enough for machines" attitude. It makes me sad though.

Re:The top bug predictor is not technical, it's organization... by m463 on Wednesday December 18, 2019 @06:07PM (#21830415)
Is MVC a good thing?
Re:The top bug predictor is not technical, it's organization... by afriendofjungs on Wednesday December 18, 2019 @09:50AM (#21825369)
You're lucky you got some form of discussion out of the people you work with. Whenever I try to steer conversation towards "technical accountability" where I ask what I think are legitimate questions concerning application design and architecture, the mood is as if no-one else believes it's of any importance and I am that weird guy putting spokes in the wheels of a great project. My arguments aren't refuted, they're conveniently ignored. People are honestly dumbfounded and prefer to change subject at best, at worst they lash out with what seems to be simplistic thinly-veiled "culture" attacks -- "oh, please, not with that abstraction/encapsulation argument again, we've got work to do"-sort of utterances.
Re:The top bug predictor is not technical, it's organization... by Vinnl on Wednesday December 18, 2019 @07:25AM (#21824117)
> I answered: Because layers must only be introduced if needed. Is there a need?

It might have gone better if you had also stated why that is the case, e.g. "every additional layer exponentially increases the likelihood of bugs being introduced, so their introduction must be worth that risk, or the higher cost of mitigating measures".

Of course, the challenge will still be that "likelihood of bugs" is rather abstract, and often people believe they can be prevented just by paying more attention, and assume that that will happen of its own accord.

Re:The top bug predictor is not technical, it's organization... by marmaduke on Wednesday December 18, 2019 @07:55AM (#21824318)
I went through this, more or less, several years ago. But now I see the uselessly layered app being almost effortlessly retrofitted with new top and bottom layers, keeping only the original middle layer.

If they hadn't layered it, the new retrofitting wouldn't even be possible and the company wouldn't have that contract.

Was it insanity?

Re:The top bug predictor is not technical, it's organization... by jressey on Wednesday December 18, 2019 @09:06AM (#21824902)
Then you do the layering when you need to. One of my biggest gripes about many engineers is their desire to fix technical debt for no business purpose.

In your example, the team tasked with retrofitting would have introduced the layers when the need to make changes arose.

Re:The top bug predictor is not technical, it's organization... by silveroriole on Wednesday December 18, 2019 @09:22AM (#21825087)
What actually happens in a “business purpose focused” company: You tell the boss you need to double the estimate they gave to the customer, so that you can pay the tech debt and add those layers we need. Boss refuses, we need that change now so get it done without fixing the debt, why is the team so incompetent that they didn’t add layers to start with, why didn’t you just fix the tech debt on your own time in quiet periods, we can’t have a ticket for that since it doesn’t add business value, blah blah...

;)

Re:The top bug predictor is not technical, it's organization... by _def on Wednesday December 18, 2019 @09:50AM (#21825368)
That's why there's no final answer to "layer: yes or no?". It depends. And as a developer it's your job to guess which decision is more likely to save you time (= money) in the future. There's no way to know the right answer for sure because it depends on further (business) decisions that aren't made yet.
Re:The top bug predictor is not technical, it's organization... by jressey on Wednesday December 18, 2019 @11:19AM (#21826367)
What you're describing sounds to me like poor departmental relationships and the typical challenges of lots of people with lots of goals working together.

I sure hope all of y'all's companies are 'business purpose focused' or you're gonna be looking for a new job pretty soon.

Re:The top bug predictor is not technical, it's organization... by celticmusic on Wednesday December 18, 2019 @11:33AM (#21826527)
are you claiming this same boss would have given you the time to do it at some other point, thereby delaying something else?
Re:The top bug predictor is not technical, it's organization... by silveroriole on Wednesday December 18, 2019 @12:53PM (#21827372)
Ironically yeah ime - when doing it upfront. These places sometimes expect so much business value from Cool New App that they let it spiral out of the agreed timespan and you get lots of time to ‘add layers’ (i.e. plan for the future or overcomplicate, however you see it). Once Cool New Thing is live and expectations have cooled, they just want to make some ‘small’ changes, nobody wants to let you restructure the architecture.
Re:The top bug predictor is not technical, it's organization... by marmaduke on Wednesday December 18, 2019 @01:40PM (#21827830)
That's a tall order in a 100k LOC app, for a small team with budget constraints. I'm pretty sure they couldn't do it your way, whereas the prelayered way set them up for a success.

Prelayered raises initial complexity while lowering eventual complexity. It also protects the core layers where the IP is (presumably) from regressions during retrofit.

Re:The top bug predictor is not technical, it's organization... by organsnyder on Wednesday December 18, 2019 @07:48AM (#21824262)
I did a project like that at my old job. It was a single screen with a single purpose (login the user via oauth SSO, then collect a couple of pieces of input and submit them to a backend webservice), so it was assigned to me rather than creating a project team. To make it match the rest of our application architecture I created a REST layer in C# that communicated via SOAP to an ESB that forwarded the SOAP request to a Java webservice that finally forwarded it to the backend system. I did depart from our organizational norm by doing the frontend with plain HTML+JS (plus Boostrap, IIRC) rather than AngularJS.

Yes, it was complicated, but I think there is a benefit: it's very clear where certain functionality should live. The C# REST layer was application-facing, so it took care of SSO and basic validation. The Java webservice contained the business logic to validate things from an broader enterprise perspective. The ESB was a piece of trash that did provide authnz so the Java webservice didn't have to.

Was it worth the complexity? Probably not, in this case. But those sorts of applications tend to have long lifespans and evolving requirements, so the standardization can be helpful.

Re:The top bug predictor is not technical, it's organization... by ratww on Wednesday December 18, 2019 @11:53AM (#21826769)
> Yes, it was complicated, but I think there is a benefit: it's very clear where certain functionality should live

Off-topic, but your post reminds me of this Michael Feathers article [1], where he argues that while programming languages have tools to support encapsulation, the don't really work, but the thing about microservices (or layers in this case) is that they actually force us to actually encapsulate our code.

[1] https://michaelfeathers.silvrback.com/microservices-and-the-...

Re:The top bug predictor is not technical, it's organization... by organsnyder on Wednesday December 18, 2019 @01:40PM (#21827827)
That's a really good article—thanks for sharing it. I totally agree that forced encapsulation (ideally with tightly-governed contract-first APIs) is the most enticing selling point of microservices.
Re:The top bug predictor is not technical, it's organization... by wayoutthere on Wednesday December 18, 2019 @11:49AM (#21826721)
I would say that this could very easily be justified as standardizing and de-skilling development and production operations. That's a very good business reason to standardize architecture patterns, because it's cheaper to use a pattern that is sometimes overkill than it is to have a bespoke architecture for every app.
Re:The top bug predictor is not technical, it's organization... by NicoJuicy on Wednesday December 18, 2019 @07:07AM (#21824037)
I actually like DDD, where code is executed per domain with a bounded context.

Not for a single person though, but it will force kin developers to think more deeply.

Otherwise it could easily result in a code-mesh/hell.

Re:The top bug predictor is not technical, it's organization... by debt on Wednesday December 18, 2019 @09:40AM (#21825262)
I’m trying an experiment in my new role where I deliberately avoid these types of projects.

They usually don’t deliver on time and are too stressful to work with. It’s not worth it both personally and from a career perspective.

However if they manage to deliver a complex design on time, I’ll have lost a great career opportunity. It’s a gamble either way, but high complexity both in organization and design, usually yields a high failure rate on just about every metric I can think of except the metric of “I’m going to use this complex design to get another job and bail myself out of the dumpster fire I’m creating before I have to deliver anything of value”.

Re:The top bug predictor is not technical, it's organization... by 0x445442 on Wednesday December 18, 2019 @10:02AM (#21825506)
What is your avoidance mechanism if you don't mind me asking?
Re:The top bug predictor is not technical, it's organization... by debt on Wednesday December 18, 2019 @10:56AM (#21826112)
Figure how to support it without being involved in actual deliverables. Or transfer to a new team/project. Or both.
Re:The top bug predictor is not technical, it's organization... by spookthesunset on Wednesday December 18, 2019 @11:34AM (#21826546)
I’ve had those “well, your project is fucked” meetings. The ones where all the leads are architecture astronauts inventing requirements as they go. “We have to have the ability to pass the original authentication the entire way down the stack including the rabbitmq instance too.

Why?

“Security”

Okay....

... astronaut proceeds to fill two whiteboards with ungrounded nonsense.

All you can go is smirk and just wait until the whole project gets mysteriously canceled because no mortal could ever implement it successfully.

Honestly as long as I don’t need to directly depend on them, these are some of my more favorite meetings. So surreal. That and when the team infights the entire time.

Re:The top bug predictor is not technical, it's organization... by jiggawatts on Wednesday December 18, 2019 @04:17PM (#21829576)
The most impressive architecture I've ever seen was from these two consultants from a big-4 consultancy that had been sitting at a desk at the customer site for literally years. They had lunch together, never talked to anyone that I could see, and I didn't even know what they did for the first couple of years.

I walked past their desk one evening after hours and noticed a printed A3 page of their high-level design diagram. It was... spectacular.

It had over a hundred tiny icons, each representing various systems. Triangles for directory systems, cylinders for databases, and little arrows connecting these things.

You have to picture a spider web of connections between dozens of each type of system.

The notion that this could be implemented was absurd beyond all comprehension. Just one of the tiny little arrows was connecting SAP to a custom system vaguely similar to Siebel. This arrow represented on the order of thousands of tables and API endpoints that need to be hooked up. Another arrow connected an Active Directory with a million accounts to an Oracle directory of the same scale. Another arrow represented synchronisation between a cloud-hosted payroll service to an on-premises equivalent product.

Half the systems didn't exist. Three quarters of the connections didn't exist. Most would have to be written as bespoke code. Some of the arrows would in turn require load balancers, distributed systems, and change tracking databases of their own. We're talking thousands of man years of effort to implement this thing.

It was audacious in the breadth of its scope to the point of going past insane into the brilliant daring art that's only possible if you can appreciate it at the right level of understanding.

That understanding was that these two brilliant people had been collecting something like $4K/day each for years and produced something that dares your to call them on their bluff. But nobody dared say that the emperor has no clothes. They pulled it off.

I was truly impressed.

Re:The top bug predictor is not technical, it's organization... by spookthesunset on Wednesday December 18, 2019 @04:50PM (#21829840)
The nice thing about those kinds of bozos is it helps you filter out other adjacent bozos as well. Anybody who thinks said bozos are on the right track can immediately go into your "yeah, they don't know what they are talking about" bucket.

That being said, I took a picture of the two whiteboards after this dude filled it up with their god-like wisdom. It was truly a marvel of ungrounded architecture.

Re:The top bug predictor is not technical, it's organization... by ZainRiz on Wednesday December 18, 2019 @06:08PM (#21830421)
The number of code repositories I've seen where the database layer was (leakily) abstracted away "in case we ever need to migrate" is WAY greater than the number of code bases where there was actually a need to migrate.

Yet they all still introduced the headaches of having to update the abstraction layer whenever you wanted to make schema changes

Re:The top bug predictor is not technical, it's organization... by he0001 on Thursday December 19, 2019 @09:12AM (#21835006)
What would you do instead?
Re:The top bug predictor is not technical, it's organization... by yellowapple on Wednesday December 18, 2019 @06:13PM (#21830465)
Are these three tiers respectively called "model", "view", and "controller", by chance?
Re:The top bug predictor is not technical, it's organization... by trophycase on Wednesday December 18, 2019 @02:01PM (#21828049)
Decoupling and modular design is pointless?
Re:The top bug predictor is not technical, it's organization... by jiggawatts on Wednesday December 18, 2019 @04:19PM (#21829601)
In this case, yes. There is such a thing as pointless busywork that has no tangible benefit to the business, user, or the future codebase maintainer.
Re:The top bug predictor is not technical, it's organization... by he0001 on Thursday December 19, 2019 @09:05AM (#21834949)
What do you propose instead?