User not logged in - login - register
Home Calendar Books School Tool Photo Gallery Message Boards Users Statistics Advertise Site Info
go to bottom | |
 Message Boards » » Stupid Software Engineering & Design Decisions Page 1 [2] 3 4 5 6 7, Prev Next  
jaZon
All American
27048 Posts
user info
edit post

Everything these worthless fuckers do:

http://www.qs1.com/

5/3/2012 2:01:16 AM

aaronburro
Sup, B
53062 Posts
user info
edit post

Quote :
"Her whole project turned out to be a huge disaster riddled with quality issues because they spent so much time dicking around with those fluff tests. Our boss took flack, and in turn gave the whole team as a generic group flack (never even blamed her). Six months later she was promoted for taking initiative."

Sounds like she got promoted so she couldn't do as much damage. government?

5/3/2012 9:45:23 AM

EuroTitToss
All American
4790 Posts
user info
edit post

Dilbert Principle
http://en.wikipedia.org/wiki/The_Dilbert_principle

5/3/2012 10:58:45 AM

CapnObvious
All American
5057 Posts
user info
edit post

Quote :
"Sounds like she got promoted so she couldn't do as much damage. government?"


Nope, not government. I suppose she was good at pushing papers and making things sound good, but the decisions were just terrible.

She was also responsible for changing our bug flow chart from a simple ~10 object diagram to a sprawling 4x4 page (aka would print to 16 pages landscape if you tried) with hundreds of objects. I guess it did cover EVERY single scenario that could occur, but most people use common sense for most of that. Giving that to new hires became a source of amusement.

5/4/2012 12:19:57 AM

jaZon
All American
27048 Posts
user info
edit post

Also consider that unless you're at a pretty decent company, management tends to be COMPLETELY FUCKING RETARDED

5/4/2012 1:07:01 AM

ComputerGuy
(IN)Sensitive
5052 Posts
user info
edit post

That makes no sense jaZon


Upper management usually suck ass at big corporate offices.

5/4/2012 1:14:11 AM

Stimwalt
All American
15292 Posts
user info
edit post

The art of management is blaming your subordinates for your own incompetence.

5/4/2012 7:54:11 AM

BigMan157
no u
103354 Posts
user info
edit post

Windows Phone 7

5/4/2012 9:20:11 AM

EuroTitToss
All American
4790 Posts
user info
edit post

Really? I thought it had pretty decent reviews. I even know an apple fan boy (literally buys every iteration of every apple product) who was impressed.

5/4/2012 9:40:11 AM

1337 b4k4
All American
10033 Posts
user info
edit post

EMR vendor for some doctor has Surescripts integration for refill transactions. The transaction requires the requester (us) to send a unique (to the requester) identifier for the requests, to prevent duplicate requests. EMR vendor's software has a unique constraint on ALL transaction request ids they receive. So if we use an ID number that some other pharmacy already used, they won't process our request. This still passes surescripts certification because they only need to demonstrate that they reject refill requests from the same requester with the same ID. To process requests with this vendor, we would basically have to guess at IDs until we find one that hasn't been used.

5/4/2012 1:00:17 PM

Lionheart
I'm Eggscellent
12775 Posts
user info
edit post

Back to the talk of automated testing ^*? , I know its en vogue with managers to try and automate all testing so they can remove resources from running tests but that only works for the most simple dumb sort of stuff. Testing actual user functions still needs actual human beings.

5/4/2012 1:09:28 PM

Noen
All American
31346 Posts
user info
edit post

^It's funny, because that's exactly what happened at large software dev houses 5-7 years ago, and 3-4 years ago started seeing the ramifications of that approach so most of the industry has now moved back to a balanced (and much healthier) approach of mixed testing environments.

TFS (that I work on) is really stressing that testing range with the version in beta right now. TLM (Test and Lab Management) handles all of the full test automation, test suites, coded UI testing, scripted manual testing and now exploratory (black box) testing, etc. VS handles unit testing, load testing, code contracts, code clones, etc. and TFS now has a Feedback client (for stakeholders and customers) to be able to give feedback and find problems that get back to the team with incredibly rich detail (we capture symbol data, reverse engineer screen elements down to ids/tags, video and audio recordings, time-stamped text comments, screenshots + annotations).

Yeah, test is probably the widest gamut of tools and services to do a really good job, and still by far the least mature in terms of industry practices and standards it seems.

5/4/2012 1:46:26 PM

Lionheart
I'm Eggscellent
12775 Posts
user info
edit post

^ Yeah I work in manufacturing so we're always 5-10 years behind the curve

5/4/2012 8:18:09 PM

jaZon
All American
27048 Posts
user info
edit post

