aMule Forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

We're back! (IN POG FORM)

Author Topic: The myth of the genius programmer (Google IO Talk)  (Read 5336 times)

wuischke

  • Developer
  • Hero Member
  • *****
  • Karma: 183
  • Offline Offline
  • Posts: 4379
The myth of the genius programmer (Google IO Talk)
« on: June 06, 2009, 08:08:55 PM »

Interesting talk about egos and collaborative software development.

http://code.google.com/events/io/sessions/MythGeniusProgrammer.html

If you've got a free hour, have a look at the talk.
Logged

Kry

  • Ex-developer
  • Retired admin
  • Hero Member
  • *****
  • Karma: -665
  • Offline Offline
  • Posts: 5898
Re: The myth of the genius programmer (Google IO Talk)
« Reply #1 on: June 06, 2009, 08:19:47 PM »

We are mythical creatures alright!

;)
Logged

wuischke

  • Developer
  • Hero Member
  • *****
  • Karma: 183
  • Offline Offline
  • Posts: 4379
Re: The myth of the genius programmer (Google IO Talk)
« Reply #2 on: June 06, 2009, 09:39:07 PM »

Please beware of a longer rant:

In my university, I have the questionable honour of working in a team of mostly less technical people on a software project for a course.

Aside from a laughable amount of actual programming work compared to the analysis, design and documentation required, we're using waterfall and a sybase ASE. (Did you know that Sybase is the only major DB platform which is not supported by the equally awesome software SAP?)

You know, this fine theoretical ideal of software development, which has literaly been know not to work since 1970.

Having worked inside the aMule team I insisted on setting up version control (university will provide it starting by next year: go university!), not wanting to do much work I tried to make us use one of these make-shooting-youself-in-the-foot-hard-but-still-be-enterprisey languages like C# or Java and had a long talk with our assigned project leader about giving directions in project management, because chaos is bad.
I had chosen QA, because this job meant not actually doing much work, but instead to talk a lot and learn about all the different way something can break.

Well, our programmer is a Windows guy. He's a good programmer, as long as there's Windows XP, Visual Studio 2005, MFC (shudder) and native C++ around. Everything else sucks in his opinion, including string classes and the parts of MFC he has already rewritten.
He's also used to working alone and likes to rewrite the stuff others create (also in analysis and design) only to later bitch about the time he needed to do things properly, because others fucked up.
Having said that, he's also a nice guy and we get along well. He's now also convinced that Haskell is a great language and showed some interest in my Lisp stuff. ;)

Anyway, I had the pleasure to assist him with writing some database code. I didn't know MFC's CDatabase at all and wrote only mediocre code not knowing that a CRecordSet has to be initialized with a CDatabase-connection and so on. My quick-and-dirty Perl script for writing setters and getters was probably the best thing I produced.

Now there was a distinct difference in our commit behaviour. I committed maybe too often and known unfinished code, while he was very conservative in committing, making collaboration difficult.
In the end he decided to do everything alone and probably rewrote my code thrice just to make sure. I don't know, because I haven't seen any commits since then. At least he wants me to review his code - after everything is finish, to make every error a lot harder and a lot more work to correct.

You see why I liked the talk and felt compelled to post a link? ;)

Edit: I'm mostly working with Perl, PHP and Shell for my admin job, some C# and Java for the university, Smalltalk and Lisp for fun and webprogramming nowadays. I even forgot how strncpy works (I though it would always copy n bytes), but still somehow managed to write secure code this way. All the time making stupid errors in C++ and C was good for something after all...;)
« Last Edit: June 07, 2009, 10:18:25 AM by wuischke »
Logged

Kry

  • Ex-developer
  • Retired admin
  • Hero Member
  • *****
  • Karma: -665
  • Offline Offline
  • Posts: 5898
Re: The myth of the genius programmer (Google IO Talk)
« Reply #3 on: June 06, 2009, 10:12:36 PM »

Makes me look not that bad, does he?
Logged

lfroen

  • Guest
