|
Although the buzzwords are nauseating, I'd still apply if the job seemed interesting. They clearly think a large team should be able to work without getting in each other's way. To achieve this, code has to be well structured so that new capabilities can usually be added without churning existing code. I'd be looking for confirmation of this and would also be interested in what they mean by decoupled. If it's lots of messages between processes, their software might be beautifully partitioned, yet grossly inefficient.
|
|
|
|
|
That is a very interesting interpretation of what I thought was just gobbledygook.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Sadly, I sometimes had to deal with people who wrote stuff like this.
|
|
|
|
|
What's the chance of their culture to be scalable if they write like that?
Wrong is evil and must be defeated. - Jeff Ello
Never stop dreaming - Freddie Kruger
|
|
|
|
|
Well, it's not they who wrote it. It's a specific person, probably a developer who went into management and since learned to write this kind of thing, which was given to an HR person who didn't realize how affected it is. I don't think it says anything about scalability, though it might say something about their corporate culture, which is something that you'd want to assess regardless.
|
|
|
|
|
Richard Andrew x64 wrote: decoupled systems I used to think that was a great philosophy until I started working with architectures that decouple dependencies with injection and lots of inheritance and you can end up with so much indirection that it's pretty much impossible to figure out the bugs.
Sometimes a working system that is coupled is better than a decoupled maintenance nightmare that does not work.
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
modified 13-Jul-20 5:34am.
|
|
|
|
|
I think the ultimate example to mock such nonsense was in W1A - from the BBC's "Director of Better"
"it's about establishing what we do most of best then finding fewer ways of doing more of it less."
|
|
|
|
|
Doesn't sound like English is their first language.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
Software Zen: delete this;
|
|
|
|
|
Following up to a discussion on here yesterday, about why you would or wouldn't use subscription software, this interesting article showed up in my feed: Oracle & SAP are waging a secret war against third-party support | ITProPortal[^]
I haven't fact checked the article, so I don't know how much of it is true, but I don't read anything that sounds odd to me.
The idea is that you pay huge sums to use ("regular") Oracle and SAP software and about 90% of it is profit for them.
The other 10% is for bug fixing and updates.
Now there are other companies who gladly take up on that bug fixing and updating for only half the price, which is a problem for Oracle and SAP.
One of the tactics of fighting these third-party support providers is by moving customers to their SaaS offering.
These SaaS offerings aren't necessarily cheaper or more expensive, but because it's SaaS, the software is hosted on servers owned by Oracle and SAP.
Meaning Oracle and SAP are in charge and third-party support providers can't access it anymore.
So there's a reason not to use subscription software, or SaaS, I guess, since the "regular" software required support contracts as well.
And more specifically, a good reason not to use Oracle or SAP, but I don't think we needed more of those
|
|
|
|
|
Software subscriptions make no sense to the customer, it's user hostile.
|
|
|
|
|
Depends on the product.
Seems perfectly fine for MMORPG's, for example.
|
|
|
|
|
Maintaining the "servers" is (vendor) systems programming IMO (in the case of Oracle / SAP cloud subscriptions); you still need database "administrators" / designers "locally". "Fixes", 24/7 and backups, are vendor problems.
Subscription costs tend to creep though if you don't keep an eye on them. It all still depends on the smallest hose you'll be going through.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
Funnily enough, you don't seem to mind Azure that much.
Wrong is evil and must be defeated. - Jeff Ello
Never stop dreaming - Freddie Kruger
|
|
|
|
|
I don't, and I don't mind subscription software at all actually.
As long as prices are fair and you get worth for your money.
In the case of Azure, I know what a server would cost me, and how much time I'd spend maintaining that server.
Choosing Azure for my web app is more cost effective in the short run, probably more expensive in the long run, but a lot easier for both me and my customers.
I say, that's good worth for my customer's money (obviously, I don't pay for their environments).
I say Azure because I know the platform, but I'm sure AWS and GC could be equally cost effective.
In a reply above, I gave the example of World of Warcraft, which I think totally justifies the monthly subscription.
In the case of Oracle and SAP, it obviously isn't, because I can get support for half the price somewhere else.
I also don't like the PlayStation Plus subscription, which allows me to play online with friends.
I already pay for my internet and the PlayStation obviously has the ability to connect to that internet so I can play with friends.
They're not running any servers for it, as far as I know, so why the heck do I have to pay extra for it!?
Unfortunately, I don't have an alternative if I want to play online with friends, so I pay their price.
|
|
|
|
|
Can't say anything about SAP (except that the Germans tell me it's an abbreviation for Schreck Angst Panik)
But I used to work with Oracle at my old job, and the cost for the support includes all upgrades and updates of the software which has to be said is the greater part of the support cost.
In fact, the comparison to SQL Server was a breakeven if we would have kept upgrading it to the latest version.
Also, I used to work with Crystal Reports before SAP bought it. It's the most aggravating piece of software I have ever worked with.
To the level that I swapped it out for DevExpress. (In hindsight, that was one of the best decisions I've made work wise.
Wrong is evil and must be defeated. - Jeff Ello
Never stop dreaming - Freddie Kruger
|
|
|
|
|
|
As pTerry said:
Equal Rites: The lodgings were on the top floor next to the well-guarded premises of a respectable dealer in stolen property because, as Granny had heard, good fences make good neighbors.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Equal Rites: “For the first time in her life Granny wondered whether there might be something important in all these books people were setting store by these days, although she was opposed to books on strict moral grounds, since she had heard that many of them were written by dead people and therefore it stood to reason reading them would be as bad as necromancy. Among the many things in the infinitely varied universe with which Granny did not hold was talking to dead people, who by all accounts had enough troubles of their own.” It seems at some point Granny gave in and read poetry...
"The only place where Success comes before Work is in the dictionary." Vidal Sassoon, 1928 - 2012
|
|
|
|
|
I suspect she just looked at poetry until it gave in and read itself to her.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
/ravi
|
|
|
|
|
Lfence, sfence, or mfence?
I'll get my coat...
|
|
|
|
|
when using, just press enter after describing a word for it to return to main loop
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
struct elemento {
char valor[100];
struct elemento *prox;
struct elemento *ant;
struct elemento *down;
struct elemento *up;
struct elemento *backtostart;
};
typedef struct elemento ELEM;
ELEM *head = NULL;
int oldornew=0;
int wordexists=0;
void Speak(ELEM* start, char valor[100]);
void AddWord(ELEM* start, char valor[100]);
void DivideWordsforAdd(ELEM* start, char valor[100]);
void DivideWordsforSpeak(ELEM* start, char valor[100]);
void Hear(ELEM* start, char valor[100]);
void CheckifExist (ELEM* start, char valor[100]);
void Speak(ELEM* start, char valor[100]){
int newword=0;
ELEM *elem = start->prox;
while(elem->prox!=NULL){
elem=elem->prox;
}
while(elem){
int written=1;
for(int i=0;i<100;i++){
if(elem->valor[i]==valor[i] || valor[i]==0){
if(valor[i]==' ' || valor[i]==0){
break;
}
}else{
written=0;
}
}
if(written==1){
if (elem->down==NULL){
newword=1;
break;
}
}
elem=elem->ant;
}
if(newword==0){
elem=start->prox;
while(elem->prox!=NULL){
elem=elem->prox;
}
}
while (elem){
if (newword==1){
int num=0;
while(elem->valor[num]!=' '){
num++;
}
if (elem->down==NULL){
cout<<"Me: What is ";
for(int i=0;i<num;i++){
cout << elem->valor[i];
}
cout << " ?" << endl;
oldornew=1;
break;
}
}else{
int match=1;
for(int i=0;i<100;i++){
if (elem->valor[i]==valor[i] || valor[i]==0){
if(valor[i]==0 || valor[i]==' '){
break;
}
}else{
match=0;
}
}
if (match==1){
for (int i=0;i<100;i++){
if(elem->valor[i]!=' '){
cout << elem->valor[i];
}else{
cout<<": "<<endl;
break;
}
}
elem=elem->down;
while (elem->prox!=NULL){
elem=elem->prox;
}
while (elem){
for(int i=0;i<100;i++){
if(elem->valor[i]!=' ' || (elem->valor[i]==' ' && elem->valor[i+1]!=' ')){
cout<<elem->valor[i];
}
}
if (elem->ant==NULL){
break;
}
elem=elem->ant;
cout<<endl;
}
cout<<endl<<endl;
oldornew=0;
}
}
if (elem->up){
elem=elem->up;
}
elem = elem->ant;
}
cout<<endl;
if (oldornew==1){
Hear(elem,valor);
}
}
void AddWord(ELEM* start, char valor[100]){
ELEM *elem = (ELEM*)malloc(sizeof(ELEM));
if (oldornew==1){
if (valor[0]==0){
oldornew=0;
for(int i=0;i<100;i++){
if(valor[i]==0){
valor[i]=' ';
}
}
Hear(start->backtostart,valor);
}
for(int i=0;i<100;i++){
if(valor[i]==0){
valor[i]=' ';
}
}
for(int i=0;i<100;i++){
elem->valor[i]=' ';
}
for(int i=0;i<100;i++){
if (valor[i]==' '&& valor[i-1]==' '){
break;
}
elem->valor[i] = valor[i];
}
elem->down=NULL;
elem->ant=NULL;
elem->up=start;
if (start->down==NULL){
elem->prox=NULL;
}else{
elem->prox=start->down;
elem->prox->ant=elem;
}
start->down=elem;
Hear(start,valor);
}else{
for(int i=0;i<100;i++){
if(valor[i]==0){
valor[i]=' ';
}
}
for(int i=0;i<100;i++){
elem->valor[i]=' ';
}
for(int i=0;i<100;i++){
if (valor[i]==' ' && valor[i-1]==' '){
break;
}
elem->valor[i] = valor[i];
}
elem->down=NULL;
elem->up=NULL;
elem->ant=NULL;
if (start->prox!=NULL){
elem->prox=start->prox;
elem->prox->ant=elem;
}else{
elem->prox=NULL;
}
elem->backtostart=start;
start->prox=elem;
}
}
void CheckifExist(ELEM* start, char valor[100]){
int same=0;
int checkfornew=1;
ELEM* elem=start->prox;
while(elem){
for(int i=0;i<100;i++){
if(elem->valor[i]==valor[i] || valor[i]==0){
same++;
if (valor[i]==0 || valor[i]==' '){
checkfornew=0;
break;
}
}else{
break;
}
}
elem=elem->prox;
}
if (checkfornew==1){
wordexists=1;
return;
}else{
wordexists=0;
}
}
void DivideWordsforSpeak(ELEM* start,char valor[100]){
char word[100];
int k=0;
for(int i=0;i<100;i++){
word[k]=valor[i];
if (valor[i]==' '){
if (valor[i-1]!=' '){
Speak(start,word);
for(int j=0;j<i;j++){
word[j]=' ';
}
}
k=-1;
}
k++;
}
Hear(start,valor);
}
void DivideWordsforAdd(ELEM* start, char valor[100]){
if (oldornew==1){
AddWord(start,valor);
}else{
char word[100];
int k=0;
for(int i=0;i<100;i++){
word[k]=valor[i];
if (valor[i]==' '){
if (valor[i-1]!=' '){
CheckifExist(start,word);
if (wordexists==1){
AddWord(start,word);
}
for(int j=0;j<i;j++){
word[j]=' ';
}
}
k=-1;
}
k++;
}
DivideWordsforSpeak(start,valor);
}
}
void Hear(ELEM* start, char valor[100]){
cout<<"You: ";
char x[100];
for(int i=0;i<100;i++){
x[i]=' ';
}
cin.getline(x,100);
cout << endl;
DivideWordsforAdd(start,x);
}
int main()
{
head = (ELEM*)malloc(sizeof(ELEM));
head->valor[0] = 's';
head->valor[1] = 't';
head->valor[2] = 'a';
head->valor[3] = 'r';
head->valor[4] = 't';
head->prox=NULL;
head->ant=NULL;
head->down=NULL;
head->up=NULL;
head->backtostart=NULL;
cout << "Hello! I am AI to talk." << endl << endl << "You: ";
char x[100];
for(int i=0;i<100;i++){
x[i]=' ';
}
cin.getline(x,100);
cout << endl;
DivideWordsforAdd(head,x);
return 0;
}
|
|
|
|
|
Maybe you had intended to write an article?
|
|
|
|
|
Why should we use it at the first place?
"The only place where Success comes before Work is in the dictionary." Vidal Sassoon, 1928 - 2012
|
|
|
|
|