Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Axiem
Oct 19, 2005

I want to leave my mind blank, but I'm terrified of what will happen if I do

TheresaJayne posted:

But as a 100% must do thing - I disagree. FFS why test the setters and getters? We know they work they have always worked and if the developer is suitably obtuse they can have some devastating effects on code

You shouldn't test getters/setters, in my opinion, unless they happen to have side effects (which they probably shouldn't). This is why code coverage % numbers are dumb. You only want tests around code where they add value.

quote:

Java code:

@Mock
Account account;

@Test
public void canTestGetAmount()
{
	when(account.getAmount).thenReturn(1.0f);

	float result = account.getAmount();
		
	assertThat(result,is(1.0f));
}

	

But...that's not even testing a real object. That's literally making sure your mocking framework works :psyduck:

Adbot
ADBOT LOVES YOU

TheresaJayne
Jul 1, 2011

Axiem posted:

You shouldn't test getters/setters, in my opinion, unless they happen to have side effects (which they probably shouldn't). This is why code coverage % numbers are dumb. You only want tests around code where they add value.


But...that's not even testing a real object. That's literally making sure your mocking framework works :psyduck:

I know and at work over 50% of the tests are like that

NovemberMike
Dec 28, 2008

Axiem posted:

But...that's not even testing a real object. That's literally making sure your mocking framework works :psyduck:

I've seen a lot of that in the real world. When some people get into TDD they get into the mindset of "everything must have tests" they look at code that doesn't really need tests and shoehorn a test in anyway. It usually ends up like that, or it ends up brittle. I knew a developer that loved side effects in code and when they had a method A that called method B, and method B had a side effect that was hard to test they'd just write a test verifying that A called B. You could totally change how B worked and the test would still pass because it wasn't checking for behavior, it was checking that the code was hooked up a certain way.

Plorkyeran
Mar 22, 2007

To Escape The Shackles Of The Old Forums, We Must Reject The Tribal Negativity He Endorsed
That sort of thing is why I cringe at tests that use mocks when they don't really need to. I've seen far too many tests that look like they're testing something interesting, but in trying to test only one unit rather than two actually end up testing zero.

seiken
Feb 7, 2005

hah ha ha
My favourite kind of worthless tests are the ones that mock out all of the dependencies, call some method on the ClassToBeTested, and make sure that results in the mocked dependencies having all the expected method calls made on them.

It tests nothing other than that you can write the same code twice (in an awkward roundabout way the second time). You may as well write a test that verifies the checksum of your source files against known good values

Forgall
Oct 16, 2012

by Azathoth

seiken posted:

My favourite kind of worthless tests are the ones that mock out all of the dependencies, call some method on the ClassToBeTested, and make sure that results in the mocked dependencies having all the expected method calls made on them.

It tests nothing other than that you can write the same code twice (in an awkward roundabout way the second time). You may as well write a test that verifies the checksum of your source files against known good values
Isn't it testing that MethodToBeTested makes calls it's supposed to make? Or am I misreading you?

NovemberMike
Dec 28, 2008

Forgall posted:

Isn't it testing that MethodToBeTested makes calls it's supposed to make? Or am I misreading you?

MethodToBeTested shouldn't be making calls, it should be doing something. The test is just enforcing coupling (which is a bad thing).

seiken
Feb 7, 2005

hah ha ha
Yeah, exactly. I mean, I suppose if you had some helper class whose sole purpose was to call methods on some other object - say you have a method callFooThenBarHelper whose spec is actually to just call dependency.foo() and then dependency.bar() - then it could make sense to mock out dependency and write a test that makes sure the dependencies are called correctly. If it wasn't such a simple example. Because you're actually testing the spec of the function.

But that's an extremely contrived example and that sort of thing doesn't really happen all that often. Much more likely is that the calls to dependencies are implementation details, and if you write a test that just verifies the exact dependency call fanout from doSomeLogic(), all you're doing is testing that the implementation hasn't changed since you wrote the test. You've literally just copied out the implementation of doSomeLogic a second time, except wrapped up in all the mocking framework gibberish. It's providing negative value, because it doesn't do anything useful and means you have twice as much code to change