Re: The myth of the genius programmer (Google IO Talk)
« Reply #4 on: June 07, 2009, 06:14:44 AM »

My work experience comes mostly from hardware side - ASIC development. In this world problem of I've-got-ego-issues mostly non-existing. And there's reason for that. Here's (in brief) how development cycle works:
* First, architecture docs get written. And reviewed.
* Next, actual coding is performed. Code verified for syntax and stupid errors.
* Next, QA is running (it's called "verification"). During this time, every single designed(developer) is required to address every single problem that verification points to. The idea is that make even simple fixes after chip set to manufacturing will cost hundreds of thousands of dollars. Nobody wants to find himself responsible for such failure.
* Now, only AFTER verification team says "OK, it looks good", go-to-production cycle starts.

See where I'm going? Money talks. When bugs can't be fixed by hitting "rebuild" button and sending patch to customers, people become very collaborative. They put aside ego issues, and say "I made few changes in my code, please check that it works as intended". 
Logged

wuischke

  • Developer
  • Hero Member
  • *****
  • Karma: 183
  • Offline Offline
  • Posts: 4379
Re: The myth of the genius programmer (Google IO Talk)
« Reply #5 on: June 07, 2009, 10:26:37 AM »

Quote
Makes me look not that bad, does he?
In my experience, you're a good developer to work with and you're even nice to everyone now. ;) If only it wasn't for working on some big change (PO, GUI work) and delaying them for ages. The results are worth it, but at least we know it will be finished until December 31st this time. :)

@lfroen: Sounds like a really nice working environment, my compliments. But it's a lot of responsibility, it must be a lot of pressure to get things right, particularly when the deadline is coming closer.
Logged

Stu Redman

  • Administrator
  • Hero Member
  • *****
  • Karma: 214
  • Offline Offline
  • Posts: 3830
  • Engines screaming
Re: The myth of the genius programmer (Google IO Talk)
« Reply #6 on: June 07, 2009, 01:28:51 PM »

I had chosen QA, because this job meant not actually doing much work, but instead to talk a lot
So that's how they teach QA nowadays. Well, it explains a lot.  :P

QA from my work experience:
- we specify a new feature for our software
- supplier doesn't understand
- we explain it
- supplier sends it to his outpost in South America to get coded (and not everybody in this continent is a Phoenix...)
- supplier tests and reviews the code
- supplier makes standard quality assurance tests (for weeks)
- supplier supplies software
- I make a two minute test and find the new feature doesn't work, and something else that was totally out of scope for this release is suddenly broken.  ::)
Logged
The image of mother goddess, lying dormant in the eyes of the dead, the sheaf of the corn is broken, end the harvest, throw the dead on the pyre -- Iron Maiden, Isle of Avalon

lfroen

  • Guest
Re: The myth of the genius programmer (Google IO Talk)
« Reply #7 on: June 07, 2009, 08:59:29 PM »

@lfroen:  But it's a lot of responsibility, it must be a lot of pressure to get things right, <...>
[/quote]

Both true. It IS a lot of pressure to do things right. And when things screws up (read: bug found by customer after he put it in system), investigation is issued, and point of failure identified. Not pleasant at all.
Logged

wuischke

  • Developer
  • Hero Member
  • *****
  • Karma: 183
  • Offline Offline
  • Posts: 4379
Re: The myth of the genius programmer (Google IO Talk)
« Reply #8 on: June 08, 2009, 09:42:04 AM »

Quote
So that's how they teach QA nowadays. Well, it explains a lot.
No, what they teach is much worse. Anyway,we've got a dedicaded person for tests in our group and the programmer wants to write the unit-tests. Looks like a win-win situation to me.

@lfroen: I always had a lot of respect for you hardware guys. I mean, they have these incredibly complex system and have to get them 100% right.

My idea of low-level stuff consists of soldering on a serial connector, playing with compiler options and maybe creating a toolchain. (The latter is a major pita.)
OK, I went through The Elements of Computing Systems and wrote some Mix, too, but that just gave me an idea of how complex this stuff really is.
Logged