Quote :
"Upper management usually suck ass at big corporate offices."


No, they're just shitheads that don't give a fuck. There's a difference between that and being genuinely stupid and terrible at your job.

5/4/2012 9:16:31 PM

Perlith
All American
7620 Posts
user info
edit post

Legacy design: Putting a VPN tunnel (B) inside of a VPN tunnel (A).
App Client --> B client --> A client --> Special Hardware --> Internet --> A server --> B client --> App Server

Problems (to name a few):
- Having VPN client A randomly intercept and drop VPN client B's traffic because B's uses a virtual network adapter that A doesn't recognize.
- OS is Windows 2000
- A/B/App are using software equally old (circa 2003/2004).
- Packet size drops significantly because of "special hardware", couple that with the overhead required by the VPN solutions, you lose half of your effective MTU for the data payload per packet.
- Routing tables are completely controlled by proprietary software (provided by special hardware manufacturer). There is no default route, and anytime you need to update either VPN routes, you need to update the proprietary software.



Back in 2003/2004 the design was the only feasible option available for this customer. Fast-forward to the present, they decide to upgrade one item in the chain, and the entire thing breaks down. I won't name the end customer behind this, but as a consumer you have probably had direct interaction with them at some point. To top this all off, their CEO was talking to our executives on a daily basis to get all of this "working". Finally got something to work at the end of the day, but it was ugly.

[Edited on May 9, 2012 at 7:28 AM. Reason : .]

5/9/2012 7:22:16 AM

aaronburro
Sup, B
53062 Posts
user info
edit post

Quote :
"
public void SomeMethod(object sender, EventArgs ev)
{
this.AnotherMethod(ev);
}

// this method is only called by SomeMethod
private void AnotherMethod(object args)
{
EventArgs e = args as EventArgs;

var something = ((CustomEventArgs)e).SomeProperty;
var somethingElse = ((CustomeEventArgs)e).SomeOtherProperty;

// do nothing else with e
}
"



even better...
Quote :
"

foreach (var item in SomeLongListOfReflectedProperties)
{
var stupidShallowCopy = item;
otherInternalList.SomeLinqMethodThatTakesALambda(() => (new ClassWhichHasNoStateInformation()).SomeMethodThatShouldReallyBeStatic(stupidShallowCopy.Property1, stupidShallowCopy.Property2, someotherInput));
}
"




and we are wondering why we have performance issues right now.

6/16/2012 2:52:28 PM

aaronburro
Sup, B
53062 Posts
user info
edit post

in performance critical code:

Quote :
"
if (Double.Convert(x) == 0){ y = Double.Convert(x); ... }
else if (Double.Convert(x) == 1) { y = Double.Convert(x) + 1; ... }
else if (Double.Convert(x) == 2) { y = Double.Convert(x)*Double.Convert(x); ... }
else if (Double.Convert(x) == 3) { foo3(); }
else if (...) ...
else
{
for (int i = 0; i < somethingThatMightBeLarge; i++)
{
if (somethingThatDoesntChangeInTheForLoop) y = Double.Convert(x);
else y = x;
}
}
"

8/22/2012 10:56:48 PM

skokiaan
All American
26447 Posts
user info
edit post

That c#? They copied java and made nothing better

[Edited on August 23, 2012 at 9:15 AM. Reason : .]

8/23/2012 9:14:49 AM

Lionheart
I'm Eggscellent
12775 Posts
user info
edit post

The developers for our standard product created a unit test that creates 1111111 new rows in a table every time its run. Of course there is not cleanup step to remove at the completion of the unit test. Massive tables ensue.

8/23/2012 1:49:00 PM

smoothcrim
Universal Magnetic!
18966 Posts
user info
edit post

^^^ to be fair, wouldn't a decent compiler fix that?
but that's some stupid shit

8/23/2012 6:00:15 PM

aaronburro
Sup, B
53062 Posts
user info
edit post

^^^ read on a little further, you'll see at least one nice addition: MOTHER FREAKIN PROPERTIES. I seriously hate a crap ton of GetFoo() and SetFoo(foo) methods.

^ with the level of stupid in this code-base, the compiler probably just passes over that stuff and shakes its figurative head.

here's another one from today...

Quote :
"
public object Foo1
{
get { return _foo1; }
set { value = _foo1; }
}

public object Foo2
{
get { return _foo2; }
set { value = _foo2; }
}

public object Foo3
{
get { return _foo3; }
set { value = _foo3; }
}
"


I don't know how in the frack that hasn't caused an issue yet. I can only assume that the property setters for those things have never been used.