vOv
Feb 8, 2014

I wrote a Javascript function once called lookupFoo(callback) that would XHR out to some backend to lookup the foo and then execute the callback with the value. I wanted to make sure it would only XHR once no matter how many times I called lookupFoo (the result is cacheable), so I mocked out XHR, called lookupFoo() twice, made the mock XHR 'return', called it twice, and then verified all my callbacks executed and only one XHR was constructed.

NovemberMike
Dec 28, 2008

vOv posted:

I wrote a Javascript function once called lookupFoo(callback) that would XHR out to some backend to lookup the foo and then execute the callback with the value. I wanted to make sure it would only XHR once no matter how many times I called lookupFoo (the result is cacheable), so I mocked out XHR, called lookupFoo() twice, made the mock XHR 'return', called it twice, and then verified all my callbacks executed and only one XHR was constructed.

That's fine because you're testing that the function is properly memoized. It'd also make sense to have tests that verify that when you call it twice with different functions it ends up executing the right function the second time. That all tests the actual functionality of the function.

My point is that if you have this:

code:
mypow(x, y) {
  return pow(x, y)
}
You test by verifying that mypow(0, 1) is 0, mypow(2,3) is 8, mypow(-1, 2) gives you a positive number, that sort of thing. You don't mock out pow() and verify that mypow called pow with variables x and y. I have seen the second style done.

sarehu
Apr 20, 2007

