Slashdot Mirror


When Smart Developers Generate Crappy Code

itwbennett writes "If you've ever worked on a team you can probably recall a time when, as a group, you produced work that was not as good as any one of you could have done on your own. Sarah Mei had this sort of sub-par teamwork experience, which she shared in her session at the O'Reilly Fluent Conference this week. Mei 'spoke about a time she worked on a team with really expert developers. Every one of them was someone whom you'd admire, who had previous written code that you and I would boast to have created. Yet, these smart people created modules that didn't talk to each other. And its quality was, to be kind, on the rotten side.' It's not an uncommon story, but why and how does it happen? The answer, says Mei, is that code quality 'is defined by its patterns of dependencies,' not all of which have equal weight. And, as it turns out, team communication is the heaviest dependency of all."

195 comments

  1. oh jeez; let's all discover agile again by rtfa-troll · · Score: 4, Funny

    people over processes; how deep.

    --
    =~ s,(.*),<sarcasm>$1</sarcasm>,g if any_point_you_wish();
    1. Re:oh jeez; let's all discover agile again by sycodon · · Score: 1, Troll

      Or maybe Sarah isn't as smart as she thinks she is.

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    2. Re:oh jeez; let's all discover agile again by Anonymous Coward · · Score: 4, Funny

      Fix everything by having a 5 minute standup meeting for two hours every morning and then every two weeks drop everything and build a deliverable that isn't finished yet.

    3. Re:oh jeez; let's all discover agile again by 0racle · · Score: 4, Funny

      I wonder how many meetings we'll have this time around.

      --
      "I use a Mac because I'm just better than you are."
    4. Re:oh jeez; let's all discover agile again by ls671 · · Score: 4, Insightful

      You also need a lead developer who has the last word. Otherwise, forget about it.

      --
      Everything I write is lies, read between the lines.
    5. Re:oh jeez; let's all discover agile again by Anonymous Coward · · Score: 0

      Yet, these smart people created modules that didn't talk to each other.

      The less able programmers were creating programs that would try to talk to each other and discovering that they could not. The smart people people are smart for getting the modules they are asked to do done.

    6. Re:oh jeez; let's all discover agile again by Comrade+Ogilvy · · Score: 3, Insightful

      I do not disagree. But when processes are so amateurish, as in the anecdotes provided in the fine article, then it always will devolve to people over processes in a way that is not enlightening. One of the main purposes of every flavor of formalized process is to enforce some minimum level of communication.

    7. Re:oh jeez; let's all discover agile again by Darinbob · · Score: 5, Funny

      8am daily standup meetings to discuss what you did the day before and what your obstructions are to prevent work getting done.
      12pm daily meetings to discuss what you've accomplished in the last 4 hours.
      2pm daily meetings with project owners to explaining that you're following industry standard processes so just remain patient.
      5pm daily meetings to plan what work you will get accomplished overnight before the 8am meeting.

      Meetings will continue until morale improves.

    8. Re:oh jeez; let's all discover agile again by Anonymous Coward · · Score: 1

      Don't forget the project manager to build the spreadsheets that everyone has to update hourly.

    9. Re:oh jeez; let's all discover agile again by khasim · · Score: 2

      But when processes are so amateurish, as in the anecdotes provided in the fine article, ...

      Emphasis on that. Crappy data leads to crappy conclusions. And her "data" is extremely crappy.

      From TFA:

      In another team of seven or eight people, developers were encouraged to do whatever they felt like ... which turned out to include, "Have every developer write code in a different language."

      I count at least two WTF's in there. You wouldn't build cars engineered around blind people would you?

      Also from TFA:

      The best of those indicators? The one that most commonly predicts quality results? Good team communication.

      So a baseball team or a football team with good communication should be able to crank out "quality" code. Wrong. And that gets back to the crappy examples she uses. Just because communication CAN be the biggest problem in a given situation does not mean that communication IS the biggest problem for all situations.

      Seriously, what programmer would not ask which language was being used? Or not have MORE questions when the answer was "everyone uses whatever they want to".

    10. Re:oh jeez; let's all discover agile again by Marxist+Hacker+42 · · Score: 3, Insightful

      Is it just me, or is the interface the job of the architect, not the code monkey?

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    11. Re:oh jeez; let's all discover agile again by Anonymous Coward · · Score: 1

      ...while attempting to simultaneously stay CMMI Level 5 complaint, so you have day-long Process Improvement Process Improvement Process meetings every month, too...

    12. Re:oh jeez; let's all discover agile again by Penguinisto · · Score: 1

      You're both right.

      It's one thing to have a group of top-end devs in one room. It's another to get them to play nice with each other. Not even talking about egos, per se... the ability to drop assumptions and actually start asking the other devs what they're up to is something that requires more than just knowing syntax and process to the nth degree.

      --
      Quo usque tandem abutere, Nimbus, patientia nostra?
    13. Re:oh jeez; let's all discover agile again by Penguinisto · · Score: 1

      Top it off with giving marketing the ability to speak in those standup meetings, and you have one hell of a recipe for fail...

      --
      Quo usque tandem abutere, Nimbus, patientia nostra?
    14. Re:oh jeez; let's all discover agile again by Anonymous Coward · · Score: 0

      You should do well on this test.

    15. Re:oh jeez; let's all discover agile again by Esther+Schindler · · Score: 1

      I hate to think that other developers have to work with you.

    16. Re:oh jeez; let's all discover agile again by jd2112 · · Score: 2

      At my last job I would have loved this light of a meeting schedule.

      --
      Any insufficiently advanced magic is indistinguishable from technology.
    17. Re:oh jeez; let's all discover agile again by pinkeen · · Score: 2

      Exactly, there is no democracy on this scale.

      There are a lot of desicions to be made when there is no superior solution - only different ones, which will affect future develeopment in distinct ways. And somebody has to make them arbitrarily.

      Some people just cannot understand that.

    18. Re:oh jeez; let's all discover agile again by Anonymous Coward · · Score: 0

      What if the architech bails out, gets rid of the in house team, and turns to a whole bunch of outside contractors.
      Take a look at what Boeing did with the 787.

      http://seattletimes.com/html/businesstechnology/2021045270_boeingoutsourcingxml.html

    19. Re:oh jeez; let's all discover agile again by Anonymous Coward · · Score: 1

      I'm pretty sure I work at the same place as you.

    20. Re:oh jeez; let's all discover agile again by plopez · · Score: 1

      The fact that you used the phrase "code monkey" tells me you are clueless.

      --
      putting the 'B' in LGBTQ+
    21. Re:oh jeez; let's all discover agile again by mindwhip · · Score: 1

      Also add testers that don't really understand what the things they are testing are supposed to do to that meeting...

      --
      [The Universe] has gone offline.
    22. Re:oh jeez; let's all discover agile again by Alex+Belits · · Score: 0

      There are no "code monkeys" for the same reason why there are no human calculators and tape operators -- tools reached the point where it makes no sense to dedicate people to implementation because communication of "architects" with those people causes more effort and greater possibility of mistakes than just having the same developer doing design and implementation. Anyone who pretends that this distinction still exists, is a charlatan.

      --
      Contrary to the popular belief, there indeed is no God.
    23. Re:oh jeez; let's all discover agile again by arth1 · · Score: 1

      One of the main purposes of every flavor of formalized process is to enforce some minimum level of communication.

      Ah, the coercion fallacy - a belief that forced communication is better than no communication. Forced communication will, when there's a lack of true data to communicate, lend itself as a channel for made up data.
      You need to adjust the overall structure so communication becomes natural. And no, that does not mean "schedule meetings" and "demand reports". More like "put people who communicate well together", and give solo artists jobs where they have to solicit info from others, not the other way around.
      Otherwise you have failed on a much higher level, which cannot be fixed by forcing people to bullshit each other.

    24. Re:oh jeez; let's all discover agile again by Anonymous Coward · · Score: 0

      She is just realizing this(communication is good) after 12 years of writing code(Ruby, javascript). Rook, Rook, Rookieeeee! This is the problem. You basically have self-taught "programmers" with no formal education. It's quite obvious she never had a basic class in software engineering, much less even had to work in group before. I'm sure her Ruby code is fine in the sense that it's proper language and style. But she has no clue about specifications, design, or any other aspect of large projects. Even while she working in her first group setting(pair programming is not a group) she was starry eyed and too busy "admiring" everyone she didn't get anything done (aka trying to get in their pants). To top it off now she is basically writing as a self-proclaimed software engineer.

    25. Re:oh jeez; let's all discover agile again by Esther+Schindler · · Score: 1

      How eloquent of you. We can safely assume that your code quality reflects your ability to communicate and connect with other people. Including your unwillingness to do so under your own identity. (How pitiful.)

    26. Re:oh jeez; let's all discover agile again by rtfa-troll · · Score: 1

      Just ignore the trolls. Sometimes even me. Responding to them doesn't do any good unless you just occasionally enjoy a good flame war for the fun of it, in which case you need to be lots ruder than that.

      BTW; what rubs me up the wrong way about Sarah's posting is really this

      However, none of them address the factor that has the biggest impact on the quality of your codebase: Other People.

      Ever since Knuth designed web and espoused Literate Programming there has been no possible way for a person properly educated in CS to not know that the main problem of software is communication with other human beings. I mentioned agile a bit glibly (it's a 1st post; it has to be fast and funny) but I really mean it as a strong comment to this overall. Agile software development process which was designed very much to talk about how people work together and the founders of it put this very explicitly in their manifesto.

      Even those two movements are themselves just statements of ideas other people had done often before. Either Sarah is ignorant of this or she deliberately picked a bunch of methodologies which are trying to solve different problems and ignoring the ones which are related to her topic. Either thing would be a bad sign. If you are just getting into this subject then you should start reading up around the many interesting ideas related to this that have been around before. Recent (since the 90s at least) programming language design has been very much based around the idea of programming languages as human to human communication.

      --
      =~ s,(.*),<sarcasm>$1</sarcasm>,g if any_point_you_wish();
    27. Re:oh jeez; let's all discover agile again by Esther+Schindler · · Score: 1

      Every so often, I feel as though I have to respond to a troll. Not because I imagine I will change his mind but to demonstrate to lurkers that the community rejects such opinions.

      Either Sarah is ignorant of this or...

      Or I did an inadequate job of summarizing her talk, which was very good indeed. Because the point was not so much "People should talk" (well duh) but "Hack the bad code to see where and how the communication is failing to happen." I am quite sure that Sarah (who is a very smart person) is more than a little aware of the value of communication (in Agile and otherwise). But we both know that bad code still happens, yes? And that people often fail to communicate as well as they intend to? Anything that helps us find those "oopsie!" moments is a good thing.

      And ::a little modest cough here:: I've been covering Agile since before it was called Agile. I worked on compiler programming teams in the 80s that instantiated most of what later earned the Agile label. We just called it, "Making sure we generated quality code" and "Helping other people to come up to speed."

    28. Re:oh jeez; let's all discover agile again by Marxist+Hacker+42 · · Score: 1

      Whenever I'm in charge of a team, I take the architect role, and give the "code monkeys" specs so complete that the only bugs are if they didn't write to spec or if the customer changes his mind halfway through the work (the second happens far more often than the first).

      Integration is the role of the architect, on any software team of more than one individual.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    29. Re:oh jeez; let's all discover agile again by cavebison · · Score: 1

      Is it just me, or is the interface the job of the architect, not the code monkey?

      Except that any architect worth the title wouldn't think of developers as "code monkeys".

    30. Re:oh jeez; let's all discover agile again by kmoser · · Score: 1

      The one that people title "Project_Status_FINAL_VERSION_23.xls" and email to each other, thereby ensuring nobody ever knows what the final version is or how to determine it?

    31. Re:oh jeez; let's all discover agile again by Anonymous Coward · · Score: 0

      +1 sad

  2. Oh oh, Cumbaya coming... by Tablizer · · Score: 0

    Just don't force me to hug the other coders. I will NOT hug coders!

    1. Re:Oh oh, Cumbaya coming... by Anonymous Coward · · Score: 0

      I've met a couple of coders I'd like to hug (I married one of them) - but they are few and far between.

    2. Re:Oh oh, Cumbaya coming... by Esther+Schindler · · Score: 1

      I married a coder I hugged too. But then we got married before either of us started coding.

    3. Re:Oh oh, Cumbaya coming... by Anonymous Coward · · Score: 0

      Oh, you already have same-sex marriage there?

  3. Duh by Sparticus789 · · Score: 1

    I learned this from Captain Planet as a kid. Why does Sarah Mei just have to repeat the lessons of Earth, Fire, Wind, Water, and Heart?

    --
    sudo make me a sandwich
  4. Coding Architecture Models by Synerg1y · · Score: 4, Insightful

    Isn't this exactly what MVP, MVC, etc... are meant for?

    At that point it doesn't matter how crappy your code is, all it is is isolated to a single portion of a layer with inputs and outputs and relatively modularized as a result in regards to similar models.

    1. Re:Coding Architecture Models by hondo77 · · Score: 3, Interesting

      At that point it doesn't matter how crappy your code is, all it is is isolated to a single portion of a layer with inputs and outputs and relatively modularized as a result in regards to similar models.

      You're assuming that people actually put in that separation all the time. Just because you are using an MVC framework doesn't mean things are separated like they should be. Just like declaring something with "class" doesn't automatically make it (good) OO.

      --
      I live ze unknown. I love ze unknown. I am ze unknown.
    2. Re:Coding Architecture Models by Synerg1y · · Score: 1

      Everything depends on implementation, but sticking to an architecture is meant to make implementing the various components a lot easier. The framework is actually supposed to enforce the practices, so while its possible to deviate and not follow the pattern, ...I guess its really not that hard to make those choices, especially for expert programmers (ex. does it require behind the scenes computation? model!).

    3. Re:Coding Architecture Models by i+kan+reed · · Score: 5, Informative

      No, and I have co-workers who I consider quite skilled, and none of them seem to know when to define an interface. Guys, enums and switches aren't replacements for subclasses.

    4. Re:Coding Architecture Models by WaywardGeek · · Score: 2

      Code architecture is key, as is a common coding methodology among the team. Brilliant coders often are loners, and if you put them on a team, each may do what they normally do and do their own thing. You'll have a program written in several different languages, and an integration nightmare.

      Here's an integration nightmare that continues to this day, thanks to lame computer language design. To reduce integration problems, a common architecture in EDA is to read a design into a common set of in-memory data structures, and to split up the extensive process of automating design implementation into several "tools". Each tool runs in sequence, moving the process forward, for example we run digital high level synthesis, then lower level technology mapping, placement, and then routing. They read from those common data structures, and write back to them. I have never seen a group succeed who did not use this architecture. The problem is how do you extend the objects in the common data structures so your tool can manipulate them? In C++, we use inheritance to extend the functionality of a class, but these shared common objects have already been instantiated by the time your tool runs, and they don't have your extensions. You can still inherit from there classes, but you'll have to copy all the objects to new objects of your subclasses to be able to use them, doubling the memory required. Alternatively, you could have a void pointer on each object in memory and use run-time hacks to cross-link them to your new extension objects, and throughout your code you wind up going back and forth through the void pointer. Various better systems are often employed, but they're all hacks to work around limitations in languages like C++, Java, D, and C#. If a team doesn't agree beforehand just how they are going to share objects and extend them, the effort is doomed before it begins.

      --
      Celebrate failure, and then learn from it - Nolan Bushnell
    5. Re:Coding Architecture Models by hondo77 · · Score: 1

      +1 Informative

      --
      I live ze unknown. I love ze unknown. I am ze unknown.
    6. Re:Coding Architecture Models by stanlyb · · Score: 1

      GraphTalk. The only real Object Oriented Data Base, ever, created. And it even works.

    7. Re:Coding Architecture Models by mbkennel · · Score: 2

      "You can still inherit from there classes, but you'll have to copy all the objects to new objects of your subclasses to be able to use them, doubling the memory required. "

      You might try a shared_ptr instead so you may have less need to copy the objects instead of a pointer to them.

      Or Lisp.

    8. Re:Coding Architecture Models by Anonymous Coward · · Score: 1

      > The framework is actually supposed to enforce the practices,

      That's a backwards thought.

    9. Re:Coding Architecture Models by Anonymous Coward · · Score: 0

      Totally agree.

      My recent experience is that "architecture" means picking a cool framework, with no thought given to how well it matches the system. With contractors you can expect something really new, not really stable, but that's gonna look real good on the CV. "Design" means that whatever class you'd come up with after thinking about the problem for 5s has an interface. Bonus points if you can put some required counter in a different class, that way you have 2 implementing classes, for a change, plus a multiplexer, all configured with spring, at the low-low price of transforming 3 lines of code into 500.

      As for enforcing the practices, keep dreaming... You have your cool framework, hibernate to "abstract" the database (better assume anything about null and empty string, otherwise the "abstraction" is going to leak real fast and real hard), and nifty json restful web-services, and suddenly your on-the-wire protocol has a strong dependency on the database schema. How's that for "architecture"?

    10. Re:Coding Architecture Models by TheRealMindChild · · Score: 1

      Neither are templates/generics, but these new C++/Java/C# folks fight to the death to avoid class inheritence

      --

      "When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
    11. Re:Coding Architecture Models by pclminion · · Score: 2

      Interfaces often make sense, but you can tell when somebody has gone interface-crazy when it is no longer possible, by simply looking at the source code, to determine what actually is going to happen -- instead, you're reduced to tracing the code in a debugger to see what actually goes on.

    12. Re:Coding Architecture Models by alienzed · · Score: 1

      In theory, sure. But we are not robots and in the eyes of humans there are no absolutes. Sometimes code is put in the wrong place and guess what? It doesn't always matter...

      --
      Never say never. Ah!! I did it again!
    13. Re:Coding Architecture Models by VortexCortex · · Score: 2

      At that point it doesn't matter how crappy your code is, all it is is isolated to a single portion of a layer with inputs and outputs and relatively modularized as a result in regards to similar models.

      You're assuming that people actually put in that separation all the time. Just because you are using an MVC framework doesn't mean things are separated like they should be. Just like declaring something with "class" doesn't automatically make it (good) OO.

      Furthermore, not everything can be separated into those classifications. Take your average "Web2.0" website for example: The components of the MVC are spread out across HTML CSS JS and back end code. Sometimes it makes sense to put some controls in the view. Blind adherence to paradigms as a core business strategy can lead to unsynergistic blue-sky thinking that leaves the best and brightest ideas out of the loop. The best game plan is to go the extra mile to make sure that movers and shakers can interface with your knowledge economy -- That's the fast track to empowering partnerships that stretch the envelope and benefit the bottom line results.

      P.S. You're welcome. Consider it payment in kind for helping me win design pattern bingo.

    14. Re:Coding Architecture Models by Anonymous Coward · · Score: 0

      Inheritance is how OO is supposed to work.

      Interfaces are great when you're trying to define how a third-party object should interact with your code. But if you're defining interfaces for yourself, you're probably doing it wrong. (Note the "probably" in there.) A base class with virtual methods (or enforced virtual ones, if your language supports them, like C#'s "abstract" classes and methods) is almost always preferable.

      Interfaces really shine when they represent, not objects or traits of an object, but actions an object can take. Then a properly coded object can implement its variation on that action as an interface implementation, and anything expecting something that implements that interface knows that that object can do that action. That's how interfaces should be used. I've seen way too many programmers miss the point of interfaces entirely and use them in ways that just make things difficult.

      I can count on the fingers of one hand the number of times I've used interfaces to any useful end in C#. Abstract classes and virtual or abstract methods are far more useful, and doubly so when you need a factory. A static method on an abstract class to generate and return an instance of a derived class is just brain-dead easy. Now throw generics in there and you have and amazing amount of flexibility and code re-use. But only if you do it right and aren't an incompetent boob that doesn't know what these things all do.

      I happen to code a lot of objects that don't implement action patterns, it seems...

    15. Re:Coding Architecture Models by VortexCortex · · Score: 1

      > enums and switches
      > not using a function pointer.
      ISHYGD care about performance.

    16. Re:Coding Architecture Models by gl4ss · · Score: 1

      if nothing is dependent on any other module/progam, then the whole program does nothing.

      of course if it's all designed in advance so that the interfaces are set to stone and so forth no problem.. but then the actual implementation is trivial and the actual "development" with all these same problems happened on the earlier stage. I'd say the problem comes when things are cut to pieces too much in advance for the sake of teamwork to begin earlier - and I go further and claim that companies do this so that they can get bigger amount of people on the case earlier instead of doing the thing that makes sense, the arcitechts are going to be under severe pressure if already on day 1 they're supposed to be providing something relevant to do for a hundred - or just 5 - guys.

      --
      world was created 5 seconds before this post as it is.
    17. Re:Coding Architecture Models by edelbrp · · Score: 1

      No. The first big MVC project I worked on had a project manager with that assumption. What happened is the Models were sparse because those writing them didn't anticipate everything needed by the Controllers and Views. So, a lot of what should have been in the Models was in the Controllers. Worse, the Views ended up having a lot of code that should have been in the Controllers and Models. Since those early days I/we've been very conscious about pushing as much upstream (V -> C -> M) as is reasonable. It seems to work better to divide the workload by app component so code (ideally) gets put in the right place as it is written.

    18. Re:Coding Architecture Models by Anonymous Coward · · Score: 0

      -1 Swinging off another user's nut sack.
       
      But I bet you like when those balls hit your chin, don't cha?

    19. Re:Coding Architecture Models by edelbrp · · Score: 1

      Amen. I was once put as a lead programmer for an MVC project that was years behind schedule. What we found was appalling. And, I'm not kidding: They merged all the controllers in one giant class file, moved much of the views into the database (for no apparent reason) and used codewords throughout instead of meaningful class/variable names. They had painted themselves into such a corner that they were refusing basic feature requests because 'it wasn't possible' any more. They were big proponents for MVC but obviously didn't have a clue what it actually was, or at least were trying to be so clever that it bit them in the ass.

    20. Re:Coding Architecture Models by St.Creed · · Score: 1

      Overengineering is a common mistake in people who want to "do it right" and try to design resilience to every possible change. It never works, which is why Agile development emphasizes that building a "code inventory" is just running up a cost, not building an asset.

      But not having a clue really doesn't help.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    21. Re:Coding Architecture Models by Anonymous Coward · · Score: 0

      Yes.

    22. Re:Coding Architecture Models by Anonymous Coward · · Score: 0

      What is ISHYGD?

    23. Re:Coding Architecture Models by Anonymous Coward · · Score: 0

      Nope.

      There's two large problems

      MVC breaks development into three parts, Model-View-Controller. This requires that API's be set and not changed.

      In Unix-land you have IPC and pipes. In Windows you also have IPC and pipes but they work different enough to be incompatible with Unix

      And lastly you have the "local TCP/IP" sockets.

      If you want to keep everything OS agnostic you have to communicate with different modules over TCP/IP, which entails SSL/SSH cryptography, adding overhead to what would otherwise be instant if the client/server model were divorced from it.

      Going back to MVC, is basically the same as the "Web Browser(html+javascript+css)" "Web Server(php or python or ruby/xml/json)" and "MySQL(sql)" server part of *AMP stacks. Each of these parts can be developed separately, but the the API problem comes back over and over again.

      For example I my have a MySQL table with 8 columns, and then have the web server have a php script that assumes the same 8 columns. Now the fastest way to make this work is to assume the 8 columns will never change order and there will never be more than 8 columns. If at some point the SQL adds another column, ALL the php code will break. Now if I use a slower method by defining all the columns to use, the code won't be broken but it will be much much slower. Same thing happens with XML/json in communicating with the web browser, changing the fields breaks everything.

      This is why, Java and C++ code are never to be used in inter-process communication. While it may make things easier to to develop, changing one thing in the API breaks everything. C bindings are basically the only way for a program to communicate with another part of a program without utilizing TCP/IP.

      So either you program things with an API that never changes (look how well that worked for libpng, jpeg, freetype and SDL) or you wind up fragmenting the usage.

      Likewise this comes back to why GPL projects suffer from fragmentation and code-rot, due to having too many cooks in the kitchen and not enough people actually using their project due to the constantly moving goalposts. A large amount of security issues out there in things like the Linux Kernel, continue to persist because those using the Linux Kernel do not update it for fear of incompatible changes made.

      I can tell you from experience. Installing Linux is a pain in the rear. Any install you may have is functionally obsolete after a few months, and is unmaintainable after about a year. This comes because Linux development is either "distro binaries" which are always out of date, or "compile just in time" which compiles the latest version of the software and may or may not work if the required library linkages are too old on the distro. FreeBSD is a bit better in that you can basically recompile everything -if- needed out of the box. However the problems still persist. Windows doesn't get a free pass on this either. Windows currently has a complete set of 32-bit support libraries due to developers NOT building 64-bit versions of software (Internet Explorer being the only released 64-bit browser), and on top of that it has side-by-side assemblies to use older versions of libraries where the API has changed. Ever notice how there are various MSVC*.DLL's kicking around, one for every version of the Visual C compiler? Why is there not just a "libc" for windows? When you compile programs developed against GCC, you have to either install the entire unix userland(cygwin) onto windows to use it, or you have to use MinGW which targets MSVCRT.dll or MSVCR100.dll

      The end result is that programming is simply too complicated for "Each person to just work on their own part"

    24. Re:Coding Architecture Models by ahabswhale · · Score: 1

      If they don't know when to define an interface, they are most certainly not in "quite skilled" category. Don't confuse smart with skilled; it happens all the time.

      --
      Are agnostics skeptical of unicorns too?
    25. Re:Coding Architecture Models by Anonymous Coward · · Score: 0

      Sometimes you must have a switch. For example when you get a numeric value from network and you want to create different objects based on that number. But the key is that you should have the switch only once. After the number has been converted to your system, there is no excuse.

    26. Re:Coding Architecture Models by Anonymous Coward · · Score: 0

      ^^^ Not only an idiot but also spews Microsoft talking points. Looks like they are trying to do something, be it search engine results pollution or attempts to demoralize the developers, however it's certainly not an attempt of an actual discussion.

    27. Re:Coding Architecture Models by Anonymous Coward · · Score: 0

      As for enforcing the practices, keep dreaming... You have your cool framework, hibernate to "abstract" the database (better assume anything about null and empty string, otherwise the "abstraction" is going to leak real fast and real hard), and nifty json restful web-services, and suddenly your on-the-wire protocol has a strong dependency on the database schema. How's that for "architecture"?

      It means that you have no application (or CRUD-only application). Internal data representation and processing model is not the same as interface format, and not the same as persistent/storage data model. They can be similar, and it's possible to produce an application where they are identical, however that would be a degenerate case, as the above mentioned CRUD-only application. Having a framework that removes explicit data parsing/serialization operations does not change the fact that it's the developer's choice how all data structures are handled, what interfaces are provided, what is persistent, etc.

    28. Re:Coding Architecture Models by i+kan+reed · · Score: 1

      There are multiple skills in this industry, and they have good command of a number of specialized technologies we use, multi-threading principles, algorithm performance, and a number of a non-design skills. Having one skill doesn't give another.

    29. Re:Coding Architecture Models by ahabswhale · · Score: 1

      Yes but knowing when to use an interface is very basic. I would expect any programmer with >1 yr of experience to pretty much have that down.

      --
      Are agnostics skeptical of unicorns too?
    30. Re:Coding Architecture Models by Bengie · · Score: 1

      "Over Engineering" just means you don't know what you're doing. Typically thinking and claiming you're doing one thing, but you're actually doing another, which gives a bad name for what you're claiming to be doing.

    31. Re:Coding Architecture Models by i+kan+reed · · Score: 1

      I think you're overestimating the talents of programmers on the whole.

    32. Re:Coding Architecture Models by ahabswhale · · Score: 1

      Perhaps but if you have low expectations then don't be surprised if your expectations are met.

      --
      Are agnostics skeptical of unicorns too?
    33. Re:Coding Architecture Models by datavirtue · · Score: 1

      Just build this shit, and when you need to just convert classes to interfaces with your lovely IDE. It's called refactoring; do you even know what you are doing? Who has time to sit around dreaming up interfaces all day? I think we're lucky to get a DAL/DAO half the time.

      --
      I object to power without constructive purpose. --Spock
  5. Communication isn't the problem... by Stumbles · · Score: 3, Insightful

    if it were then projects like Linux would have collapsed a very long time ago.

    --
    My karma is not a Chameleon.
    1. Re:Communication isn't the problem... by Anonymous Coward · · Score: 0

      I think it's inter-person compatibility. In projects like Linux when the level of incompatibility between developers exceeds a certain limit a fork or branch happens.

    2. Re:Communication isn't the problem... by maccodemonkey · · Score: 1

      if it were then projects like Linux would have collapsed a very long time ago.

      To be fair, just because the people working on Linux have good (well, from what I've seen, decent) communication skills doesn't mean any random developer will.

      Working on a solo project is much different than working on a group project.

    3. Re:Communication isn't the problem... by Anonymous Coward · · Score: 1

      Counter-point: Linux (kernel) hasn't forked significantly yet, despite Jeff V. Merkey's threats, and Linus certainly has incompatibility with more than a few devs.

      Counter-counter-point: One of those incompatibilities result in the kernel folks forking the close-to-the-kernel udev, creating projects like eudev and mdev.

    4. Re:Communication isn't the problem... by Darinbob · · Score: 2

      Linux has been collapsing for nearly two decades now. The trick is to borrow ideas from judo so that when you get stuff done while falling.

      I think what's really happening is that Linux isn't aiming for perfect or best. It has something practical it wants to get done and there aren't long arguments over the best architecture to use. Compare to GNU Herd which had very lofty idealistic goals and lots of debate over the best says to proceed. Ultimately having something ugly that does the job will win over something beautiful that is unfinished.

    5. Re:Communication isn't the problem... by Stumbles · · Score: 1

      Agreed on the differences of working solo versus a group project. They certainly do have differing dynamics and just because a developer might be a hot shot when working alone does not always translate to a group environment. I think in the case of Linux development many of the developers work in a solo/collaborative way that most other projects have been unable to duplicate on the same scale. Maybe it has something to do with openness of the code or the at times hardnosed way Linus goes about managing it all, I don't know. Maybe TFA authors missing the real problem; just because you can write shit hot code does not mean it makes you a good project manager.

      --
      My karma is not a Chameleon.
    6. Re:Communication isn't the problem... by Stumbles · · Score: 1

      I think the potential forking aspect has little to do with TFA authors thoughts about code quality. By all rights a small group as she mentions should have no problem and yet they did; why was that? Linux from a developer numbers aspect deals with how many, a thousand or so contributors? I am not convinced it was a communication problem. Well perhaps it was just not in the way she thinks. Like you mentioned, yeah Linus can land on a developer like a sledgehammer and think that tends to keep his "cats" on their toes. In my view such "gruffness" in a "standard software house" or project and the project manager would not be in such a position very long; to much political crap goes on.

      --
      My karma is not a Chameleon.
    7. Re:Communication isn't the problem... by Hognoxious · · Score: 1

      Compare to GNU Herd

      What the flock is that?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    8. Re:Communication isn't the problem... by Darinbob · · Score: 1

      My spell checker is biological and sometimes fails.

    9. Re:Communication isn't the problem... by jampola · · Score: 1

      It's a "herd" of RMS's running round a field proclaiming that we should all kill closed sourced software. Color me scared...

  6. the basement dwellers hate people by alen · · Score: 5, Insightful

    they want to sit in a corner far from other people coding in silence
    they hate meetings and talking to people

    so what you get is code that only talks to itself

    1. Re:the basement dwellers hate people by Anonymous Coward · · Score: 5, Funny

      they want to sit in a corner far from other people coding in silence they hate meetings and talking to people

      And with good reason. Other people are annoying and I am immensely interesting to me.

    2. Re:the basement dwellers hate people by Tablizer · · Score: 1

      so what you get is code that only talks to itself

      That explains all the "self" references such as "self.x = self.foo()" etc. Social programmers would instead code something like "share.x = share.foo()". Maybe if I use more global variables I'll become social. And more Goto's may help me play basketball. Who says coders can't jump!

  7. translation by Anonymous Coward · · Score: 3, Informative

    My team did not talk to each other and everyone went off and did their own thing. Then when it came time for integration it all went to hell...

    1. Re:translation by Anonymous Coward · · Score: 1

      My team did not talk to each other and everyone went off and did their own thing. Then when it came time for integration it all went to hell...

      I tried something like that during my student days. We made a plan and each coded one part. When it should be put together it turned out that we had:
      1: one guy didn't do anything at all
      2: one guy who passed strings for everything. Didn't return a int as agreed upon, but instead a string containing the int and stuff like that. He argued "what's the difference?"
      3: me who made my part actually work.

      Our combined grade was failed (go figure), which is the story of the only time I failed anything regarding programming. I graduated while the other two dropped out within half a year after that incident.

    2. Re:translation by Grishnakh · · Score: 2

      This should be a good lesson about how group projects usually work in college; it's how all the ones I had worked out. One person does all the work, while the other person(s) claim credit and gets an equal grade even though they didn't do anything, or their contribution was very minor.

      IMO, they shouldn't have group projects in college classes at all, because they always wind up like this.

    3. Re:translation by Anonymous Coward · · Score: 0

      I had a similar experience in my college. There was a new game desgn program and we in a team of 3 were told to go make something in XNA. First time we came together we got something put together that was an exe and ran. The next week, I was tasked with adding some AI to our sprites and have them do something. I wrote all my code based on what the mapper had done the week before. When we came together again, I got to find out that the mapper had completely changed the map and the IDs for everything, so I got to finegle my code to use the new data for a few hours that meeting.

      Moral of the story, if no one is watching the big picture as it comes together, all it is is a purd tile getting taller and taller, so you may as well just sit in the same room and talk to each other from the start.

    4. Re:translation by Anonymous Coward · · Score: 0

      Yeah, but look at what it did you! You are an elite with free time to read and post on /. the other guys (including me) are working at McDonalds full time.

    5. Re:translation by darkHanzz · · Score: 1

      IMO, they shouldn't have group projects in college classes at all, because they always wind up like this.

      Or they keep them just because you learn something else; that it'll be like that in your future job.

    6. Re:translation by Grishnakh · · Score: 1

      Except that I've never had a job like that. In the "real world", projects are divided up so that each individual engineer gets a different portion of the task, and works on it himself. If one engineer doesn't contribute, it's entirely on him, and he gets a bad performance review, not the others. And management is constantly communicating with all the engineers to make sure the project is on-track; they don't just wait until the end to find out someone isn't doing anything or they're totally off-track with their progress. So no, this group project practice is nothing like real jobs at all.

    7. Re:translation by datavirtue · · Score: 1

      In my last year of college I just told the people in my group projects to chill, and that I would do all the work. I would send them updates to get comments and then I submitted for an A. This worked great for me because I was never stressed by people not doing anything and I got to turn in quality work. I always gave everyone credit unless they failed to submit comments to me. Very liberating, and the work got done much faster.

      --
      I object to power without constructive purpose. --Spock
  8. load of bs by Anonymous Coward · · Score: 0

    this load of bs (register). They are likely had crappy design of inter-module interfaces, that's it.

  9. That why the Indians and Chinese are so good? by Anonymous Coward · · Score: 0

    --In another team of seven or eight people, developers were encouraged to do whatever they felt like ... which turned out to include, "Have every developer write code in a different language."

    Wait what?

  10. Funny how programmers gripe about eachothers code. by Anonymous Coward · · Score: 1

    I find it funny about how programmers gripe about each others code. Often it is mainly a gripe about some intangible such as style or failure to use some feature of a language or even choice of language. This often degenerates into some flame war between sides of these petty issues while real issues the end users care about such as "does it work?", "how long do I have to wait for it to do its thing?", and "do I need to buy a whole new machine to run it?" are ignored.

  11. Re:Funny how programmers gripe about eachothers co by Anonymous Coward · · Score: 0

    You're assuming programmers care about the users. Remember Milton? :)

  12. Formal meetings and formal processes by EmperorOfCanada · · Score: 1

    I have been on teams where someone pulled some process out of their ass and proceeded to turn the whole project into another thing that regularly comes out of asses.

    This is not to say formal processes and procedures are a problem just that bad ones are.

    Sometimes they come from the heads of stupid people and well that can be understood. But often they come out of the heads of stupid evil people. They are too stupid to actually contribute so they come up with rules that they can then enforce to make other productive people look really bad. They can then write up reports that document just how much everyone around them sucks. "I was doing a code review and found 280 instances where your code was out of spec" (this is because their coding standard required two spaces before and after the == and they weren't there 140 times. "I wrote you up for not using the proper commenting system." "I wrote you up for not coming to the team building meeting scheduled for Saturday at my house." "I wrote you up for handing in an improperly formatted resignation letter."

    I am not talking about bad managers, no no no, that is a whole other post, in the above I am talking about a co-worker who thinks that they can take power by quoting specs and standards that nobody else agreed to and they have no authority to create. I worked with a programmer who took an agile programming seminar and came back with binder after binder about agile programming. Whatever the heck they taught him wasn't agile. It was sclerotic programming easily requiring each programmer to generate at least 12 separate process related documents a day. I had only worked at the company a week and went into the owners and said that if they implemented this system that productivity would drop to around 10%. They said that I should be flexible and give it a try. I had received a counter offer to a job I had turned down the week before so I took that job the next day. The company died a year or so later(for mostly fraud related reasons) and the lawsuits among investors continue to this day.

    1. Re:Formal meetings and formal processes by Anonymous Coward · · Score: 0

      I have been on teams where someone pulled some process out of their ass and proceeded to turn the whole project into another thing that regularly comes out of asses.

      Salami code?

  13. gotta have class by Anonymous Coward · · Score: 0

    public functions should be bulletproof. you can be as sloppy as you want with private functions. don't forget error handling as well.

  14. who cares about quality by Anonymous Coward · · Score: 0

    Yet another developer who says the quality was poor, who cares in a business domain, does it work and can you sell it. That model has worked for Microsoft so who cares what some developer thinks.

  15. I work in groups so it happens faster by D1G1T · · Score: 1

    You get a group of 10 together because you have a 400 man-hour project due in a week, not to make your code better.

    1. Re:I work in groups so it happens faster by Anonymous Coward · · Score: 3, Insightful

      A manager went to the master programmer and showed him the requirements document for a new application. The manager asked the master: ``How long will it take to design this system if I assign five programmers to it?''

      ``It will take one year,'' said the master promptly.

      ``But we need this system immediately or even sooner! How long will it take if I assign ten programmers to it?''

      The master programmer frowned. ``In that case, it will take two years.''

      ``And what if I assign a hundred programmers to it?''

      The master programmer shrugged. ``Then the design will never be completed,'' he said.

      -The Tao of Programming

    2. Re:I work in groups so it happens faster by khasim · · Score: 4, Insightful

      But WHY does it take longer when you add more people? The answer is "communication channels".

      And they follow the formula of (n*(n-1))/2
      So 1 person has 0 communication channels to maintain.
      3 people have 3 channels.
      5 people have 10 channels.
      And if the EXACT same message is not present upon every one of those channels then problems start.

      So the key is NOT to focus on 10 communication channels between 5 people but to focus on reducing the scope as quickly as possible so that fewer people are needed. And the means that your best programmers can spend more of their time programming and less on maintaining communication channels.

    3. Re:I work in groups so it happens faster by WrecklessSandwich · · Score: 1

      Well, the 1 person does need a communication channel to their rubber duck.

    4. Re:I work in groups so it happens faster by Hognoxious · · Score: 2

      Unless the division of tasks is done in a pathologically bad way, not everybody has to talk to everybody else about everything.

      Still, kudos for not [mis]using "exponential".

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    5. Re:I work in groups so it happens faster by eulernet · · Score: 5, Interesting

      No, you are totally wrong, usually people don't bother communicating, so you don't lose a lot of time on communication.

      It takes longer because of Ringelmann's effect, and this had been measured in 1914, by measuring efforts.
      Here is the original article in french: http://gallica.bnf.fr/ark:/12148/bpt6k54409695.image.f14

      When you have 1 guy, he works at 100%, but when you add 1 guy, you get 93% of their combined force.
      Here is the table from 1 to 8:
      1 => 100%
      2 => 93%
      3 => 85%
      4 => 77%
      5 => 70%
      6 => 63%
      7 => 56%
      8 => 49%

      With 8 people, you get the results of 4 people !

      In fact, when you add people in a team, everybody reduces his level to the supposed level of the group.

      If I'm alone, I think I'm the best, so I'll work at my best level.
      If there is another guy, I'll work according to our common level, so I'll reduce my effort.

      When you have a team, the team works at the lowest common level.
      You can also see that when people walk in groups, they walk together at the slowest speed.

    6. Re:I work in groups so it happens faster by 140Mandak262Jamuna · · Score: 1

      Every one in your team needs to communicate with every one? What kind of nonsensical system is that? Do you write code that way too? Every source file depends on every include file? Every library depends on every other library?

      --
      sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
    7. Re:I work in groups so it happens faster by St.Creed · · Score: 1

      This table only deals with the situation where they all work on the same thing.

      I recently had a crash project. If it didn't work out, the company would be forced to stop work until the project was completed. We were talking millions of dollars per day here, so the project was a tad urgent.

      First, the other information analyst was removed. Then I did the requirements. While they were being completed. a testmanager came in and started writing testcases on the requirements. A programmer came in and did mock-ups. I corrected the mock-ups. A secondary team was set up to build the fallback solution - completely separate but we could use their input. Then another programmer was added to assist the first. They only talked to eachother. The file management solution was handled by someone else: he just gave us a place to store and receive files. No other interface between his project and ours, except the deadline.

      Common thread: separation of concerns, public interfaces, minimal reliance of one class (programmers, testers, designer) on any other class. Worked very well - we finished right on time, tested and validated as well, in half the budget and time of the previous project. The previous project had used more people working on the same thing. That never really works out.

      In my current project we have way too many people working on the same subject. Now I have to check with my co-workers whenever I want to edit documents. Argh. Every decision has to be a group decision. Arrrrggggghhhh. A very simple project has now turned into a two million euro monstrosity.

      Interfaces and information hiding: a really good idea if you want to get stuff done. It works for organisations too: "need to know" and "call my secretary".

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    8. Re:I work in groups so it happens faster by khasim · · Score: 1

      With 8 people, you get the results of 4 people !

      So a basketball team with 4 people will tie a team with 8 people 50% of the time? (all individual skill levels being equal)

      Or a tug-of-war competition between two teams (one with 4 people and one with 8) of people with similar physical builds will be a tie.

      I always took Ringelmann's findings as support for "work expands to fill the available time" rather than an upper limit on a group's capabilities.

    9. Re:I work in groups so it happens faster by eulernet · · Score: 1

      I think that you were lucky.
      Luck has a great importance in software projects, but of course, luck is not random.

      I think that the most important fact that you don't mention is that everybody in your team was motivated, they felt that they had some power to do things.
      When you remove the sense of power, people lose motivation and produce some half-assed work.

      Then, I believe that you are an ex-programmer, and most of the managers I know pretend to be able to code, but when I check, I see that they are pretty bad.
      Organization is an art, and I really met only a few people able to organize correctly.

      Finally, you optimized the bandwidth of your team, and that is what managers don't know how to do.

      Now, in your current project, you don't have luck, so you are discovering what happens when nobody has power in a team.

    10. Re:I work in groups so it happens faster by eulernet · · Score: 1

      Good point !
      But in a sports team, the manager has some other players on the bench, so when he sees that a guy doesn't do his best, the player will be replaced instantly.

      As I explained in another answer, what is important in a team is the sense of power.
      If every member thinks that he can produce something significant (like in a sports team), then everybody will be motivated and will do their best.
      If somebody thinks that his effort will be insignificant, he'll quietly reduce his effort, and sometimes that means doing nothing !

    11. Re:I work in groups so it happens faster by turp182 · · Score: 1

      I love this type of information.

      Frankly, I think we should have a series of Slashdot headlines around software development and what people have found works. This crowd could provide very meaningful answers to such questions. Then summarize the best ideas and let people have at them again...

      Myself, I'm on a three developer team (3 channels, with lots of constant interaction) with a very technical manager (he always questions naming conventions and reviews our code and structure constantly, and he knows what he is doing). It's a great team size, we use a lightweight SCRUM approach (two week sprints with tasks defined to a few hours - really helps with identifying design problems, short dailies with reasonable documentation, we practice "continuous documentation" and enforce both structure and style code requirements via the build process - and code coverage and test results as well).

      --
      BlameBillCosby.com
    12. Re:I work in groups so it happens faster by mysidia · · Score: 1

      You get a group of 10 together because you have a 400 man-hour project due in a week, not to make your code better.

      If you think 10 developers can complete a "400 man-hour project" in a normal work week, then you need to read up on Amdahl's law with inherent overheads of parallel processing, and realize... that humans are a lot less efficient, and a lot more overhead is required managing the parallelism

      A particular coding task doesn't have an intrinsic amount of time that it can be done in, that you can know in advance.

      And few development projects have nice ways to divide them that would allow developers to work independently without taking up plenty of each others time in one way or another.

      These are also non-deterministic, so you cannot know in advance the exact period a project could be expected to take when coded properly.

      You can never say in advance "This is exactly a 400 man-hour project"; you could say after the fact, that we finished it in 400 man-hours, and the result was within acceptance (although maybe not ideal... maybe suffering performance or bug issues)

    13. Re:I work in groups so it happens faster by Anonymous Coward · · Score: 0

      If people spend significant time documenting everything in a usable way, then they don't need to communicate with each other as much - communication is 1 coder to 1 document. If you need to know something about a system, you read the documentation for that system.

    14. Re:I work in groups so it happens faster by socode · · Score: 1

      Individual communication channels may scale in that way, but it's very simplistic to think they are the problem. And actually, if you think everything can be solved by ratcheting up communications/tracking processes, you are part of the problem.

      It's also poor processes, and boiler-plate approaches to project management being applied. It's also unrealistic expectations, tetris planning (individual quotes for broken-down items, hard dates, idea that you can shuffle around at will).

      It's also the structure of an increasingly larger organization, and the competing goals and tribalism that accompanies it.

      It's also the fact that a larger pool of developers will tend towards "average" ability at best, and it will be harder to judge/reward their contributions. It's also the fact that everyone on a larger project knows this.

      It's also the fact that details are often lost in a larger design, and the number of people who cope with abstraction well is very very small.

      It's also the fact that those who incur technical debt often don't need to worry who pays it back. It's also the fact that many architectures are poor, and even when you rub someones nose in the detail, they can't see the tradeoff in a tactical approach to a strategic problem.

    15. Re:I work in groups so it happens faster by St.Creed · · Score: 1

      I think that's a fair summary.

      In my previous project I was in charge as architect/information analyst and lead designer, supported (and not hindered) by a very competent project manager who never got in my way but just made sure everyone had what he needed. In my current project things are very different - to the detriment of all.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    16. Re:I work in groups so it happens faster by Anonymous Coward · · Score: 0

      So, it's essentially Amdahl's Law of Project Management.

      - T

    17. Re:I work in groups so it happens faster by Anonymous Coward · · Score: 0

      Indeed. as the aphorism goes, if 1 programmer can write a system in 1 day, how long would it take 10 programmers? And the answer of course is 10 days.

    18. Re:I work in groups so it happens faster by cavebison · · Score: 1

      When you have 1 guy, he works at 100%, but when you add 1 guy, you get 93% of their combined force. [...] With 8 people, you get the results of 4 people !

      No wonder the pyramids took so long to build!

  16. A post I made in another story reflects this well by Anonymous Coward · · Score: 0

    This post I made in another story touches on some points in this article. I completely agree that communication is the #1 issue. For software to talk to each other, humans need to talk to each other. This is the important problem that management or project leads need to solve.

  17. Re: sub-par teamwork by fahrbot-bot · · Score: 1

    If you've ever worked on a team you can probably recall a time when, as a group, you produced work that was not as good as any one of you could have done on your own. Sarah Mei had this sort of sub-par teamwork experience, ...

    Wow, Sarah Mei has worked with Congress?

    --
    It must have been something you assimilated. . . .
  18. Nobody saw that coming... by mooingyak · · Score: 1

    And, as it turns out, team communication is the heaviest dependency of all.

    That's pure brilliance. Groundbreaking stuff.

    --
    William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
  19. Real developers don't "generate" code... by raburton · · Score: 1

    ...they write it. Clicking a button to convert your architect's UML to Java isn't the same. Perhaps that's the problem here, but I didn't bother to RTFA because it didn't sound very interesting.

    1. Re:Real developers don't "generate" code... by Anonymous Coward · · Score: 0

      ...they write it.

      Please don't propagate the ignorant notion that software development is just typing. Developers do more than "write" code.

  20. Who says they were great coders? by Princeofcups · · Score: 3, Interesting

    Just because they name drop does mean they are great coders, only that they are great at self promotion. Who's to say that some silent but really competent coder wasn't responsible for the code they take credit for? I think what you saw was not "great coders can't work together," but instead, "great projects have many unsung heroes."

    --
    The only thing worse than a Democrat is a Republican.
    1. Re:Who says they were great coders? by Anonymous Coward · · Score: 0

      Just because they name drop does mean they are great coders, only that they are great at self promotion. Who's to say that some silent but really competent coder wasn't responsible for the code they take credit for? I think what you saw was not "great coders can't work together," but instead, "great projects have many unsung heroes."

      I found a "great coder" by most people's standard, which is judging the outcome. I started to read the source code because I wanted to expand it. Turned out that it was full of memory leaks and random asserts. It's also full of inconsistencies and minor bugs, not to mention CPU time could be reduced. I still say that guy is a great guy as he produced something which is great for the end user and he worked hard on it. I wouldn't call him a great coder but that is due to issues the majority of people will never notice.

  21. EGO, more than communication. by CaptnCrud · · Score: 2

    EGO, EGO, EGO. Every time I have seen this, at its heart, its ego. The just plain stupid notion that: "im the smartest person in the room, I dont need to confer with anyone cause im so good". I would rather work with 6 humble jr. dev's then 6 senior meglomaniacs any day of the week and twice on sunday. Sure the code quality is also going to be suspect but at least, if say a rewrite of a module is needed, people are willing to just do it rather than bitch about why its the other modules part because there work is just that good.

    1. Re:EGO, more than communication. by Tablizer · · Score: 1

      The just plain stupid notion that: "im the smartest person in the room, I dont need to confer with anyone cause im so good"

      I sometimes don't mind people like that as long as they can carefully justify their choices. People forget that code is largely for people (to read), not computers. The computer doesn't "care" how you organize code; it just follows instructions. Code organization is a matter of human readability, and if the egomaniac can justify their decision in terms of that, then I'll respect them.

      However, it sometimes goes south:

      Bob: "I don't need comments; my code is self documenting!"

      Me: "Not quite, one has to read the entire section to find out what it's actually doing. Comments can document such in one or two lines to avoid having to read the whole section to see if its relevant to a given maintenance task. It's like a newspaper headline: you don't have to read the whole story to know the gist of the article."

      Bob: "Then read faster, I can."

      Me: "You have to consider the average maintainer, not the fastest readers."

      Bob: "I refuse to cater to mediocrity! If they can't read fast, fire them!"

      Me: "That's not our decision, Bob."

      Bob: "Well, it should be! I should be in charge of hiring because I'm smarter and faster."

      Me: "That's wishful thinking; we have to make coding decisions based on what's the most likely staffing."

      Bob: "Then you are enabling mediocrity! I refuse to do that. I will reward smarties, like myself, to improve the world! Slow readers be damned!"

      Me: "I don't think that's the approach those who pay us want us to take."

      Bob: "Screw 'em! I do things the right way; managers be damned if they enable losers! If we don't encourage fast readers, we'll get slow losers like you!"

      Me: "Your user interface designs have a reputation for being hard to use. Should we then fire you for being a mediocre UI designer by the same logic?"

      Bob: "Fire stupid users also! Smart users can figure out my UI's. If you cater to stupid users, you get MORE stupid users! Don't be an Enabler of Losers!"

    2. Re:EGO, more than communication. by ahabswhale · · Score: 1

      I'm dealing with this ego shit right now. There's this developer who is highly regarded by his boss so he gives him complete free reign to do what he likes and rarely ever confers with his colleagues because he thinks he's smarter. He may actually be smarter but it doesn't mean he's a better coder. He makes common coding process and design errors all the time. He's fairly young so it's not unexpected but it's still irritating as hell because his decisions often effect the rest of us.

      --
      Are agnostics skeptical of unicorns too?
    3. Re:EGO, more than communication. by socode · · Score: 1

      What if it's true?

  22. Re: sub-par teamwork by Anonymous Coward · · Score: 0

    If you've ever worked on a team you can probably recall a time when, as a group, you produced work that was not as good as any one of you could have done on your own. Sarah Mei had this sort of sub-par teamwork experience, ...

    Wow, Sarah Mei has worked with Congress?

    Sub par, not hopelessly broken.

  23. maybe they just don't care about this project by TerraFrost · · Score: 4, Insightful

    Good code, it seems to me, isn't so much a reflection of someone's skill level as a developer in-so-much as it is a reflection of how much they cared about that particular project. Designing and architecting takes time. If you're a good dev but all you're aiming to do is write something that gets the job done here and now without regard for maintainability or scalability or anything... well that's how you get bad code. It seems to me.

    1. Re:maybe they just don't care about this project by CaptnCrud · · Score: 1

      I agree, but that's under optimal situations, life is not always optimal. Doing things "right" is not always the best solution, as horrible as that sounds.

  24. Dream job, once upon a time by Dareth · · Score: 1

    My dream job once upon a time would have been coding on something like VT220, green font on black background, terminal in a small office/closet.

    Somehow my days are spent interacting with the people necessary to get the job done. Oddly enough, I actually enjoy it.

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
    1. Re:Dream job, once upon a time by Darinbob · · Score: 1

      Yes and no. Interacting with others is fine. However it breaks down when it becomes "you must stop what you're doing and interact with them NOW".

  25. Common problem by Anonymous Coward · · Score: 0

    If you've ever worked on a team you can probably recall a time when, as a group, you produced work that was not as good as any one of you could have done on your own.

    Haven't we all been there? Earlier today I had an experience like that with my own code. Luckily I haven't committed it yet and due to AC posting nobody will ever know how poorly I started compared to how well I can make it :P
    However it's still an improvement to the existing code. It abuse resources big time and it happens to be written by a guy who is against me changing anything because "it might cause a slowdown". Go figure.

    I think a major part of the problem is that nobody makes the perfect solution for everything. There will always be something where somebody can figure out a better way to do it. When several people look at the same problem, the part which could be improved will never be the same part and they all go "that part is poorly written. I could have done better".

  26. Define good code: by Anonymous Coward · · Score: 1

    1. Good as in thorough
    2. Good as in clever
    3. Good as in quickly developed
    etc.

    Multiple programmers working towards different definitions of good will likely result in a whole project that is less than the sum of its parts.

  27. Simple formula for code quality by caywen · · Score: 1

    code_quality = time * talent * experience * just_dont_care_factor

    If you find code_quality nearing 0, that often means they just didn't care.

  28. So it is like Office Space by Kingkaid · · Score: 1

    Apparently being "a people person" is important in the industry :)

  29. Conway's Law by Anonymous Coward · · Score: 0

    It states that "organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations".

  30. Excellent *individual* programmers by msobkow · · Score: 2

    They may have been excellent individual programmers capable of producing works of art on their own, but the mindset for working in a team environment is completely different from that required for individual project work.

    However, I blame not the developers, but the project management team for failing to realize that even the brightest people in the world need to be organized and have to structure their code properly to be effective. Far too often management takes the attitude that if they just hire "the best" and let them loose, miracles will happen.

    Well, they don't.

    In fact there is an entire book written about such management mistakes, in particular the fact that the more people you add to a project, the more effort and time it takes in total to complete. A little known text called "The Mythical Man-Month."

    Perhaps you've heard of it?

    If you haven't, you definitely need to read it.

    --
    I do not fail; I succeed at finding out what does not work.
  31. Every team I've worked on gives no shit about comm by Anonymous Coward · · Score: 0

    Every team I've worked on gives no shit about communication. And I run myself ragged trying to keep up with fragmented docs, fragmented knowledge, utter laziness... Most know when something needs documented, but they don't do it. Information is scattered all over the fucking place. The employees with the experience don't care. I have to train a new guy and he's like, "wtf?!" because there is no consistency. Management gives no fuck.

    Every place and every project is like this in my experience. My experience has led me to believe that all projects are like this. So what I read here is no surprise. Am I jaded or something? Have I just been on the wrong projects?

  32. Expert developers know what actually matters by Anonymous Coward · · Score: 1

    Expert developers know when it is appropriate to cut corners and not waste time on structures that don't help the end game. Expert developers know that the end game is something appropriate not something perfect.

  33. Code quality by Anonymous Coward · · Score: 0

    Having taking over the code bases of a couple of start-up companies, I have found the code appalling - no in-line commenting, documentation or even a hint towards the concept of testability.

    However, I've got to accept that as a start-up, if you have beautifully crafted and documented code then as a result you will be too late to market and your company will have gone under.

    1. Re:Code quality by Grishnakh · · Score: 1

      There's a balance: if you don't have any comments or documentation at all, how are you going to remember what you were thinking or intending 6 months later when you need to fix something, or even 3 weeks later? When I'm writing my own code for my own personal use, I don't exactly create extensive documentation, but I do as a matter of habit put comments at the beginning of every function describing its use, and in-line comments to describe what each code block does, because this proves invaluable later when I need to go back and modify it a week or two later to do something else or to fix a bug I find.

  34. groupthink by aahpandasrun · · Score: 1

    Groupthink can destroy creative ideas if you don't have good synergy with the people you're working with. (Please excuse my use of the buzzword synergy). Since programming is partially a creative process, this makes sense.

  35. Same reason "All-Star" teams suck by swb · · Score: 1

    You can get a bunch of guys that are really good on their own teams all together on the same team and end up with a team that's worse than the "lesser" teams they came from.

    Sports history is littered with this phenomenon.

    1. Re:Same reason "All-Star" teams suck by St.Creed · · Score: 1

      Yup.

      All too often there are multiple "right ways" of going about things, like cooking. Or coding. It's not a problem if you boil your potatoes first, then peel them. Or if you peel, then boil. But if you have to reach a compromise and only peel half of them, the result is sub-optimal.

      If you have to pass something on the road you can go around it to the left or the right. Taking the middle because you had to compromise seldom works out.

      That's why more than one captain on a ship is a bad idea. Even two brilliant captains will have different approaches to things - all good! - but the combination is likely to be the worst of both worlds.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
  36. Re:let me guess by Anonymous Coward · · Score: 0

    > Let me guess. This means that we need more womyn-born-womyn in software development ASAP

    BZZT wrong. Next time read the article before going off on a self-delusional rant that makes you look sick AND stupid.

    > I'm sick of it.

    The voices? Get some help, maybe it will get better.

  37. Re:let me guess by Anonymous Coward · · Score: 0

    Give me a fucking break. I'm sick of it.

    Come on. Don't hold back. Tell us how you really feel.

  38. Good encapsulation by Anonymous Coward · · Score: 0

    Yet, these smart people created modules that didn't talk to each other

    This just means that they were properly encapsulating their classes.
    The ideal program is one where there is no interaction between objects at all.
    Source: just about any book about OO programming, or maintaining code.

  39. Re:Funny how programmers gripe about eachothers co by Anonymous Coward · · Score: 0

    This often degenerates into some flame war between sides of these petty issues while real issues the end users care about such as "does it work?", "how long do I have to wait for it to do its thing?", and "do I need to buy a whole new machine to run it?" are ignored.

    No it doesn't

  40. Configuration Management by Sedated2000 · · Score: 1

    Isn't this the exact kind of problem that configuration management is supposed to solve?

  41. I call BS by bored · · Score: 4, Insightful

    While those things she list are important, it sounds like this woman actually worked in an environment where the low level architecture wasn't controlled or defined by someone with any experience with long term maintenance.

    There are a lot of really good coders, but the skills required to properly define high level interfaces between subsystems is _NOT_ something all of them posses, even though the vast majority either think they do, or fail to understand the importance of defining project API's for isolation.

    This isn't to say that people with the term "architect" in their titles get it any better. In many cases they tend to get it wrong because they are too decoupled from the actual coding portions.

    Its also something that is nearly impossible to bolt on after the fact. The last thing your project manager wants to hear, is that 3/4 of the project needs to be rewritten (or refactored to the point its not recognizable) because of some stupid problem with component isolation.

    So, how to you identify bad architecture?

    If your team can't isolate and troubleshoot the vast majority of bugs quickly (less than a hour).

    If the common answer to features, is that some large portion of the system needs to be rewritten or refactored.

    If the system is brittle, and errors aren't contained to smaller subsystems.

    If requirements changes tend to touch a lot of different system components.

    The list goes on, but I firmly believe that bad architecture is the problem in a lot of cases where people claim crappy code, or failures because the product is buggy or is not agile enough to respond to market needs.

  42. Collective agreement by Todd+Knarr · · Score: 4, Insightful

    One of the most important things when it comes to avoiding a group creating a mess is to have collective agreement on the architecture and design and the divisions and interfaces between components. Everybody doesn't have to agree that this way's the best way, but they have to agree that it's acceptable and they'll write to it. This goes both ways: you have to acknowledge that you'll follow the design even when you don't agree with it, and you also have to acknowledge that the other guy (who isn't getting his way) has valid points even though you're doing it your way instead of his.

    NB: the above is why my mantra is "I am not a rock star. I am a professional.". I'll argue vehemently for what I think is the best way to do things, but in the end I need to write code that fits well with the rest of the system even if that code isn't technically "the best way".

  43. 1st rule of coding by Anonymous Coward · · Score: 0

    "quality" is subjective.

    Code works or it doesn't.... for the requirements it's suppose to fit (aka does it do what is asked).

    But all the consultants sell the pipe dream of better quality. You can make a living out it.

    Now get off my lawn...

  44. Skilled in what exactly? by PCK · · Score: 2

    Because it certainly does n't sound like it is in object orientated program design. Being able to code is just one part of being a skilled programer, being a "rockstar" style coder may seem impressive but banging out pages of code at a time is never a good sign and I say this as someone who spent a good five years working this way.

    It is only when you have to maintain your own code for years that you start to step back and think more because at the end of the day you can not code your way out of trouble, well you can but the result is never pretty or maintainable.

    Personally I find that I spend around 25% thinking, 25% coding, 25% testing and 25% documenting any one problem. The 50% spent testing and documenting is n't fun by anymeans but it's a necessary discipline. It's all about taming your inner coder and I think this is what the majority of these frameworks do indirectly by creating road blocks so that you have to hit the breaks every so often.

    1. Re:Skilled in what exactly? by Anonymous Coward · · Score: 0

      With apologies to Tesla (at least about the abbreviated version of his criticism of Edison):

      If you thought more how to avoid bugs, you would not have to test as much (but would spend that time writing better documentation).

    2. Re:Skilled in what exactly? by datavirtue · · Score: 1

      What is it with people and documentation? I LOVE documenting. You're done, go get a latte, relax, and write the damn documentation. It's theraputic and helps you find nasty little bugs sometimes. Testing!? That's for users!

      --
      I object to power without constructive purpose. --Spock
  45. boast? by Anonymous Coward · · Score: 0

    had previous written code that you and I would boast to have created.

    It doesn't sound like it.........

  46. It's called management by charnov · · Score: 1

    Management is it's own freaking science FFS... and large systems architecture is, too. Just because someone is a top tier programmer doesn't mean they can run a project to save their lives. I'm a LOUSY programmer... but I have managed hundreds of programmers on dozens of concurrent and many times linked projects and kept it together... because that's my skill set.

    --
    [RIAA] says its concern is artists. That's true, in just the sense that a cattle rancher is concerned about its cattle.
  47. It's the managers, stupid. by Anonymous Coward · · Score: 1

    I am quite familiar with this phenomenon, and have lamented it often. However, I disagree as to its cause. I don't think it's a result of anything so academic as communication issues. I think that, the larger a project or the more important, the more it is driven by non-technical management with unrealistic expectations, and no clue as to what is actually involved in getting computers and networks to do our bidding. They fail to consider the finer points of development and integration (or worse yet, poo-poo them), and then rush the expert, professional engineers through the most critical phases of their processes in the interest of sticking to their unrealistic and ignorantly dreamed-up timelines. The result is overruns of cost and time that would have been more than ample to do the job right in the first place, but instead are almost invariably used to polish a rotten apple just enough to get the customer to eat it.

    If this were not all true, please explain why Scott Adams is a millionaire.

  48. Why is there crappy code? by houbou · · Score: 1
    Crappy programmers and crappy development process and crappy project management. It is actually that simple as to why crappy code exist. Well to be fair, it could be a huge bunch of inexeperienced coders mixed with a truly inexperienced team leader and/or project manager.
    1. 1) Before you get your programmers to actually produce code, there should be clear guidelines as to programming style and code construction
    2. 2) There should be peer review of your code before it is even sent for QA.

    All of these logistics seem like afterthought for managers, and thus, the stupidity of dealing with crappy code.
    In the end, it comes down to this: Crappy Code = Crappy Project Management.
    A bit of organization upfront can save a lot of time, money and embarrassment down the road.

  49. Re:Every team I've worked on gives no shit about c by darkwing_bmf · · Score: 1

    We have super detailed design documents and we still get bit by poor planning. For example, we have 2 groups working on 2 separate but highly related changes. It would have been okay if one was before the other, or if one team were doing both changes, but nope, management wants all of it done yesterday by separate groups. Of course there's going to be issues.

  50. Software Engineering doesn't work by russotto · · Score: 1

    Despair.org has the poster for this one. None of us is as dumb as all of us. This is one of those dumbass articles intended to make programmers feel bad because we're not schmoozers and claim our code suffers as a result. It doesn't. The code suffers because bosses assume you can simply harness programmers together, probably under some MBA, assign them bits of the job ad-hoc, and you'll get miracles.

  51. software architecture by manu0601 · · Score: 1

    TFA does not seems to address software architecture. It is harder to contribute bad code to software that has good design.

  52. Conway's Law by swillden · · Score: 1

    "organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations"

    --
    Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  53. It's the environment, stupid... by ndykman · · Score: 1

    I'd bet this was the standard cube farm, or worse, the open space "collaborative" environment where every conversation carries, making it impossible to focus without some headphones and some music. And nothing says "Hey, I'm approachable" like being hunched over a computer, heads bobbing to the beat.

    You want to improve software productivity, start with the environment. Offices. With doors. That you can knock on, close and have a real conversation without distracting others.

    Remember Pair Programming? For a while there, there were methodologies that demanded it for all code. Now, it's an afterthought or relic. Sure, most developers don't like it. I surely don't.

    But, to be fair, the best development I ever did was working with someone else. It makes sense, being able to bounce ideas around, play off somebody else's strengths. I remember in college, me and a professor knocked out a workable xUnit-like test runner for C++ in a day. This was before cpptest, or course. That code was used for years in his class.

    You want good code? Forget that open layout startup space. Get some offices, get some doors, and then get people off their chairs and knocking on them. Build trust by showing people that you value them.

  54. Smart developers != smart designers. by master_p · · Score: 1

    Being a smart developer does not mean being a smart designer.

    Being a smart developer means to make a program that has good performance, reasonable number of bugs, can easily be read by other people, etc.

    Being a smart designer means code can be easily extended, patterns applied consistently across code, good modularization, can easily be refactored, low coupling etc.

    What most projects, if not all, lack is software designers, i.e. people who design APIs, modules and interfaces of high quality.

    In most cases, the developers are also the designers, but coding is such a process that losing track of design is extremely easy. You can easily preoccupy yourself with the details of the code and lose tracking of the big picture.

  55. Social programming... by tlambert · · Score: 1

    "...forces guiding our day-to-day software design decisions are social..."

    Joke that's not quite funny: Quit hiring "brogrammers" and hire more "aspies" who totally don't get social at all, and this effect goes away. Have I used enough of this weeks Slashdot article buzzwords?

    Frankly, from reading the article, it seems that there is a poor understanding of component interface contracts. This is like thinking you comply with POSIX because you have a stat(2) system call, but all the structure members are missing the "st_" prefix and/or there are missing structure memebrs which are mandated to be there by the standard. If you don't implement the interface to the interface contract, you've botched the code.

    You can see this in Linux by running the VSU and VSX test suites, rather than the cut-down version that The Open Group has released for free. When you do that, you see all sorts of promiscuity in the type definitions in system header files - they typically fail negative assertion tests for things like definitions of size_t being in scope when they aren't supposed to be, as a side effect of including some other (putatively) POSIX header. BTW: negative assertion tests like this are done by using '#define size_t "size_t"' when you need size_t to NOT be in scope.

    If your relationships between modules resemble team interpersonal relationships, then you are doing it wrong: (1) interfaces are either defined by an architect and handed down as if from God, or they are negotiated between producer and consumer instead, if you have a lot of time on your hands for that sort of thing; (2) bringing interpersonal relationships into code design is unprofessional, and you should only hire professionals.

  56. Senior devs write the .h by Anonymous Coward · · Score: 0

    junior devs write the .cpp.

    (Sorry to be C++ centric).

  57. There should have been an architect by rollingcalf · · Score: 1

    or "technical lead" or "team leader" or whatever who was organizing how all the pieces fit together, and reviewing the team members' designs to ensure they're compatible with each other and the rest of the system.

    It's a management failure that they didn't assign somebody to be in that role (or otherwise have the team choose who within the team will be the technical lead).

    --
    ---------
    There is inferior bacteria on the interior of your posterior.
  58. I'm thinking part of it is Broken windows theory by NotSoHeavyD3 · · Score: 1

    At least I find myself doing this. http://en.wikipedia.org/wiki/Broken_windows_theory What I mean is that I think I'm a decent developer. However whenever I work on code that someone else did and it's already kind of sloppy I find myself slipping and writing sloppy code as well.(Shit like using magic numbers, writing code with warnings, functions that are too big, etc) Of course if I'm working on code where it's good I tend to follow the higher standards.

    --
    Did you know 80 to 90% of the moderators on slashdot wouldn't recognize a troll even if one dragged them under a bridge.
  59. Women! by Anonymous Coward · · Score: 0

    They ruin the software world,
    their first inclination
    is to chatter rather than code!

  60. here's a plan by Anonymous Coward · · Score: 0

    do it like they do where i work;
    1) send out all important specs and other docs, in IM rather than email or even (god forbid) a document of some kind. or in a long boring phone call or, even better, phone conference.
    2) make sure no developer knows anything about what the other developers are doing or what their requirements are or what their product is looking like
    3) don't under any circustances answer any specific questions from the developers; if they get persistent, see item 1 again.
    4) when developers present you with an intermediate version to check, do a quick glance/run and give them a thumbs up if it doesn't crash.
    If that doesn't produce code modules that interact seamlessly, then I just don't know what our management is getting the big bucks for.

  61. Form your own company then... by CaptnCrud · · Score: 1

    if you think everyone is beneath your "super" grey matter....I dont want to work with you, thats for sure. Not if your going to expect everyone else around you to use the force when you write your brilliant masterpiece.

    1. Re:Form your own company then... by socode · · Score: 1

      I don't remember asking to work with you, I was being facetious. But in certain places, it's not uncommon to be sat round a table with dysfunctional teams, refuseniks, SMEs who are anything but and so on.

      Developers, junior or otherwise, also need confidence to present what they believe is the right solution or approach, gaps and concerns and so on.

      I have no idea what you work on, or what the teams you work are like, but unfortunately there is a competing tendency for those who don't meet a basic standard of professional competence to brand anyone who does as being egotistical.

  62. I think we should have a beer together sometime... by CaptnCrud · · Score: 1

    As ridley scott said: "all sins are forgiven (no matter the anguish) when you succeed. When you fail, you fail hard."

  63. sounds more like a poor hire? by CaptnCrud · · Score: 1

    Age should never come into it, if a you guy/gal has a better way of doing things then lets go. Sounds more like CEO prince charming syndrome.

    1. Re:sounds more like a poor hire? by ahabswhale · · Score: 1

      Maybe age shouldn't come into it but reality dictates otherwise.

      --
      Are agnostics skeptical of unicorns too?
  64. Spoken like a true A-Hole by CaptnCrud · · Score: 1

    I pity you. I know you're type, you hurt people with your grand idea of logic and sniff your nose at anything you deem unworthy of you. Your type would completely destroy a new dev's dreams (IE the reason's why they love this shit). A new dev needs you're type like he/she needs a third elbow.

    1. Re:Spoken like a true A-Hole by socode · · Score: 1

      I don't know anything about you, except that it seems you are happy to infer far too much from far too little information. Developers who love anything will be knowledgable and passionate, and also need to be speak up to do their jobs properly. I've worked with such types, and tend to be very supportive and encouraging.

      On the other hand it's much harder to respect those who attempt to do fuck all and achieve even less. Which are you?

  65. You say tomatto... by CaptnCrud · · Score: 1

    C'mon sing it with me...

    1. Re:You say tomatto... by socode · · Score: 1

      :)

  66. We are cool brother.. by CaptnCrud · · Score: 1

    : )

  67. Phone vs Email by Dareth · · Score: 1

    Yes, a phone call needs to be answered now. You can reply to an email later.

    I hate the interruptions when I am finally down to the make it happen phase. I enjoy the interaction during the planning and design phase.

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
  68. Re:let me guess by datavirtue · · Score: 1

    Dude, relax. Feminism is dead. I can't really detect it in modern women and a lot of the older ones I have talked to say that feminism (as in every woman working) was a mistake. It hit me when I stayed home for a few years with my son while my wife worked. It was freaking great, although I didn't allow myself to get bored (coded full time at home while my son played in the room with me). Most of the feminist crap you hear is in the media, but it doesn't really resonate with the populace except to get people riled up. You can't affront nature very long.

    --
    I object to power without constructive purpose. --Spock
  69. pfft by Anonymous Coward · · Score: 0

    Sarah Mei is a whiny, entitled, man-hating, incompetent whore.

    There is nothing she said that hasn't been said a million times before.

    Is this really news that matters?