Also, I learned that somewhere in the code, databinding is used with objects that support INotifyPropertyChanged. Seems like a good idea, right? Sure, except that they then listen to the PropertyChanged event and MANUALLY CLEAR AND RE-SET THE BOUND PROPERTY every time the event is fired.

8/23/2012 6:43:18 PM

Fry
The Stubby
7784 Posts
user info
edit post

that's... i don't even...

8/24/2012 9:37:15 PM

LaserSoup
All American
5503 Posts
user info
edit post

Quote :
"We're required to write an interface for every business object class we write regardless of how far down the hierarchy it is."


Are you talking about the SAP product?

8/24/2012 10:41:50 PM

LaserSoup
All American
5503 Posts
user info
edit post

Quote :
"We're required to write an interface for every business object class we write regardless of how far down the hierarchy it is."


Are you talking about the SAP product?

8/24/2012 10:43:29 PM

aaronburro
Sup, B
53062 Posts
user info
edit post

Quote :
"We're required to write an interface for every business object class we write regardless of how far down the hierarchy it is."


Are you talking about the SAP product?

8/27/2012 1:08:40 PM

aaronburro
Sup, B
53062 Posts
user info
edit post

I love that HP's QA tool, Quality Center, is a buggy piece of crap. I just crashed the entire program by entering a column filter that has spaces in it but didn't have quotes around it. And now I can't log back into it

8/28/2012 3:53:34 PM

Lionheart
I'm Eggscellent
12775 Posts
user info
edit post

^^We connect with SAP but only in a few situations.

I was specifically referring to writing Java interfaces. You want to declare a class of functions for high level concepts that are implemented a bunch of different ways. You shouldn't really be defining interfaces past a certain point in the hierarchy just from a practicality standpoint.

IE you might write a

public interface Car{..} and you might also have a
public interface Sedan{...} extends Car but then you write an interface
public interface FordSedan{...} extends Sedan which might be a bit much but is still okay but then..
public interface FordTaurus{...} extends FordeSedan
public interface FordTaurus1995{...} extends FordTaurus
public interface FordTaurus1995FrontWheelDrive{...} extends FordTaurus1995

And each of these interfaces may or may not have corresponding Impl files. And to cap off all that suck sauce virtually all of these interfaces are ever only implemented by one object completely negating the need for defining an interface.

This creates a super bloated implementation and a lot of extra work that I can't just ignore and do the right way because its on the peer review checklist before the code can meet release.

9/2/2012 1:24:55 PM

aaronburro
Sup, B
53062 Posts
user info
edit post

yeah, our codebase has some of that stupidity, too. It makes you have to wade through so much bullshit whenever you try to find the implementation of something. Definitely an anti-pattern. It's not very helpful when all you ever do is cast your passed around interfaces to one fucking business object type anyway every fucking time you reference that interface

9/2/2012 2:21:24 PM

aaronburro
Sup, B
53062 Posts
user info
edit post

this one hurts in so many ways it's not even funny. It's a simple comparison function.

// Get the type of the objects being compared
var valueType = value1.GetType().ToString();

// If it's a numeric type, then do a numeric comparison instead of a string comparison
if ( (valueType == "System.Int16") || (valueType == "System.Int32") || (valueType == "System.Int64") ||
(valueType == "System.Double") || (valueType == "System.Single") )
{
switch (valueType)
{
case "System.Int16":
{
short tmpValue1 = (short)value1;
short tmpValue2 = (short)value2;
if (tmpValue1 == tmpValue2)
return 0;

if (tmpValue1 < tmpValue2)
return flipResult(-1);

return flipResult(1);
}

case "System.Int32":
{
int tmpValue1 = (int)value1;
int tmpValue2 = (int)value2;
if (tmpValue1 == tmpValue2)
return 0;

if (tmpValue1 < tmpValue2)
return flipResult(-1);

return flipResult(1);
}

case "System.Int64":
{
System.Int64 tmpValue1 = (System.Int64)value1;
System.Int64 tmpValue2 = (System.Int64)value2;
if (tmpValue1 == tmpValue2)
return 0;

if (tmpValue1 < tmpValue2)
return flipResult(-1);

return flipResult(1);
}
case "System.Double":
{
System.Double tmpValue1 = (System.Double)value1;
System.Double tmpValue2 = (System.Double)value2;
if (tmpValue1 == tmpValue2)
return 0;

if (tmpValue1 < tmpValue2)
return flipResult(-1);

return flipResult(1);
}
case "System.Single":
{
System.Single tmpValue1 = (System.Single)value1;
System.Single tmpValue2 = (System.Single)value2;
if (tmpValue1 == tmpValue2)
return 0;

if (tmpValue1 < tmpValue2)
return flipResult(-1);

return flipResult(1);
}
}
}
else
{
IComparable comparer = (IComparable)value1;
if (comparer != null)
{
return flipResult(comparer.CompareTo(value2));
}
else
return 0;

}