(call/cc call/cc)
Generally speaking, I have found mocking most useful for:

  • abstracting the interface to the system so that tests run faster / not poo poo all over some directory,
  • bringing in deterministic behavior in components which would, due to concurrency or other reasons, behave non-deterministically. In particular so that edge cases aren't missed.
  • sitting between the real components and observing their behaviors, instead of replacing them entirely, so that the cause of a failure is properly isolated. (This is a reason you'd ostensibly replace the component entirely, but you get stronger tests if you still run the real component.)

I can also think of some cases where I wanted to be able to test "was pow called" in a test. For example, sometimes I wanted to make sure my unit tests overflows some memory buffer that causes stuff to need to get pushed to disk. So I wanted to be able to have the test see that such an overflow really happened, otherwise the disk-touching code isn't going to get tested.

Edit: Really I just found myself wanting the regular code to spit out a log of everything it does, and then have the unit test inspect it after the fact.

sarehu fucked around with this message at 11:32 on Jan 2, 2015

seiken
Feb 7, 2005

hah ha ha

sarehu posted:

  • abstracting the interface to the system so that tests run faster / not poo poo all over some directory,
  • bringing in deterministic behavior in components which would, due to concurrency or other reasons, behave non-deterministically. In particular so that edge cases aren't missed.

I think for these what you really want is a "fake" implementation (i.e., an implementation of the dependency that uses dummy data / doesn't connect to a real database / doesn't actually do anything concurrently / whatever, but is otherwise a reasonable facsimile of the actual implementation) rather than mocks that you have to specifically set up for each test and keep in sync with the actual code. I'm fairly convinced that unless you're testing something whose behaviour is defined in terms of method calls out to dependencies then all mock tests are negative value tests and worse than no tests.

Wheany
Mar 17, 2006

Spinyahahahahahahahahahahahaha!

Doctor Rope

Ithaqua posted:

As you build up your test suite, the tests give you a safety net you can use to refactor.

This kind of blew my mind when I read about it. The "formal" definition of refactoring requires you to have unit tests in place, while I've always thought that refactoring meant just "improving the code by doing whatever."

I'm still probably going to use the word refactoring when doing whatever, but at least now I know.

Wheany
Mar 17, 2006

Spinyahahahahahahahahahahahaha!

Doctor Rope
Basically :lol: at my education.

Also now that I'm back at the university doing my master's a decade after getting my bachelor's degree, :lol: at the education in general. I haven't really learned much of value on those lectures I have been sitting on. All the exercises done in software courses are dumb and trivial that don't need any discipline, so there is no need to learn any, so you just hack away at poo poo on the last day before the deadline.

There is very little need to use version control (i guess git/github is good for group projects), no need for testing, or at least no enforcement for having tests. We are introduced the ideas behind agile methods, but beyond some simple classroom games, they are never put into practice. I'm not saying that agile methods are what make good software, I'm just saying that there should be any structure/process in place. But then again, every exercise/project is so trivial that there is no need for any and you can pass them by winging it.

Then again, a more realistic software project that would illustrate the need for discipline would be a loving nightmare to arrange.

Then idiots like me who have been through the education process go work at companies with other similar idiots and nobody has any experience in doing anything except hacking lovely code together which then gets posted ITT.

shodanjr_gr
Nov 20, 2007

Wheany posted:

Basically :lol: at my education.

Also now that I'm back at the university doing my master's a decade after getting my bachelor's degree, :lol: at the education in general. I haven't really learned much of value on those lectures I have been sitting on. All the exercises done in software courses are dumb and trivial that don't need any discipline, so there is no need to learn any, so you just hack away at poo poo on the last day before the deadline.

There is very little need to use version control (i guess git/github is good for group projects), no need for testing, or at least no enforcement for having tests. We are introduced the ideas behind agile methods, but beyond some simple classroom games, they are never put into practice. I'm not saying that agile methods are what make good software, I'm just saying that there should be any structure/process in place. But then again, every exercise/project is so trivial that there is no need for any and you can pass them by winging it.

Then again, a more realistic software project that would illustrate the need for discipline would be a loving nightmare to arrange.

Then idiots like me who have been through the education process go work at companies with other similar idiots and nobody has any experience in doing anything except hacking lovely code together which then gets posted ITT.

The reason why new grads make 6 figures at the big companies fresh out of (grad)school is the fact that most graduates gain zero applicable engineering/process skills from coursework at most universities. Hence, the only ones that are actually semi-competent are the ones who had the personal drive to learn things on their own and go past the assignment descriptions...

ErIog
Jul 11, 2001

:nsacloud:
That's the case with nearly any field and most schools, by the way. Yeah, there's some schools that have good programs for some stuff, but most of it is about networking and access to resources for self-practice.

What happens at a lot of schools is they try to lower the attrition rate by never telling students what's actually required to become decent at the thing they're studying. They know that if students were told how hard they're going to have to work then most will just quit, and that's bad for business. So they have made these ramps-ups so slow to keep the students in the program, but then it ends up failing them in the end. You get a bunch of graduates with some knowledge of whatever field, but without any skills at a good level because they haven't spent enough time practicing. You also get people graduating thinking they like the field they've chosen, but end up hating it when they get a job actually doing it every day.

The only fields and schools where this is not true are ones that have kept a reasonable attrition rate.

shodanjr_gr
Nov 20, 2007

ErIog posted:

What happens at a lot of schools is they try to lower the attrition rate by never telling students what's actually required to become decent at the thing they're studying. They know that if students were told how hard they're going to have to work then most will just quit, and that's bad for business. So they have made these ramps-ups so slow to keep the students in the program, but then it ends up failing them in the end. You get a bunch of graduates with some knowledge of whatever field, but without any skills at a good level because they haven't spent enough time practicing. You also get people graduating thinking they like the field they've chosen, but end up hating it when they get a job actually doing it every day.


That's so true. Also most rankings (at least for undergraduate programs) are contingent partly on rapid graduation rates. Since most universities also have a substantial liberal arts requirement that needs to be fulfilled, engineering students end up with roughly 4-5 semesters worth of degree-related courses. Failing even one course causes the student to slip past the graduation target, bringing down the school's rankings.


quote:

The only fields and schools where this is not true are ones that have kept a reasonable attrition rate.

Which, at the BSc/MSc level (aka the point at which the school gets paid by the student, not the other way around) involves roughly the top 10-20 programs in the country based on my interactions.

TheresaJayne
Jul 1, 2011

ErIog posted:

That's the case with nearly any field and most schools, by the way. Yeah, there's some schools that have good programs for some stuff, but most of it is about networking and access to resources for self-practice.

What happens at a lot of schools is they try to lower the attrition rate by never telling students what's actually required to become decent at the thing they're studying. They know that if students were told how hard they're going to have to work then most will just quit, and that's bad for business. So they have made these ramps-ups so slow to keep the students in the program, but then it ends up failing them in the end. You get a bunch of graduates with some knowledge of whatever field, but without any skills at a good level because they haven't spent enough time practicing. You also get people graduating thinking they like the field they've chosen, but end up hating it when they get a job actually doing it every day.

The only fields and schools where this is not true are ones that have kept a reasonable attrition rate.

Someone once said to me that university is not about learning your subject, but LEARNING HOW TO LEARN...

its about understanding how to research and documenting what you discover, This is of course Undergrad courses i am talking about.

KernelSlanders
May 27, 2013

Rogue operating systems on occasion spread lies and rumors about me.

Wheany posted:

Basically :lol: at my education.

Also now that I'm back at the university doing my master's a decade after getting my bachelor's degree, :lol: at the education in general. I haven't really learned much of value on those lectures I have been sitting on. All the exercises done in software courses are dumb and trivial that don't need any discipline, so there is no need to learn any, so you just hack away at poo poo on the last day before the deadline.

There is very little need to use version control (i guess git/github is good for group projects), no need for testing, or at least no enforcement for having tests. We are introduced the ideas behind agile methods, but beyond some simple classroom games, they are never put into practice. I'm not saying that agile methods are what make good software, I'm just saying that there should be any structure/process in place. But then again, every exercise/project is so trivial that there is no need for any and you can pass them by winging it.

Then again, a more realistic software project that would illustrate the need for discipline would be a loving nightmare to arrange.

Then idiots like me who have been through the education process go work at companies with other similar idiots and nobody has any experience in doing anything except hacking lovely code together which then gets posted ITT.

This is a general problem with the software engineering type courses. Those group projects serve only to teach that one person can do the work of four in a finite amount of time. I know people who ask about that class as a screening question in interviews: If the candidate doesn't express overwhelming disdain for the course and the other members of his/her team then you don't have the one of the four you want to hire. What they should do is have the whole class build one project with the professor as CTO like it's a web startup. Of course, it's doubtful whether the professor has any experience managing a 35 person engineering team, so there's that.

itskage
Aug 26, 2003


Wheany posted:

Basically :lol: at my education.

Also now that I'm back at the university doing my master's a decade after getting my bachelor's degree, :lol: at the education in general. I haven't really learned much of value on those lectures I have been sitting on. All the exercises done in software courses are dumb and trivial that don't need any discipline, so there is no need to learn any, so you just hack away at poo poo on the last day before the deadline.

There is very little need to use version control (i guess git/github is good for group projects), no need for testing, or at least no enforcement for having tests. We are introduced the ideas behind agile methods, but beyond some simple classroom games, they are never put into practice. I'm not saying that agile methods are what make good software, I'm just saying that there should be any structure/process in place. But then again, every exercise/project is so trivial that there is no need for any and you can pass them by winging it.

Then again, a more realistic software project that would illustrate the need for discipline would be a loving nightmare to arrange.

Then idiots like me who have been through the education process go work at companies with other similar idiots and nobody has any experience in doing anything except hacking lovely code together which then gets posted ITT.

When I finished community college with an AA in "Web development" there was literally a girl in my class who's final presentation site didn't work because she didn't understand that she needed an index.html. She brought in her flash drive, copied her site to the XAMPP directory we were using for presentations and then couldn't figure out why going to locahost wasn't opening it. Eventually the instructor showed her and she went on to present.

Like maybe in some crazy fantasy world she altered her config to look at another file as the default and just got screwed by the config on the presentation computer, but I can assure you this was not the case!

You leave the school and start looking for a job and these people are applying to the same places as you. If they interviewed her first they might see my resume and not give a poo poo.

Now that it's years later and I am running my own department, I have actually done some interviews with applicants from there. Overall they are junk. But at least I understand that there are some decent people that went there that could be good, or could learn to be good, so I'll at least do a first round with some of them. But I imagine a lot of people aren't so lucky. Employers might not give them a glance just because they have seen the quality of the candidates from there.

Getting a bit off track, but basically: Yes. School is 100% what you put into it. Coasting through the minimum to pass, or working get a nice GPA might not mean poo poo if you don't learn the material.

edit:

Here is someone's solution to a modified fizzbuzz test in PHP:

code:
/*
Makes a for loop to output number one to one hundred
*/
for($i=1; $i<=100; $i++)
{
	/*
	Sets a boolean variable to make sure the number isn't a multiple of both 3 and 7
	*/
	$check = true;
	
	/*
	Out puts the number
	*/
	echo "$i" ;
	
	/*
	Checks if the number is a multiple of both 3 and seven
	*/
	if($i % 3 == 0 && $i % 7 == 0)
	{
		echo "$fizz" . "$buzz";
		$check = false;
	}
	
	/*
	Checks if the number is a multiple of three
	*/
	if($i % 3 == 0 && $check)
	{
		echo "$fizz";
	}
	/*
	Checks if the number is a multiple of seven
	*/
	if($i % 7 == 0 && $check)
	{
		echo "$buzz";
	}
	echo "<br/>";

}
The $check killed me...

edit2: Of course I actually failed the test based solely on the fact that there weren't any unit tests outputting the results as a manually typed string before he started this function.

itskage fucked around with this message at 19:12 on Jan 2, 2015

carry on then
Jul 10, 2010

by VideoGames

(and can't post for 10 years!)

KernelSlanders posted:

What they should do is have the whole class build one project with the professor as CTO like it's a web startup. Of course, it's doubtful whether the professor has any experience managing a 35 person engineering team, so there's that.

The entire degree program should be this. If you can't hack it in a fast paced, high skill environment, you don't get the degree. Can't pivot on a moment's notice? Fail. Can't put in 12 hour days 7 days a week like a team player? Fail. We need to be much better and finding and promoting rockstar programmers and getting rid of everyone else.

fritz
Jul 26, 2003

KernelSlanders posted:

What they should do is have the whole class build one project with the professor as CTO like it's a web startup. Of course, it's doubtful whether the professor has any experience managing a 35 person engineering team, so there's that.

Do it in conjunction with the business school as a senior project for management majors.

Zorro KingOfEngland
May 7, 2008

I once interviewed a recent computer science graduate who couldn't create a java class with a main method using eclipse. For a junior java developer position.

I even let them cheat off of a flash drive that had all their 100-level java class homework on it and they still couldn't do it :psyduck:

Winter Stormer
Oct 17, 2012

Zorro KingOfEngland posted:

I once interviewed a recent computer science graduate who couldn't create a java class with a main method using eclipse. For a junior java developer position.

I even let them cheat off of a flash drive that had all their 100-level java class homework on it and they still couldn't do it :psyduck:

Ha ha, what the hell? Eclipse literally has a button to push to generate a main method stub in the class you're creating. I can't imagine this level of incompetence.

shodanjr_gr
Nov 20, 2007
There was a student who was tasked to take a .NET library that did gesture recognition (from accelerometers iirc) and test how robust it was to noise (this was the scaled down version of his project, having gone through a bunch of scope-narrowing steps to better fit his "competencies").

The input data was literally just a list of 3-component vectors. The student's solution to "make the data noisy" was to add "random noise" to the data which is generated by transforming the vector's components in some arbitrary way then adding the result back to the vector. This took the better part of a semester to implement.

Right now, this person is writing code that's handling your financial data at one of the biggest banks in the world...

Soricidus
Oct 21, 2010
freedom-hating statist shill

carry on then posted:

The entire degree program should be this. If you can't hack it in a fast paced, high skill environment, you don't get the degree. Can't pivot on a moment's notice? Fail. Can't put in 12 hour days 7 days a week like a team player? Fail. We need to be much better and finding and promoting rockstar programmers and getting rid of everyone else.

Please source your quotes.

KernelSlanders
May 27, 2013

Rogue operating systems on occasion spread lies and rumors about me.

fritz posted:

Do it in conjunction with the business school as a senior project for management majors.

That seems even worse than the status quo.

Now one person can do the work of four, and their boss.

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



KernelSlanders posted:

That seems even worse than the status quo.

Now one person can do the work of four, and their boss.

Sounds like an accurate simulation of the real world to me?

JawnV6
Jul 4, 2004

So hot ...
Y'all never had a group project that was anything but one person doing all the heavy lifting? And, by some stunning coincidence, everyone posting here was the downtrodden ubermench who singlehandedly did every line of code, worked on the presentation, and held a stiff upper lip while the whole team got credit?

Knyteguy
Jul 6, 2005

YES to love
NO to shirts


Toilet Rascal
Visual Basic .NET code:
Function O0O000OO0O(O00OO000000O00 )
    Dim OO0O000O00OO0
    Dim OOO0OOO000O00
    On Error Resume Next 
    Set OO0O000O00OO0 = Server.CreateObject ( Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 118 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 84 ) & Chr ( 80 ) )  
    OO0O000O00OO0.Open Chr ( 71 ) & Chr ( 69 ) & Chr ( 84 ) , O00OO000000O00 , False 
    OO0O000O00OO0.setRequestHeader Chr ( 3 ) & Chr ( 2 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 1 ) & Chr ( 5 ) & Chr ( 1 ) & Chr ( 7 ) & Chr ( 8 ) & Chr ( 116 ) , O00OO000000O00 
    OO0O000O00OO0.send 
    O0O000OO0O = OO0O000O00OO0.ResponseBody 
    Set OO0O000O00OO0 = Nothing 
    Set OOO0OOO000O00 = Server.CreateObject ( Chr ( 4 ) & Chr ( 100 ) & Chr ( 6 ) & Chr ( 5 ) & Chr ( 98 ) & Chr ( 7 ) & Chr ( 3 ) & Chr ( 2 ) & Chr ( 9 ) & Chr ( 1 ) & Chr ( 8 ) & Chr ( 4 ) )  
    OOO0OOO000O00.Type = ( 86 * 57 - 4901 )  
    OOO0OOO000O00.Mode = ( 37 * 51 - 1884 )  
    OOO0OOO000O00.Open 
    OOO0OOO000O00.Write O0O000OO0O 
    OOO0OOO000O00.Position = ( 9 * 61 - 549 )  
    OOO0OOO000O00.Type = ( 33 * 64 - 2110 )  
    OOO0OOO000O00.Charset = Chr ( 117 ) & Chr ( 5 ) & Chr ( 4 ) & Chr ( 3 ) & Chr ( 1 )  
    O0O000OO0O = OOO0OOO000O00.ReadText 
    OOO0OOO000O00.Close 
End Function
e: part 1: http://forums.somethingawful.com/showthread.php?threadid=3644791&pagenumber=42&perpage=40#post439697556

e2 : changed some char values

Knyteguy fucked around with this message at 21:10 on Jan 2, 2015

itskage
Aug 26, 2003


Knyteguy posted:

O0O000OO0O(O00OO000000O00 )

Dear god why!?

Job security :smug:

cinci zoo sniper
Mar 15, 2013




This looks like coding equivalent of tongue twister.

omeg
Sep 3, 2012

Clearly some automated obfuscation.

Workaday Wizard
Oct 23, 2009

by Pragmatica
The previous programmer is haunting the code base.

Forgall
Oct 16, 2012

by Azathoth

carry on then posted:

The entire degree program should be this. If you can't hack it in a fast paced, high skill environment, you don't get the degree. Can't pivot on a moment's notice? Fail. Can't put in 12 hour days 7 days a week like a team player? Fail. We need to be much better and finding and promoting rockstar programmers and getting rid of everyone else.
I think it's sarcasm, but at this point I'm not really sure.

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



JawnV6 posted:

Y'all never had a group project that was anything but one person doing all the heavy lifting? And, by some stunning coincidence, everyone posting here was the downtrodden ubermench who singlehandedly did every line of code, worked on the presentation, and held a stiff upper lip while the whole team got credit?

Jokes and self-selection, dude.

JawnV6
Jul 4, 2004

So hot ...

Munkeymon posted:

Jokes and self-selection, dude.

I dunno, the "screening question at interviews" stuff wasn't all that funny.

Evil_Greven
Feb 20, 2007

Whadda I got to,
whadda I got to do
to wake ya up?

To shake ya up,
to break the structure up!?

JawnV6 posted:

Y'all never had a group project that was anything but one person doing all the heavy lifting? And, by some stunning coincidence, everyone posting here was the downtrodden ubermench who singlehandedly did every line of code, worked on the presentation, and held a stiff upper lip while the whole team got credit?
It happened in both of the >2 member projects I did in college. The duo groups were fine, though. If anyone cares about the detail:

For our software engineering course, my group got hosed over by someone dropping the class in the first week. Where 4 other teams had 4 or 5 members, we had just 3. The project was a web-based test analysis system targeted for our school's ABET test. One guy did gently caress all, barely showed up to group meetings - always late, with little communication at all. The other one was actually employed doing QA with some code fixes; between him and me we wrote up the design docs. We didn't have much leadership (silent guy was supposed to be leader). My teammates kind of gave up a week before the project was due. I hadn't taken a class over databases or web stuff, and really didn't know much about either. These other two supposedly did, as that's how the professor had distributed people - based on classes taken.

So, I learned some PHP and SQL in a few days, coded a visually-ugly but functional loving system, and hosted it on XAMPP on my home computer and presented the drat thing essentially alone while the other two stood behind me. You know what the scary thing was? Only one other group had built a system that even loving worked at all.

Same poo poo happened in my capstone - and the same loving silent guy was assigned to my group. We had 3 groups of 5 (and again, another guy dropped from my group a few weeks in). The project was to build a web and mobile-accessible system to upload files. Again the docs got done fine, again the team hosed up poo poo. We divided responsibility so that I would do the server poo poo with silent guy and the other two would do Android interfacing with the server. One guy wanted to talk to the database directly from the Android app, but I persuaded them to instead talk to the PHP. I had the server code up and done for the web weeks before it was due. No progress was made by the mobile guys; having some Android experience, I built a class for them to use that would handle server communication. Silent guy was supposed to make the PHP handle the Android via JSON. He didn't know how and I gave up waiting for him to ask, so I did most of it while getting that class built.

Unsurprisingly, they couldn't loving figure out how to do poo poo, still. After asking for help, silent guy copied & pasted the bulk of the PHP code and tagged that as mobile (we used a flag to differentiate) for a single PHP file, and that was his contribution to the code. It was also broken, so I had to fix it. One of the guys just pasted in someone else's code for a single part of the Android app, and that was his contribution. I'm not sure that the fourth guy did that much. So, I coded up the entire Android app (aside from the class I'd previously wrote and the other guy's class, which handled only a portion of one page) in a couple of days and again presented it while the others stood 'round.

Evil_Greven fucked around with this message at 21:39 on Jan 2, 2015

JawnV6
Jul 4, 2004

So hot ...
So you go to the professor and show them that the guy didn't contribute? Surely you had some form of that in record. An email count from the two of you being orders of magnitude over his would be a fine start. That you let him slip by and had to deal with the same person in a later class is somewhat on you.

I had a variety of good team projects. Mostly pairs, a couple that required larger teams. On the larger teams we were using real version tracking and sussing out noncontributors was trivial. In pairs, the professors would assume everything was 50/50 and encouraged people with less than ideal mixes to speak to him. I know one team that totally earned their A/D grades and it took one conversation with the professor to get it there from A/A.

Yeah, it still really seems silly to think that's how it Must Be. Especially when you're not speaking up about it and presumably letting the slackers get away scot-free?

Adbot
ADBOT LOVES YOU

Flownerous
Apr 16, 2012
Yeah just narc on your classmates, you dummies. How could that possibly backfire?

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply