This doesn't necessarily apply specifically to .NET, but it is what I am most familiar with, and I've seen some really shoddy practices on so many fronts that seem to be applied to various places regardless of what technology is being used. What's worse is, I am seeing more incompotence and underexperienced people getting ahead while I rot and can sit and pick off so many things wrong that cause issues.
Companies love all this 6 sigma crap, and there is one thing you can learn from that without any formal training that has proven to be tried and true no matter where you go. Inconsistencies are the root of all evils when it comes to quality. Boy can I attest to that and cite examples-and belive you me they cost. When I say cost, I am not talking chump change. I am talking anywhere from a few hundred dollars per incidient to a couple hundred grand being held up.
There is the exploit in myspace with invites. We have 2 sets of logic on capthcas.
If you send a mass mail invite, if you just type in the first letter, it passes. That's defeatist for security right there. Yet, it appears to be secure, and someone got paid a load of money to implement that. Does it work? Not really. It was implemented as a failsafe against spammers. Now, you can't send but so many invites per day through friend requests, but you can send email invites 50 at a time and that's OK. That's another inconsistency.
Now, with Mobsters, the captcha there works. The captcha with friend invites works. How come is it we have one thing going on with those 2 scenarios, and we can readily prove that captcha doesn't work the same with email invites as it does with friend requests and games. What does that tell you? You have 2 different things going on.
Here is another thing that makes no sense, and part of why I say mobsters is a hack.
If you past the URL for 200 energy into a text file, click it, it doesn't work. If I posted the url here, or sent it to someone in a myspace email, it works. Why?
...do some funky java script thing that says you've collected energy and nothing more.
...Tell the user that they collected 200 energy and sent out energy to the rest of thier mob assuming they haven't clicked this already with some more stiky java script.
All the thing looks for is if there was an HTTP referrer of some kind. It doesn't have to come from the game itself, hence why there are a number of URL's that work. So why bother to look for one and decrease performance? It's stupid.
Now...here is another favorite of mine. I learned that Bank of America, HUGE on 6 sigma is a bunch of hypocrites.
They have what appears to be either to payment systems for direct deposit, or at least 2 different forms of logic as to how these things work. You'd be amazed how screwed up this is. They're also a .NET shop, and people wonder why I call them a bucnh of plaid clad fuddy duddy's with buzz cuts and golf clubs up their asses. Here is why.
When you have money going into your account, it has to go through a clearinghouse ran by the FOMC, aka, the fed. With that, there is a routing number to direct it to the correct bank and state, and then there is the account number. There is a dollar amount too.
Now, assume I am Bank of America. I know the account number, and I know that there is a cash credit due to a set account because the clearinghouse guarentees it's there. So it's a cash equivalent to one's account till such time the money is deposited directly with the bank. That money goes directly into the account.
Now, I have seen a like situation happen twice with the same bank, and once it screwed up a paycheck that went to Bank of America's credits owed account as the paycheck was deposited into a closed account.
Now, how the hell does that happen? Easy. This is what you get when you do 2 things:
1. Don't use or completely ignore the purpose of a relational database like SQL or Oracle.
2. Ignore the account number, and just look at the information about the account holder, see how many possible accounts there are, active or not, and pick one. Retrive that account numnber, and deposit the check into that account and ignore what the clearinghouse says.
That's exactly what happened, and the account number that was picked ended up being a closed account not belonging to to intended recipient. Therefore, the recipient didn't get their paycheck on time. The same thing happens with credit cards that get tagged to another account holder, and it costs money.
Now, in corporate managerial speak, and according to Trepner-Krego or whatever the hell it is, the challenge is to resolve these inconsistencies by making things uniform to ensure quality banking for customers through a technological means.
So the solution they like to implement is this. Let what you have software wise sit there for the better part of 10 years, and that saves budget money from upgrades making it more cost effective. In the meantime, hire a load of people who aren't fluent in server side script, put in some manager who knows nothing of engineering, make everything 2-tiered architecture, and do that for 6 years on running so you can complain about how you can't find people who are versed in these things.
In the meantime, part of that solution costs $60-$90 an hour for someone to make things look pretty. They're still using Crystal Reports which takes more time to engineer than SQL 2008 SSRS, and the same reporting services with SQL 2008 require no additional licensing fees. B of A also uses SQL 2000 for some things and they aren't using 2008 elsewhere.
So in the meantime, the money spent for look and pretty hasn't addressed functionality, and upgrades could have been done a number of times over with the difference in pay for what they pay a contractor vs. hiring someone on their own through another clueless entity that knows nothing about engineering. They could have pocketed the difference, but instead have squandered those resources away. In the process, there is no guarentee that the correct acccount is tied to the correct owner and any asset or liability attached to those accounts.
This is such a novel solution, it's incredible. If you look at their SEC filing and their balance sheets, their debt is outpacing their cash flow for the past few quarters, yet they claim profitibility. However, they also squander resources away like this.
Now, when it happens, here is what you do. You have a few people in customer service spending x amount of time per incident talking to a customer. They have no idea how these things could happen. It's not their job to know. They only go by what information is presented before them. They have no idea as to how that information came about.
They in turn have to call someone else. So now, we have 2 people on the clock. Then we need someone from IT to chime in, and they are paid a premium. Then we have to have someone from accounting or finance who isn't exactly cheap either. So we just had 4-5 people working to rectify a screwed up account. Figure the time they spent, what they made an hour.
Now, figure how many times that happens, and that's what the bank has essentially ened up putting their resources into fixing something that was too expensive for the department to budget. However, it costs the company money when you figure how many times it happens. The department saved their budget and cost the company a load of money.
Here is another case and point.
I worked for a place owned by a company in Japan. They make CNC manufacturing equipment. GM was one of their biggest customers too. Anyways...I had to deal with this antiquiated intranet used to guide the company in the US. The entire thing was architected off presentation instead of building from the back end on up and doing it right.
You would have one set of logic that said something to the effect of, if we have this attachment, and this other part of some code, then this implies this particular machine. Then some sales engineer says this attachment in no way, shape or form is compatible with this piece of equipment short of making a brand new casting for something that doesn't exist. Instead of uniquely identifying each part and machine acceosry, there were serial and model numbers of like kind that could apply to more than one machine, and the logic was the guessing game logic. If we have B and C, this must be A. However, A may only really imply B or C and not both in conjunction.
So then someone like me blows through 30 grand of engineering time at least to maintain these headahces because of some stupid politics, and it costs the company money. Then if we looked elsewhere in the code, there were other implementations of the same logic that worked entirely differently which may or may not have produced the same results.
So then one day, some sales person is griping about he can't close not one, but 6 or more deals grossing 100K for his clients. Why? The software doesn't work becuase of these inconsistencies and shoddy logic. Then I have to go in and attempt to fix it in such a way that it's only a matter of time before the same issue comes up again. They couldn't afford to rewrite the thing because they figured in their total cost of ownership from the shoddy way, and they figure it's going to cost more than that to redo everything which wasn't the case. This is the assumption thing, and the reality is that they were ready to loose half a million dollars, and then in the meantime they had to resort to a manual solution. So the money they spent on this shoddy solution was for something not even being used.
How cost effective was that to spend how many hundreds of thousands of dollars for something that nobody liked because it didn't work? Then you have to spend another 30K-100K a year for maintenance or something like that?
Now, when I have these disussions, for whatever reason, people bring up hardware in doing things right. What's that got to do with how you write something?
With the case of Myspace and their open social stuff, just like Facebook, it's all some java scripts to write HTML. So we've gone the route of putting presentation stuff out and using that for data. It's slow and architecturally flawed. If we simply took an XML endpoint, we could have metadata useful to any platform and making it much more flexible for any deveoper to use and manipulate how they wish. It's a lot faster, and then you can eliminate a lot of network marhshalling across the globe.
SQL Server as of SQL 2000 will allow you to generate record sets in XML. You can create your own, and you can now expose a SOAP endpoint online with SQL. So if I were someone like myspace, I could simply say, here is a link to our endpoint that is read only. You get well formatted XML with a validation schema, now do whatever the hell you want with it. Everything you need is there. From that point, you can make it appear and function anyway you want instead of being forced to extrapolate data from presentation stuff.
So instead, someone comes up with a shoddy solution, and it costs resources instead of making something more granular and uniform. What is there is not cost effective or technically efficient. Yet, they preach effective use of resources in companies and various places. This is what you get.
I can't completely understand we are conditioned from various early ages on to think as I am now by stating these things. However, when you state it, and you illustrate it in the best interests of a company or whatever, they don't want to hear it. They even chastize me for doing this. Yet, a finance analyst who thinks the same way is so well respected an revered while being paid so well.
Yet, here I sit and rot. I could start another like topic and how the price of inconsistency with some very inexpensive things just might cost GIA their reputation and open them and some other places up to some serious lawsuits. Then again, maybe that's why I rot as I do because....I can pick off all the major bugs that illustrate inexperience and/or incompotence in a record breaking time, and the truth comes out.
However, wouldn't it seem sensible that someone would appreicate this candor if it stops some internal bleeding they've never known about? This isn't necessarily about a specific technology. This isn't about using gobs of pricey hardware. This is about simple engineering and making better use of what assets you have on all fronts regardless of what technology you use. Technology is like a power tool. It can work great and do a lot of things so long as you know what to do with it and when to use it. They're not always cheap, but the right tool and the right expertise makes the job a lot easier and a lot better end result.
If I made cars, and you had a brand new car, and you spend 20 hours a week maintaining it, you'd have to ask what kind of piece of is this. You would be just in asking that. However, there are many cases of that happening with GM and they've lasted for all these years somehow till they cried to the bankruptcy judge, and they'll still do the same thing.
What gives, and why is it that people like me who know these things rot when I could save someone some serious money?
-joe<--who attributes the rewarding of incompotence and chatisements of knowledge as part of the root of my psychiatric issues-and my physician agrees.