9/20/2012 11:36:15 AM

aaronburro
Sup, B
53062 Posts
user info
edit post

the entirety of that code there could be written in one line of code. one line. Whenever I do an in-person screening, I will use that code as an interview question.

here's another one. I had to be nice about this one at work today, because apparently the person who wrote it is still on our team.

if (A) return foo1;
else if (A && B) return foo2;
else if (...)


that was so bad that I figured they HAD to have meant something else, so I asked someone else who had been involved in the code (and, btw, had the BLAME from subversion), and he was like "fuck, how did that pass by me?" DELETE. Actually, the whole function that was a part of got refactored into something that wasn't retarded and didn't repeatedly call ToString() on an object that, coincidentally, is always a fucking String (that, because it was kept as an Object, was always being checked for being NULL before calling ToString(), too). Based on the BLAME results from SVN, I was seriously casting some questioning glances over at this dude, because he's never come across as being that stupid before.

9/20/2012 11:52:03 PM

lewisje
All American
9196 Posts
user info
edit post

Quote :
"Whenever I do an in-person screening"
I also imagine you try to weed out the blacks, gays, Jews, Hispanics, liberals, and non-Christians

I mean judging by your post history

too bad ya gotta be super-covert about it

9/21/2012 11:46:37 AM

CapnObvious
All American
5057 Posts
user info
edit post

Come on now. His comments here a on track for Tech Talk and he does contribute. Until he aaronburro's it up on this sub-board like he has in Soap Box (and the occasional Sports Talk), lets keep it civil.

9/21/2012 2:03:34 PM

aaronburro
Sup, B
53062 Posts
user info
edit post

for those times where you just can't quite trust a newly instantiated HashTable to be empty...

if (reload) 
{
newHash = new Hashtable();

if (!newHash.ContainsKey("Action"))
newHash.Add("Action", "Reload");
if (!newHash.ContainsKey("clearKey"))
newHash.Add("clearKey", "Y");
}

10/4/2012 10:09:58 AM

dtownral
Suspended
26632 Posts
user info
edit post

non-aaronburro posts in this thread are interesting, aaronburro posts are a little too "look at how important i am, i have a job were i review code"

10/4/2012 11:44:19 AM

aaronburro
Sup, B
53062 Posts
user info
edit post

public bool IsDate(ref string inValue)
{
// Variable to collect the Return value of the TryParse method.
bool result;
try
{
IFormatProvider format = new System.Globalization.CultureInfo("en-US",false); //"en-US"
DateTime myDT = DateTime.Parse(inValue,format,System.Globalization.DateTimeStyles.AdjustToUniversal );
inValue = myDT.ToShortDateString();
result = true;
}
catch (System.FormatException)
{
try
{
IFormatProvider format = new System.Globalization.CultureInfo("es-ES",false); //"es-ES" international
DateTime myDT = DateTime.Parse(inValue,format,System.Globalization.DateTimeStyles.AdjustToUniversal );
inValue = myDT.ToShortDateString();
result = true;
}
catch
{
result = false;
}
}

return result;

}

10/19/2012 1:00:45 PM

qntmfred
retired
40719 Posts
user info
edit post

^^ of course we all enjoy seeing colossal-scale fuckups more, but to be fair i think burro's posts are pretty classic examples of wtf code. i don't want this to become just a What is wrong with burro's codebase today thread, but i don't think he's trying to puff himself up here

10/19/2012 5:41:11 PM

Noen
All American
31346 Posts
user info
edit post

^Agreed

These are examples that should never even make it to a code review. This is stuff that if you thought about it for 10 seconds as you wrote it, you'd be like "hey, this doesn't make any sense".

Also, qtmfred: don't you have something to be doing right now with some code?

10/19/2012 6:07:56 PM

Cherokee
All American
8264 Posts
user info
edit post

Quote :
"My department at work has a home-brewed tool for entering the budget that was written in VB6 circa 2001. Rather than do a complete re-write in .NET, they used a conversion tool and in turn released a buggy piece of junk to production. "


Yea anyone who had a part in that decision should be fired.

10/19/2012 8:52:38 PM

aaronburro
Sup, B
53062 Posts
user info
edit post

