Slashdot Mirror


Ask Slashdot: What Can Distributed Software Development Teams Learn From FLOSS?

An anonymous reader writes: As a long time free software proponent and leader of a small development team (10+ people) within a mid-sized company, I always try to incorporate my experiences from both worlds. Lately I was confronted with the need to accept new team members from abroad working on the same codebase and I expect to have even more telecommuting people on my team in the future (even though research suggests the failure rate of virtual teams could be as high as 70%). On the other hand, FLOSS does not seem to suffer from that problem, despite being developed in a distributed manner more often than not. What can corporations and managers learn from FLOSS to make their distributed teams more successful? Consequently, what FLOSS tools, methods, rules, and policies can and should be incorporated into the software development process within a company more often? I'm interested in hearing what you think, especially regarding technical issues like source code ownership and revision control systems, but also ways of communication, dealing with cultural differences, etc.

13 of 133 comments (clear)

  1. Skype is for children. by Narcocide · · Score: 3, Insightful

    Use IRC. Typing skill is not optional.

    1. Re:Skype is for children. by Anonymous Coward · · Score: 5, Insightful

      I use IRC and chat pretty extensively at work, but some conversations just work better over voice.

      Not everything's a nail. Just sayin'.

  2. You Can't Fix It by Anonymous Coward · · Score: 4, Insightful

    FLOSS can simply reject code that's not up to standard. If someone on your team turns in shitty code you can't always just not use it.

    1. Re:You Can't Fix It by Demonoid-Penguin · · Score: 1, Insightful

      FLOSS can simply reject code that's not up to standard. If someone on your team turns in shitty code you can't always just not use it.

      Why not? If they're not worried about quality of code why not just outsource the entire project to some random company whose "proposals" fill their email spam filters?

    2. Re:You Can't Fix It by ranton · · Score: 4, Insightful

      Unless you can get management to sign on to a mentality of "it will be done when it's right" rather than "it will be done on Thursday"

      A mentality of "it will be done when it's right" is almost as foolish as "it will be done on Thursday." Software will never be "right". Quality software requires people who are able to perform proper risk management during all stages of development. I will not prevent my team from moving from discovery to design just because I think there may be requirements we are missing (hint: there always will be). We will move on when I believe the risks of moving on are less than the risks of not moving on.

      My current backlog is full of feature requests, suggestions for more clear UIs, bug fix requests, etc. If I waited for my backlog to be clear before each release, my boss would still be waiting for our alpha version. Part of my job is also making business users comfortable with my change management decisions. If my bosses implore me to finish testing too early or slack on documentation, it is largely my fault for not convincing them it is a bad idea.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    3. Re:You Can't Fix It by Anonymous Coward · · Score: 3, Insightful

      you have no hope of achieving FLOSS levels of success.

      By which you mean, a landscape littered with abject, abysmal, utter failures and abandoned projects?

      Wow, sounds just like closed-source proprietary programming!

      You are aware that "FLOSS" is a superset of "Linux, Apache, and Python," and that a vast proportion of FLOSS projects that are started end up in the Sourceforge / Github / Google Code graveyard, too... right?

      OP: Want to know how to achieve "success like FLOSS"? Only work on projects that are likely to gather massive interest, and preferably, only projects that companies will actually pay people to be full time contributors to. In other words - "FLOSS" as a category really isn't that much different than any other software project... successful FLOSS projects just happen to be things that lots of people want / need / have a monetary interest in, so they attract large communities of willing volunteers and corporate supporters.

      There's no magic sauce. Just utility.

    4. Re:You Can't Fix It by ranton · · Score: 3, Insightful

      Honestly I feel your heart is in the right place, and your level of principles will produce far better products than those who care little for software quality. But your statements really don't reflect those of someone who has ever actually been in charge of large software projects. Either that or you are one who constantly feels things would have been done better if your bosses simply got out of your way. I could very well be wrong, but I doubt it. My guess would be you are a skilled senior level developer who likes to stay on the technical side of things, but that is mostly just a wild guess.

      I don't think it's an unrealistic standard of perfection, the point is that it's done when the code does what it's supposed to do.

      Code is not predestined to do anything. It does what humans have it do, either consciously or accidentally. If I say to release a product (with my bosses' approval), then the software is doing what it is supposed to do, which is go into production.

      It won't be done because the boss sets a deadline or marketing wants it or the bean counters want to hit the Christmas sales.

      This is why I don't feel you are speaking from experience. The fact is getting those Christmas sales are probably far more important than your viewpoints on perfection. And sometimes those deadlines are there for a reason. Developers are not tasked with creating some shining example of what perfect code can be, they are tasked with making a return on investment. I have a project right now which is due at the end of April because it really has to be done by the end of April. The scope of the project has changed frequently as planning and development has taken place to ensure this April 30th deadline will be hit. And it will be hit. It will be hit without 80 hour weeks; it will be hit because proper project management techniques were used throughout the project. And part of those proper project management techniques are respecting that the deadline is there for a reason and there are very few requested features that are more important than this deadline.

      They act like the code is in the chain of command, they tell the developer what to do and the developer tells the computer what to do so if they say Thursday it will be done.

      Honestly, writing code is the least important and easiest job of a developer. We learn how to write code in the first few years of our career; probably in school. A quality software developer's career is spent learning the more important tasks of software engineering. This includes your senior developers knowing what can be done by Thursday. You can hit deadlines without just pretending your code is working. You hit deadlines by understanding the progress of the project and understanding the priority of its features at all times. This isn't some hobby or college assignment. There may be millions of dollars on the line, and thousands of employees or customers waiting.

      I have worked in situations where some features were more important than the project's success. In safety critical situations there are times where you would rather have an entire project scrapped than product an un-safe product. Obtaining FDA approval, for instance, is the type of requirement which must be fulfilled. But these situations are rare; in most software development almost all features can have their priority level be put up for review.

      Yes, I know that for planning purposes you have to make some kind of educated guess but I can only estimate what I know needs to be done, not the "unknown unknowns" that can throw your estimates off by an order of magnitude or simply make it unfeasible. This is particularly - but not only - true when you're working with third party software and libraries. I say I have a worst-case estimate but really that's probably the 95th percentile, there's no hard limit where you can guarantee it'll work.

      These are all very real concerns for real world pr

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
  3. FLOSS has the same issues by bloodhawk · · Score: 4, Insightful

    Who told you FLOSS doesn't have those problems? they lied. many FLOSS projects fall apart because of the "virtual teams" of people with different goals and aspirations. I would not be surprised if the failure rate is even higher than 70%

  4. What can on-location software teams learn from OSS by phantomfive · · Score: 4, Insightful

    Here's what a lot of teams need to learn:

    A lot of meetings can be done more efficiently and effectively by email. Here are ways you can tell:

    1) If half the people in the meeting are checking devices, not listening, the meeting should have been done by email.
    2) If everyone sits down at the 'stand up' most of that meeting should have been done by email.
    3) If people are standing around with blank looks on their face, the meeting is probably a waste.
    4) If the meeting is in the morning, and after lunch no one can remember what happened, the meeting is a waste.
    5) If the meeting ends exactly one hour after it starts, then it's a time filler. Finish the meeting when everything is accomplished, not when the time is up.
    6) If it's not clear what needs to be accomplished in the meeting, it's a waste of a meeting and should be cancelled.

    Someone above suggested that the meeting could be done over IRC instead of email. That is also a perfectly acceptable alternative.

    --
    "First they came for the slanderers and i said nothing."
  5. Yup, exactly by Giant+Electronic+Bra · · Score: 4, Insightful

    All you probably NOTICE are the more successful FLOSS projects. For each one of those, there are 100, possibly even 1000 that languish, maybe make a release or two, and then lie in their shallow graves on sourceforge for the next 10 years.

    --
    "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
  6. Re:Observation by Dutch+Gun · · Score: 3, Insightful

    I'd agree except for the "without lengthy explanations". There's also a pretty big distinction between "sugar coating" and using a bit of diplomacy. Telling someone their code sucks with little explanation both does nothing to really help them and may just create bad feelings and frustration. Why create unnecessary tension in the workplace if you don't have to?

    I tend to prefer taking more of a mentor position with programmers on my team if I feel their work needs improvement. This includes not just telling someone how to do something, but listening and finding out *why* they chose to write code the way they did. I think this effort will ultimately make them more productive in the long run, rather than just shuffling them off to another project or another company. If they're not responsive to those efforts over time, either deliberately or because of a lack of talent, then at that point get rid of them or transfer them to a position / place where they're more suited.

    This is a bit different than in the FLOSS world, where you really wouldn't have the time or inclination to mentor everyone who submitted code. It's probably more appropriate to be direct and concise in those cases, as otherwise you'd have all your time sucked away.

    --
    Irony: Agile development has too much intertia to be abandoned now.
  7. Tools, motivation by manu0601 · · Score: 3, Insightful

    IMO, tools are a secondary problem. Many FLOSS project succeed with just e-mail and a distributed version control system (even plain old CVS). Motivation if the key point of FLOSS: people really want their contribution to get upstream, and that push them to make a lot of efforts. This may be difficult to reproduce with employed developers that may not care much about the project.

  8. Paid vs Hobby by The+Raven · · Score: 3, Insightful

    Someone paid to do a job they dislike, with people they don't know, are likely to do only as good a job as they need to get paid. When they are very far away, that could be very little at all.

    Someone volunteering to do a job they enjoy with remote people who share the same hobby and ideals? Unsurprisingly, they tend to do a better job, despite the lower accountability you have when working remotely.

    This isn't rocket science.

    --
    "I will trust Google to 'do no evil' until the founders no longer run it." Hello Alphabet.