I can't even post the most WTF examples of code, because every last one of them is essentially a massive race condition between three or four threads. This codebase is heavily multi-threaded, and yet there is hardly any synchronization code in most of it. It's like the people who originally wrote it only knew about Thread.Run() and that's it. It is a wonder than anything works, and most of us at this point have just decided that it's the crushing inefficiency of a few sections of code that keep the program afloat. Any time we do any performance work on those sections, all kinds of hell breaks loose. They use DataSets to store damned near everything internally, even though we don't send anything directly to a database and a simple generic list would do for most things. Reflection is used to populate almost every business object, which is usually then converted to another business object. After DataSets (with one table and two columns), ArrayList is their favourite data structure, followed closely by a Hashtable (and not a generic one), and there's hardly any use of generic collections whatsoever. The other day, I actually saw a do-while loop used to implement if-else functionality. I mean, wtf, folks?

10/21/2012 8:34:41 PM

CapnObvious
All American
5057 Posts
user info
edit post

10/22/2012 12:31:44 PM

aaronburro
Sup, B
53062 Posts
user info
edit post

performance critical code here, folks...

if(value.Split('-').Length > 1)
{
if((value.Split('-').GetValue(1).ToString().Equals(string.Empty)) || (value.Split('-').GetValue(1) == null))
{
valid = false;
return valid;
}
else
{
...
}
}

10/31/2012 11:22:32 AM

gs7
All American
2354 Posts
user info
edit post

^No. Just ... no.

10/31/2012 12:55:19 PM

aaronburro
Sup, B
53062 Posts
user info
edit post

A "strongly typed collection" from the pre-generic .NET 1.1 days. Well, an attempt at it. This pattern is re-used liberally throughout the application.

public class ConvertibleCollection : ArrayList
{
#region Constructor

public ConvertibleCollection()
{
}

#endregion

#region Public Methods

public void InitializeFrom(object value)
{
}

public override void CopyTo(Array array)
{
base.CopyTo (array);
}

public override void CopyTo(Array array, int index)
{
base.CopyTo (array, index);
}

public int Add(IConvertibleDetails ConvertibleObject)
{
return base.Add(ConvertibleObject);
}

public void Remove(IConvertibleDetails ConvertibleObject)
{
base.Remove(ConvertibleObject);
}

public bool Contains(IConvertibleDetails ConvertibleObject)
{
return base.Contains(ConvertibleObject);
}

public override void InsertRange(int index, ICollection c)
{
base.InsertRange (index, c);
}

public override void Insert(int index, object value)
{
base.Insert (index, value);
}


#endregion
}

11/2/2012 4:53:28 PM

skokiaan
All American
26447 Posts
user info
edit post

You get the job you deserve

11/3/2012 1:58:28 AM

Lionheart
I'm Eggscellent
12775 Posts
user info
edit post

The more and more I see and use code generators the more I hate the entire approach. If you have something that's generic enough to generate code for then you shouldn't be generating separate code for each instance. You should design a generic handler for these items and pass the items along and only augment or supersede when necessary. This is a generalization and I'm not opposed to skeleton generators and getter/setter etc but generating whole files and functions to do the same damn thing is starting to drive me crazy.

11/14/2012 2:45:51 PM

lewisje
All American
9196 Posts
user info
edit post

A theme for a site I'm working on used this code to figure out whether the user was running a version of Internet Explorer lower than 7, in case the developer didn't want to send some fancy styles over to the old browsers:

return isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/\bmsie [1-6]/i', $_SERVER['HTTP_USER_AGENT']);
Guess where the problem is.

11/20/2012 6:37:27 PM

aaronburro
Sup, B
53062 Posts
user info
edit post

it doesn't block bustygirl comics?

11/20/2012 11:23:09 PM

lewisje
All American
9196 Posts
user info
edit post

stfu troll

11/22/2012 2:45:31 PM

aaronburro
Sup, B
53062 Posts
user info
edit post

I'm gonna go ahead and put the Apple "blow away your device simply for plugging it into a different computer" programming in here. That is literally the single dumbest and most user-unfriendly design decision in the history of mankind. It's such a stupid design that Apple doesn't even need to patent it, because no one else in their right mind would copy such a boneheaded idea.

11/23/2012 11:42:06 PM

Lionheart
I'm Eggscellent
12775 Posts
user info
edit post

Omg fuck yes that's awful, not to mention the entire rest of iTunes

11/23/2012 11:43:58 PM

 Message Boards » Tech Talk » Stupid Software Engineering & Design Decisions Page 1 [2] 3 4 5 6 7, Prev Next  
go to top | |
Admin Options : move topic | lock topic

© 2024 by The Wolf Web - All Rights Reserved.
The material located at this site is not endorsed, sponsored or provided by or on behalf of North Carolina State University.
Powered by CrazyWeb v2.39 - our disclaimer.