Slashdot Mirror


Same Dev Tools/Language/Framework For Everyone?

AC writes "Upper management of the company I work at recently declared that all new development should be done with a single combination of development tools, language, and framework. The main rationale is that people can be relocated from one group / project to another faster, because they don't need to learn a new environment when they switch. Of course the chosen language / framework used by everybody does not need to be the best tool for the job, but it should be good enough to allow every project to get done. What does Slashdot think about this? Is it OK to use the same development tools and language for every project, instead of choosing what fits best? Will the time saved be sufficient to offset the time lost to the 'not the best tool for the job' environment developers will be forced to use?"

519 comments

  1. Choose them all under one. by jpyeron · · Score: 5, Interesting

    We frequently encounter this issue with our clients (government, military, and commercial). We know that this can be a very bad thing if they capriciously apply it across the board. What we have recommended allows for the most flexibility, while minimizing the "tools". In order of importance.

    1. Cygwin (0$)
    2. Eclipse (0-250$)
    3. Teraterm (0$)
    4. Adobe CS whichever (900-2500$)
    5. Microsoft Office 2003. (400$)

    This would allow any team member to move from one workstation/area of work to another without too much effort.

    As to the language, we recommend that one be chosen for "prototyping/scripting" and another for "enterprise" development.

    With Cygwin you get the CM tools, build tools, perl/bash/etc. (Already included tool set under Mac/Linux/Unix...) With Eclipse you get every thing too. (works on all OS) Teraterm nice term, just don't like putty myself. (not needed outside of windows) Adobe for those that like spending money. (Mac/Windows) Office, they are going to buy it anyway.

    1. Re:Choose them all under one. by snl2587 · · Score: 3, Interesting

      I just have to ask: when does Eclipse cost $250? I assume that would be some sort of support plan, but I can't find it advertised.

    2. Re:Choose them all under one. by Matt+Perry · · Score: 1

      Teraterm nice term, just don't like putty myself. (not needed outside of windows)

      Speak for yourself. Not everyone likes the openssh client. Thankfully, there is a Linux version of Putty. Sadly, there's not a linux version of SecureCRT.

      --
      Slashdot: Failed Car Analogies. Amateur Lawyering. Anecdote Battles.
    3. Re:Choose them all under one. by Anonymous Coward · · Score: 5, Insightful

      Whoa, whoa, whoa! You forgot the most important thing: source control!

      Perforce is probably good for larger companies, while Subversion or Git should be good for small/medium companies.

    4. Re:Choose them all under one. by SpaceLifeForm · · Score: 1
      I'd consider that a feature.

      Perhaps you can work out the equivalent from this recent article.

      --
      You are being MICROattacked, from various angles, in a SOFT manner.
    5. Re:Choose them all under one. by Anonymous Coward · · Score: 5, Funny
      How big is the company?

      If it's big enough you can rely on picking the right tool for the job... developers simply chose the tool and compete based on who can implement the software best measured by customer satisfaction reports, rather than bugs or performance. Rather than directing outcomes we foster a system based on evolutionary theory. Developers are pitted against each other, and the weak developers get stabbed or maybe scalped. The Head Developer wears a necklace of threaded ears and walks around the office taking his share of the women and of food and clothing. Every night a fire burns and the drum beat calls developers out to compete for their very lives. Generations later Alpha developers will rise to feast on their flesh, crush our enemies, see them driven before us, and we will hear the lamentations of their women.

      This will really only work at large companys though :(

      ps. Hi gordon in #jelliffefans...bring your A game!
    6. Re:Choose them all under one. by Anonymous Coward · · Score: 0

      There are plenty of 'cost' tools based on Eclipse, IBMs Rational products for example.

    7. Re:Choose them all under one. by Jurily · · Score: 5, Insightful

      WTF is this crap of "any team member to move from one workstation/area of work to another"?

      If someone is good at something, ferchrissake KEEP THEM THERE!

      There's nothing more devastating for a developer than to be ripped out of context and forced to learn something entirely different, but just as difficult, just because some braindead accountant thinks all developers are alike.

      Please stop that. I think it has a more than measurable impact on productivity, not to mention staff morale.

      Translation: everyone who thinks programmers are interchangeable should go fsck themselves with a chainsaw.

    8. Re:Choose them all under one. by astrotek · · Score: 1

      It helps job security though. Who cares about productivity when they are paying for you to add skills to your resume.

    9. Re:Choose them all under one. by Jurily · · Score: 3, Interesting

      You really work for lines in your CV?

      I should add "hitting my boss because he had complaints about my smoking habits and some nasty phrases about my mom" then.

      But seriously, if I do some work, I make sure I do it for the best of my abilities, and noone can say anything about that. Personal differences are another matter, and they usually arise when my would-be boss doesn't like what I do when I'm done with my work at that time.

      For some reason, my bosses seem to think that if I don't appear as working at a particular point in time, I'm not working at all.

      Back to your comment, I really do care about productivity, it's just that I don't define it as "appears as though he has something to do, always".

    10. Re:Choose them all under one. by Matt+Perry · · Score: 0

      What, precisely, are you considering to be a feature? The article that you linked to has nothing to do with ssh clients.

      --
      Slashdot: Failed Car Analogies. Amateur Lawyering. Anecdote Battles.
    11. Re:Choose them all under one. by Anonymous Coward · · Score: 3, Funny

      >Developers are pitted against each other, and the weak developers get stabbed or maybe scalped. The Head Developer wears a necklace of
      >threaded ears and walks around the office taking his share of the women and of food and clothing. Every night a fire burns and the drum
      >beat calls developers out to compete for their very lives.

      So Intel hasn't really changed at all?

    12. Re:Choose them all under one. by jcr · · Score: 4, Funny

      If someone is good at something, ferchrissake KEEP THEM THERE!

      I see that finishing a project appears to be a foreign concept to you.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    13. Re:Choose them all under one. by dotancohen · · Score: 2, Informative

      If someone is good at something, ferchrissake KEEP THEM THERE!

      I see that finishing a project appears to be a foreign concept to you.

      -jcr

      He's a maintenance coder, apparently. And likes it.

      --
      It is dangerous to be right when the government is wrong.
    14. Re:Choose them all under one. by beav007 · · Score: 4, Funny

      He works for Google.

    15. Re:Choose them all under one. by digitig · · Score: 1

      On the other hand, if the developer falls under a bus and turns out to have been developing the critical application in Intercal...

      This is clearly a trade-off for the company. They gain flexibility, being able to move resources as projects get slack or hit bottlenecks, but will be working less efficiently on any particular project than a company that is used to using tools that are well-suited to that project (and both will probably do better than the company that learns a new toolset each time).

      --
      Quidnam Latine loqui modo coepi?
    16. Re:Choose them all under one. by Evildonald · · Score: 1

      Have you heard of knowledge transfer? If you get hit by a bus, who else knows about what you've been working on? One of the best skills an analyst/dev can have is risk management. You have been measured and found wanting.

    17. Re:Choose them all under one. by Rank+Outsider · · Score: 3, Insightful

      The company I work for has an extensive set of systems. As a systems architect I like to know that for any new project I can go to the developers in that area and get advice on how to design and implement the project solution, whether it affects them and how they woudl design their part.

      I rely on knowledge growing in each area. And it takes years to get to know the code in each system really well, and the business rules which the business has forgotten about which are mastered there. Yes, people write it down. But it has to be learned so that realtime dialogue and decision making can occur!

      In our case, I agree that it's the system knowledge which should be seen as the biggest asset. Not transferability across teams.

    18. Re:Choose them all under one. by Jellybob · · Score: 1

      I've never used Perforce before - what does it get you that SVN or Git doesn't?

      Everywhere I've worked in the past has used SVN with plenty of success, although our team are starting to use git-svn to give us the flexibility of Git without having to completely change the company's source control infrastructure, and are loving the sane branching support, and the ability to batch commit code once a feature is considered ready for production.

    19. Re:Choose them all under one. by mich.linux.guy · · Score: 1

      5. Microsoft Office 2003. (400$)

      Make that:
      5. Open Office. ($0)

    20. Re:Choose them all under one. by meamone · · Score: 1

      Upper management has a new idea....
      They are going to call it the "Ring" Idea.
      This "Ring" idea will merge all of our Developer Tools/Languages/Frameworks into one sustainable object.
      This one "Ring" idea can be rolled out into all companies and rule all IT departments.
      You might be able to say it will allow companies to bind all their IT departments.
      I mean what evil can there be in that?
      Ok, I'm done.....

    21. Re:Choose them all under one. by laejoh · · Score: 2, Funny

      Ah, a duke-nukem developer!

    22. Re:Choose them all under one. by CmdrGravy · · Score: 3, Funny

      For some reason, my bosses seem to think that if I don't appear as working at a particular point in time, I'm not working at all.

      ... and posting on Slashdot can often make it look like I'm working, when I'm not.

    23. Re:Choose them all under one. by BKX · · Score: 3, Interesting

      You should take a job-related book with you to your smoke breaks. Crack it open whether you read it or not. Or some kind of PDA.

    24. Re:Choose them all under one. by edittard · · Score: 4, Funny

      Or some excel printouts, with graphs. Vaguely scribble and circle bits of them at random. And make it so the lines are always trending up.

      --
      At the bottom of the /. main page it says 'Yesterday's News'. Well they got that right.
    25. Re:Choose them all under one. by edittard · · Score: 1

      He's porting it to the Hurd, you insenstive clod!

      --
      At the bottom of the /. main page it says 'Yesterday's News'. Well they got that right.
    26. Re:Choose them all under one. by nospam007 · · Score: 2, Insightful

      MEMO
      It has been brought to our attention that in our company
      jewelers, stonemasons, blacksmiths, framers, joiners, bricklayers, welders etc
      all use different hammers.

      This cannot go on!

      From now on everyone will use the Craphammer 1.0, so transfers between groups will be much easier.

      The Management.

    27. Re:Choose them all under one. by rbanffy · · Score: 1

      Why TeraTerm if you already have ssh and scp in Cygwin?

    28. Re:Choose them all under one. by nschubach · · Score: 3, Interesting

      My first guess is that he may work for an accounting and or payroll function and he might not be suited for a training department or operations programming. (or vice versa)

      Were I work there are several different departments all with different programming needs. It helps to know some intimate details about accounting in order to give them the right tools to do their jobs. It would also be a pretty steep learning curve for that same developer to put their accounting knowledge on the bench while being tasked to write a program for the operation of the company. Without knowledge of the processes that go on in the operation, they will likely create software that's useful, but not very elegant or meaningful for the front line supervisor that needs to update numbers.

      Where I work, they have a dedicated development staff, and the projects they roll out are very well planned, organized, and managed. Unfortunately though, there are some things the operation needs and wants in short order that would help them perform better and they can't wait for a full 2 year project plan and all that. That's where the fun happens. It used to be tasked to some poor supervisor or someone that might be a hobbyist programmer in an area to create something in Access to get them their numbers or perform the task of training someone... yes, they would train people with Access because that's all they had to work with.

      Recently though, there has been an upstart of a group that handles "mid-level" operational reporting tools and rapid development tasks in order to take on these one man projects and try to standardize them across the company instead of having 80 odd programs in different states and countries doing the same things (frankly wasting time solving the same problems all areas face.)

      Is it the best solution? Probably not. But it's been working. The "start up sub group" has been able to quickly roll out applications (web apps in this case) to the field so they can perform their job easier and more efficient. If they run across something that requires more development, it's pushed up the chain to the dedicated development/systems teams to do a corporate assessment. There's something to be said for project planning and all that, but sometimes it's ungainly slow and cumbersome. In this small group, the developer is usually tasked with talking to the requester, laying out the design and functionality of the application with the user and coding it up on the framework in place. Granted, it's a lot of work on the developer, but they gain a knowledge of what the field needs and can better layout what that niche of the company needs to do it's job in a rather short period of time where the common standard project time line for the dedicated team of developers would take way too long to gather that knowledge, lay out a plan, and code the application.

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    29. Re:Choose them all under one. by tepples · · Score: 1

      If someone is good at something, ferchrissake KEEP THEM THERE!

      I see that finishing a project appears to be a foreign concept to you.

      I understand the joke you're trying to make. But when a team finishes a project that will not require much maintenance, it should start a similar project, not unrelated projects. For example, once Madden NFL 10 goes gold on all platforms, the team should start working on the company's next NFL or AFL game, not accounting software.

    30. Re:Choose them all under one. by robthebloke · · Score: 3, Informative

      Perforce doesn't differ too much from SVN, but it just works better.

      So yeah, perforce doesn't give you much over SVN with a small/medium dev team, but you do start noticing some short-comings, and little quirks with SVN when you start working on larger projects. e.g. Branching and (especially) merging. I'd definately go with perforce for a large scale project - if only for the relatively pain free merging....

    31. Re:Choose them all under one. by Devout_IPUite · · Score: 1

      I was kinda wondering about the MS Office vs Open Office choice in their myself... Also, GIMP instead of photoshop, more win.

    32. Re:Choose them all under one. by PLBogen · · Score: 3, Informative

      They may be using a 3rd party commercial Eclipse package like MyEclipse.

    33. Re:Choose them all under one. by Anonymous Coward · · Score: 0

      Good list.

      I would suggest putty instead of teraterm.

      And OpenOffice instead of MS Office. (At least until MS Office supports ODF.)

    34. Re:Choose them all under one. by PLBogen · · Score: 1

      SVN can be a pain to admin it gets very fickle about file system permissions and needing to mess with WebDAV configuration can be a pain.

    35. Re:Choose them all under one. by PLBogen · · Score: 1

      They could be thinking that sometimes a project will find a sudden need for additional temporary manpower.

    36. Re:Choose them all under one. by PLBogen · · Score: 1

      Hence the never finishing a project.

    37. Re:Choose them all under one. by PLBogen · · Score: 1

      Bad analogy. It's more of the case of finish carpenters, rough carpenters, furniture makers, and carvers.

    38. Re:Choose them all under one. by BlueMonk · · Score: 1

      Maybe it's a personal preference thing, but I'm a developer and have been switched to at least 5 completely different projects (with different bosses) in my 11.5 years at the company I work for, and still enjoying every minute of it, welcoming each new project as something interesting and different to get involved with. I'd rather work where they need me and use me to the best of my abilities than fester on some declining project. And our company has agreed on a single language and toolset as well. But I don't know that I care about that because I would be equally welcoming of switching to a new toolset when I switch projects (I know C, C#, VB.NET, VBScript, JavaScript, SQL, HTML, ASP, ASP.NET etc., many of which I pick up as I switch to a new project). But there are many developers who, I think, pick up on a new project more quickly because it's written in the same language, using the same tools and practices they used in their previous project. I guess it's a trade-off between developing versatile developers or having them able to switch quickly right away.

      BTW, the reason I picked up more than one language is because we didn't introduce the common language until a couple years ago, and I also do some hobby development. There's also some old code we have to continue to maintain, which is another consideration when making such a decision.

    39. Re:Choose them all under one. by Kent+Recal · · Score: 0

      Oh yea, the mythical "bus-factor".
      That's one of the most retarded business memes ever, yet I keep hearing it.

      If you think the "bus-factor" matters in your project then you have bigger problems to start with!

      Ask yourself: Why can't an an equally skilled member of the team pick up the work of the lost employee in reasonable time?
      The answer to that question is your real problem, kthxbye.

    40. Re:Choose them all under one. by Anonymous Coward · · Score: 0

      I see that "operations" is a foreign concept to you. Not everything is a "project" and not every job is based upon a project.

      -PMBOK FTW

    41. Re:Choose them all under one. by deraj123 · · Score: 1

      Ask yourself: Why can't an an equally skilled member of the team pick up the work of the lost employee in reasonable time? The answer to that question is your real problem, kthxbye.

      Isn't that the whole point of the "bus-factor"?

      That it is important to ensure that, for example, were developer A to fall under a bus, equally skilled developer B is able to pick up his work?

      The bus-factor "problem" is when there is no developer B, or he is not able to pick up the work of developer A...

    42. Re:Choose them all under one. by Anonymous Coward · · Score: 0

      "I see that finishing a project appears to be a foreign concept to you."

      why does finishing a project mean moving team members around?

    43. Re:Choose them all under one. by S.O.B. · · Score: 3, Informative

      Even a free tool has a TCO. We use Eclipse but we have a team who support it (as well as numerous other tools) in our environment. They do things like setup/configuration, installation, investigating new plugins, developer support, etc. I don't think it amounts to a significant amount per developer but it is a non-zero cost.

      --
      Some of what I say is fact, some is conjecture, the rest I'm just blowing out my ass...you guess.
    44. Re:Choose them all under one. by DCheesi · · Score: 2, Interesting

      If someone is good at something, ferchrissake KEEP THEM THERE!

      I see that finishing a project appears to be a foreign concept to you.

      -jcr

      Project != Product

      Obviously one will finish work on a particular software release, and move on to the next one. But there are usually multiple product lines within a company, and the infrastructure for each can be dramatically different (even using the same tools/languages). It can take weeks to get up to speed, not to mention working your way into a new team dynamic.

      IMHO the grand-parent is talking about switching product lines, which is clearly what the original questioner's company is contemplating when they talk about standardizing tool-sets. As someone who gets switched around a lot, I can tell you that it *does* impact productivity significantly --and I'm better at adapting than most (which is why they keep switching me...).

    45. Re:Choose them all under one. by SQLGuru · · Score: 2, Insightful

      Which was the reference to Intercal in the parent post. If the key piece is written in a language that only a couple of staff members know, then you don't have the flexibility because there isn't "an equally skilled member of the team".

      If the language and environment are standardized (I'd be more worried about the language, libraries, and framework than actual development tools), then there are plenty of equally skilled team members that can pick up where someone else leaves off.

      Personally, in answer to the original post, I would probably stick to the language that fits your industry best and evaluate the available frameworks. Once that is settled, then (and only then) would I worry about toolset -- let each group suggest something that fits them and select a couple as standards.

      If you are writing business apps, the top choices are Java and .Net.
      If you are writing games, C/C++.
      If you are prototyping, a scripting language (several to choose from).
      For a database, it's pretty much Oracle (with nods to DB2 and SQL Server in some instances) for large businesses; MySQL and SQL Server for small businesses.

      Sure, you can argue that RoR or PHP or Perl or what have you can be used to make business apps or games or whatever, but in this case, marketshare is much more important than anything else you can argue about. A larger market base means better (more robust) tools, available frameworks, educational material, etc. All of the factors that management cares about.

      Layne

    46. Re:Choose them all under one. by Kent+Recal · · Score: 1

      Well, my point is that the solution to the bus-factor is not to constantly reduce your team's productivity with "rotation" (gasp!), excessive pair-programming or similar mindless measures for the sole purpose of "preparing for when it happens".

      The solution is to enforce good coding and documentation practices so that you don't need any advance preparation.

      I don't need to stay up to date with my peer's code constantly to know that "if it happens" I'd be able to replace any of them after some warmup time. I know that because we share common coding practices and don't hire people who write bad code that would turn into a liability after they leave.

      Again: If your team is in good shape then some mysterious bus-factor will be the least of your worries. Simply because it happens very rarely (developer exodus would point to bigger problems) and in a healthy team it's a non-issue to assign the orphaned tasks to someone else.

    47. Re:Choose them all under one. by j-pimp · · Score: 1

      Good list.

      I would suggest putty instead of teraterm.

      And OpenOffice instead of MS Office. (At least until MS Office supports ODF.)

      Because you can't install PDFCreator?

      --
      --- Justin Dearing http://www.justaprogrammer.net/ We're just programmers.
    48. Re:Choose them all under one. by Kent+Recal · · Score: 2, Insightful

      Sorry, I cannot take anyone seriously who proposes to "standarize developement tools". As others have pointed out that's such an obvious productivity killer - you're in the wrong business if you even think about proposing such a thing.

      Everyone knows the ancient proverb that says it all: Right tool for the job. Period.

      If java is the right tool for everything in your company then fine, standarize on that.
      But in reality it normally makes more sense to write the application in java, write the admin-scripts in perl (or whatever scripting language), script the webserver in lua, and so on.

      Trying to use "the one hammer" for everything simply doesn't work, never did.
      Furthermore: Productivity can only suffer if you force your team to use tools that they don't like.

      Your best developer probably prefers Vim or Emacs to write his code while everybody else is using eclipse. If you try to force an IDE down his throat he'll soon be your former best developer. Trying to standarize on editors or IDEs is a no-go. No sane developer will follow if you rule out his preferred tool.

    49. Re:Choose them all under one. by Arkham · · Score: 2, Informative

      We use perforce here. I've been using it for about a year now, and honestly, the benefits of it must not be at the end user level. It's substantially the same as SVN, CVS, etc. I suspect the advantages are at the administration level (reorganizing, branching, merging, etc).

      From a user perspective, it actually feels like a step backward from the old standby, CVS. It requires you to "lock" a file before editing it, and often seems to lose track of what files you have "checked out". It also seems to have issues determining differences with whitespace/linebreak changes when you have developers on Linux and Windows checking in code together.

      --
      - Vincit qui patitur.
    50. Re:Choose them all under one. by SQLGuru · · Score: 1

      Actually, I never said standardize on one IDE. I said pick the language that makes the most sense for your industry. Then pick a framework within that language. Those selections support the "interchangable developer" model that management wants. When people talk about standardization, they usually are referring to the "real work" of the team, not admin scripting (unless that's the only development your company does).

      Once those choices have been made, I said pick a couple of IDE's. Too many and you have support issues (conflicting machine requirements, no volume licensing, etc.); too few and you have people issues (unhappy developers).

      Layne

    51. Re:Choose them all under one. by Clith · · Score: 4, Informative

      [..] I suspect the advantages are at the administration level (reorganizing, branching, merging, etc).

      Having gone from an svn shop to a Perforce shop, I can definitely say that branching/merging is much easier in svn than in Perforce. Also, the whole "client" concept is a bad alternative to file system state files (i.e. .svn or CVS directories).

      I'm not saying that using the filesystem is the best alternative possible, but it's the least worst right now.

      --
      [ReidNews]
    52. Re:Choose them all under one. by Greenmoon · · Score: 1

      Project Managers aren't concerned with what's devastating to a developer, at least not primarily. They are concerned with meeting business needs. If that means that a developer has to be stolen from a lower priority project for something more important, then that's what has to happen. It's not the same as saying they are all interchangeable, but it does mean that the developers who are more "mobile" than others will be valued a lot more. Staff morale *is* very important, but if someone's morale hinges on not moving around despite the business need, then they just aren't as valuable to the organization.

    53. Re:Choose them all under one. by Ash+Vince · · Score: 4, Insightful

      My first guess is ......

      That being the main problem with this entire topic: He has not provided enough information about what his company does for us to come up with a sensible answer.

      I can think of some cases where forcing everyone to use the same tools would be ridiculous. I can also think of some cases where it would make sense. Without knowing how big his company is or having any idea about the longevity of each project or how different each project is we have no idea what makes more sense for them.

      As far as we know he is talking about two teams of 3 developers who interchange between similar projects on the same web application. He also might be talking about a company of 1000 developers for hire work in long term projects where each team develops an entirely different application. In the latter standardising on a single language would probably be impossible.

      --
      I dont read /. to RTFA, I read /. to offend people in ignorance.
    54. Re:Choose them all under one. by OrangeTide · · Score: 1

      It's not point and click.

      --
      “Common sense is not so common.” — Voltaire
    55. Re:Choose them all under one. by ArhcAngel · · Score: 3, Funny

      It helps job security though. Who cares about productivity when they are paying for you to add skills to your resume.

      I can surmise by your post you are not a coder. As a recovering coder (I've been code free for 12 years) I can tell you that once a coder is addicted to a particular language changing languages is the equivalent of cutting off one of your limbs. Withdrawal symptoms can be severe and disruptive including the shakes, paranoia, and a condition that strikingly resembles turrets syndrome. There have been coders in recent years that appear to be able to switch languages with relative ease but studies on these coders have not been conducted and it is suspected that they could go off in a fit of rage at any moment and should be approached with extreme trepidation.

      --
      "A person is smart. People are dumb, panicky dangerous animals and you know it." - K
    56. Re:Choose them all under one. by poot_rootbeer · · Score: 1

      If someone is good at something, ferchrissake KEEP THEM THERE!

      For the short term, yes, obviously. But be careful not to pigeonhole your developers.

      Your most skilled and most motivated employees want to always be picking up new skills and cultivating new knowledge. If you have them working on the same thing, month after month, year after year, they're going to get bored and restless. Better to reassign them to another project within the company before they reach that point than to lose them entirely to another employer.

      This, in fact, may be a useful argument against homogenization of toolsets. Even though the amount of code that can be written within a single language, say Java, is immense, The Enthusiastic Coder will eventually tire of writing endless indistinguishable class definitions and accessor methods. Maybe exploring Ruby on Rails instead in the next project will keep him energized, if it's a good match for the business needs?

    57. Re:Choose them all under one. by Just+Some+Guy · · Score: 1

      Branching and (especially) merging. I'd definately go with perforce for a large scale project - if only for the relatively pain free merging....

      Have you tried branching/merging with SVN 1.5 out now? I have it installed in various places but haven't had the chance to really test it yet.

      --
      Dewey, what part of this looks like authorities should be involved?
    58. Re:Choose them all under one. by LWATCDR · · Score: 1

      Sometimes you may need extra bodies on a project or a fresh outlook on a problem. Suppose team on is having a problem you might ask your best debugger on team two to take a look at it.
      Of course if team one is using Ruby on Rails and team two is using PHP then it can be a total mess.
      People come and people go.
      Then you come to the real answer. For a lot of projects there isn't one best tool. I have seen great projects in Python, Perl, PHP, and Ruby. I have also seen total crap in all of them.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    59. Re:Choose them all under one. by tb()ne · · Score: 1

      I understand the joke you're trying to make. But when a team finishes a project that will not require much maintenance, it should start a similar project, not unrelated projects. For example, once Madden NFL 10 goes gold on all platforms, the team should start working on the company's next NFL or AFL game, not accounting software.

      They may not have the luxury of keeping people on overhead waiting for a simlar size/type of project to come around. Furthermore, not all developers on a project are necessarily required over the entire development period so they would be moved to other projects once their piece is done. Note that the OP mentioned not just moving from one project to another but also from one group to another.

    60. Re:Choose them all under one. by porl · · Score: 1

      how would that help with ODF support??

      porl
    61. Re:Choose them all under one. by Foolicious · · Score: 2, Funny

      Withdrawal symptoms can be severe and disruptive including the shakes, paranoia, and a condition that strikingly resembles turrets syndrome.

      You forgot the night terrors. [shiver] It's hard to get past the night terrors...

      --
      Please don't use "umm" or "err" or "erm".
    62. Re:Choose them all under one. by SanityInAnarchy · · Score: 1

      I'd definately go with perforce for a large scale project - if only for the relatively pain free merging....

      Given that a merge is the most frequent operation performed by a distributed VCS, I'd say Git probably has an edge there, or no one would put up with it.

      --
      Don't thank God, thank a doctor!
    63. Re:Choose them all under one. by jez9999 · · Score: 1

      You just lost

      I'm sorry, I lost concentration after reading that part of your sig and went and did something else. What were you on about again?

    64. Re:Choose them all under one. by wmbetts · · Score: 1

      Maybe he means Zend Studio for Eclipse.

      --
      "Ubuntu" -- an African word, meaning "Slackware is too hard for me". - stolen from Dan C alt.os.linux.slackware
    65. Re:Choose them all under one. by altinos.com · · Score: 1

      Keeping developers pigeonholed is a great way to lower morale...

    66. Re:Choose them all under one. by Anonymous Coward · · Score: 0

      Many useful plug-ins for Eclipse aren't free. MyEclipse is very popular. My team has to use a commercial plugin (Teamprise) for CM.

    67. Re:Choose them all under one. by Darth+Android · · Score: 4, Funny

      Bad analogy (no cars). It's more of the case of Ferraris, Hummers, Monster Trucks, and Volkswagon Beetles with tires.

      --
      Do not meddle in the affairs of dragons for you are cruchy and good with ketchup.
    68. Re:Choose them all under one. by bryguy5 · · Score: 1

      Good listing of the major languages and why you would want to choose them.

      If you are doing mainly web development then:php, asp.net, or something more trendy like python or ruby.

      If you have other reasons for being a java shop you can go the tomcat route for your web portions.

      Giving your whole development staff a consistent environment can definately help in hiring, maintenance coding, it operations, etc.

      Your suggestion about frameworks is a good one. Having a few common frameworks will go far in adding standardization to your coding practices - a lot further than some document some where. Of cource you will propably need a few different frameworks - ie one for web apps another for thick clients, and allow the option of no framework for small or performance critical applications.

    69. Re:Choose them all under one. by UnknowingFool · · Score: 1

      While you make valid points, I don't think you understand nature of the question being posed. This isn't about replacing you with a cheap new developer that will work for ears of corn. This isn't about making a Java programmer learn to be a DBA. This isn't about making an army of coding drones. This about the problems of physical location and collaboration and standardization. While there are tools like IM, email, teleconferencing, sometimes the best way for people to work together is to be near each other physically.

      Not all offices have fixed, permanent space for everyone and not everyone works in the same team forever. Some industries (i.e. consulting) means that you work with many different people over many projects. Sometimes there are multiple offices, multiple teams. Get on a new project? Well, almost of your new team works out of Building B and you're in Building A. So you should make everyone else move or just you? We could move your computer each time or would it be better for you just to switch computers. Now multiply that the number of people who switch projects. That's what the poster was talking about.

      Then there are the software issues. You use eclipse. Your teammate uses NetBeans. You're both assigned to do some Java coding. You want to show your teammate some code. Where the feck is the compile option on his IDE? Wait, I wanted to use Ant as well. Where's that option? And that's just with IDEs. Then you have documentation, version control, etc.

      --
      Well, there's spam egg sausage and spam, that's not got much spam in it.
    70. Re:Choose them all under one. by msuarezalvarez · · Score: 2, Insightful

      Why would you need something like Putty in Linux?!

    71. Re:Choose them all under one. by Anonymous Coward · · Score: 0

      I actually did something similar to that and it does seem to make people think your working.

    72. Re:Choose them all under one. by Dial-Up · · Score: 1

      Perforce definitely doesn't require you to lock a file before editing it. It allows you to do so, but it doesn't require it. Maybe it's some policy put in place by your company.

    73. Re:Choose them all under one. by digidave · · Score: 1

      Well, if you've got two projects on the go and one is doing well and the other is falling behind, moving great programmers to the latter project might just net you two failed projects instead of one.

      I try to never move the best contributors off the project they're currently working on. Once that project is complete then maybe you can move them over to the failing project.

      That said, every project should have at least one superstar programmer to lead the rest. I find that the worst projects are the ones with no real guru programmer, so the whole team gets bogged down in one or two problematic areas

      --
      The global economy is a great thing until you feel it locally.
    74. Re:Choose them all under one. by 7+digits · · Score: 1

      When I managed developers (after beeing one for 2 decades), my position was: here are the tools, here are the processes, here are the langugages.

      If you, as a senior developer, wants to divert from the tools, you can (and I will even pay for them), but you will have to deal with the impedance mismatch yourself (ie: if the developer want to go OSX, he'll get one, but he will also have the hassle of dealing with the OS/tools/etc, the different line termination in source files, the filename case insensitivity issues, the pain of getting oracle working, etc).

      If you want to divert from the processes, explain why, and, if it is good, we will update the process for everybody.

      If you want to use a different language, well, no (unless very special cases, like embedding lua, for instance).

      At the end, such a position on the tools have positives and negatives:

      +, dev-side: Developer is happy. Developer works harder and smarter to prove that his choices were the best.
      +, business-side: Better morale. Better cross-breed of ideas. Lot of alternative ideas for tool progression. Largely more portable code, with less bugs. Sometimes, the fact that a dev have some special tool can be a life-saver (ie: using osx tools to track leaks, for instance)
      -, dev-side: Spending time on self-inflicted troubles (for instance, it may not be fun to be forced to use Outlook to book meeting rooms, but having to use Outlook inside vmware is worse, or having to maintain a separate makefile from the others). Also, you lack peer experience when running into tool-specific troubles.
      -, business-side: You sometimes have troubles that you could have avoided. Upgrading the common toolset will have a lot of people screaming around.

      This works as long as you have a few dozen devs. I am not sure it scales particulary well.

      Anyway, the most important thing to standardize on are the languages, because you can't change that, and you have to maintain previous code. Next are the processes. At one moment everybody must use the same processes, but you can (and must) make them evolve. Last thing are the tools, which can be changed at will.

    75. Re:Choose them all under one. by MobyDisk · · Score: 1

      I assumed they just meant that someone could move to another workstation without spending days installing stuff. After reading your comment, I figure maybe they mean that people can move from one part of the project to another, which is very common. Rarely does someone work on just one piece of the code all the time.

      What are you interpreting "move from one workstation/area of work to another" to mean?

    76. Re:Choose them all under one. by palegray.net · · Score: 2, Funny

      He likes the interface better.

    77. Re:Choose them all under one. by GryMor · · Score: 1

      Something that some of my team mates have been advocating/adopting is using Git at the personal level, on top of Perforce. It seems to be working well for them and hasn't interfered with those of us who still use perforce raw (keep in mind, this is while literally working on the same files).

      --
      Realities just a bunch of bits.
    78. Re:Choose them all under one. by JamesP · · Score: 1

      Just don't pick one of these:

      RCS (70's called back)
      Clearcase (just say no - people who doesn't know jack about source control, morons, phbs, and people with a diploma from irRational love it though, too bad it pisses off and hampers every developer, just google for 'clearcase sucks')
      SourceSafe (just say no x2)
      CVS (NO!!!)

      Which leaves you with:

      Perforce (the MS, Google, Amazon, EA, etc tool of choice)
      SVN ('playing safe' open source solution)
      Git / Bzr / HG ('cutting edge' open source solution)
      Accurev - 'cutting edge' proprietary solution

      SVN free clients are 'not good' on windows (and windows env lacks several things we have for granted on windows), so, getting a proprietary svn client may be a good choice

      --
      how long until /. fixes commenting on Chrome?
    79. Re:Choose them all under one. by j-pimp · · Score: 1

      Yeah it wouldn't help with my reading skills either I guess.

      --
      --- Justin Dearing http://www.justaprogrammer.net/ We're just programmers.
    80. Re:Choose them all under one. by nih · · Score: 0

      The Head Developer wears a necklace of threaded ears and walks around the office taking his share of the women and of food and clothing

      like that's ever gonna happen!
      --
      I'm a rabbit startled by the headlights of life :(
    81. Re:Choose them all under one. by Matt+Perry · · Score: 1

      He likes the interface better.

      That's exactly right. There's a nice GUI to configure it and manage all of my saved sessions. For example, one can choose the font to use for a session by pointing and clicking at it. Better clients, such as SecureCRT, have better management of sessions, including grouping them into folders (necessary when you have 100+ hosts), scripting for sessions (for auto login, etc), searching and saving of all session history, tabbed interface with the ability to move tabs into and out of new windows, clone tabs, ability to have multiple sessions open in tabs at once with a single click, great GUI-based key generation and management.

      Most important for me, SecureCRT supports zmodem for file transfers. I can type "sz " in a shell and the file will be sent from the remote system to my desktop. I can type "rz" and I'm prompted with a file requester to select files to send to the remote host. It's much faster than dicking around with opening another shell and dealing with scp or sftp.

      --
      Slashdot: Failed Car Analogies. Amateur Lawyering. Anecdote Battles.
    82. Re:Choose them all under one. by zuggy40 · · Score: 2, Funny

      There have been coders in recent years that appear to be able to switch languages with relative ease but studies on these coders have not been conducted and it is suspected that they could go off in a fit of rage at any moment and should be approached with extreme trepidation.

      These would be web developers and should be approached with extreme caution becaause they could snap at any moment

    83. Re:Choose them all under one. by Cyberax · · Score: 1

      It has several 'killer features':
      1) "Duplicate session" from context menu.
      2) More terminal settings and EASY configuration.
      3) Ability to save different configuration for each host.

      BTW: Putty works just fine in Linux. There's also GTK2 port of Putty for which I'm creating Ubuntu package.

    84. Re:Choose them all under one. by nuttycom · · Score: 1

      Merging is *easier* in SVN than in Perforce?

      I only used Perforce for about three months, but sure thought it sucked during that period. It always seemed ridiculous to me that so much depended upon having a correctly configured clientspec - and that the clientspec itself wasn't under version control!

      Now that I'm in a git-only shop, even SVN seems antiquated. Using SVN, my goal was to avoid repeated merges at all costs; with Git it's so trivial that I do it multiple times a day.

    85. Re:Choose them all under one. by Rycross · · Score: 1

      Seconded on saying no to ClearCase. We use that here, and its simply terrible. We lose so many hours of productivity on stupid problems. If you're forced to use it, then insist on the thick client. If you have to use the thin client (VPN, remote network) then God help you.

    86. Re:Choose them all under one. by broter · · Score: 1

      I see that finishing a project appears to be a foreign concept to you.

      I work in medical research. Projects never end, they only pause while the spec is changed.

      --
      "One man can change the world with a bullet in the right place."
      - Mick Travis, "If..."
    87. Re:Choose them all under one. by Anonymous Coward · · Score: 0

      An important consideration is the average time an employee spends at a given company. Chances are, most employees will end up leaving the company within a transition or two, rendering the scheme largely valueless. Of the employees that do remain through several transitions, some will be promoted to management positions and a fair number will be ones that the company wants to get rid of.

      A program like this will probably hasten the departure of talented developers because using the same tools all the time will result in boredom; there are fewer opportunities to explore different tools and how they apply to projects.

    88. Re:Choose them all under one. by Matt+Perry · · Score: 1

      Because the openssh client has no GUI (for example, no session management list and lack of tabbed interface for sessions) and lacks a lot of features in general. See my other post here: http://slashdot.org/comments.pl?sid=606419&cid=24102353

      --
      Slashdot: Failed Car Analogies. Amateur Lawyering. Anecdote Battles.
    89. Re:Choose them all under one. by Dan667 · · Score: 1

      Favorite quote "When all you have is a hammer, everything becomes a nail."

    90. Re:Choose them all under one. by Darinbob · · Score: 1

      Do people actually change computers and desks and tools just because a project changes? Stay at your desk, and start working on the new project in the same way you worked on the old one. The new project is probably related to the old project and you're probably working with the same people. Unless you're a contractor I would think that most programmers are not migrants.

      Personally, I just want Emacs. If a boss forces me to type in an IDE because they want everyone to type into the same window, then I'm going to be thinking about what other jobs are out there. Why force someone to be unproductive for no other reason than to see someone using the same tool as others? Are there managers out there thinking "I'm making it my top priority to get those old timers to use a mouse; all that typing is giving me a headache"?

    91. Re:Choose them all under one. by Anonymous Coward · · Score: 0

      So true. Team code reviews are a joke. It's in nobody's best interest to critisize. If pressed, people will look for a minor indentation error or other violation of the coding standards to point out. They don't want to make an enemy of the person whose code is under review. It really makes no sence for Joe Reviewer to risk offending Tom Reviewee. If Joe points out something that makes Tom look bad, then if Tom is a moron, he might strike back openly at Joe as soon as he is able to ( like in the next code review when Joe's code is being reviewed ) or in some other way. Or if he is smart, then he'll be subtle enough so that Joe won't ever find out what he did to get revenge. Even if Tom is not vengeful, then he will be less favorable to Joe in the future. If Joe critisizes everyone's code like this, then none of Joe's peers will be very favorable to Joe, and the consensus will swing toward the opinion that Joe's code stinks. Everyone's ego will be soothed by the group opinion that Joe, the asshole who critisized their code, is a nincompoop anyway ) Having made enemies of all his coworkers, he will be lucky to stay employed. So Joe won't say shit about the code of the people he works with, because Joe, having survived to adulthood, is not an idiot. This means that the best strategy for someone who gets moved around to work on different things all the time is to implement the features they are assigned as quickly as possible without regard to the quality or ease of maintenance of the codebase. To spend extra time to implement feature X in a way that would make features Y and Z easier to implement doesn't make sence for a programmer who most likely won't be implementing features Y and Z. To waste time doing something right would make his throughput appear lower. It often happens that spending 2 days to implement feature X would make features Y and Z take half a day each, but implementing X in 1 day is possible, but will make feature Y take 2 days and feature Z take 3 days. Since spending 2 days on feature X means it only takes 3 days to implement X Y and Z, vs 6 days if X is implemented in a shoddy manner in only one day, if the same programmer is tasked with implementing X Y and Z then they will spend 2 days on X and 1 day implenenting Y and Z for an average of 1 feature implemented per day. But if the programmer is tasked with X and they think it is unlikely they will be tasked with Y and Z, then they can still complete X in one day but whoever is tasked with Y is 1/2 feature per day productive and whoever is tasked with Z is 1/3 feature per day productive. Coding shoddily and without foresight is a good career move. This person would be promoted except all the other coders are just as bad ( or else they would have been fired ) and after implementing X in one day they had to implement Q which took 3 days and then R which took them 2 days. For an average of half a feature per day. Q and R would have been so easy if only feature P had been done well. Who implemented P? Oh yeah, they are the one who did Y and Z. On the other hand, investing in producing quality code that you as a developer will have the pleasure of working on in the future, pays off in spades for you and for the organization. And higher quality code written and maintained by one person is easier to understand and pick up ( should the original author be hit by the lottery ) than aggregated crap nobody *ever* understood completely anyway.

    92. Re:Choose them all under one. by Darinbob · · Score: 1

      No, the bus-factor problem is what happens when developer A does not fall under a bus...

      If you've got developers all cross training and co-developing the same code, so that everyone is an expert, sometimes colliding with each other, then you're probably wasting manpower and time in many instances.

      But if developer A is hit by a bus (or quits unexpectedly) and you don't have a backup plan, then the worst that happens is that you've got a hiccup in productivity for a short period of time. You get some existing developers to do extra work and effort to get up to speed, read a lot of documents, shuffle people around, and set out to hire a replacement.

      So you have either a lot of wasted time over the life a project, or a relatively short hiccup. A little cross training and redundancy is good, but it's easy to get too much of it.

    93. Re:Choose them all under one. by Darinbob · · Score: 1

      Um, ssh and scp can talk to an RS232 serial port? Teraterm sure beats Hyperterm or minicom for that purpose, but I can't imagine using it for something else.

    94. Re:Choose them all under one. by JamesP · · Score: 1

      Oops, I meant "and windows env lacks several things we have for granted on LINUX"

      --
      how long until /. fixes commenting on Chrome?
    95. Re:Choose them all under one. by bonehead · · Score: 2, Funny

      I've found that no matter how ridiculously much you're actually goofing off, if you do it with a vaguely annoyed and frustrated expression on your face, people will think you're working your ass off.

      Give it a try.

    96. Re:Choose them all under one. by GooberToo · · Score: 1

      ClearCase is simply horrible.

      By law, the first developer that asks for Clear Case at your place of business can be legally shot. I encourage you to remind your fellow developers of this fact to keep them in line.

      Unfortunitally, the second developer can't be shot. The cure for this is to ensure all developers understand that THEY will become the ClearCase administrator. Point them at the documentation and make it understood that the massive bulk of documentation will need to be understood for everything but the most trivial uses of clearcase.

      The above should do a wonderful job of keeping the abomination known as ClearCase away from your job. If on the other hand you hate your co-workers, encourage and prod two other co-workers to ask for ClearCase. This way, one of the two gets shot and the second will be forced to support it. Laugh as you exit toward your future place of employment.

    97. Re:Choose them all under one. by jepaton · · Score: 1

      The recently released Subversion 1.5.0 includes many improvements. Merge tracking is one of the improvements.

    98. Re:Choose them all under one. by Gnavpot · · Score: 1

      Well, my point is that the solution to the bus-factor is not to constantly reduce your team's productivity with "rotation" (gasp!)

      Glad to hear that. I think most of us read your first post as:
      "Well, my point is that the solution to the bus-factor is not to keep employees at a safe distance from buses."

    99. Re:Choose them all under one. by Rycross · · Score: 1

      Developers don't ask for ClearCase, managers do, which is how it worked here. It doesn't help that ClearCase was mandated as the standard SCM for our entire organization. And hey! We're back on topic!

    100. Re:Choose them all under one. by Jellybob · · Score: 1

      Wow, I'm glad I don't work with you.

      Your attitude to code review is painfully immature.

      How about you take the criticism of your code (is it as full of single letter variable names as your example?) like a man, and make an effort to write better code in the future.

      Believe me, it's not the fact that you criticised Joe's code a few months ago that makes him hate you, it's your attitude of "I'm not going to have to maintain it, so why should I make an effort to write readable code?"

    101. Re:Choose them all under one. by Mike+McTernan · · Score: 1

      > SVN free clients are 'not good' on windows

      TortoiseSVN is very good and integrates with Windows explorer really really well (if you like that sort of thing).

      --
      -- Mike
    102. Re:Choose them all under one. by Mike+McTernan · · Score: 1

      Yeah, that's the +l option (set per file), usually used for binary files that can't easily be diffed, hence have to be edited exclusively:

      http://www.perforce.com/perforce/doc.042/manuals/p4guide/04_details.html#1047746

      --
      -- Mike
    103. Re:Choose them all under one. by Mike+McTernan · · Score: 1

      Having gone from a Perforce to SVN shop, I can definitely say that I prefer the SVN way of working.

      Under Perforce all files in your workspace are marked read only, and you have to use a Perforce client to change them to read-write, which is then tracked by the server (kinda like ci/co). This can be a pain when working away from the server as you have to manually edit permissions and then run a lengthy command when back in office to make a changelist from the files you've edited, otherwise you may miss changed files on your next submission. Similarly under Perforce it is all to easy to add a file and forget to tell the Perforce client and then fail to submit it.

      SVN just lets you edit everything and add files then svn status shows you what's changed. TortoiseSVN overlays icons to show what you've changed in explorer, which is just excellent and makes it soo easy to see what you've worked on.

      Another great thing with SVN is that you can still revert and diff files without contacting the server. With Perforce, if you are working remote, you are on your own and need to keep a backup of changes yourself if you wish to revert them without accessing the server.

      Both have good features, but I definitely prefer sub-version, mainly due to it's simplicity and good support for remote working (I'm hoping the log caches in 1.5 will allow some access to file history without the server too).

      --
      -- Mike
    104. Re:Choose them all under one. by bladesjester · · Score: 1

      When I was an apprentice blacksmith, I used several different hammers depending on what I was doing (I carried 5 or 6 in my toolbox). It's really a lot like writing code - to the outside world, all the tools look the same, but to you there are huge differences.

      --
      Everything I need to know I learned by killing smart people and eating their brains.
    105. Re:Choose them all under one. by bladesjester · · Score: 1

      Do people actually change computers and desks and tools just because a project changes?

      Some places have teams seated in close proximity, so if they send you to another team when your current project is over (which happens at some places), you can actually end up with a new desk, different computer, and possibly different tools.

      It's one of the many downsides to companies treating developers like interchangeable parts.

      --
      Everything I need to know I learned by killing smart people and eating their brains.
    106. Re:Choose them all under one. by Anonymous Coward · · Score: 0

      Dude, who are you kidding? Web developers are the least likely to switch languages. Web developers typically only know PHP (or Ruby), believe it is the One True Language that is both easier and more powerful than anything else, and refuse to acknowledge the possibility that it has any flaws. The only thing that unites them is a deep hatred for the Devil, Perl (which most of them have never used and know nothing about, other than that it is Evil).

      Desktop and mainframe developers generally have a more rational view of things, since they're familiar with low-level languages like C, high-level languages like Java or Python, and domain-specific languages like Makefiles and shell scripts, and are therefore able to grasp the concept that different jobs require different tools.

    107. Re:Choose them all under one. by altnuc · · Score: 1
      I personally disagree with people who prototype in one language and "enterprise" in another one. Maybe this works for web sites or GUI's, but not for numerical software.

      I have a colleague who insists on prototyping numerical software in VB and Excel then porting to Fortran/C++ (before laughing, remember it's numerical analysis). All's this does is create shitty Fortran/C++ because he hasn't developed his Fortran/C++ skills. A good developer should be able to "think" in his chosen language.

    108. Re:Choose them all under one. by JamesP · · Score: 1

      TortoiseSVN is very good and integrates with Windows explorer really really well (if you like that sort of thing).

      Sorry, but no... Tortoise SVN is good, but is still lacking some things:

      - Diff/Merge (may be configured to use an external tool, I really don't know)
      - Taking care of stupid things users do (namely, copying stuff between directories and taking the .svn with them)
      - Status indication is fuzzy with the icons Tortoise shows
      - Support for all svn commands is lacking

      Tortoise is not bad, bit it is too simple...

      Now take a look at this: http://www.syncrosvnclient.com/

      Or even this: http://rapidsvn.tigris.org/

      --
      how long until /. fixes commenting on Chrome?
    109. Re:Choose them all under one. by plover · · Score: 1
      You missed one of the worst: Dimensions by Serena. What a disgusting pig. I've never seen a slower source management tool nor a more clumsy user interface. The merge tool is brain dead. And trying to implement their "lifecycle management" took a Serena consultant a month of time to eventually come up with a broken, untested implementation that we were never able to turn on.

      It doesn't support transactional commits. Sure, it has a thing that sort of groups them together, but if it fails halfway through, it doesn't back out the previously committed items.

      But none of that really matters, because it's very likely you were never able to get all the files in a project anyway. Throw 1,000 changes into one of their worksets, and see if you can retrieve them in India before the next 1,000 files are committed.

      A side-by-side comparison with Microsoft's Team Foundation Server (TFS) showed TFS getting a project with 333 files in it in 9 seconds, versus Dimensions taking over a minute. Our India site gets it from TFS in 40 seconds, and from Dimensions in over 20 minutes. But that's what our source management team chose, because that's what the Dimensions salesman sold us. And rather than walk away from a bad decision made in 2003, we upgraded Dimensions in 2005 and have now done so again in 2008.

      What I don't understand is why we keep this overflowing cesspool -- the manager of the source team who made the original purchasing decision left, his successor left, as did hers, and hers after that, and the manager after that. Every manager who takes that position gets yelled at by the rest of the corporation for having this foetid product, but each one seems to try to have their team "fix" the product rather than recognize it for the raw sewage it is. Every team member in that group has cycled out of it. After a year of continual yelling, the rookie manager flees for a job that doesn't involve being the corporate punching bag. All I can think is that some higher-up put his keister on the line when he bought this, and he made sure the stench didn't rise to his boss.

      --
      John
    110. Re:Choose them all under one. by plover · · Score: 2, Interesting

      I had a factory job many many years ago, and a co-worker told me once "Don't just stand there with your hands in your pockets. If you don't have anything to do, find an empty box and carry it from one side of the factory to the other. At least you'll look busy, and you won't be breaking a sweat."

      --
      John
    111. Re:Choose them all under one. by plover · · Score: 1
      If the bus-factor isn't a factor in your project team, then you must have an awesome team filled with 100% brilliant and capable people. I envy you, because while I like every one of the 100 people I work with, not every single one of them is a rock star in their area.

      Do you think the Boston Celtics coach says "Hey, my Forward Resource is tired. I need another Forward Resource. Send in a qualified Forward Resource!" No, he says "Damn it, we need someone to get in there and make something happen! Send in Kevin Garnett!"

      Note the subtle difference: one team is managed by human resources, and the other gets the job done.

      --
      John
    112. Re:Choose them all under one. by jamie(really) · · Score: 1

      1) Forcing a lock on checkout is an option that the admin can change. Tell him to change it. Its very good at merging changes.
      2) It will translate CR/LF's between windows and linux if the file type is set up correctly - again a job for the admin.
      3) If it seems like "a backwards setp from CVS" then something is deeply fucked up in your installation.

      Sounds like your admin needs a kicking. I've owned and admin'd Perforce for five years and it is by far the most solid and powerful VCS on the market.

      Jamie

    113. Re:Choose them all under one. by jamie(really) · · Score: 1

      Well given that up until a month ago svn couldn't merge back from a branch more than once without major manual intervention and the warning "just don't do it", I think that statement is pretty far fetched. Even assuming it actually *works at all* in svn 1.5, Perforce tracks and remembers branch specifications, so starting a merge is a one click operation. The specs can be set up by leads and then locked. As for resolving merge conflicts, perforce has a great four way merge tool (though I prefer ECMerge myself).

      The "client" concept has its pros and cons. I prefer it because it means people on a large team can see who else is working on the same file, and head off potentially costly merges later. No substitute for daily meetings, but not everywhere is perfect. I also like to be able to manage my changesets, putting certain files into a different set. SVN's file system state files make for speedier diffs, but they can also lead to directories that don't map where you think they do. YMMV.

      Finally, Perforce is just faster.

      Background: I have been responsible for admin'ing svn/perforce servers on teams of up to 20 people, and I've been lead on a team of 50 that used perforce.

    114. Re:Choose them all under one. by Schraegstrichpunkt · · Score: 1

      Just make sure it's not a box full of decommissioned hard drives.

  2. Depends by Anonymous Coward · · Score: 2, Interesting

    It is OK if the tools are equivalent. Sort of like only using metric tools on your car. It is wrong if you can't use the best tool for the job and there are no reasonable alternatives (sort of like having a wrench when you need a screwdriver).

    This type of micro-management usually fails because herding programmers is like herding cats. Programmers work best when they can creatively solve problems. They work worst when they are forced into a suit-mentality.

    1. Re:Depends by twatter · · Score: 5, Interesting

      It's lame to reply to myself, but I forgot something re: development tools.

      Don't dictate what your developers use, if it's possible. Case in point: In my current company we are building a VB.NET web application. There are six developers and five of us use Visual Studio, but the tech lead does not, he uses VIM. I was amazed by this, but after seeing him wrangle some text with that thing, I can see the value over an IDE, although I still prefer its warm confines because I've come to rely on the bells and whistles.

      BUT, this works only because he has a build system where he does not rely on the VS project files, only the source code, resources, images, etc. The end result is the same as if you had compiled the thing inside Visual Studio, except that you used only the compilers. This is very cool, and while I don't fully understand the build files, I can see how that's a definite advantage. The scripts even pull the source off CVS and everything.

      My point I guess is that you shouldn't tie yourself to development tools, if possible. That's just common sense, and at the same time you'll allow developers to use the tools they prefer. That makes for happy developers.

      Maybe one of these days I'll try VIM or EMACS, or maybe I'll just stick with the IDE. But at least I know I have the option.

    2. Re:Depends by SerpentMage · · Score: 1, Insightful

      The tech lead is an S&M friend! Give me a freaken break!

      I use VS and Reshaper and am extremely productive. If I was using Java I would use Eclipse which is the same as VS and Reshaper combination.

      The need to show "how good you are" with VIM is extremely lame!

      Having developed for several decades I actually see the point of the standardization. That way you will not have one developer come in with their "latest and greatest" language that HAS to be used since everything else is so lame!

      And if people don't like it they can leave...

      Of course this goes on the assumption that dev had some input on the toolset, which is the case with half decent companies.

      --

      "You can't make a race horse of a pig"
      "No," said Samuel, "but you can make very fast pig"
    3. Re:Depends by setagllib · · Score: 1

      I agree, even though I am very handy with vim, I wouldn't use it for a large project in, say, Java when I could use Eclipse instead. Eclipse has much much more advanced features and it really "gets" how Java projects are developed. I still write build and distribution gantries even for Eclipse projects, just to maximise automation and control for the products themselves. And sure, I'll write those gantries with vim, just like most short scripts.

      --
      Sam ty sig.
    4. Re:Depends by Forbman · · Score: 2, Insightful

      Your company probably has all those RDBMS because somewhere along the line they bought an accounting package, say, that runs on Sybase. No, let's get real, Oracle Financials. HR somewhere got onto a package like Lawson or JD Edwards, because Oracle HR was too bloody expensive and the moneybags did not want to pay any more for Oracle DBAs than they have to. So it's Lawson or JDE on Sybase or SQL Server. And then maybe there was some budgeting, forecasting or other Enterprise-y application (say, data warehousing/datamart, business "intelligence", etc.), and because of the extortion being paid to keep various beta-level versions of Oracle Financials, along with all the in-house customization done on top of those, even though your company might have an enterprise-ish license, no one will give any authorization to do development against Oracle, and to a lesser extent, Sybase/SQL Server.

      MySQL would indicate that there is a fondness for this Fine System for web application internet/intranet development, too. Plus, the licensing is nice, and the hardware costs are...well...they're commoditized, so it's easier for someone to say, "Hey, I need a database for this spec", and someone says, "OK, I'll build you a server on this fine '486 box to run it", rather than figuring out whether the SunFire box with the Oracle database on it can handle some more ad hoc querying for reporting and relatively light I/O.

      Hey, I wonder if you have an AS/400 box or two running DB/2-based apps somewhere?

      Don't worry about it. Most companies are a mish-mash of one Really Important Database system (usually whatever runs accounting and AP/AR), and a bunch of lesser tiers of RDBMS and servers, down to and including MS Access-based key applications...

    5. Re:Depends by Forbman · · Score: 2, Informative

      The need to show "how good you are" with VIM is extremely lame!

      Well, you're thinking that the VIM guy really gives a tit what everyone else thinks. If he still codes 2x-20x what all the IDE people use, and he's happy, and his code works, he's not going anywhere soon.

      I've worked with more than a few crack developers who can hunt-and-peck faster than I can touch type, which isn't slow... Oh, they happened to know as much of the internals of the business as the business people did...

    6. Re:Depends by IntlHarvester · · Score: 1

      A lot of times it's political or budgetary too.

      "Man those Oracle DBAs are assholes! Just install MS-SQL over there, so we can get started."

      Of course in the long run, the MS-SQL server is going to end up parked right next to the Oracle one with the same DBA team looking over it.

      --
      Business. Numbers. Money. People. Computer World.
    7. Re:Depends by bogeskov · · Score: 1

      > Don't dictate what your developers use, if it's possible.

      Which reminds me... At the company I (still) work for, there has always been a relaxed atmospear regarding dev environment. Vi(m), (x)emacs, eclipse aso. But we had a standardization company come around once a year. And they kept telling us that we really should select one environment. That repeated for a couple of years, until a collegue (has now moved om to greener pastures) asked him, if he had ever tried to tell a carpenter "only one hammer"? That shut him up for a while.
      Now the company has given up on the "standards body", since it was a hassle, and gave absolutely nothing back. The only good "financial optimization" they've done.

      --

    8. Re:Depends by smellotron · · Score: 1

      he uses VIM... I can see the value over an IDE

      What about vim makes you think it's not an IDE?

    9. Re:Depends by JNighthawk · · Score: 1

      Because vim is only an editor, not a total environment. It doesn't have a compiler/linker/debugger attached.

      --
      Wheel in the sky keeps on turnin'.
    10. Re:Depends by meadwizard · · Score: 1

      You can have both. There is an add-in for VSS that provides vim like editor functionality inside the IDE - its called VIEMU. (Not affilicated - just really like the product.)

    11. Re:Depends by Just+Some+Guy · · Score: 1

      I use VS and Reshaper and am extremely productive. If I was using Java I would use Eclipse which is the same as VS and Reshaper combination.

      The need to show "how good you are" with VIM is extremely lame!

      Whereas your need to show "how good you are" with VS is extremely cool and attractive to women.

      --
      Dewey, what part of this looks like authorities should be involved?
    12. Re:Depends by Just+Some+Guy · · Score: 1

      Because vim is only an editor, not a total environment. It doesn't have a compiler/linker/debugger attached.

      It doesn't? I'm an Emacs guy, but even I can admit that Vim folks can do neat things with their cute little editor.

      --
      Dewey, what part of this looks like authorities should be involved?
    13. Re:Depends by Veretax · · Score: 1

      in a world where not everyone can design software with free Open Source Software, it is impossible for a company to provide different tools for the same job to different people like that. The costs of IDEs in particularly Microsoft IDEs are just too high. I'm sorry, but I'm a manager, and my project is developing on .Net Framework X.X. If you want the job you have to use the tools I supply.

      Now if you find a third party application or controls package that works within those confines, then I'd consider it, but I'm not going to go bust my tail or my IS staff to maintain systems with such vast arrays of development software on it.

      The Cost Factor alone is enough to discourage such. Now if there are systems to do things differently using the same framework and the cost investment in said tool is minimal in the long run, then sure I'd probably allow it, but when you have a team of 16 developers. You can't have 8 Coding .Net, 2 on ANSI, 1 on Java, 3 on Flash, etc, unless there is a good mechanism to make all of those technologies work well seamlessly enough.

      Now its true, that there are some technologies, particularly where web applications are concerned. That can be leveraged to get more out of what you are doing, but in the end I'm going to provide a standard tool set developers. If I know I need Flash Developers on a project, I will provide them flash, not Silver light, or some other sort of tool. It just would not make any sense, never mind that you can't let programmers have too much say over the tools and hardware they have because we are not coming at this from the business angle most times. That would only result in more cost overruns and delays in fixing bugs and releasing the final product.

    14. Re:Depends by Jaime2 · · Score: 1

      You do know that since the beginning, Visual Studio used the free compilers that come with the framework, right? Also, for the past three years, the whole build process has been under the control of msbuild.exe, a framework component, not the development environment. Add a splash of NANT and you can pull the source files from CVS, SVN, or VSS.

      On a side note, I'm all for not forcing tools. But, I worked with a developer that used a different text editor from everyone else. I didn't have a problem with it being "different", but he had it set to beautify all code it loaded. I nearly had to kill him. Any code Steve looked at always failed to merge properly.

      The devil is in the details. Just standardizing on a toolset won't necessarily solve your problems, and not standardizing won't necessarily cause any problems. In my opinion, standardizing a toolset is pretty far down the priority list, maybe just above setting variable naming conventions and just below setting a standardized chair height.

    15. Re:Depends by rikkitikki · · Score: 1

      What are you talking about? That's precisely how I use vim (actually gvim + clewn). :make will invoke make to do the build. if you have any errors, VIM will jump to the file/line where the error occurred. I can bring up a window with the list of errors and go to each one. Clewn acts as an interface between vim and gdb. So, I can single-step through source code, set breakpoints, look at variables/watch points all from within VIM.

    16. Re:Depends by smellotron · · Score: 1

      Other posters commented on how vim is well-integrated with make and other development tools. Granted, the toolchains may be separate, they do fit together. With Visual Studio, the build toolchain is packaged along with the editor. But if you look under the hood, it's not that difficult to split apart the toolchain and make Visual Studio work in a foreign environment. The only major difference at that point is that Visual Studio comes with a GUI for configuring your compiler/linker settings, and vim doesn't... and that's more of a cultural difference than anything else.

    17. Re:Depends by mebrahim · · Score: 1

      I usually use Vim for coding.
      Some day I needed an IDE for Java development. I tried Netbeans plus jVi plugin (Vim-like editor for Netbeans) and loved it so much.
      Unfortunately I couldn't find a comparable plugin for Eclipse. Please tell me if you know one. [First make sure you know jVi ;)]

    18. Re:Depends by twatter · · Score: 1

      He gets the job done as well as we do with VS, or better. So I don't see the problem.

  3. App Size? by iamhigh · · Score: 0

    I think it depends on the size of the app. Small and maybe mid-sized businesse apps would be able to get away with such a requirement, as their apps will probably not be pushing the limits of modern computers (and hardware upgrades are cheaper than software optimization). Enterprise apps should probably be done with the best tools available.

    --
    No comprende? Let me type that a little slower for you...
    1. Re:App Size? by Ethanol-fueled · · Score: 1

      Dev C++ FTW.

    2. Re:App Size? by FishWithAHammer · · Score: 1

      I hope that was a joke.

      --
      "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
    3. Re:App Size? by Spy+der+Mann · · Score: 1

      Dev C++ FTW.

      What? You haven't heard of CodeBlocks?

    4. Re:App Size? by Ethanol-fueled · · Score: 1

      It was. I also recommend JCreator for Java. Fuck NetBeans and Eclipse.

    5. Re:App Size? by lgw · · Score: 1

      Exactly. My company creates both web apps and file system drivers (and many levels in between). The drivers can only be written in C. Wasn't these a recent /. article about C being the next big language for web apps? Somehow I don't think so.

      Heck, just trying to find anyone to hire who knows both modern C++ (as opposed to typing C code into a cpp file) and Windows to hire is alread driving me insane. If we had to worry about people being shifted to totally unrelated problem domains we'd never get anyone hired, let alone anything done!

      --
      Socialism: a lie told by totalitarians and believed by fools.
  4. EPIC FAIL! by Anonymous Coward · · Score: 0

    Someone already tried that whole "One tool to rule them all..." bit. (Just remember, the last guy died)

    You. Lose.

    1. Re:EPIC FAIL! by EEPROMS · · Score: 4, Funny

      So you have tried emacs too huh.

    2. Re:EPIC FAIL! by zobier · · Score: 1

      RMS is dead?!

      --
      Me lost me cookie at the disco.
    3. Re:EPIC FAIL! by dotancohen · · Score: 1

      RMS is dead?!

      I'm still looking for the Nancy Reiser reference.

      --
      It is dangerous to be right when the government is wrong.
    4. Re:EPIC FAIL! by thephotoman · · Score: 1

      Nope. He's still very much alive, thankfully.

      --
      Haec merda tauri est. Ceterum censeo Carthaginem esse delendam.
  5. Answers to your 3 questions by winkydink · · Score: 4, Insightful

    1. Slashdot will think that you should be able to use anything you damn well please as long as it's Open Source.

    2. Yes, especially if the people who sign you paycheck tell you that's what you have to do.

    3. Maybe. A lot depends on how well the team is managed.

    --

    "I'd rather be a lightning rod than a seismometer." -Ken Kesey

    1. Re:Answers to your 3 questions by Anonymous Coward · · Score: 0
      > 3. ... A lot depends on how well the team is managed.

      Good point.

      We'd go with: http://extremeprogramming.org/ (or the like)

    2. Re:Answers to your 3 questions by ryan.onsrc · · Score: 1

      1. Slashdot will think that you should be able to use anything you damn well please as long as it's Open Source.

      I own a personal license for IntelliJ IDEA, and have been more productive with it than I ever would have hoped with to be with Eclipse or Net Beans (which I have also had a lot of experience with). Thus, IMHO, the "as long as its Open Source" requirement is far too restrictive (especially if the employee, such as I, has fronted the cost for it).

      2. Yes, especially if the people who sign you paycheck tell you that's what you have to do.

      I would expect that whatever software shop I am working for to be interested in my ability to write effective software. This require my willingness to learn new languages and adapt to new frameworks. But, since most software teams tend to share only source code and build files - the particular IDE that a given developer will usually have no impact on the team. Of course this means that if I, for example, run into a problem with IntelliJ: it is my responsibility to resolve it, despite the fact that most of my coworkers aren't using it. There are, of course, software teams that are necessarily tied to a specific IDE. Teams that invest in building IDE specific plug-ins, and language-tool companies such as Source Gear or Genuitec would be examples.

    3. Re:Answers to your 3 questions by Jurily · · Score: 5, Insightful

      1. Slashdot might as well think that you should be able to use anything interchangeable enough not to make a difference in the long run. Emacs vs. vi comes to mind.

      2. The people who sign the paychecks hired you because you know what you're doing, not to be an interchangeable code monkey in need for micromanagement. (Right? If not, RUN!)

      3. If you don't "force" the devs to use tools they hate, this is not an issue. If you do, there is no "time saved" to speak of, and management can do nothing about it.

    4. Re:Answers to your 3 questions by kramer2718 · · Score: 2, Insightful

      1. Slashdot will think that you should be able to use anything you damn well please as long as it's Open Source.

      There is nothing wrong with standardization, but it shouldn't be taken too far. For instance, worked at a Java shop on a project that automated deployment of new software which occasionally meant deploying a new version of a JVM. Since much of the deployment code had to run on the server where Java was being deployed to ... well Java wouldn't be an appropriate choice.

      2. Yes, especially if the people who sign you paycheck tell you that's what you have to do.

      Yes, everyone should in the end listen to the dude signing his paychecks. That misses the point entirely which is "what are the best business practices for a software company?"

      3. Maybe. A lot depends on how well the team is managed.

      Sure. If it is managed well, then the management types will for the most part stay out of the decision making process. The choices of programming technologies a company chooses should be chosen mostly by Software Architects not by Management. Managers (at least at most companies) are not qualified to choose languages.

      At my current company, there is a standard process for certifying a new piece of computing technology (whether it be a 3rd party library or an entirely new language). This involves review by the architecture team as well as performance profiling and other analysis. In the end managers have to sign off on the price and the license, but they are guided heavily by technical experts.

    5. Re:Answers to your 3 questions by pla · · Score: 1

      Slashdot will think that you should be able to use anything you damn well please as long as it's Open Source.

      If a viable FOSS solution exists, why pay more for less?


      Yes, especially if the people who sign you paycheck tell you that's what you have to do.

      If you write nothing but crappy apps targetting a single platform, that works (though I still consider it suicidally stupid to deliberately cripple your best people for the purpose of pissing them off by treating them as interchangeable cogs). If, however, you occasionally need to write firmware, good luck using Ruby on Rails. Likewise, if you occasionally need a web app but usually focus on Win32, welcome to a world of hell, brought to you by trying to squeeze Visual Studio into a niche best filled by FOSS solutions.

      When upper management leads the company in the business world, they can do at least some good. When they start dictating policies relating to skills they can't even pretend to understand, time to find a new job, because the current one will soon vanish (after a long and painful downhill ride that they will, of course, blame on the people who actually need to live with their "policies").



      Maybe. A lot depends on how well the team is managed.

      Maybe indeed... As I said, if you only ever do a single type of coding, you might get away with a single standardized tool.

      Realistically, however, you don't win a marathon by cutting off all non-right feet.

    6. Re:Answers to your 3 questions by Savage-Rabbit · · Score: 4, Insightful

      1. The people who sign the paychecks hired you because you know what you're doing, not to be an interchangeable code monkey in need for micromanagement. (Right? If not, RUN!)

      2. If you don't "force" the devs to use tools they hate, this is not an issue. If you do, there is no "time saved" to speak of, and management can do nothing about it.

      Whether your statements are true really depends on whether you are running a software company as a business or as a private playground for developers. Micromanagement is bad, but no management is worse. In my experience it pays off to compromize, i.e. to give developers some freedom but at the same time subjecting them to certain rules. Leaving a bunch of software nerds 100% free to do what ever they want is a major mistake. I have had dealings with companies that failed to effectively supervise their developers and the result was usually a mess. The developers working on different components of major projects went for radically different technologies that often caused major problems or even turned out to be partly or even completely incompatible. Often they seemed to do this simply because they had never written anything in, say, Ruby and wanted to try it out. There seemed to be no concern for whether Ruby was actually the best choice for their project. Not that there is something essentially wrong with Ruby, sometimes it just isn't the best choice. Another wonderful side effect of this policy is that you end up with a portfolio of products written in an ever growing set of languages: java, .net, perl, php, ruby, c, c++ and delphi..... It's kind of like a hauling company having a fleet of 30 trucks where no two were made by the same manufacturer because they have a policy of letting the truckers choose their rides at will. There are benefits to be had from standardization of equipment. In the end even a Software company is a business and it will benefit from standardizing on certain tools and languages. It minimizes lead-in time for new developers, makes it easier to replace developers who have left the company.... the list goes on.

      --
      Only to idiots, are orders laws.
      -- Henning von Tresckow
    7. Re:Answers to your 3 questions by Alphasite · · Score: 1

      1. Maybe.
      2. Just because someone pays for something doesn't mean that something is good or appropiate.
      3. In my experience, no matter how hard you try, for a lot of situations is better to learn how to use an screwdriver than start hitting the screw with your well learned hammer.

      As a final note:

      When management says something is "good" and the whole company should use it you have a clue that something won't be good, won't save money and will produce headache to the most people possible.

    8. Re:Answers to your 3 questions by ivan256 · · Score: 1

      If the people who sign my paycheck stop respecting my professional opinion and do whatever the management book-of-the-week-club's latest title says instead, it won't be long before somebody else is signing my paycheck. There is a time and a place for shutting up and doing what the authority figure tells you to do. If what they're saying is in contrast with your responsibilities, you should stand up and say something. Partially because it's your responsibility to get the job done, but mostly because if you're forced into a position where you can't do your job to the best of your ability it will reflect poorly on you and have a negative impact on your career.

      Of course, if your job doesn't involve recommending tools, or making design decisions, then yeah. Shut up and use the tools you've been given or you're going to get fired.

    9. Re:Answers to your 3 questions by srussell · · Score: 1

      Leaving a bunch of software nerds 100% free to do what ever they want is a major mistake.Leaving a bunch of software nerds 100% free to do what ever they want is a major mistake.

      The point here is that what the OP is describing is micromanagement. Every time I've seen this, it is because Management doesn't really know what they want, but whatever it is, they aren't getting it. So they cast about for solutions, or they get recommendations from people who really don't know shit but think they do.

      There are two, entirely unrelated, issues here: requirements and risk management. Generally speaking, if the requirements are clearly defined, then the tools and the processes that are used to develop the solution is irrelevant to the goal. If you have clearly defined requirements (and a way of iteratively managing, updating, and clarifying them), then given a halfway decent team of developers, you can let them choose their own architecture, tools, process, development environment, and working hours; or even whether or not their in the office most of the time. This is a goal oriented philosophy, and it works perfectly well for a number of environments in the few companies that employ it (BestBuy being one of the most notable). There are a number of environments where it doesn't work, but software development is one where it does work.

      The other issue is risk management, and while this is important, IME management spends way too much time worrying about this, and it results in far more micromanagement abuse than any other single factor. Risk management controls things like how difficult it will be to bring on new developers (e.g., choosing an obscure development language may make this more difficult), how much it will cost to maintain the product, and so on. Risk management should be considered, but by and large, when risk management is addressed the decisions are often made by the worst possible people in an organization -- ones who know a little about a subject but don't have any real depth and are too busy to look deeper into a product than just the shiny brochure. This is almost always how IBM Rational products are chosen in an organization: almost never by the people who have to use it. These decisions are almost always counterproductive.

      --- SER

    10. Re:Answers to your 3 questions by 7+digits · · Score: 1

      For instance, worked at a Java shop on a project that automated deployment of new software which occasionally meant deploying a new version of a JVM. Since much of the deployment code had to run on the server where Java was being deployed to ... well Java wouldn't be an appropriate choice.

      I don't understand. You should obviously have your deployment code use a separate JVM instance, which would not get upgraded when deploying a new JVM for the business apps.

    11. Re:Answers to your 3 questions by Lodragandraoidh · · Score: 1

      I think it would be universally recognized that letting non CS/Developer managers pick tools is a bad thing...

      --

      Lodragan Draoidh
      The more you explain it, the more I don't understand it. - Mark Twain
    12. Re:Answers to your 3 questions by Haeleth · · Score: 1

      You're only looking at the choice of technology, though.

      I think we'd all agree that letting developers have totally free choice of the underlying techologies is a bad idea, though it's probably not appropriate to insist on one single technology, because that just won't work unless your company has a very narrow focus -- there is no single technology that is a good choice for both web apps and number crunching! But, yes, of course it makes sense to draw a line around maybe two or three languages, and say: you will use one of these, unless you have a very strong business case.

      The same goes for a lot of other things that impact on multiple developers, such as source control, build systems, etc -- only more so, since in these cases a single technology will probably suffice.

      However, there are cases where standardisation is not appropriate. For example, I can not conceive of any possible justification for forcing all your developers to use the same code editor. (You might reasonably decide not to support non-standard editors, and to encourage the use of a single environment, but mandating one would not provide any obvious business benefit.)

  6. no by Anonymous Coward · · Score: 0

    If management insists on standardizing on one language it will likely be something like Java, C#, or Python. These languages are jack of all trades, master of none.

    1. Re:no by dvice_null · · Score: 1

      C# is not good for cross platform development. And Java can't be used to make small quick scripts (because startup time is so slow). None of those can be used for making low level drivers or embedded software with strict requirements.

      I think C is the best option, but in general the whole idea of using just one language is stupid, because making e.g. a small dynamic website with C requires a lot more work than it would require with e.g. PHP. Even it is possible.

      Unless they are focusing on very small area in software development, they will only lose money if they use only one language.

    2. Re:no by ThaReetLad · · Score: 1

      Cross platform is still a WIBNI, rather than a real requirement. More than 90% of internet users are on windows, and about .7% on linux, with the vast majority of the rest on mac. The linux users can use Wine, and the mac users have boot camp. If you want to target your software at the largest possible market, write for windows.

      --
      You can't win Darth. If you mod me down, I shall become more powerful than you could possibly imagine
    3. Re:no by pdusen · · Score: 1

      No, the "largest possible market" is cross-platform, as that usually includes Windows, Mac, and Linux, and these are pretty much the main players (even with a large lead for Windows).

    4. Re:no by orasio · · Score: 1

      Java is the answer to any question.
      It's the most portable embedded solution, where it matters to be portable.
      Slow startup times with java not an issue. They are not really slow to start with, for quick scripts it's good enough. For time sensitive production environments you can always compile it with GCJ. I mean, that is if you actually commit to using Java.
      It's not that bash or perl load that much faster than Java.

    5. Re:no by bcassol · · Score: 1

      No, 42 is the answer to any question.

    6. Re:no by Anonymous Coward · · Score: 0

      Java + Groovy/Jruby/Jython is probably a better answer. Groovy is probably easiest to sell because all valid Java code is also valid Groovy.

  7. Make sure it's not a half-assed standardization by locokamil · · Score: 1

    Well, as long as your approved toolkit contains a sufficient variety of tools, there shouldn't be any problems. Make sure you aren't writing file crunching applications in C... there should be a quick and dirty language (perl? python?) available for analysis/protyping/instrumentation.

    Oh yeah, everyone should use the same compiler and/or interpreter. There is nothing more annoying than attempting to reuse code that has been written for the .NET 2.0 framework when you are limited to the 1.0 environment.

  8. Standardize the RIGHT tools by AKAImBatman · · Score: 4, Insightful

    Management invariably tries to standardize the wrong tools because they have no idea how software development works. They think in terms of the IDE as "the tool set" rather than the MAKE or ANT build systems, compiler toolchain, version control, and other behind the scene tools.

    If you want the standardization to go well, make sure the build tools are standardized. Once anyone can build the project (IDE or no), it won't matter what the "standard" IDE is. (Unless it's Rational Application Developer. That's just a piece of shit right there. Universally agreed upon.) Developers will still download their own editor or IDE tools to make themselves happy without disturbing the greater whole.

    1. Re:Standardize the RIGHT tools by CodeBuster · · Score: 4, Interesting

      Subversion + Ant + CruiseControl = source control with fully automated builds and reporting and it's free (as in beer).

    2. Re:Standardize the RIGHT tools by visualight · · Score: 3, Insightful

      Now that's logical, exactly the right answer. They'll never buy it though, unless you can write book about what you just said, and invent a catchy new buzzword to describe the concept. Something like Dev 2.0..., or better maybe an acronym, like PEAT

      --
      Samsung took back my unlocked bootloader because Google wants me to rent movies. They're both evil.
    3. Re:Standardize the RIGHT tools by mysidia · · Score: 5, Insightful

      Project management tools: version control, bug tracking tools, etc. Are important, and should be mostly standardizable without impacting upon any project.

      These are supporting tools, but your version control system is not a development tool like your compiler or IDE is. (It's more of a development tool like Visio for making your UML diagrams or Word for making your documentation is).

      Adjunct tools are all readily standardizable, and useful to standardize (everyone uses Visio or uses DIA, or Poseidon -- so everyone can read your files), just stay away from the language the code is written in and the exact tool used to type it.

      It makes sense, even to use a common repository for all projects, and one private web site to track bugs for all projects (divided into their own categories/administrative domains, of course)

      Just don't standardize on windows-specific tools like VSS or SG if platform development is mixed (I.E. some software needs to run on other platforms), or use version control that has to be IDE-integrated.

      Unfortunately, many developers rely on their IDE like a crutch and need it to be able to build things for them.

      They are particularly fond of tools like Visual Studio that try to do everything, even decide how building will work

      Build processes are inherently project-specific and depend on which files need to be compiled and which libraries need to be linked.

      Builds are not much more standardizable than choice of language.

      But should be standardized for each project. I.E. Everyone working on a project using language X, should use the same compiler, so developers will have consistent results.

      And there should be standardized (non-conflicting) build tool installs for various projects that use build tool X, so again, there are consistent results when different developers attempt to run a build on their workstation.

    4. Re:Standardize the RIGHT tools by dlanod · · Score: 2, Insightful

      It depends on the scale of "company-wide". This would be absurdly stupid for a large multinational, or even large national, because they inevitably cover such a wide range of areas where software development may take part. Think Sony - PS3, movie DVDs, games, interactive CDs, all being written with the same set of tools. They would be gimping themselves from the start.

      However, in a smaller company of a few teams within a single location and working on similar projects (e.g. all application development), this can greatly aid general understanding of code, code re-use, etc. So there are definite benefits in that situation.

      The net answer would be the obvious "it depends". There aren't enough details on the circumstances in this case to make a decision. A lot of people will jump on it and deride the management for these dictates, but they can definitely make sense and provide benefits in some situations.

    5. Re:Standardize the RIGHT tools by Fred+Foobar · · Score: 5, Informative

      That combination is better than just free as in beer... it's also free as in free speech! Subversion, Ant, and CruiseControl are all Free Software.

      --
      It was a really good paper.
    6. Re:Standardize the RIGHT tools by forkazoo · · Score: 3, Funny

      Developer Centric Individualized Standardisation.

      Look forward to my upcoming book on the subject:
      Development 2.0 : Practical Perfection With The "DeCISt" Paradigm in the Enterprise.

      Seriously, a year or so ago, a friend of mine and I were just about ready to write a book about the benefits of procedural programming in C using a simple text editor, and then just buzzword the shit out of it and hype it up like Xtreme Programming and such, and pretend it was a new revelation. For the life of me, I can't remember what we were going to call it. Something like the Post Object Paradigm, or Modern Objectless Development, or some such shit. We would have made millions if we weren't lazy asses.

    7. Re:Standardize the RIGHT tools by Anonymous Coward · · Score: 0

      They'll never buy it though, unless you can write book about what you just said, and invent a catchy new buzzword to describe the concept.

      I think you're on to something there. The book's not a problem, how many PHB's actually read the books they buy on software development? I'll write the book by just writing 'I am a fish' 40,000 times and getting it published. Next we need an acronym, how does this sound?

      Never
      Overdo
      The
      Stupidity
      Hubris
      Ignorance or
      Tosspottery

      If we can just make those PHB's think when they're overruling their technical staff, 'Hold on, maybe it's me who's being an arrogant git. Maybe I should listen to these experts and we should standardise on a toolchain, not just an IDE/language.' Maybe we can change their minds, or maybe the acronym for PHBs should just be: STFU?

    8. Re:Standardize the RIGHT tools by bishiraver · · Score: 1

      Not to mention it can interact with unit testing frameworks for java, c#, javascript, etc. Jawsome.

    9. Re:Standardize the RIGHT tools by daemonburrito · · Score: 1

      I can't tell if you're making fun of Extreme Programming proper, the way it is defined here: Fowler tract.

      It strikes me as pretty cool... Just an unfortunate name.

    10. Re:Standardize the RIGHT tools by Anonymous Coward · · Score: 1, Informative

      For a real nice cross-platform build system with more of a C++ bias, check out CMake + Dart. I've recently been forced into developing on a Windows desktop rather than Linux. I've got everything running smoothly under cygwin, including nmake VC++ (one of CMake's targets) builds from within emacs.

    11. Re:Standardize the RIGHT tools by forkazoo · · Score: 3, Funny

      I can't tell if you're making fun of Extreme Programming proper, the way it is defined here: Fowler tract.

      It strikes me as pretty cool... Just an unfortunate name.

      I was making fun of extreme programming. Honestly, I don't have a problem with it. It is just one of those things that, if you investigate the core philosophy, is all eminently reasonable, and is something that evolved to address real world concerns. OTOH, if you move beyond the core philosophy and talk to some of the narrow minded ideologues and idiotic buzzwordologists, then extreme programming can move from something perfectly reasonable to being something perfectly in need of being made fun of! :)

      My only real issue is all the hype that surrounds "XP" and "agile development" such that some of the virtue gets lost of the noise of "exciting" and "new." If I could pull off that kind of buzz for Xtreme Classless Proceduralism, I'm sure that PHB's everywhere would be lining up around the block to learn new and exciting ways to force their developers to upgrade to my special 800 dollar version of vi, so that they can code in new and exciting C.

      Which reminds me, I also need to figure out someway to write a book about a paradigm called "Write Once, Run Once" to promote development of incredibly unreliable code.

    12. Re:Standardize the RIGHT tools by rve · · Score: 2, Interesting

      Management invariably tries to standardize the wrong tools because they have no idea how software development works.

      Hmmm, in my experience at several small and large companies, management tends to leave Tech management to Tech managers, who tend to know very well how software development works. Their reasons for making choices you don't agree with may well be sound and rational, or forced by circumstances. They usually don't just have your to consider, but all the other projects, as well as future projects and still supported projects from the past. Hiring and training is very expensive.

      You may save development time for individual projects by using the best tool for each job, but waste a lot of time and expertise constantly having to train project members. A set of standards may not be ideal for any individual project, but the best choice for the organization as a whole.

      Firing the entire COBOL team, scrapping the mainframes, and hiring a few dozen Linux gurus for a complete re-write from scratch in ruby-on-rails is probably not the sound and rational choice either.

    13. Re:Standardize the RIGHT tools by jgrahn · · Score: 2, Insightful

      Management invariably tries to standardize the wrong tools because they have no idea how software development works. They think in terms of the IDE as "the tool set" rather than the MAKE or ANT build systems, compiler toolchain, version control, and other behind the scene tools.

      If you want the standardization to go well, make sure the build tools are standardized. Once anyone can build the project (IDE or no), it won't matter what the "standard" IDE is. (Unless it's Rational Application Developer. That's just a piece of shit right there. Universally agreed upon.)

      Rational sell IDEs now? Uh-oh ... *curls up in fetal position*

      Developers will still download their own editor or IDE tools to make themselves happy without disturbing the greater whole.

      You're right, of course. With Emacs and Vim, you can have editor wars during coffee breaks, then go back to your editors of choice and work on the same code ...

      But all this assumes that someone makes sure no moron ties the build system tightly into a specific IDE. And IDEs love to offer plenty of opportunities for this, and people who are in love with their IDE think this is the way it should be.

    14. Re:Standardize the RIGHT tools by ripper234 · · Score: 2, Informative

      Please don't talk to me about CruiseControl. Yes, it's free, but the competition is superior. Try JetBrains' TeamCity for a really great build system. Also free within certain limitations (3 build machines, 20 builds) - and much more professional.

    15. Re:Standardize the RIGHT tools by dredwerker · · Score: 2, Funny

      I thought you meant - write it once then run out the door to the next job once.

      --
      On a long enough timeline. The survival rate for everyone drops to zero. Chuck Palahniuk, Fight Club, 1996
    16. Re:Standardize the RIGHT tools by tubs · · Score: 1

      So which part of Lamp won't go to 100m a day?

      Is it the "L", the "A", the "M" or the "P"

      Or do you just mean the whole "LAMP" roll up, but their fine if put together in a custom type way (database on differnent servers, load balancing etc)

      --

      try to make ends meet, you're a slave to money, then you die

    17. Re:Standardize the RIGHT tools by dotancohen · · Score: 1

      Something like Dev 2.0..., or better maybe an acronym, like PEAT

      People Eating Another Toolkit?

      --
      It is dangerous to be right when the government is wrong.
    18. Re:Standardize the RIGHT tools by Aceticon · · Score: 2, Insightful

      I've worked in a situation where behind the scenes tools where standardized but not IDEs.

      There are a couple of issues when everybody has their own IDE, mostly to do with being able to help each other out (when you have to go help a colleague with a piece of coding or debugging but you have trouble working with their IDE) and with setting up the project or new project features (5 IDEs means 6 places to change - each IDE plus the main build - and thus 6 different sets of possible problems and there's always somebody that has trouble setting up a specific feature in their IDE). Also often enough you don't want multiple sets of (possibly conflicting) project configuration files in your source control, which in turn might means that a lot of time is wasted when somebody looses their configuration.

      Your point is indeed correct that standardizing your build tools, version control and other behind the scenes tools is THE most important thing, not IDEs.

      However, standardizing IDE does bring visible benefits and any half-competent developer which is not a prima donna is capable of adjusting him/herself to work with whatever tools are available.

    19. Re:Standardize the RIGHT tools by Anonymous Coward · · Score: 0

      At least replace Subversion by Git and, if possible, Ant by autoconf.

    20. Re:Standardize the RIGHT tools by Standard+User+79 · · Score: 2, Informative

      oh you mean flickr? facebook? etc... I am no fan of php but once when I hear someone say how only such and such frameworks scale I know I am talking to a lightweight.

    21. Re:Standardize the RIGHT tools by johannesg · · Score: 1

      (Unless it's Rational Application Developer. That's just a piece of shit right there. Universally agreed upon.)

      In fact, just stay away from anything that includes the word "rational" in its name. They are a collosal waste of time.

      My boss and I have an understanding. It goes as follows: in general, of course, I do what he tells me to do. However, he won't tell me to do pair programming and he won't tell me to use code generation tools such as Rational Rose. In return, I won't bring a machine gun into the office and slaughter all of my colleagues.

      So far it is working out for both of us.

    22. Re:Standardize the RIGHT tools by Anonymous Coward · · Score: 0

      Far more dangerous are the architects.

      They feel that it is their job to set these corporate standards, they have the political savvy and clout to sell it to management, and although they have a technical background, in general it was a long time ago.

      Unfortunately, they tend to believe what they read. If someone writes that Ruby or Agile is 'teh schiznit', and has bullet points and a certain threshold of technobabble, architects will lap it up. Regardless of what the real world situation is.

      Management hires this layer of people to advise them on the technical merits. Don't blame management, blame the Grand Vizier.

      Not all architects are bad, btw. I've met architects who know the business inside and out, who are fantastic at what they do. They tend to be more open minded when it comes to technology.

      However there are just as many bad ones out there, who get sucked in by the hype (sizzle sells), and who don't care and/or don't know about what really serves the interest of the company.

      -----

      With respect to the original question, should you stay or should you go, depends on how you feel about the language. If for instance it is Cobol, and you don't want to learn Cobol, then yes, jump ship.

      If it is Java, I'd say stick around. It might not be as hyped as some older languages (such as Ruby - what, you didn't know that Ruby was older? Tch), but it is a solid, dependable language that has proven ability to deliver (unlike... for example... Ruby). The problem with Java is there are some deplorable frameworks out there. I've seen some small projects that took half an hour to build because someone went "framework happy" and slapped in frameworks after framework, most of which were incompatible with each other, and then you spend more time doing integration work than development. But here's the 'real world vs Architecture' issue. If it takes more time to massage the framework to get it to work than the time it saves you, then the framework is a providing a net negative return on investment.

      If its Perl and you don't already know Perl, I'd say quit now and stay at home working on your CV tomorrow. Run, don't walk away from that one. Most likely if you are the sort of person who will enjoy Perl then you'd already know it.

      If it is .Net, then the situation is similar to Java, except that you have more freedom (choice of languages, it will be easier to slip your favourite in there if you wrap up all your stuff as components). Java also has a bunch of languages which run on its runtime (JRuby, Jython, Scala etc), but they are harder to 'sneak under the radar'. Of course the drawback is you then hand your soul on a plate to Microsoft, with a side order of your balls, and they own you forever from that point on.

    23. Re:Standardize the RIGHT tools by Anonymous Coward · · Score: 0

      CruiseControl sucks the hairy bird.

      Hudson to the max.

    24. Re:Standardize the RIGHT tools by mike_sucks · · Score: 1

      Oh, you are so massively correct I can't even begin to describe it.

      +âz, Insightful

      /Mike

      --
      -- "So, what's the deal with Auntie Gerschwitz et all?"
    25. Re:Standardize the RIGHT tools by tepples · · Score: 1

      Build processes are inherently project-specific and depend on which files need to be compiled and which libraries need to be linked.

      Why would a build process dictate those? Choosing which files get compiled and which libraries get linked is as easy as adding files to a list of files and libraries to a list of libraries, and then the IDE writes out the makefile from the template that you have chosen for the platform, not the project. (That is, unless you mean a "process" in this sense.)

    26. Re:Standardize the RIGHT tools by StatusWoe · · Score: 1

      Have a look at Hudson as a possible replacement for CruiseControl there too. I found it quite a bit easier to use and we have deployed rather large projects using it. It's also Free.

      --
      "drink deeply the illusion of your safety"
    27. Re:Standardize the RIGHT tools by chief_thrall · · Score: 1

      Are you suggesting business logic written in PHP can scale horizontally and vertically? I think not.

    28. Re:Standardize the RIGHT tools by chief_thrall · · Score: 1

      Btw, you cant scale at DB level only.

    29. Re:Standardize the RIGHT tools by rgviza · · Score: 1

      Unless vim or emacs is your ide 8) Then there's no download necessary.

      IDEs invariably give me a headache and create a bunch of unnecessary work whenever I'm forced to learn a new one. I don't bother now.

      Smile, wave, say "I love this Ouijia board!" to your boss, and get your real work done in the old standby. If it compiles, and you checked it in, nobody is the wiser.

      That way in 2 months when some busybody convinces your boss that "hey this other IDE pwns that IDE" and they buy it, then try to force it in you with no lube, you are above the fray and can continue being productive.

      I just keep it up with some convincing looking code. Whenever no one is looking, I go back to my terminal and continue being productive.

      Once in a while, to liven things up, I break it then go talk to one of the interns while the responsible numbnuts try to get the fancy IDE working again.

      Moral: Trying to make developers use the latest greatest IDE is like herding cats. You are better off spending that IDE money on the guy that wants it, and getting an espresso machine with a couple of years worth of cartridges for everyone else, using the money you'd have spent on all those licenses.

      Sometimes, the best things in life are free ; )

      -Viz

      --
      Don't kid yourself. It's the size of the regexp AND how you use it that counts.
    30. Re:Standardize the RIGHT tools by Anonymous Coward · · Score: 0

      Subversion + [...]

      Just don't use subversion. It's a piece of crap. Use mercurial or git instead.

    31. Re:Standardize the RIGHT tools by gauauu · · Score: 1

      Why would a build process dictate those? Choosing which files get compiled and which libraries get linked is as easy as adding files to a list of files and libraries to a list of libraries, and then the IDE writes out the makefile from the template that you have chosen for the platform, not the project. (That is, unless you mean a "process" in this sense.)

      This is true if you are doing a simple compile of your source files and libraries, and linking them. Not all projects are this simple, and may require their own build process. Yes, they could all use make, and yes, they may all use a fairly standard template, but there are all sorts of things that your build process might do other than compiling source files (such as generating code, converting assets, compiling multiple versions with different settings, running automated tests, various deployments and packagings, etc), which don't always fall under a standard template for a particular platform.

    32. Re:Standardize the RIGHT tools by Senjutsu · · Score: 1

      Why would a build process dictate those? Choosing which files get compiled and which libraries get linked is as easy as adding files to a list of files and libraries to a list of libraries, and then the IDE writes out the makefile from the template that you have chosen for the platform, not the project

      Unless you need to do something at all non-simple, like compiling some files, running custom tools against the results of that compile to generate yet more files, which should then be compiled and referenced during the compilation of yet a third set of files, etc, etc..

      Visual Studio is easily the most egregious example of an IDE with a fragile and brain-dead view of compilation. You put the pretty files into pretty lists and it compiles them, but it flat out breaks horribly if you try to do anything reasonably complex with its braindamaged build scripts.

    33. Re:Standardize the RIGHT tools by AKAImBatman · · Score: 1

      We are a C++/C# house. So Eclipse is out.

      (Emphasis mine)

      Thank you for proving my point.

      I can sympathize with the rest of your rant, but I can't help but get the feeling that you're approaching the situation wrong. Your reasoning smacks of "I don't like this solution, therefore I'll find excuses why it's bad". Which is something we all do at some point in time. None the less, the proper approach is, "We considered solution X and solution Y. We evaluated what it would take to make each solution work for us and decided upon solution Y because it had attributes A, B, and C that were desirable to our environment."

      Granted, the difference between those two may seem minor. But it's the difference between eBay scaling with dozens of Windows and Solaris boxes using IIS and iPlanet J2EE vs. Google scaling with thousands of unreliable Linux servers, all predicated on reliability built into the application.

    34. Re:Standardize the RIGHT tools by KlomDark · · Score: 1

      What's wrong with SVN? I use it all the time, and it seems to work very well. Merges have been a bit bizaare in the past, but things have greatly improved in the new 1.5 version.

      Then again, Microsoft's Team Foundation Server has by far the best merging I've ever seen. *snork*

    35. Re:Standardize the RIGHT tools by tubs · · Score: 1

      No, I'm not suggesting anything I'm generally curious - can a system built using Linux, Apache, Mysql and PHP scale to serve 100m hits? And if not, why not. But also what would do that scaling?

      The suggestion was that it can't - but is that just a come down on the people that install LAMP on their spare box and think that makes them a web developer. Or actually, was the post flamebait.

      --

      try to make ends meet, you're a slave to money, then you die

    36. Re:Standardize the RIGHT tools by Anonymous Coward · · Score: 0

      Yes, but you think the PHBs care about that?

    37. Re:Standardize the RIGHT tools by Anonymous Coward · · Score: 0

      The reality is that C#/Java developer is much more educated and experienced than a Ruby/PHP person.

      LAMP/Script Kiddies are horrible when it comes to secure web apps. They don't understand multilayer scaling. Yes, LAMP is good for 1M/pages per day, but, I don't deal in less than 100M/day.

      I was with you until this point.

      You are correct in that there are also a bunch of wannabe PHP "developers", like there are VB and Javascript developers, who don't know good practices from a hole in the ground, but to say that "LAMP" developers are horrible is simply untrue. You need to differentiate, instead, between the wannabe "programmers" and the serious programmers. In C# land I see a lot of people who don't know jack about computers, or programming; they know C# and just enough .net libraries to get things done. In terms of understanding what they're doing... mostly they don't.

      So, really, you have 3 categories of programmer:
      1) Wannabe know nothing types.
      2) "it compiled so it must work" people who manage to make things run, but don't understand why they sometimes crash.
      3) Real programmers who know what they're doing.

      Of course the last category can be broken out further. C# devs are going to mostly be #2, in my experience. #1 is most VB and JavaScript people and a lot of PHP people too, but generally anyone who doesn't really program but tries anyway.

    38. Re:Standardize the RIGHT tools by firewrought · · Score: 1

      If you want the standardization to go well, make sure the build tools are standardized. Once anyone can build the project (IDE or no), it won't matter what the "standard" IDE is.

      You might want to take a look at modern IDE's: they're a lot more than just glorified text editors now, and even using two IDE's that congruently support the same build chain, you'll still encounter a host of incompatibilities on everything from file layout philosophy to designer support to plugins to licensing to packaging... all of which are unnecessary in a corporate environment where you can pick one good IDE and standardize on it.

      --
      -1, Too Many Layers Of Abstraction
    39. Re:Standardize the RIGHT tools by nuttycom · · Score: 1

      If you haven't used Git, then you don't quite understand why SVN is such a turd. I certainly didn't until I switched.

      Things that are more or less impossible in SVN are trivial in Git. Forget branching and merging (which git's approach to is MUCH more sane than SVN's copy-on-write approach) -- look at git-rebase or git merge --interactive to see things that you wouldn't dream to attempt with SVN.

    40. Re:Standardize the RIGHT tools by Jellybob · · Score: 1

      Did you just call Word a development tool?

      You're not in management by any chance are you?

    41. Re:Standardize the RIGHT tools by mysidia · · Score: 1

      Design and documentation are integral to development process.

      Yes. Word, Office, and Sharepoint are potential development tools.

      So is Excel.

      Writing Excel macros or VB Script to run in Excel or Word are also potential development projects.

      So is MSN Chat/IRC.

      And Outlook/Exchange may be also, as it provides a "Tasks" feature for managing development tasks, and "Reminders" + other features for developer collaboration.

      These tools are essential to the development process, and essential to standardize, as all developers on a project need to be able to read and edit the documentation.

      They also need to be able to communicate readily and have a common forum. (In Person meetings or phone calls tend to waste time, E-mail and IM are best for simple messages.)

      The reason to standardize upon word for documentation is it's an easy-to-use tool that all computer users should be familiar with, that provides a highly-productive UI and offers a semi-standards-based (XML) output format.

      Adobe Acrobat could also be used, for generating PDFs to share with customers.

    42. Re:Standardize the RIGHT tools by Slashdot+Parent · · Score: 1

      Advice for you:

      1. Close mouth
      2. Check out latest stable release of svn
      3. Cheers!

      --
      They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
    43. Re:Standardize the RIGHT tools by nuttycom · · Score: 1

      I've looked at the latest stable release of SVN, and still found it pretty severely wanting. I'm glad that it's got changesets now, but still think that their approach to tagging and branching is both heavy-weight and clumsy compared to Git. Also, where is the support for lightweight local development branches? Squashed merges?

      Maybe it's just a matter of style, but I love the fact that with Git all repositories are equal peers - and that I can therefore do all kinds of complex stuff with the repository even when I'm offline sitting at a picnic table in the hills working, and that my team members can then get all those changes when I get back to the office and get online. SVN just doesn't support that kind of usage.

      Finally, the server administration overhead for svn usually means that if you've got big projects with lots of modules, all of those modules will be stored in a common repository rather than independent repositories. This can be a maintenance nightmare - in git, the submodule functionality means that your independent modules are all in their own repositories, and you can aggregate them as needed - and it's a lot cleaner than using svn:externals.

  9. A gross misunderstanding of the process by Anonymous Coward · · Score: 5, Insightful

    Sure, and while they're at it, let's give all the mechanics just one size of wrench and screwdriver.

    This policy shows a gross misunderstanding of the engineering process, and of what computer science is. Any computer scientists worth his/her salt should be expected to learn whatever tools are needed to get the job done. And conversely, each project team should be free to evaluate the best tools to get each job done.

    It's not unreasonable to have guidelines and even strong recommendations; for example, a company could discourage csh scripts in favor of bash because of the known problems with csh. But to think that C/C++ can substitute for a scripting language or vice versa, or that even a language like FORTRAN has no purpose, completely misses the point.

    When I was at Stanford, we got ZERO units for learning different programming languages. We were EXPECTED to learn C, C++, Lisp, and about a dozen other languages, before we could call ourselves computer scientists. If anyone thinks that limiting a computer scientist's choice of tools is a good idea, you should kick that manager to the curb.

    1. Re:A gross misunderstanding of the process by xero314 · · Score: 5, Funny

      Sure, and while they're at it, let's give all the mechanics just one size of wrench and screwdriver.

      I am so sick of this analogy, as it's completely inaccurate. Programming languages, at least full featured languages, are a whole set of tools, not a single tool. Comparing Java to C is more like comparing Craftsman to Snap-on, different brands of tools but they can both be used to do the same thing. If you can give you mechanics a single tool that can be used in all their tasks, like a sonic screwdriver, then do it. If the language isn't full featured, or cover all your needs, then don't use it.

      And conversely, each project team should be free to evaluate the best tools to get each job done.

      This is exactly what you need to do if you want to guarantee that you have to continue with the team you have or hiring nothing but experienced senior developers. Keep the number of tools simple and you can have a small number of leads and many interns to do the same amount of work with a much higher over all quality and considerably less cost.

      If anyone thinks that limiting a computer scientist's choice of tools is a good idea, you should kick that manager to the curb.

      If anyone thinks that hiring computer scientist's to do anything other than research and theory is a good idea, you should kick that manager to the curb.

    2. Re:A gross misunderstanding of the process by Rimbo · · Score: 5, Interesting

      Sounds like Stanford taught things the right way.

      Just last week, I was thinking about this. The University of Texas (where I went) had a similar philosophy when I was there as well; the goal was to teach the concepts and how to learn new languages. We groused about it incessantly at the time, but looking back over how my career has progressed and how I've been able to adapt to new technology, it was absolutely the right education.

      Consider this: At the time I started my Freshman year in college, the Fall of 1991...

      1. The Linux kernel had not yet been released by Linus Torvalds (v0.11, Dec. 1991)
      2. The World Wide Web had not yet been released to the public (1993) -- NCSA Mosaic was not to even begin development for over a year (Late 1992)
      3. Java had not yet been released to the public (1995)
      4. The latest release of Windows, 3.0, was still a 16-bit shell launched (not by default) from DOS.
      5. Microsoft Office was just a bundle including Word, Excel and Powerpoint at a discount (vs. their separate costs) and had only existed for one year; it was generally an also-ran compared with Lotus SmartSuite and Wordperfect (e.g., Lotus Ami Pro 3.0 was ranked as the #1 word processor for Windows by PC Computing magazine at that time)
      6. The C++ STL had yet to be developed (proposed 1993, released 1994).
      7. The first GSM network ever was just being launched; IS-95 (Qualcomm CDMA) was not to be introduced for another 4 years.
      8. The Eternal September had not yet occurred (1993)
      9. IBM was still the dominant PC maker.
      10. Design Patterns was 3 years from publication.

      The most basic elements of what we develop with today didn't even exist, and those that did exist were in nascent forms that they today barely resemble. Even ANSI C got a major update 8 years afterwards with the C99 standard -- which is nine years ago.

      But wait, there's more!!!

      When I was in grad school at UCSD, I took a class on Software Evolution. The instructor would give us a project, and every couple of weeks ask us to make changes to the project as our next assignment, to expand the project's capabilities. We were given the freedom to choose whatever means we wanted to pursue this goal. The initial assignment was to generate a simple web page.

      A friend of mine chose to use Perl. I asked him if he knew Perl, and he said, "No, but I can learn how in the time it takes to implement this in any other language, and with each new assignment I can just write a whole new script."

      He was the only one in the class to finish every assignment.

      The moral of the story is not that Perl is something wonderful, but rather that Perl was the appropriate tool for the job and that learning how to use the appropriate tool takes less time than using a tool you're familiar with that doesn't work so well. Consider chopping down an overgrown pine tree. If you know how to use a hand saw but not a chainsaw, the guy who uses a chainsaw is going to hack the tree down in less time regardless of whether he has to read the manual to learn how to use it. (And then after that, he'll know how to use a chainsaw on other trees, too.)

      So... yeah.

    3. Re:A gross misunderstanding of the process by Aceticon · · Score: 3, Insightful

      Standardization of software development tools and languages has to do with optimizing the process at a higher level than most developers are used to.

      The point here is to optimize the way a whole company (or at least a whole division) produces software:

      Standardized support tools (build tools, version control, etc) mean that there will be things like shared project templates and a higher average level of expertise with the tools being used (if everybody uses the same tools, there will be more experts with those tools around).

      Standardized languages mean that in-house developed libraries and frameworks are feasible and can be reused all across the company in many of the projects being developed.

      Standardization in tools and languages also increases predictability of results - everybody, including managers, gains a better grasp on how long it takes to do something since they have a lot more experience using that set of tools and languages.

      Standardization also means that it's a lot easier to find and train replacements for those that leave or (even more important if you're a developer) those that progress in their career to new tasks and responsibilities and don't want to be stuck "maintaining the software I did 4 years ago".

      When you are working as a part of a team you work with the team and don't just go away and do your own thing 'cause you know best and everybody else is an asshole.

      To use your automotive metaphor (this is ./ after all):
      - If you work in a garage you get many different cars with many different problems so you use whatever tools are appropriate for the task at hand.
      - If you work in a car factory (say Porsche), you use the specialized tools you are assigned to use for the tasks you're supposed to do. This applies even if you're one of the designers of a new car - you don't just go out using your own CAD application 'cause you think you know best.

    4. Re:A gross misunderstanding of the process by ErroneousBee · · Score: 1

      If you work in a car factory (say Porsche), you use the specialized tools you are assigned to use for the tasks you're supposed to do. This applies even if you're one of the designers of a new car - you don't just go out using your own CAD application 'cause you think you know best.

      Is that actually true?

      Car designers are not a small team all working for one company, but are a lead designer co-ordinating the input of possibly 1000s of designers across 100s of companies. The aircon comes from one company, the mirrors from another, seats, wires, plugs, belts, carpets, radios, locks, all from smaller companies.

      You might like to specify a single CAD system across the whole of the supply chain, but the truth is that the best you can do is specify CAD file formats and let the individual companies decide what products (and at what version levels) they use.

      BTW, your central 'top down' approach is in direct contradiction with the approach used by Toyota and other successful car companies, which is the manufacturing equivalent of Agile Development.

      --
      **TODO** Steal someone elses sig.
    5. Re:A gross misunderstanding of the process by utnapistim · · Score: 2, Interesting

      The theory sounds about correct.

      That said, I've had the experience of working in a corporation for some time where everything was too standardized.

      That means that (for example) we needed to all use the company developed CRM (because we ate our own dog food) that had two speeds: very slow and not working (very slow here means that is was web-based, with the server in another country - over VPN and with a single webpage loading in 40 seconds at times). Performing a code change required loading about ten reloads.

      We also had to use the same Perforce server (hosted in another country, accessed over VPN) with in-house developed addons on top of it (slow and buggy) which meant that a checkout operation would take anywhere between twenty seconds and five minutes, if it didn't crash.

      If it crashed, you had to call the infrastructure guys to unlock your files manually (if it was really urgent, that meant half an hour on the official channel, or five minutes if you were friends with the Infra guy and promised you'll open a help-desk ticked afterward).

      On top, we had a corporation "enterprisey"-level workflow that required us to put the same descriptions of the problem in the CRM, in Perforce, and attached in a text file in both CRM (in two places) and Perforce, for each checkout.

      In the end, checking out a file to add a line of code could take around two hours (one and a half if you streamlined the process as much as you could).

      If you had to propagate one change across three versions of the application, there went your whole day.

      All this was because, at the top level, somebody started standardizing too much.

      I am not arguing here about total freedom, but standardizing can definitely be taken too far.

      --
      Tie two birds together: although they have four wings, they cannot fly. (The blind man)
    6. Re:A gross misunderstanding of the process by arendjr · · Score: 1

      I am so sick of this analogy, as it's completely inaccurate. Programming languages, at least full featured languages, are a whole set of tools, not a single tool. Comparing Java to C is more like comparing Craftsman to Snap-on, different brands of tools but they can both be used to do the same thing. If you can give you mechanics a single tool that can be used in all their tasks, like a sonic screwdriver, then do it. If the language isn't full featured, or cover all your needs, then don't use it.

      I agree the analogy was flawed. Yours is as well however. Frameworks and languages cannot be mixed and matched like mechanical tool sets can. For example, if Craftsman's screwdrivers are far superior, while Snap-on's wrenches are far superior, you know where to get your screwdrivers and where to get your wrenches. However, you cannot mix C++'s far superior template system with Java's far superior threading model (just to make an example, not saying it is so). Therefore you would pick C++ if the templating is a decisive factor, whereas you would pick Java if it was threading. Now you can see how always forcing everyone to use the same language may severly limit productivity of some.

      This is exactly what you need to do if you want to guarantee that you have to continue with the team you have or hiring nothing but experienced senior developers. Keep the number of tools simple and you can have a small number of leads and many interns to do the same amount of work with a much higher over all quality and considerably less cost.

      In the company I work for, seniors are a lot less expensive than interns (though their salaries are much higher). Interns need guidance, taking away productivity from other seniors. Interns make fuckups, which again cost precious senior's time. Not to mention a senior gets done way, way more in the same amount of time an intern does. Therefore yes, we are mostly focused on "hiring nothing but experienced senior developers", and we believe it's a good thing to do.

      If anyone thinks that hiring computer scientist's to do anything other than research and theory is a good idea, you should kick that manager to the curb.

      Agreed. ;)

    7. Re:A gross misunderstanding of the process by Aceticon · · Score: 1

      Is that actually true?

      Car designers are not a small team all working for one company, but are a lead designer co-ordinating the input of possibly 1000s of designers across 100s of companies. The aircon comes from one company, the mirrors from another, seats, wires, plugs, belts, carpets, radios, locks, all from smaller companies.

      The overall design of the car is done and the sub-assemblies are defined and specified. Sub-assemblies will then, if need, be designed by by separate teams according to the specifications.

      Different teams might use different tools, but within the teams the tools are standardized.

      I would expect that all teams within a company designing the same kind of sub-assembly (say, a motor) all use the same tools across projects - is it really logical to not reuse a perfectly good camshaft design from an older project because you've felt like using a different CAD tool this time around?

      In the same way, big software projects (involving multiple systems, multiple platforms and multiple vendors) are not developed using a "one size fits all" approach: you can hardly expect your teams doing the Linux hosted distributed calculation modules to use C#.NET or your teams doing the Windows GUI to use GCC.

      Even in smaller projects, you can hardly expect that all your libraries from all the vendors where developed using the same IDE - and as long as the vendor fixes any problems with their libraries you don't really care what tools their teams use.

      BTW, your central 'top down' approach is in direct contradiction with the approach used by Toyota and other successful car companies, which is the manufacturing equivalent of Agile Development.

      Any form of Agile Development is heavily reliant on standardization:
      - You can't quickly change what you are producing if you go through a full retool for every new project.

      Just like you don't change the robots that paint the cars when you're doing a new variant on a model, you don't change your language, version control or continuous build setup when you start a new project.

      It has been proved again and again that a well coordinated team of average developers is a lot more productive that an equal number of crack lone wolf coders each going their own ways. For a team to work, each member has to let go of a bit of his/her independence (for example, in the choice of version control system or in the design of a subsystem).

      In the same way, bigger team-like groups (say, Unix groups in an IT consultancy) often work better if they make some effort to make it easier to work together (for example, by creating shared libraries, which in turn is only possible if you use the same language).

      However
      There is no such thing as a "silver bullet" or a "one solution fits all" in IT. Standardization can bring some improvements up to a point, but if taken too far it just becomes a straight-jacket - you don't want to be in the situation where what you have is a round hole and all that you're allowed to use is a square peg.
      The challenge is always to find the right balance between flexibility and efficiency: it's neither smart to do a project using Ruby on Rails because the single person in the company that knows it finds it "cool", nor is it smart to design and develop a distributed computing platform requiring hundreds of machines using Windows instead of Linux because "we're a Windows software house".

    8. Re:A gross misunderstanding of the process by frantzen · · Score: 1

      It's not unreasonable to have guidelines and even strong recommendations; for example, a company could discourage csh scripts in favor of bash because of the known problems with csh.

      The funny thing is that there was a long period of time that all portable shell scripts had to be done in CSH. There were a few nasty incompatibilities between the once ubiquitous bourne shell and BASH found on all of the linux systems.

    9. Re:A gross misunderstanding of the process by Anonymous Coward · · Score: 0

      Comparing Java to C is more like comparing Craftsman to Snap-on, different brands of tools but they can both be used to do the same thing.

      So why don't we write device drivers in Java? C and Java are like C and Java, inappropriate analogies aren't helping anyone.

    10. Re:A gross misunderstanding of the process by Anonymous Coward · · Score: 0

      "Comparing Java to C is more like comparing Craftsman to Snap-on, different brands of tools but they can both be used to do the same thing."

      But they can't. C is quite useful at many low level tasks that Java requires JNI extensions (written in C!) to do. Furthermore, C/C++ is the only suitable option for Linux drivers and OS level development. Same things hold true for DSPs.

      The actual bad analogy here is let's let the mechanic have either a wrench or a screwdriver, in this case. Monoculture and an army full of codemonkeys is the least thing any business wants.

      Do not limit what your employees are capable of, instead, hire good talent and embrace change and adaptability.

      Those employees who can't keep up and /can't/ learn new languages/tools quickly are the ones you don't want.

    11. Re:A gross misunderstanding of the process by khakipuce · · Score: 1
      Well said, although factories only ever produce new things and garages only ever fix existing things. Most businesses of any size have old and new. all most all that I have worked for have had this single toolset debate, but abondoned it when they relaised that they have to maintian their old apps and by the time they get round to replacing them, the current 'flavour of the month/year/decade' toolset will have moved on.

      I always tend to think that the best approach is a gravitational one - set the process up so that it is easy to gravitate towards a choosen platform, but with enough effort (justification, energy, etc) alternatives can be chosen.

      And then there is the need to consider bought in packages. The best deal wins irrespective of platform, no one ever said "we are only buying an accounting package that is written in Perl on MySQL because that is how we developed our website".

      --
      Art is the mathematics of emotion
    12. Re:A gross misunderstanding of the process by Anonymous Coward · · Score: 0

      Sure, and while they're at it, let's give all the mechanics just one size of wrench and screwdriver.

      You know, I have a set of screwdriver bits. It contains slotted bits, philips bits, pozidrive bits, metric allen bits, imperial allen bits, tamperproof allen bits, Torx bits, tamperproof Torx bits, Tri wing bits, square bits, spline bits, butterfly bits, and bit adaptors - all in several sizes, of course - a total of 100 bits.

      And that's just for bolts up to a quarter inch. We'll need a full set of allen keys, both metric and imperial. We'll need spanners, again both metric and imperial, and socket sets for places spanners can't get in. In case we have to do up a nut/bolt combination we'll need two sets of those spanners.

      What's more, all these different parts have different benefits! Phillips and Pozidrive will slip if you try to overtorque a screw - useful for manual installation. But Torx is better for automated assembly where you have torque control, because it won't slip. Allen bolts require less clearance than hex head bolts and can be countersunk, but they are more vulnerable to rounding, particularly if made of soft metals or rusted in.

      The point I'm making is: Nobody would give all mechanics the same size of wrench, but the opposite is also true: A design that needs more than about 20 wrenches and screwdrivers just isn't a very good design*.

      If anyone thinks that limiting a computer scientist's choice of tools is a good idea, you should kick that manager to the curb.

      The choice of what bolt heads to use is a design decision that should be made by engineers, not managers, I agree. However, to say that adding another bolt type is always the right decision is incorrect.

      Likewise, perhaps you need 30 lines of Java to perform that matrix inversion you could do with a single line of MATLAB. Sometimes going to MATLAB is the right decision, sometimes it isn't. Maybe you can't afford $2,000 per seat for everyone who wants to compile your software. In some situations, limiting an employee's choice of tools is precisely what a competent manager should be doing.

      *Except for things like airliners, obviously

    13. Re:A gross misunderstanding of the process by Just+Some+Guy · · Score: 1

      Comparing Java to C is more like comparing Craftsman to Snap-on, different brands of tools but they can both be used to do the same thing.

      Did you really believe that when you wrote it, or do you just enjoy being contrary for the sake of jackassery?

      Let me know how that PHP device driver is coming along, or the web app written in C. Next up: rewriting "ls" in Erlang, and IP telephony in assembler.

      Almost all modern languages are Turing complete. Who cares? In the real world, languages have some distinct differences that go deeper than cosmetics, and those differences are why people choose one over the other (or even decide to write their own).

      --
      Dewey, what part of this looks like authorities should be involved?
    14. Re:A gross misunderstanding of the process by jgrahn · · Score: 1

      Standardization of software development tools and languages has to do with optimizing the process at a higher level than most developers are used to.

      The point here is to optimize the way a whole company (or at least a whole division) produces software:

      Standardized support tools (build tools, version control, etc) mean that there will be things like shared project templates and a higher average level of expertise with the tools being used (if everybody uses the same tools, there will be more experts with those tools around).

      Standardized languages mean that in-house developed libraries and frameworks are feasible and can be reused all across the company in many of the projects being developed.

      Hm, didn't we try that "in-house code reuse" thing back in 1992? And besides, it's not like we're talking about using hundreds of languages in a company unless someone stops the madness -- for any given task, there tends to be two or three reasonable candidates.

      Standardization in tools and languages also increases predictability of results - everybody, including managers, gains a better grasp on how long it takes to do something since they have a lot more experience using that set of tools and languages.

      That's an argument against using a new set of tools and techniques for every new project, but who in his right mind would do that anyway? You pick something which is suited to the task, something people know about, and something which can be useful later.

      Standardization also means that it's a lot easier to find and train replacements for those that leave or (even more important if you're a developer) those that progress in their career to new tasks and responsibilities and don't want to be stuck "maintaining the software I did 4 years ago".

      Not if you standardize on something exotic, obsolete, expensive which people outside the corporation never use -- like Ada, or various "visual programming" languages.

      If standardization meant "use whatever bright people tend to use for these kinds of jobs" then I could agree with you, and happily keep doing plain old Unix programming using C, C++, Python and shell scripting until something distinctly better comes around in twenty years or so ... But in my experience, corporations rarely make sane top-level technical decisions. They read glossy magazines and get visits from sales-people instead ...

    15. Re:A gross misunderstanding of the process by Arccot · · Score: 1

      Sure, and while they're at it, let's give all the mechanics just one size of wrench and screwdriver.

      I am so sick of this analogy, as it's completely inaccurate. Programming languages, at least full featured languages, are a whole set of tools, not a single tool. Comparing Java to C is more like comparing Craftsman to Snap-on, different brands of tools but they can both be used to do the same thing. If you can give you mechanics a single tool that can be used in all their tasks, like a sonic screwdriver, then do it. If the language isn't full featured, or cover all your needs, then don't use it.

      The problem with your analogy is that different languages excel at different goals. One may be more ideal than the rest. They are not interchangeable.

      And conversely, each project team should be free to evaluate the best tools to get each job done.

      This is exactly what you need to do if you want to guarantee that you have to continue with the team you have or hiring nothing but experienced senior developers. Keep the number of tools simple and you can have a small number of leads and many interns to do the same amount of work with a much higher over all quality and considerably less cost.

      I'm not sure where quality comes into this. The language doesn't affect quality of programming, at least for good programmers. It's not hard at all to learn a new programming language, but it can be very hard to shoehorn a solution into an inappropriate language. A developer shouldn't get to decide the language, but the project manager should with feedback from the devs.

    16. Re:A gross misunderstanding of the process by Foolicious · · Score: 1

      Computer science? If you want to stick with the mechanic analogy, do you call a mechanic a car scientist? Or a mechanic? Do you call the guys in sales with the MBA a business scientist?

      Yeah - I'm just ranting, and perhaps only against the semantics of it, but I am really sick of all this talk about "computer science". I'm a programmer, among other things, and I'm so far from being a "computer scientist" that you and the other people that went to Stanford where you got zero units for learning different programming languages would cringe. And yet somehow, some way, I get paid to do it and, while I'm not in danger of winning programmer of the year, I do pretty ok.

      In some respects I wish I was a computer scientist and could bring myself to care about or understand a lot of the stuff you guys (and the 4 girls here) talk about. But even so, let's not mix up what we studied in college as having a 100% crossover into real life. That's just not the case.

      Inferiority-complex-generated rant over. Thank you for your time.

      --
      Please don't use "umm" or "err" or "erm".
    17. Re:A gross misunderstanding of the process by ivan256 · · Score: 1

      If anyone thinks that limiting a computer scientist's choice of tools is a good idea, you should kick that manager to the curb.

      If anyone thinks that hiring computer scientist's to do anything other than research and theory is a good idea, you should kick that manager to the curb.

      Anybody who thinks your development team shouldn't include computer scientists (no grocer's apostrophe, thank you) is likely doomed to write poorly performing code without understanding why it performs poorly, or breaks.

      Programmers generally suck at designing software that does anything novel... Cookie cutter database applications and websites, sure... Other than that you end up with people calling member functions, using overloaded operators, and running nested loops with no understanding of the computational complexity of the operations (It pays to know when the += operator kicks off an expensive sorting algorithm behind the scenes, etc...). You end up with people synchronizing atomic operations. You end up with race conditions. Programmers, after all, are expertly trained in the how, and the what of creating software, but not the why.

      I do agree with part of your point, though. Many computer scientists are not very good programmers. They tend to get so wrapped up in the 'why' that they ignore many of the team-friendly programming practices that come with the 'how'.

    18. Re:A gross misunderstanding of the process by ivan256 · · Score: 1

      In the company I work for, seniors are a lot less expensive than interns (though their salaries are much higher). Interns need guidance, taking away productivity from other seniors. Interns make fuckups, which again cost precious senior's time. Not to mention a senior gets done way, way more in the same amount of time an intern does. Therefore yes, we are mostly focused on "hiring nothing but experienced senior developers", and we believe it's a good thing to do.

      I find that in these types of companies (I try to avoid them now), you always end up in a situation where nobody wants to do the shit work, thus stuff that *needs* to be done either doesn't get done, or causes strife.

      A well managed development team is made up of senior and junior developers. The good manager knows to give tasks to the junior developers that won't require much hand holding from the senior developers. The good manager knows the difference between the types of tasks too. Most managers fail at this and end up thinking their junior team members are worthless after they're given something that is over their head. A manager that doesn't understand the complexity or difficulty of a task will almost always underestimate.

      Senior developers also make fuckups. They're just generally the kind that you don't notice until they bite you in the ass after you ship instead of the kind where you look at the code and say "what were you thinking?"

      Invariably, companies think that their practices are a "good thing to do". You'd be an idiot if you were doing something that you didn't think was good... It doesn't really lend any credibility to the practice though.

    19. Re:A gross misunderstanding of the process by xero314 · · Score: 1

      So why don't we write device drivers in Java? C and Java are like C and Java, inappropriate analogies aren't helping anyone.

      This is for the same reason the ICs are not built with Craftsman or Snap-on Tools.

      Sure you can't use a single set of tools for every task, but in reality very few companies write drives and web apps, and if you do the team is so large that you are not going to be moving people around that much. So if all you company or team does is one type of software, say drivers or business applications, then you can standardize on a single language and be far more efficient.

    20. Re:A gross misunderstanding of the process by xero314 · · Score: 1

      I'm not sure where quality comes into this. The language doesn't affect quality of programming, at least for good programmers. It's not hard at all to learn a new programming language, but it can be very hard to shoehorn a solution into an inappropriate language. A developer shouldn't get to decide the language, but the project manager should with feedback from the devs.

      Quality comes in because no person can be as proficient with every language as they could be with one. You either spend you time learning the basics of all languages, or in the ins and outs of one. Sure a good engineer can pick up any language and write in it, but they won't do it nearly as well or as quickly as they would in the language they have been using for the past 5 years. This is a basic fact and it applies to all industries. You don't take your Toyota to the Chevy dealer and expect them to be able to do the work nearly as efficiently. Sure any mechanic should be able to fix your car eventually, but at a pretty substantial cost in time and resources.

    21. Re:A gross misunderstanding of the process by Anonymous Coward · · Score: 0

      Hmm. So, suppose you have developers that have to write code for an embedded processor. You're saying that something like, say, PHP or Perl would be just fine for that. I'd pick C.

      Or that you have to implement a web browser interface into a database driven application. Sounds like a job for C to you? I'd pick PHP.

      Or perhaps you would implement a windows GUI application, say, something that looks vaguely like a spreadsheet, but with specific mathematical requirements. Javascript is your choice, right? I'd pick C#.

      Different languages and tools have different strengths. They are not all the same. If your management advocates using the same language for all of those three examples, maybe they need some education.

    22. Re:A gross misunderstanding of the process by Lodragandraoidh · · Score: 1

      If anyone thinks that hiring computer scientist's to do anything other than research and theory is a good idea, you should kick that manager to the curb.

      Agreed. ;)

      Maybe you were joking, but this is exactly the attitude that keeps the 'interchangeable code monkey' approach to software development and personnel development alive and well in the software development career field. Go on - keep laughing...while they offshore your job.

      It amazes me that developers don't want to be taken more seriously. When they do - they end up becoming architects without much impact on the new batch of developers coming in -- little if any mentoring or lessons-learned. Many of the people who become 'developers' have not a clue about computer architecture - and end up learning from the 'school of hard knocks' - when they do something a CS grad would recognize is the wrong thing from a mile off. (hint: RAM is limited, CPU Cycles are finite over a given time frame, and virtualization is ubiquitous and the key to every important advancement in system capabilities (microcode, machine code, system code, application code, higher level abstractions)).

      No wonder software development is so screwed up - and we only have ourselves to blame.

      --

      Lodragan Draoidh
      The more you explain it, the more I don't understand it. - Mark Twain
    23. Re:A gross misunderstanding of the process by RalphTheWonderLlama · · Score: 1

      I agree. At Illinois there were no classes for learning a programming language. We were expected to learn them as needed for the subject we were working on. If we didn't know them already, we learned them for the MPs (machine problems = programming assignments). There was some language instruction in a few core classes, but mostly as it pertained to the subject matter. I learned to use more than one language in quite a few classes.

      They are tools to the computer scientist.

      --
      simple, fast homepage with your links: http://www.ngumbi.com/
    24. Re:A gross misunderstanding of the process by Brandybuck · · Score: 1

      To a certain point you're correct. But it still depends on the company, the products, the developers, etc. I once worked for a huge multinational (40,000 developers) who standardized on Microsoft products and approved practices. Unfortunately my division was producing a embedded realtime Unix system when they bought us. Being forced to use Visual Studio and .NET was a severe hindrance to us, so much so that the product has never been finished, seven years later. That's one example. Another is what if your company produces desktop applications, web services and device drivers? No one standardized set of tools is going to be suitable.

      Some other threads are correct: do not treat your developers as interchangeable commodities.

      --
      Don't blame me, I didn't vote for either of them!
    25. Re:A gross misunderstanding of the process by Anonymous Coward · · Score: 0

      I must respectfully but firmly disagree. It's not about computer science, it's about adding value. If I have a team of folks to produce a product, and only one knows lisp, it's perfectly reasonable to forbid lisp. Engineering is about making intelligent choices, and finding harmony among many conflicting interests. Economics is not the least important of those interests.

    26. Re:A gross misunderstanding of the process by xero314 · · Score: 1

      Maybe you were joking, but this is exactly the attitude that keeps the 'interchangeable code monkey' approach to software development and personnel development alive and well in the software development career field. Go on - keep laughing...while they offshore your job.

      It amazes me that developers don't want to be taken more seriously. When they do - they end up becoming architects without much impact on the new batch of developers coming in -- little if any mentoring or lessons-learned. Many of the people who become 'developers' have not a clue about computer architecture - and end up learning from the 'school of hard knocks' - when they do something a CS grad would recognize is the wrong thing from a mile off. (hint: RAM is limited, CPU Cycles are finite over a given time frame, and virtualization is ubiquitous and the key to every important advancement in system capabilities (microcode, machine code, system code, application code, higher level abstractions)).

      No wonder software development is so screwed up - and we only have ourselves to blame.

      The problem is that we are hiring scientists or developers to do an engineers job. It's called software engineering for a reason. You don't hire scientists to design engines, or electrical circuits, or even cities. For those tasks you use engineers, mechanical, electrical and civil respectively.

      I'd be happy to find you a few dozen self-taught developers that would run circles around your average, or even above average Computer Scientist, including on detailed hardware knowledge. I have personally never met a Computer Scientist that knew the slightest about the computers they work on, that's the realm of the computer engineer (and yes I can build a 64 bit look ahead adder from knowledge in my head without reference). But if you need to have someone repeat to you the SHA hash algorithm, or ,I'll even give them credit here, you need someone to design a new algorithm, which is rare if ever, then you should get a computer scientist.

      Just remember science is knowledge and study, where as engineering is practical application and construction.

    27. Re:A gross misunderstanding of the process by Lodragandraoidh · · Score: 1

      You do make a good point. However it is not as simple as: computer scientist = theoretical, computer engineer = practical. That is arguing semantics; you have to look under the hood to understand each person individually.

      1. Degree programs vary. One school calls an MIS degree a CS degree. Other schools don't have CE programs, instead they are called a CS degree with a hardware emphasis.

      2. Experience is important. Has the person been a code monkey all his career or does he understand various issues in the design and deployment of production systems (power, rack space/cooling, networking, real estate, capacity planning, server specifications and their implications for all of that)?

      3. Life long study a must. Does the person value study in the field, or are they happy with the education they received at the university? Is the person willing to learn new things outside of their area of expertise?

      That being said, I know plenty of CE grads I would not want to have to work with on a software development project; many times they assume every problem requires BDUF/waterfall methods, do not understand the need for version management and documentation, and are inflexible when a monkey wrench gets thrown into the mix (which invariably it will when complexity and human interactions drive requirements). Of course, these are generalizations - just as are yours.

      --

      Lodragan Draoidh
      The more you explain it, the more I don't understand it. - Mark Twain
  10. Depends by afidel · · Score: 1

    Are these all greenfield projects, or is there code maintenance of existing projects? If there are existing projects in various languages that need to be maintained then how does it really help to standardize new development since you're already maintaining the skillset around those other programs. Also what languages are any large third party apps written in, for instance your CRM, ERP, etc platforms. Sure most now support web services, but are you on a version that does? Oh, and does a significant enough percentage of your staff have mastery over one language so that you won't be wasting resources while everyone ramps up on the new standard?

    --
    There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
  11. restrictive by icepick72 · · Score: 1

    It seems a bit restrictive nowadays. For example, you could use the same framework and features in every project but use a different syntax, like the .NET Framework can be programmed through C#, VB.NET. J# and 50-odd other languages meaning people can actually leverage their existing skill set instead of learning the "one and only" skill set.

  12. Start sending out resume... by Fallen+Kell · · Score: 5, Insightful

    Seriously get out your resume and start updating it. Once management starts treating all programmers as interchangeable is the day that all things start going to hell. Programmers are not interchangeable, and all languages are not interchangeable. I sure hope you guys don't do anything that requires AI or if you do I sure hope you don't do anything that requires graphical interfaces because you are screwed either way if you need to pick one language.

    I am sure we could all make due building every road out of steal, but it would certainly be a little expensive, because if we need to build everything out of the same material because all road builders need to be interchangeable, than we would never be able to build a bridge over say San Francisco Bay with using stones...

    --
    We were all warned a long time ago that MS products sucked, remember the Magic 8 Ball said, "Outlook not so good"
    1. Re:Start sending out resume... by alexmin · · Score: 5, Insightful

      "Once management starts treating all programmers as interchangeable is the day that all things start going to hell." - I second that, saw it happened and not once. Usually morale goes right to the crapper. The only thing worse for it is hiring "managment consultants" to "streamline" the process.

    2. Re:Start sending out resume... by CodeBuster · · Score: 4, Funny

      The only thing worse for it is hiring "managment consultants" to "streamline" the process.

      Well-well look. I already told you: I deal with the god damn customers so the engineers don't have to. I have people skills; I am good at dealing with people. Can't you understand that? What the hell is wrong with you people?

    3. Re:Start sending out resume... by macslas'hole · · Score: 1

      You can run away or you might do what I do. I so hate not having access to my tool set that I bring my own hardware in. I use an external HD that stays at work. It has my virtual machines on it setup just like how they would have setup my workstation. I come in, plug in my laptop, fire up Parallels, and get to work. All my unix and mac goodness is just a cmd-tab away.
      If you can afford it and they let you do it, its really the best way to go. They setup the VM, on their HD, which never leaves the premises. You have instant access to your tools, on your hardware, that you control and are responsible for.
      If they won't do that for you, then fsck them.

      --
      Life's a tale told by an idiot, full of sound and fury, signifying nothing.
    4. Re:Start sending out resume... by Jack9 · · Score: 1

      Once management starts treating all programmers as interchangeable is the day that all things start going to hell. Programmers are not interchangeable, and all languages are not interchangeable.

      The day that management treats all programmers as interchangeable is the day you get guaranteed on-the-job training AND get paid for it. Are you nuts? At my work, they don't care what your specialty is, they care if you are a problem solver, smart, dedicated, and enjoy programming. This leads to a GREAT work environment. I dont think you understand what the base assumption is. There is NO shop that operates on purely 1 language (how do your cron jobs work if you decided to only use javascript? do you have to write your own os too?), so this is an obvious oversimplification. However, if the choice in a development language for a give project is always assumed, how is that anything but a time saver and money saver (in terms of searching for talent)?

      --

      Often wrong but never in doubt.
      I am Jack9.
      Everyone knows me.
    5. Re:Start sending out resume... by Anonymous Coward · · Score: 0

      Exactly! Non interchangeable programmers get fired when the old tech goes out and the new tech comes in.

      And more often than not this shit is more political than technical. Programmers foolishly get caught up in the vendor-wars, but nobody's buying them 3 martini lunches.

      If your boss wants you to switch from language A to language B, you should rejoice because it's one more thing on your resume.

    6. Re:Start sending out resume... by beelsebob · · Score: 2, Insightful

      Well-well look. I already told you: I deal with the god damn customers so the engineers don't have to. I have people skills; I am good at dealing with people. Can't you understand that? What the hell is wrong with you people?

      So, what you're saying is that you stop the engineers talking to the customers, so that the customers don't get what they want built, and the engineers don't get to know what's going on?

      If your engineers are embarrassing to the company, and don't have people skills, hire different engineers.

    7. Re:Start sending out resume... by beelsebob · · Score: 1

      However, if the choice in a development language for a give project is always assumed, how is that anything but a time saver and money saver (in terms of searching for talent)?

      Have you ever tried writing a compiler in Java? How about in Haskell? I can guarentee you that a company standardised on Java will take about 1000 times longer to write a working compiler, and produce 1000 times crappier cost, all for 1000 times the cost than one working in Haskell.

      Compilers are an extreme example, but programming languages are suited to individual tasks -- don't run around using a sledge hammer to solve all your problems, when there's watchmakers screwdrivers, lazer cutters, etc all available in your toolbox.

    8. Re:Start sending out resume... by Anonymous Coward · · Score: 0

      I admit that I have never made a compiler before, so this might be a stupid question.

      Isn't the job of a compiler to generate the binaries? Isn't it just a matter of parsing the source code, put it into some sort of tree structure, optimize it and translate it to the required bytes?

      I know this isn't easy, but I don't see why you would need low level functionality to do that. What features does Java need, that it doesn't have?

    9. Re:Start sending out resume... by vux984 · · Score: 3, Funny

      Whoosh.

      BOB SLYDELL
      So what you do is you take the specifications from the customers and
      you bring them down to the software engineers?

      TOM
      That, that's right.

      BOB PORTER
      Well, then I gotta ask, then why can't the customers just take the
      specifications directly to the software people, huh?

      TOM
      Well, uh, uh, uh, because, uh, engineers are not good at dealing with
      customers.

      BOB SLYDELL
      You physically take the specs from the customer?

      TOM
      Well, no, my, my secretary does that, or, or the fax.

      BOB SLYDELL
      Ah.

      BOB PORTER
      Then you must physically bring them to the software people.

      TOM
      Well...no. Yeah, I mean, sometimes.

      BOB SLYDELL
      Well, what would you say... you do here?

      TOM
      Well, look, I already told you. I deal with the goddamn customers so
      the engineers don't have to!! I have people skills!! I am good at
      dealing with people!!! Can't you understand that?!? WHAT THE HELL IS
      WRONG WITH YOU PEOPLE?!!!!!!!

      http://www.imsdb.com/scripts/Office-Space.html

    10. Re:Start sending out resume... by beelsebob · · Score: 2, Informative

      What features does Java need, that it doesn't have?

      It needs to not be object oriented. The paradigm just doesn't suit compiler writing.

      For parsing, functional languages can easily have Domain Specific Languages embedded into them, which makes writing parsers as easy as transcribing the grammar.

      For working with the tree structure a compiler is commonly written in many "micro" passes each of which does some subtle optimization on the tree. Because the idea is that you do lots of different small passes, you want your code to be tiny, that's where pattern matching on the structure of the trees comes in really handy, instead of some fairly hairy conditional statements.

      For both of these tasks Higher Order Functions are extremely useful -- letting you pass around a function to apply to parts of a tree, or in the case of parsing, the DSL is usually written as combinators of HOFs.

      Finally, you missed out an entire stage -- static analysis (type checking, bounds checking etc). These analyses usually involve traversals of the tree annotating it with useful information -- again, very easily done in a functional language. Not so easily done in an OO one.

      p.s. whoever modded you down is an idiot -- no question is a stupid question.
    11. Re:Start sending out resume... by beelsebob · · Score: 1

      Thank you, I knew something was probably going woosh, but now I know what it was.

    12. Re:Start sending out resume... by threaded · · Score: 1

      Seconded on that. I treat such an occurance as an anti-pattern: the company is most surely on its way out if the management is so clueless. Now either you can sit around and wait for the redundancy cheque or update that CV and get it sent off. Suggest you go contracting, because when the brown stuff hits the fan, they'll be begging to have people who know their systems, and these types of managers usually pay quite handsomely for the privilege.

    13. Re:Start sending out resume... by Anonymous Coward · · Score: 0

      HAHAHA. I love the "The Bobs" scenes.

    14. Re:Start sending out resume... by xero314 · · Score: 1

      Programmers are not interchangeable...

      Only the good ones are interchangeable. If the process is in place so that the engineers involved do not need esoteric subject matter knowledge then any decent developer should be able to work on any project at any time. Yes there is some over head in task switching, but it's a lot better than saying "we can't do that today because bob is on vacation" or "we have to keep bob even though he normally shows up to work drunk."

      ...and all languages are not interchangeable.

      For most business applications there are many interchangeable languages. Sure if you are building hardware drivers you are not going to be able to do so in Java, and JavaScript was not designed for enterprise applications (though I assure you can can be used to do so). But if all you do is build the same type of products or systems then using a single language or small set of language with defined uses certainly simplifies the search for talent and the ability to migrate teammates between projects.

    15. Re:Start sending out resume... by Anonymous Coward · · Score: 0

      That one kinda went over your head, didn't it? ;)

    16. Re:Start sending out resume... by Anonymous Coward · · Score: 0

      How come most compilers aren't written in functional languages?

      Seriously, I'm sure you enjoyed compiler 101 in school and made a cute little "sort of like C" compiler but in the real world the implementation language is a very tiny part of the problem. The parser is practically a one shot deal, you sit down, you write a parse, you hand code it if it's C or C++, otherwise LEX/YACC and ANTLR can very legitimately do the job in a very large many of the cases, you turn it in to an intermediate format and then you write optimizations and more optimizations and lots of tests to verify that the output is still correct.

      For the record, there are good compiler textbooks for writing them in Java. If you look at the eclipse or netbeans source code, tell me java isn't very good at writing compilers; the editor has more than 50% of a compiler built in.

    17. Re:Start sending out resume... by Spinlock_1977 · · Score: 2, Interesting

      I couldn't agree more. Saw this happen at the Associated Press. Senior management is devoid of anyone with a clue. If you have one, get out now. Outsourcing is next. Process reorganization is imminent. Town hall meetings with lots of Powerpoints are coming. Team building exercises, interpersonal skills development, and IT management consultants are on your doorstep. The gas-heads minding your store will be an easy sell for them.

      Fast forward 4 years...

      The 'good' programmers are mostly gone.
      The gas-heads have replaced mid-management twice.
      Your company has a few projects outsourced to India.
      IT management consultants have come and gone by the droves
      The huge plumb project to merge all your databases into a warehouse was handed off to consultants, who used a platform different from the 'official' one.
      They screwed it up and now there's a million dollars of hardware gathering dust. (that was your raise/bonus money, eh?)
      You haven't had a raise or bonus in three years
      Moral is.... what moral?
      You wished you had left four years ago

      Run don't walk. Good luck.

      --
      - The Kessel run is for nerf herders. I can circumnavigate the entire Central Finite Curve in a lot less than 12 parse
    18. Re:Start sending out resume... by Anonymous Coward · · Score: 0

      >get out your resume and start updating it

      I guess act like an interchangeable code monkey expect to be treated like one. This lack of commitment is the cause not the effect.

  13. Depends by twatter · · Score: 2, Interesting

    I'm not a very experienced developer. I've worked at two different companies so far, where I was lucky to learn from some people who were.

    The way I'd see this is whether or not you have a one-size-fits-all framework that will be useful in many different situations. But you have levels. For example, you can do pretty mcuch everything with VB.Net or Java, from web apps to desktop clients. So at that level you should pick a good, mature, supported platform that fits your basic needs (Linux, Windows, whatever).

    The next level would be the stuff you pile around the base language. That's where it gets interesting. Some people swear by one ORM library (Hibernate) and others prefer whatever they used at the last project. So if you dictate Hibernate and Struts, people who were used to something else might not like that.

    But if you don't standardize, you'll find yourself trying to wrangle nine different stacks that might do the same. How much is that worth? It's a waste of time and treasure. My company currently runs MS SQL, Oracle, Sybase, Ingres and MySQL. Why? Probably because at some point someone said "screw Oracle, I'm doing this with Sybase because I like it" and the rest is history. Extricating yourself from that can take years.

    If the person making the decision to standardize on LibraryX is knowledgeable enough to make that call and he is making it based on the requirements of the company and the skill levels of the developers (current and future), then the standardization will work. The developers who work there will have to adapt and learn if necessary. Less-experienced developers (like me!) should not dictate what the company uses to ship applications just because they like a given library or toolset, because we choose what we *like* or what is cool rather than what is sustainable.

    Anyway, good luck. I've seen how hard all that can be, especially at large firms.

  14. Type of Company? by RobBebop · · Score: 2, Interesting

    In my line of work, the industry has been migrating from Cobol and Fortran to C/C++ in recent years. I have seen small bits of Java on tertiary projects. I have seen vastly different development toolchains.

    My 2 cents? Standardize intelligently. Let experimental groups explore whatever they want, but reign them in when it is time to make evaluations.

    One area that I love seeing standardization is in the tool for managing the software repository where you commit your periodic code changes. There are also benefits for standardizing on compilers and code libraries that you use.

    One area that I hate to see standardization is in text editors. Let people pick whatever fancy or simple typing program suites their needs best.

    Obviously, this post is not geared towards whiz-bang web developers who actually need to push the envelope a little bit to stay ahead of the latest trends.... but there is something to be said from the benefits of specialization and so I generally agree that *most* areas of company code development should be locked down and projects at the company that are not in compliance should have good reasons.

    --
    Support the 30 Hour Work Week!!!
  15. Increased productivity at a price by cornholed · · Score: 1

    Common development practices result in increased productivity and easier training for employees. The result is decreased flexibility (especially when new projects are evaluatedand) and long-term success. If management thinks they have a great thing going, good for them, I hope they don't run it into the ground, cuz they could kill any long-term momentum they have going.

    --
    So, it comes to this.
  16. It depends on how varried your projects are by MarkusQ · · Score: 5, Insightful

    It depends on how varied your projects are; if all you ever do (as a company) is produce slight variations on a single theme, it should go fine. If you need to develop everything from hard real time embedded apps to web 2.7 social networking goo, you're screwed.

    --MarkusQ

    1. Re:It depends on how varried your projects are by MachievelianEngineer · · Score: 1

      "If you need to develop everything from hard real time embedded apps to web 2.7 social networking goo, you're screwed."

      If you are trying to develop everything from hard real time embedded apps to web 2.7 social networking goo, you're definately screwed.

    2. Re:It depends on how varried your projects are by BotnetZombie · · Score: 1

      Didn't you read this one, The Next Browser Scripting Language Is -- C?. C FTW!
      (you're right, of course - I, for one, would not welcome C if it were forced upon me as a browser scripting language)

  17. Too many "best" tools == lots of compat layers by alexmin · · Score: 1

    After some number of features implemented most time is spent on maintaining those compatibility layers and not implementing core logic. Code monkeys breed, creative people become bored and leave.

  18. What is your management getting paid to do? by Anonymous Coward · · Score: 0

    Personally, I think your company is doomed, long term at the least. More nimble competitors will end up eating your lunch, while you end up saying "me too!". I've seen this before, alas. Monocultures are always brittle, and too frail if hit in the right direction.

    There are two schools of thought as far as management goes. The first is that managers are all knowing, and send down orders from "on high". That the minions must faithfully implement.

    The second school is that managers help and support their engineers on the frontlines. They provide overall, general goals and guidelines, and let the engineers do what they're being paid to do. Part of that is making the right decisions as well as implementing them.

    The best managers look ahead at what their engineers will be needing in the future, and make certain that they have that when they need it.

    It sounds like your "upper" management is of the first school, and don't realize that software development isn't a factory.

    Good luck recruiting top engineers to work for you. Something tells me you'll be facing an losing battle there, as it sounds like you're doing your best to drive them straight to your competitors.

    1. Re:What is your management getting paid to do? by SerpentMage · · Score: 1

      Really? The company is doomed? Gee go ahead and tell Google that please! Or how about Apple...

      For example if I were a Google employee could I use .NET? Ahhhh run to the hills...

      Or how about if I were an Apple employee could I use Java? Ahhhh run to the hills...

      These companies are successful because they have specialized in a toolset...

      --

      "You can't make a race horse of a pig"
      "No," said Samuel, "but you can make very fast pig"
    2. Re:What is your management getting paid to do? by Anonymous Coward · · Score: 0

      Bah! Google Docs (nee Writely) was written in .net initially. I assume it's been rewritten in python or whatever now. But it wasn't when they bought it.

    3. Re:What is your management getting paid to do? by IntlHarvester · · Score: 1

      Apple WebObjects is Java based, so we know for sure they use it.

      --
      Business. Numbers. Money. People. Computer World.
    4. Re:What is your management getting paid to do? by Anonymous Coward · · Score: 0

      Google is a one-hit wonder. They're having trouble branching out, in case you hadn't noticed. But hey, yes they've done well in selling ads.

      Apple is successful because it sells hardware. Very well via Steve Jobs. The software is quite lacking, and now even quaint when compared with what modern Linux desktops can do.

      I've seen this be before, and it gets tiresome. Just because a company is at a peak in success. doesn't mean that it will stay that way, or is due to their standardizing on a toolset for dealing with new technologies. It's the latter which hinders them in adapting.

  19. The premise fails it... by Anonymous Coward · · Score: 0

    Choose the right tool for the job.

    Caveat: C# is not the right tool for any job.

  20. Yes... just as long as it's x86 assembler by Anonymous Coward · · Score: 0

    everyone knows programmers have become fat lazy pigs. It's time for a return to the old days of squeezing out the maximum performance and proper utilization of resources...

    I think it's time for everyone to go back to assembler and stop being so lazy... I say x86 assembler since everyone (almost) is using PCs anyways, it's not much of a stretch

    1. Re:Yes... just as long as it's x86 assembler by Anonymous Coward · · Score: 0

      Writing in assembly doesn't mean somehow automatically the performance is going to be awesome. All it means is you have more control. Control != Performance. Go read Michael Abrash's GPBB.

      http://www.byte.com/abrash/

  21. Theoretically.... by Anonymous Coward · · Score: 2, Funny

    All major languages are isomorphic and equally powerful (see Church-Turing thesis), so it should be possible for any programmer to use any language he or she wants to when working on any project, no matter what the existing code base is in. Sadly, the current generation of developer tools does not support this, though there are some promising next-gen projects which may solve allow this. Google "language-oriented programming" for more info on this.

    In the mean time, the best approach is different languages for different tasks. If management refuses to accept this, I suggest you recommend INTERCAL as the standard language. It's a mature language (>30 years old) with many features not found in any other language.

    1. Re:Theoretically.... by Linker3000 · · Score: 1

      The main problem seems to be the various development frameworks and compilers so I'd recommend an interpreted language with a simple syntax - something such as BASIC.

      I agree with your comment about maturity so perhaps something of the BASICA or GW-BASIC vintage? Pick versions of similar age from across all your hardware platforms and only use the syntax/operators that work across all BASIC variants.

      Safe as houses.

      --
      AT&ROFLMAO
  22. No way. by istartedi · · Score: 4, Insightful

    Where developers must interface, such as coding style, source code repository or corporate blog? Yes, it makes sense. I may not *like* a coding style, but if management at a large company told us to use one, I'd at least understand why. IDE? OS? Compiler (except for the one that actually builds the product)? No, NO, NO!!! A thousand times, no! Why? Because you're just going to stifle creativity.

    Management point: IT needs to work on the same thing. Counterpoint: IT is often clueless. Developers can almost always troubleshoot their own systems.

    Management point: Ensures software licensing compliance. Counterpoint: None really, they kind of have you there; but since most companies have a policy against installing unlicensed software anyway, punishing developers by forcing them into a cookie-cutter workstation isn't going to solve that problem.

    Management point: puts them all on the same page, builds team. Counterpoint: It makes development less a "collegial" environment, where diverse ideas are explored, and more of a "command" environment. Developers are notoriously intolerant of following orders simply for orders sake.

    Newbie developers coming right out of school might not mind being told to use all the same tools; but experienced developers might feel otherwise. If you want to annoy experienced developers who know all the ins-and-outs of their particular toolset, then go right ahead. Then, wonder why nobody comes up with new ideas, makes comparative observations of one system against another, or develops an alternative approach that goes beyond the status quo. Wonder why people who don't drink the kool-aid on your particular toolchain leave for greener pastures. Wonder why you don't have any in-house expertise on any other system when your chosen flavor is no longer sweet.

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    1. Re:No way. by ComputerSlicer23 · · Score: 4, Insightful

      Unless they all operate on the same meta-data the foreign tool is out. My boss thinks the same way you do, every one is allowed to use any damn tool they feel like, with absolutely no bounds.

      I work with a guy who insists on using Visual Studio, as nearly as I can tell, because he's unaware that there is a multi-tab text editor outside of VS. So, everytime I have to take over a project from him, I have to go figure extract what files are being build, and then port it into the production system, every other developer on the project uses. Because this is such a hassle, the guy will do updates and commits on an interval measured in months, where as every other developer does them on intervals measured in hours. So along with everything else we have to deal with, when he commits his code, he generally will blow away months of someone elses work because he can't be bothered with learning how resolve conflicts, and it'll never integrate cleanly. We'll spend a week just trying to undo all the damage he'd done. All because he can't be bothered to use the same toolchain everyone else on the team does. It also means I have no commit history, no commit comments, and nothing I cause use to do research on to figure out how the software evolved.

      Because he uses Windows, Visual C++ compiler, on an AMD 2.8GHz machine and does all his profiling, it's trivial to go make improve his codes performance on Linux, g++, on an 1Ghz Via C3 (which is the deployment environment for the embedded system). As he works on the single most performance critical aspect, it's more then a bit frustrating. Especially as the code has extreme and unnatural things done to it to the parts that are slow under his one off development environment, but those aren't the parts that are slow under production.

      For things like Java, I've learned the hard way, that we'll only have one setup of meta-data. It's terrible frustrating to have all of the corporate standards setup correctly in say Eclipse, (checkstyle, code generation, auto-formatter, unit testing, test coverage, find bugs, PMD, warning levels, etc, etc), and then have some jackass continually commits code that upon contact with a properly configured environment will be flagged as a violation of the coding guidelines, or generates huge numbers of warnings if only he'd turn on the already agreed upon warnings.

      I've learned, that there is one set of production meta-data used to do a production build. While we can argue over how we maintain that set of meta-data, once that decision is made all tools must use that meta-data directly (they can translate it from one format to another, as long as it does that automatically, like Maven can for some IDE's). So if we use Eclipse, you can use any tool you want, as long as it reads Eclipse meta-data. If we choose Ant, then you can use any tool you want, as long as it does Ant meta-data. If we choose GNU Build system, you can use any platform and compiler you want, as long as it uses the GNU build system. The one hard and fast rule I have for the meta-data is that it must be possible to build from a command-line in an automated way. It can be obscenely difficult to do (like say Eclipse), but it must be possible.

      I've generally learned that anybody who won't agree to use a consistent set of tools with the rest of the team, is a prima dona and is in dire need of a lesson. Yes, I know my toolchain stone cold (gcc/g++, and Eclipse). However, if there is a consensus to use a different toolchain, I'll learn a second one stone cold. I've learned tons about bash, gcc, g++, the Borland compilers, Visual Studio, a number of embedded compilers, Watcom, XCode, the NeXT Objective C IDE, NetBeans, Eclipse, CVS, SVN, Git, Monotone, Arch, Mercurial, Ant, Maven, GNU Make, GNU Auto{conf,make}/libtool, SCons, and probably a couple of others I've forgotten (I've known bits and pieces of several scripting languages, but none well enough write home about). I've learned the best practices of them all when I used them. Given m

    2. Re:No way. by TheNucleon · · Score: 3, Interesting

      You hit on an important point - "developers are notoriously intolerant of following orders simply for orders sake". If all your developers loved CoolToolABC, but then you ordered them to all use CoolToolABC, they would rebel and feel stifled. There's a lot of creativity in software development, and to ignore the psychology of it is a big mistake that I've seen many corporations make.

      --
      My comments are my own, and do not represent the views of my employer, my spouse, my children, or my cats.
    3. Re:No way. by jgrahn · · Score: 2, Insightful

      I work with a guy who insists on using Visual Studio, as nearly as I can tell, because he's unaware that there is a multi-tab text editor outside of VS. So, everytime I have to take over a project from him, I have to go figure extract what files are being build, and then port it into the production system, every other developer on the project uses. Because this is such a hassle, the guy will do updates and commits on an interval measured in months, where as every other developer does them on intervals measured in hours. So along with everything else we have to deal with, when he commits his code, he generally will blow away months of someone elses work because he can't be bothered with learning how resolve conflicts, and it'll never integrate cleanly. We'll spend a week just trying to undo all the damage he'd done. All because he can't be bothered to use the same toolchain everyone else on the team does.

      It's not the toolchain. He's an idiot (and you are too, for letting him do this.) You can use Visual Studio as a text editor and still interface the things you produce with what others produce (unless there are some DOS line ending or TAB quirks in VS). You cannot, of course, set up a VS build system, if all of the people you work with use Gnu Makefiles!

    4. Re:No way. by istartedi · · Score: 1

      Haha! I use Visual Studio and play nice with guys using CentOS and Eclipse. The only problem at all is CRLF, and that's an easy fix. At my last job, I used Visual Studio and played nice with Mac users also. I committed every day. Sometimes several times a day. The guy you have who can't do that should just... step... away... from... the... computer.

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  23. Hire an architect by Toddsa · · Score: 1

    It really depends and unless you have a very good dev management you will need an architect to make those decisions.

  24. Can be very bad by mysidia · · Score: 1

    Sounds like a way of slowing development

    It only makes sense if all programs the company develops are able to fit the same cookie-cutter and do it well.

    You are in effect forced to choose a language and framework that is mediocre, but suitable for everything, rather than a language that is preferred for the current need.

    Basically, it pretty much means you are probably forced to pick Java or C# and .Net. Since some apps are sure to need a higher-performing, compilable language.

    It's just mismanagement of development given a 'feel-good' justification. Since the mediocrity of any choices that will be suitable for a wide variety of applications, means every program will need many more 'utility functions' and classes not provided by the standard API.

    Every application will need its own set of complex APIs, that developers have to learn before they can start coding on that application.

    Either that or you wind up with one hideously-large bloated "framework API" that all the programs use.

    The fewer application-specific tools the framework and language provide, the more of those tools will be specific to the application and have to be developed by hand.

    (And then learned by developers before they can start coding on that project without breaking things)

    The best language for one product may be a terrible choice for the next product.

    A certain PHP framework may work extremely well for a certain type of web application -- and allow it to be developed in a few months, instead of a year.

    Of course, cookie cutter frameworks only work well for applications that fit the mold.

    One application may take 2 months in framework X to write, whereas other different applications may take a year to have written, just because of the framework.

    Also, while PHP may provide acceptable performance for a web application, it is not acceptable for a desktop application.

    Scripting languages are unacceptable for certain types of high-performance applications.

    Compiled languages like C, C#, or Java are extreme overkill for a majority of web applications.

    But using a common framework leaves no choice, and there will be much suffering.

    There will be even more suffering if you can't write Makefiles or Ant build.xml files, and instead have to write your build procedures in java, because "java is the standardized language we're using"

  25. Comment removed by account_deleted · · Score: 2, Insightful

    Comment removed based on user account deletion

  26. It's dumb. by Maxo-Texas · · Score: 5, Insightful

    27 years experience and I've heard this idea before. It is dumb.

    2-3 languages- sure. One for gear-head, one for report/data mining at least.

    5 languages at the same company is a problem- but 1 language is a problem too.

    --
    She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    1. Re:It's dumb. by mcrbids · · Score: 2, Interesting

      I'm going to disagree with you to a point. Having a standardized application framework makes a ton of sense when used for a for a specific class of product, and once chosen, should NEVER be deviated from. Having a "default" set of tools for an organization also makes sense, so long as the process for allowing deviations is reasonable. (EG: peer review by other techies, etc)

      There is a *lot* of value in having a standardized framework for application development - working with one, it's a breeze to reassign programming resources as needed when circumstances change. Our application framework is somewhat "heavy", and we stress consistent code quality and layout, which means there's a longer learning curve up front, but once "up to speed", it's very easy to read each other's work. So easy, that it's usually damn near impossible to tell who wrote what without looking at the update history.

      There is a *tremendous* value in this.

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    2. Re:It's dumb. by fishbowl · · Score: 0, Flamebait

      >27 years experience and I've heard this idea before. It is dumb.

      And you are (hopefully) not one of those people who refers to "upper management" as "them."
      At the very least, you are (hopefully) willing and able to say "it's dumb" in the language
      that "upper management" understands, and they (hopefully), understand the reason they pay you
      is for the expertise to know when and how to say "it's dumb."

      --
      -fb Everything not expressly forbidden is now mandatory.
    3. Re:It's dumb. by forkazoo · · Score: 1

      Indeed, I can't help but think this is like a preview ad for an upcoming story on thedailywtf.com, where it all ends with some developer being forced to port an Occam runtime to his blackberry before he is allowed to rewrite "fortune" in Occam, so his boss can have his blackberry tell him pithy sayings every day, because the whole corporation decided the standardize on a platform that somebody's cousin's uncle's brother's hairdresser said was really up and coming. (And, they offer consulting services for...)

      That said, it really depends on the situation. If absolutely everything is done in a new language, for no good reason other than developer whim of the day, and there really are a great many different groups working on different projects, then "soft standards" could be extremely beneficial.

      If your company can dramatically narrow down it's list of preferred languages to C, C++, Perl, Python, Java, PHP, and Ruby, and if you have a good reason to use something else, pitch it to your manager first, and he'll probably be fine with it, then maybe it really is time to think about some standards. (Even if the Mac port will still involve some Objective C...)

    4. Re:It's dumb. by Maxo-Texas · · Score: 2, Interesting

      Programmers are not generic as much as executive management would like them to be.

      If your application is sufficiently complex, being in the same language buys you very little.

      And there are huge costs to using an inappropriate language to solve a problem.

      If it were just me, I'd go with Java all the way because at least it is fairly reusable on unknown future hardware.

      And that being said, it would completely suck to try to work on certain classes of problems and platforms only in Java.

      At my current company we have
      C, Oracle, MS-SQL, DB2, Java, JBoss, Eclipse, WSAD, RPG-ILE, Crytal Reports, SAP pieces, Various DTS packages, Cobol, Javascript, VB6.0, Various "MS Application" languages, and .Net. (And various XML/Markup stuff). And several packages.. which are basically programming languages when it comes to interfacing them. Plus some old powerbuilder stuff and maybe some foxpro plus spreadsheets and three kinds of workflow. Oh and several flavors of MQ...

      I get the value of fewer languages and a standard platform.

      I would hate to do workflow in C. I would hate to do reports in .Net without Crystal Reports and .Net can't handle the things that RPG-ILE and Cobol eat for breakfast.

      Even just the 30 or so programmers that work in RPG-ILE can't be swapped because each package (~750k lines per package) contains specific business rules. Changing a programmer with the same language and platform results in lower quality work, doubled or quadrupled time lines, and more errors in production.

      Executives Hate this and want everyone to be generic even if it takes 10 times as long (and before I entered management and stopped being a programmer, my productivity was down to about 1/10th of what it was in 2000).

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    5. Re:It's dumb. by moderators_are_w*nke · · Score: 1

      That's not really what he said though is it. And you're right, using the same framework for the same class of product does make sense.

      For totally different classes of product you need to pick the best tool for the job and stick with it for that class.

      --
      "XML is like violence. If it doesn't solve your problem, use more." - Anonymous Coward
    6. Re:It's dumb. by mcrbids · · Score: 2, Interesting

      I'm an executive. I'm also a programmer. I will do just about *anything* to avoid the 10x decrease in productivity you mention.

      I've seen it - so far, we compete aggressively with companies many times our size, and trounce them handily by trusting our developers and maintaining a highly consistent code base with lots of comments and purposefully simple SQL queries. The results (so far) have been eye-popping.

      BTW: our bread-and-butter app is written in LAMP (postgres) with a fair amount of php-gtk for the client-side stuff. It's been pretty impressive so far - company has grown from 40% to 70% per annum, every year, for 5 years, in a marketplace where our penetration is still less than 1-2%, while being intensely profitable.

      I guess I'd say: don't confuse the "understanding the problem" with "understanding the solution". You have to understand the problem, and that will never change. But I want to reduce the amount of friction starting at the point you understand the problem to as close to ZERO as possible! Any time spent finding solution-oriented stuff is time wasted. The solution should be presented using a standardized interface so that only a few calls are required to figure out exactly what's going on, and then begin writing.

      Documentation helps, but standardized coding conventions help even more - more than reading documentation, knowing how to consistently look for "WTF is this X widget doing?" is probably far more productive than spending 3 days reading arcane (boring) and poorly-written documentation.

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    7. Re:It's dumb. by Maxo-Texas · · Score: 1

      It sounds like you may be a smaller privately held company.

      I'm at a publicly held, tens of billions organization. Our programmers now take 6 weeks to change 1 line of code. Our programmers are no longer allowed to proactively make ANY change not pre-approved. We have 300-500 programmers and contractors. Changing anything is like changing the spark plugs on a running engine.

      SOX totally slaughters us. And then executive illusions that programmers are generic for the last couple years are having a large negative impact due to resource constraints. There is *one* invoicing expert as much as they hate it.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    8. Re:It's dumb. by Maxo-Texas · · Score: 1

      Even better,

      I know enough to know this is an area where they won't listen.

      They have unrealistic desires. They want it fast, cheap, and bug free-- and I know you get two of the three.

      They enthusiastically start new things, then fail to put enough in the budget to "do it right" because "doing it right" would have been too expensive and gotten the project canceled before it started.

      They are willing to spend millions on redo's, patchwork, and fixups but are very stingy about spending a fraction of that before hand.

      They constantly (every 5-6 years) reimagine that a bunch of college graduates or inexperienced foreign programmers managed by a consulting firm are going to allow them to get a bug free $5 million system. Any consulting firm that tells them the truth is not given work. Any successful consulting firm knows you have to lie- but then most consultants become corrupted by the necessity to lie and go overboard (grossly over promising and under delivering).

      You *must* like to executives- but for your and their own good, keep it to reasonable lying.

      But here on Slashdot, I can say it like it is. And...

      It's dumb.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    9. Re:It's dumb. by phunctor · · Score: 1

      Oh yeah. Back in 1976 I needed a diff so I wrote one. In S/360 COBOL. Because it was the immovable coding standard. Simulated recursion, what a concept.
      --phunctor

    10. Re:It's dumb. by fishbowl · · Score: 1

      The only thing I take from this is that "upper management" is "somebody else", despite the superior competencies of the people who work "under" them. But that never seems to translate into promotion, does it?

      And pointing this out is "flamebait?"

      There seem to be a LOT of organizations where the people in charge make stupid decisions, and the people who are lower on the latter know better. But there are vanishingly few stories where these smarter people with their better ideas have used that as a tool to attain a position of authority. Why do you suppose that is the case?

      --
      -fb Everything not expressly forbidden is now mandatory.
    11. Re:It's dumb. by Maxo-Texas · · Score: 1

      I agree with you fishbowl. And you need to put your prejudices away.

      I have have coached a half dozen people like you those refer to.

      But I'm the guy who is at salary cap and getting a promotion every 12 months until the next step up would be managing a third of the department.

      You mistook realism for bitterness. I'm not bitter. I'm very happy.

      The executives are idiots when it comes to computers, they want a dollar for a dime, they want a 24 million dollar computer delivered next week without warning, they want a 5 man year system delivered bug free in 1 year with 2 programmers.

      And it is because they have no way to tell if we are telling them the truth or lying to them like Scotty.

      The only thing I've found that works is to fail gracefully and in small ways often. They understand small failures means you are working at capacity.

      While others work 72 hour weeks to "make it happen", I get praise and bumped upstairs to manage. And my team is saying i'm one of the best team leads they've ever had. Because I protect them, I shoot straight with them, and I give them recognition for good work.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
  27. More than just technology to consider by Hairy1 · · Score: 1

    The point is that there is a cost to having a multiplicity of development environments. It makes it very difficult to move developers to other projects, and thus tends to increase headcount. Uncontrolled use of technology means that developers can implement systems with little oversight from other developers, as other developers do not have the skills to do proper review.

    I am not saying that we should decide to use only one language, but a small subset of languages and skills seems to be able to get most jobs done. Supporting languages and tools needs to consider more than just technical considerations. What is the availability of skills in the job market? What kind of vendor and community support is there? What kind of productivity can be expected? Will the technology be supported in future, or will we be left with a white elephant?

  28. Part of best tool for job is one people know by Anonymous Coward · · Score: 0

    Part of the best tool for the job is one know by other people at your organization. If you get hit by a bus, somebody needs to take over your work. If the first thing they need to do is learn a new tool, it slows down the ability of your replacement to do the job. Furthermore, you will have a lot harder time discussing problems if you are the only person who knows the tools and language.

    That being said, having a variety of tools does have its benefits. The big one is learning good ideas from one and applying it to others. Some tools do some jobs better then others (manage a large amount of data in flat files with C vs SQL DB).

    These need to be balanced. Developers should not just bring in the latest tool they heard about into a major development. New languages and tools should be evaluated and tested on side projects, then if they bring sufficient benefit, incorporated where appropriate.

    At my company, I watched (and fought against) a developer who brought a new tool in on his whim. He made incredible claims of the benefits while ignoring that nobody in the company knew much about the tool, including him. What he thought he needed and what he actually needed were two very different things. The interaction of the software he developed with the rest of the system caused massive problems. Unfortunately he was allowed to do all his development in isolation, prior to the rest of the system being in a state that could interact with his part. He declared his success, finished the project, and left the rest of us with the mess. Nobody wants to support the software he wrote. None of the benefits have been seen. Management does not want to pay to re-develop the software. It is a bad situation.

  29. Asking for trouble by bgibby9 · · Score: 1

    A one size fits all approach is usually a business decision to save costs rather than apply the most appropriate tool for the job. Your management is going to find that they will be able to address each project but they'll have the same type of solution bent to fit the problem. Good luck with that!

    --
    http://www.gibby.net.au
  30. Microsoft by DraconPern · · Score: 2, Informative

    You should look at what the majority of the developers are using to make this decision. If you are a Microsoft shop, and cost is not a huge issue, the combination of VS 2008, .Net 2 or 3, and C# and VB.net will fill your need and just can't be beat in terms of getting large teams to work together. Plus, you can always add php via VS.PHP. Unfortunatly, if you are using php, or something else, your choices are going to be all over the place for IDE and framework.

    1. Re:Microsoft by EEPROMS · · Score: 1

      Yeah right and Microsoft's IDE's and API's are not all over the place, seriously do you sell Microsoft products ?

  31. Better to choose a process than an environment by Jabbaloo · · Score: 5, Insightful

    Languages are just details. It's far better for developers to standardize on a set of processes - documentation, as-builts, code review, unit tests, TDD, scrum, FDD ... pick a set of development processes that make sense for your company and project. Some methodologies always make sense - if developers write clear, concise docs and as-builts for their set of coding responsibilities (yeah, right :rolleyes:) then a good developer can pick the code up and run with it regardless of the language.

    Language is just syntax. (OK, it's mostly syntax :p) But the primary point is that most developers have had a wide range of language exposure. I don't know Ruby nor Python, but I've done a helluvalota PERL, JavaScript, and C/C++ and it'd be fairly trivial for me to pick up a well documented Python app and maintain or extend it. Just give me a good O'Reilly book. It takes longer to figure out what the actually code is doing than to understand the syntax and semantics anyways.

    --
    to pronounce my name, I would have to pull out your tongue...
    1. Re:Better to choose a process than an environment by RAMMS+EIN · · Score: 1

      While I agree with you that having good processes is a Good Thing, I vehemently disagree with "languages are just details" and "most developers have had a wide range of language exposure". Languages do vary (e.g. in expressive power, error detection before run time, and overall elegance/hairiness). Most developers I've seen only really know Java, and I've seen people struggle enormously to wrap their heads around something that differed from what they are used to.

      In the end, it is good for your company to be flexible. One day, someone will figure out a better way to do what you are doing, using different tools than the ones you are using. Or maybe the kind of applications that you develop will fall out of fashion. If you are flexible enough, you can adapt to the new times - or perhaps even be ahead of the curve.

      That doesn't mean that standardizing on a single set of tools is a Bad Thing. I think it's a good idea, as long as you develop applications that can be developed well using your chosen tools, and as long as you don't hurt developers too much by your choices. Do keep in mind, though, that you severely reduce your flexibility. Make sure you have your choice of tools reviewed regularly by people who actually have a good understanding of the other tools that are available, and change the policy in time. You don't want your company to become a one-trick horse whose trick nobody wants to see anymore.

      --
      Please correct me if I got my facts wrong.
    2. Re:Better to choose a process than an environment by 7+digits · · Score: 1

      > Languages are just details

      Wrong. Let say you are a software shop (with around 500 "sofware engineers"), with a few hundreds of customers and 50 millions line of code in an obscure language that is more than 20 years old.

      Would you call that a detail ?

      And when, during those 20 years, every 3 or 5 years some smart ass added yet another part done in another language to the pile, would you still call that a detail ?

      And if, when looking at the mess they had, some smart ass decided to dig the company out of the hole by smartly doing external acquisitions, without any regards of the languages used in those, would you still call that a detail ?

      And when you look at an end result of 50 million lines in a core obsolete language, with around 50 others million lines of add-on products in around 10 different languages, what would you call that ? A detail ?

      The software engineering processes have evolved, the people moved in and out, 6 or 7 generation of tools were used, but the code written 20 years ago is still there, and still needs to be maintained at an unbelievable high cost.

      Now, be sure that al the exec that took those brain dead positions had their fat pay check, and made a lot of bonuses running/ruining that company.

    3. Re:Better to choose a process than an environment by Robb+Swanson · · Score: 1

      Languages are just details. It's far better for developers to standardize on a set of processes - documentation, as-builts, code review, unit tests, TDD, scrum, FDD ... pick a set of development processes that make sense for your company

      It takes longer to figure out what the actually code is doing than to understand the syntax and semantics anyways.

      I couldn't agree more. It is much more important to standardize the process and documentation trail, than to standardize on any set of tools and languages.

  32. depends on use by ianare · · Score: 1

    It can be a good thing if implemented properly. If you have several equivalent applications/IDEs/languages then trimming some out is very helpful.
    For example no need to use perl, python, and php for a web app, just do everything in one. I've seen some setups where you have php rendering a page, perl doing some text parsing, python as a script glue *shudders* ... sure you exploit the best area of each but when debugging or maintenance comes around it's a horrible, disjointed mess of spaghetti. (In the above case I would do everything with a good php framework)
    As far as IDEs, you may get little 'weirdnesses' like whitespace not aligning right, peculiarities with a SVN server, etc ... If you can find one that handles everything you need, go for it.

    On the other hand, nothing sucks more than needing a particular tool and it not being available due to some stupid policy.
    If you need a particular tool because no other is suited for that purpose, then use it.

  33. Two by Tablizer · · Score: 4, Interesting

    A similar question came up roughly a year ago on slashdot. My recommendation is to chose two: one "scriptish" language (PHP, Python, etc.) and one strong-typed language (Java, Eiffel). C# is sort of a compromise between the two, but marries you to MS (so far), which may bite you in the future like VB6 did.
         

    1. Re:Two by Anonymous Coward · · Score: 0

      Sorry, who got burned for being tied to Microsoft? Oh that's right, nobody. Because they are still around. They are still ubiquitous. And VB6 apps still work.

    2. Re:Two by Tablizer · · Score: 1

      And VB6 apps still work.

      Yes, but it will be harder to find legacy developers who want to work on it or know it well.
           

    3. Re:Two by IntlHarvester · · Score: 1

      This seems like something a student would come up with. It would never make any sense to build parallel teams based on something business customers would never understand (typing).

      If you wanted to argue that web projects under $100K should be done in PHP, but over should be Java, that might be something. But there is much greater rationale there than what you've described.

      --
      Business. Numbers. Money. People. Computer World.
    4. Re:Two by dkf · · Score: 1

      My recommendation is to chose two: one "scriptish" language (PHP, Python, etc.) and one strong-typed language (Java, Eiffel). C# is sort of a compromise between the two, [...]

      While I agree with your general recommendation (except to note that you may need more than two; some dialect of SQL is frequently the third) I should point out that C# is actually in the same general linguistic category as Java, i.e. great for writing components, but less good at sticking them together.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    5. Re:Two by Anonymous Coward · · Score: 0

      So you've never done any systems programming, and you've never looked at the major gains in expressive power, for some types of problem, offered by functional languages like Haskell and hybrids like OCaml?

    6. Re:Two by Tablizer · · Score: 1

      This seems like something a student would come up with.

      I beg your pardon? I've been in IT for quite a while. I'd welcome more specific descriptive evidence if you disagree.

      My experience is that some projects, especially those dealing with financial transactions or medical info, are better off with strong-typed languages; while those that require a nimble, flexible approach work better with dynamic languages; which are easier to grow, change, and dump.
                 

    7. Re:Two by Tablizer · · Score: 1

      and you've never looked at the major gains in expressive power, for some types of problem, offered by functional languages like Haskell and hybrids like OCaml?

      I've asked for evidence of functional languages providing clear-cut benefits, but the functional fans couldn't produce anything concrete. Most of the "improvements" they eventually revealed after rounds of examples and debates are relatively minor things that are not going to make a noticeable difference.

      If functional better fits the way YOU think and provides benefits because of this matchup, that's fine. However, please be careful about extrapolating personal preferences to others.
             

    8. Re:Two by Anonymous Coward · · Score: 0

      If you're going to pick something so absurdly arbitrary as the amount of the contract to determine your programming language, then why not, say, the background color of the main page of the app? Or the font? All pages that use a serif font use PHP, and sans-serif pages use Java!

      Seriously, as the kids say, "wtf"?

    9. Re:Two by IntlHarvester · · Score: 1

      If you don't get that project scope is one of the most critical aspects of planning, you really are a student.

      --
      Business. Numbers. Money. People. Computer World.
    10. Re:Two by IntlHarvester · · Score: 1

      > I beg your pardon? I've been in IT for quite a while.

      Yeah, I figured :) When you rephrased it in terms of a business function or project scope, I have no disagreements. Although again there will be a lot of other factors there (availability, tools, libraries, and so on), its not a simple matter of "Eiffel is strongly typed and therefore good for medical applications".

      --
      Business. Numbers. Money. People. Computer World.
  34. Does everyone know the same languages? by gravyface · · Score: 4, Insightful

    Perhaps your environment is unique, but I've rarely seen an organization capable of moving people around at will, simply because not everyone has the same skill sets. Even within the Web development paradigm, there's always the "SQL guy", the "CSS guy", heck, even the "regex guy" who's been writing Perl since he was a kid. making that guy use Eclipse instead of vim and puTTY seems counterproductive to me, even if you happened to have someone with those skills on each team.

    --
    body massage!
  35. The most important rule for upper management... by mrroot · · Score: 1

    ...is don't f--- it up.

    Managers who come in and immediately institute sweeping changes are usually gone just as quickly was they arrived. What you are talking about is a strategy, not a mandate from a king on a throne. A strategy is something you move toward that guides your decisions. So maybe you standardize on two or three standards that can be used, and you get much of the benefit that way. But then again, if this is all about upper management's ego, then only one standard will do, of course.

    And finally IT is not a plug and play commodity. If your IT department sucks, it is not because you need to standardize on a development environment. Maybe the company should "standardize" on hiring intelligent, qualified people and "standardize" the HR policies on paying them what they are worth.

    --
    I Heart Sorting Networks
  36. Your workplace is about to go to hell by kerashi · · Score: 1

    Your workplace is probably about to go to hell. So why not have some fun with it?

    First off, update your resume. This is perhaps the most important step herein.

    Next, recommend tools that are as bad for the job as possible while still not raising objections from your colleagues, or better yet, get them to go along with it.

    Watch it fail utterly, quit in disgust, and watch as the company falls apart. ...

    Profit.

  37. Addresses the big cost... by higg · · Score: 1

    ... Application Maintenance!

    The biggest cost for any enterprise application is not the cost to develop it but the cost to maintain it. A company may spend a million dollars to develop an app, and then spend that much per year to keep it running, add enhancements, test OS/DBMS/AppServer/etc patches.

    So by standardizing on a common set of tools and frameworks, the company can train all of its incoming staff on these tools and be able to deploy them where needed. It then allows the company to move staff among the various projects as needed without incurring additional costs to train on a new set of tools/frameworks/etc.

    So, with this approach, you will never get the best tool to fit the job but you should end up with an adequate toolset.

    --
    Thus sprach higg.
  38. Doom!!! by daviskw · · Score: 5, Insightful

    Look for another job. When upper management sticks their nose in with the rational that you described, doom is just around the corner. The problem is simple. How do you get the best performance out of your best people? The answer is not: Fit them all into the round hole. The correct answer is: Let them use the best tools possible as they perceive them to be.

    Okay, languages need to be standardized, but after that, the environment needs to be perogative of the developer.

    Nuff said...

    --
    Beware the wood elf!!!
    1. Re:Doom!!! by Anonymous Coward · · Score: 0

      Exactly. The question you could ask yourself is "why does the upper management want to do this". My guess is that they feel that they are losing control. Managers hate it.

      The problem is that fear makes them do other stupid things too.

      Leave.

  39. A Business Case for Less Management by LifesABeach · · Score: 2, Interesting

    Consider globalization as a solution. The single biggest overhead cost of any set of software projects is the Upper Management Staff. This group of people do not necessarily need to understand how the process is made, they only need to just find other ways of doing some process cheaper. By hiring staff that would cost roughly 30 cents on the dollar from some 'nth world government, the Investor/Owner can reap 70 cents in profit by reducing Upper Management. With the added benefits of not being slowed down by those not directly involved with the product. But the saleability issue is unignorable. For large groups of software projects, like the D.O.D. a different globalization solution would work more optimally. By using A.I.Alturnitives for the handling of such things as Logistics, the DOD can effectively reduce their cost savings by 90 cents on the dollar. The DOD does not really make anything. The vast majority of officers act as redundent support staff. One person could do the job of project effectiveness as an entire team of Middle Managers. As one Combat Engineer said, "Can Do." With the devaluation of the U.S.Dollar, one has to consider lifestyles of other cultures. The worst thing that could happen to the Owner/Investor is the giving back of profits to the Market. The only reliable solution for this is to convert to some other currency than the U.S.Dollar. I cannot help but think that Upper Management should be asking the question, "Should I stay with this firm? In this country?"

  40. I have mixed feelings.. by suresk · · Score: 4, Insightful

    I used to think that a programmer's tools are sacred and you should basically let people use whatever they feel they are most productive with, but I'm starting to see problems with that, at least in big organizations..

    First, IDEs - I've worked on teams where 3 different IDEs were being used by different members of the team - IntelliJ, NetBeans, and Eclipse. It worked fairly well and no real problems came about as a result of the different IDEs. I've also been in training sessions where everyone is using the same IDE except for some crackhead insisting that their IDE is better and that they can't switch to Eclipse even just for the training, and everyone in training has to wait for half an hour why the instructors try to help them figure out why stuff isn't working in their IDE.

    Second, platforms/libraries/frameworks - There are really a lot of valid reasons for standardizing the platforms, libraries, and frameworks your organization uses. You have better internal support, can leverage work done by other groups, and training is easier. Being able to switch people around easily is perfectly valid as well - people leave, get promoted, need a break from their project, want to explore different career goals, etc.. Plus, I think it is good to send people off to other projects to learn and share good practices. Having a standard set of tools makes this relatively easy - all you really need to learn on a new project is the business side of things.

    That said, there isn't a one-size-fits-all solution, so it probably makes the most sense to pick a standard set of tools for common project types. If a project needs to deviate from one of those standards, that is fine, but they need to make their case for doing so.

    So for full-blown enterprise apps, the standard may be Java EE. For smaller apps, it might be Rails or Grails. For desktop apps, you might mandate .NET. Then if someone says "Hey, it would be cool if we wrote this small app in Python", then they could do it, but they would have to show that the benefits gained by using Python in that scenario would outweigh the costs of using a non-standard platform.

    1. Re:I have mixed feelings.. by UseCase · · Score: 1

      A very good answer.

      Any language, library/framework, IDE selections should be driven by an understanding of the solution/problem domain not management. You should have an architect who has the experience to prescribe a suitable development environment without bias based on the type of problem being solved. This should happen fairly early in the initial design phase and should be solidified before CUT starts.

      This process may drive your organization towards different dev environments on different types of projects but you will be more likely to use the correct set of technologies for the problem instead of forcing every solution prescribed into the same set of tech.

  41. Its obvious by LesFerg · · Score: 1

    Well of course you should all be on the same version of Visual Studio.

    What... theres something else?

    --
    If I had a DeLorean... I would probably only drive it from time to time.
  42. dev env by jrussbach · · Score: 1

    Management should strive to enforce a policy in which projects/code are checked out and built with a minimal set of compilation tools. i.e. javac, gcc, etc. libraries, dependencies included. "Development Environments" have clouded our view of simplicity. I do believe that a company should provide a standard base image so that developers can get up and running, but the real issue is eliminating the dependencies of IDE's and tools that people have grown to think that they need. I believe I should be able to check out a project and build it with a minimal amount of effort. Further development can take place with whatever tool I choose. Its about code independence not tool dependence. As for choosing the language... This is a hard fight unless you are an architect. Companies will usually dictate this.

  43. GCC + Make + Emacs by martin-boundary · · Score: 5, Interesting
    The biggest risk with standardization is that you'll paint yourself into a corner with the wrong tools.

    Makefiles are text files, and completely tool agnostic. By standardizing on Make, you don't paint yourself into a corner with a single toolchain.

    Emacs has editing modes for many languages and file formats. By standardizing on that, you don't paint yourself into a corner, unlike a single language IDE. (Also, those who prefer vi can still use Emacs in viper mode, so Emacs is a more flexible choice than vi for the company).

    GCC is a compiler collection, with support for many languages. By standardizing on that, you don't paint yourself into a corner with a single language.

    Best of all, these tools don't take up a lot of RAM, so the development machines will be responsive without beefy hardware.

    1. Re:GCC + Make + Emacs by dosun88888 · · Score: 2, Interesting

      In a sufficiently large company you'll have a good chunk of programmers (though I wouldn't call them that) that ave ever compiled anything without selecting "build" from the menu in Visual Studio. Try getting those guys up to speed on make and emacs.

      You'll actually have to teach them something about code.

    2. Re:GCC + Make + Emacs by corsec67 · · Score: 1

      If a programmer has never interacted with make directly, how good of a programmer can they be?

      --
      If I have nothing to hide, don't search me
    3. Re:GCC + Make + Emacs by techno-vampire · · Score: 1

      If you're doing development by edit/make, rather than inside an IDE package, it really doesn't matter what editor you use as long as you know how to use it. Let them use whatever editor makes them happy, even if they're the only one in the company using it as long as they save their work in ASCII. Making everybody use the same editor means that there's always going to be one nose out of joint, and that's just one more excuse for egos to get in the way of the work. Standardize on the things that make a difference, and let them use what they want where it doesn't.

      --
      Good, inexpensive web hosting
    4. Re:GCC + Make + Emacs by Mike610544 · · Score: 1

      This is the system I'm most comfortable with as well. I wonder how much luck people have with editing in Emacs and just using the IDE "build" function. If you're using Xcode or Visual C++/.net/whatever because that's the format of the project, are there problems with using an external editor?

      --
      ... also, I can kill you with my brain.
    5. Re:GCC + Make + Emacs by bar-agent · · Score: 1

      Makefiles are text files, and completely tool agnostic. By standardizing on Make, you don't paint yourself into a corner with a single toolchain.

      What are you talking about? Makefiles require the make tool. That is not really tool agnostic.

      Makefiles aren't agnostic with respect to make implementations: GNU make has features that aren't in other POSIX makes, like target-specific variables.

      And before you standardize on make, you best make sure the rest of your toolchain needs to have command-line ways of doing everything you need to do, like select a platform and set a build configuration.

      Further, make basically assumes that you have a tool that turns source into executable. How well does it work with a language like maybe Smalltalk, which already has a standard IDE that is part of the spec, does its own dependency checking, and uses project files instead of source code files? Or a system involving database stored procedures?

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
    6. Re:GCC + Make + Emacs by Anonymous Coward · · Score: 0

      eight megs and constantly swapping.

      Also, just use python for everything and you'll be all set.

    7. Re:GCC + Make + Emacs by Anonymous Coward · · Score: 0

      Emacs has editing modes for many languages and file formats. By standardizing on that, you don't paint yourself into a corner, unlike a single language IDE. (Also, those who prefer vi can still use Emacs in viper mode, so Emacs is a more flexible choice than vi for the company).

      Vi has editing modes for many languages and file formats. By standardizing on that, you don't paint yourself into a corner, unlike a single language IDE. (Also, those who prefer emacs can still use vi with vile, so vi is a more flexible choice than emacs for the company).

    8. Re:GCC + Make + Emacs by dkf · · Score: 1

      Emacs has editing modes for many languages and file formats. By standardizing on that, you don't paint yourself into a corner, unlike a single language IDE. (Also, those who prefer vi can still use Emacs in viper mode, so Emacs is a more flexible choice than vi for the company).

      GCC is a compiler collection, with support for many languages. By standardizing on that, you don't paint yourself into a corner with a single language.

      That really depends on what language you are using. If you're using Java, gcc sucks and Emacs is remarkably less efficient than you'd hope. Eclipse really is better for Java, and that's speaking as someone who's a certified instinctive Emacs user. Eclipse is better because it manages packages better, and that makes an enormous difference by getting the #1 source of bloat out of your face. Ant (with the Sun compiler as a back end) is better than make+gcj because it handles complex sets of class libraries more easily and the code it produces works better (fewer crashes, given a general source base).

      But if your project is in C+Python, I bet Emacs and make/gcc will do great.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    9. Re:GCC + Make + Emacs by Captain+Zep · · Score: 1
      But where do you draw the line?

      If a programmer has never written their own compiler, how good a programmer can they be?

      If a programmer has never written in assembly, how good a programmer can they be?

      If a programmer has never designed their own CPU, how good a programmer can they be?

      And with any of these things, not having done them doesn't imply that they couldn't do them, just that they haven't needed to. And it certainly doesn't mean that they couldn't be extremely good in other areas.

      Z.

    10. Re:GCC + Make + Emacs by Aceticon · · Score: 1

      I'll go even a step further - use echo "[next code line]" > myfile.c to write your code, do your builds by hand (who needs make) and stick with writing code in binary: that way there is no way you will paint yourself into a corner.

      PS: I've worked with the GCC + Make + Emacs combo for many years while doing C coding in Unix and love all 3. I've also tried it for Java development and quickly left them behind as soon as i could:
      - The Gnu compiler for Java is not 100% compatible and never was
      - Make is utter crap for Java since it cannot determine cross-dependencies in Java (Java doesn't use header files)
      - Emacs is not too bad (i kept using it with Java long after I dumped the other 2), but it's not quite as good as a specialized IDE (although i known people that still used Emacs for Java coding).

      The point is, there is no single solution for all things. As multiple people pointed above, the option is to standardize to a reduced set of options, not just one but also not many.

    11. Re:GCC + Make + Emacs by Anonymous Coward · · Score: 0

      Whoa! Have I traveled back to the 80's?

      Have you heard about this new movie "Ghostbusters?" Apparently that guy from Caddyshack is in it.

      Hey, I have to check out that new episode of Miami Vice!

    12. Re:GCC + Make + Emacs by Anonymous Coward · · Score: 0

      I've been a programmer for over 30 years and have used all kinds of editors. Emacs is the one editor I could never become comfortable with. If we picked Emacs as the standard editor I would strongly consider retirement.

    13. Re:GCC + Make + Emacs by Miniluv · · Score: 1

      I generally wouldn't ask that they start with raw sand. Beyond that, good calls. ;p

    14. Re:GCC + Make + Emacs by Haeleth · · Score: 1

      Also, those who prefer emacs can still use vi with vile, so vi is a more flexible choice than emacs for the company

      Um, no.

      viper-mode is a vi emulator within emacs: it means that vi users can press all the buttons they're used to using in vi, and they'll do the right thing.

      vile is a version of vi that includes some emacs features, but it is fundamentally aimed at vi users, and specifically does not adopt the emacs keyboard layout.

    15. Re:GCC + Make + Emacs by Anonymous Coward · · Score: 0

      so Emacs is a more flexible choice than vi for the company

      vi users have been collaborating for years with Emacs users for years -- theres no need to standardise on one or the other. Only a dumbass Emacs user would suggest anything different :-)

  44. I might be wrong by Anonymous Coward · · Score: 1, Insightful

    I might be wrong (am sure some Slashdotter will enjoy correcting me in this), but the difficult part of moving between projects is not differences in language. It's differences in the mindset of the who wrote the existing code: the naming conventions they use, any nomenclature specific to the project, what classes are responsible for what functionality, etc. Learning all that malarkey is the difficult part.

    Obviously extremes are bad, if your company is using tens of languages, you might want to start looking at ways that can be slimmed down. However I would argue that choosing a small group of languages that complement your core business is preferable to attempting to shoe-horn one language into doing every job.

    Think of it as being like reading books by different authors: Java is Virginia Woolf, and PHP Charles Dickens, a book is like a chunk of code. Both authors have different writing styles, but anyone can still pick up a book written by either of them and understand the words written within.

    What the PHB's in your company believe, is the difficult part of understanding the storyline in a book is getting to grips with an author's writing style. So everyone should standardise on one author to save time. The reality is, people will get to grips with a new language within a few pages, but won't understand the concepts of the whole until they've read most of it.

    I know: most borked analogy ever. But hey, I'm bored of hearing about cars. :)

    1. Re:I might be wrong by moexu · · Score: 2, Interesting

      I was thinking something similar; the hardest part of moving between projects is picking up the domain knowledge rather than the technology. Standardizing languages/tools/IDEs/etc does very little to address this.

      If it were my company I would be interested in finding out the real problem that the PHBs are trying to solve. Are there too many different toolsets in use or do they think that by standardizing they will make everyone into neat little interchangeable cogs?

      I worked for a company owned by a bank. The bank had its own developers and their PHBs wanted to standardize on languages (C# in this case) so that our teams would be completely interchangeable. They had this pipe dream that if one of our team members was out for a couple of weeks that they could send up one of theirs to as a drop-in replacement, and vice versa. The problem with that is that our company was doing something completely different and a replacement wouldn't be able to learn the business processes quickly enough in such a short time to do anything useful. The PHBs acknowledged that this was an issue but refused to abandon the idea that someday, somehow, our teams would be completely interchangeable.

      --
      "Seek first to understand." - Socrates
    2. Re:I might be wrong by TerranFury · · Score: 1

      If it were my company I would be interested in finding out the real problem that the PHBs are trying to solve.

      Perhaps it's just that, every time you become a manager of a department, you have to change something in order to show that you're working.

      This comes from the idea that the manager who just smoothly keeps the same old thing happening over and over is the manager who doesn't get noticed, and therefore doesn't get promoted.

      Ah, the working world! (Don't worry, academia is less different than you might hope. Career success is the art of self-promotion.)

  45. Standardize development tools? Really? by Anonymous Coward · · Score: 0

    Man... if my company ever made me move out of VIM as my editor, just for the sake of standardizing tools used, I would show them just how insanely it impacts my time. Then I'd quit. Working for incompetent management is hell on earth.

    What these uppers need to realize is just how valuable a talented developer is, and give them good reasons for staying (and cleaning up the garbage). It's not a f***n factory... not everybody can do the same job in the same way. Lower management can help them realize that. That's the only way you'll get the job done more efficiently.

  46. Let the dominos fall by Toll_Free · · Score: 1

    I hated it, having to support it as one of the infrastructure engineer, but Domino pretty much did everything, in an OK manner.

    Our main developer was the head corp attorney, who decided he hated law and started working as the IT dept in the company. He learned Domino out of necessity, as the new CIO brought it over from the financial / insurance arena.

    I hired on about a year / year and a half into the migration from MS Mail / BS apps to Domino. I stayed for about 2 years. Everyone that did domino dev talked big shit about it, but they all agreed, at the end of the day, it pretty much did EVERYTHING the company needed, in an OK manner, and did more in a lukewarm way than anything else could come close to delivering (read this as, it will do almost anything, although it might not do some things the most efficiently).

    I don't even know if it is still around, but I'd check into Domino / Notes / etc. I hated it, we all did, but it did work. We even started collaborating it with stuff that HAD to run on OS/2 (Timberline) and some stuff that had us running Win 3.11 on some workstations (post y2k).

    YMMV, of course.

    --Toll_Free

  47. Another recent decision by Anonymous Coward · · Score: 0

    Upper management also decided to removed everything but a #2 phillips bit from the maintenance departments toolbox citing the rising cost of supplying 4 different kinds of screw drivers.

  48. On the left... by Cur8or · · Score: 0

    in blue and black trunks we have the MS fan boys with their fat manuals and their Vista-bruised ego's. On the right in the rainbow trunks we have the OSS junkies with their man pages and up to date Firefoxes. Let's get ready to rumble!!!!

    --
    Winkey shortcut mapping for 64bit windows. WinKeyPlus
  49. You're F*d by Anonymous Coward · · Score: 0

    And not because of the particular number of languages. It's the thinking behind it: that programmers are just commodities. The idea is that if we standardize on, say, Java - that we can just replace one Java programmer with another and there are thousands of those on Monster.com. This type of thinking betrays a deep misunderstanding of development and if your management doesn't get this now, someone will have a lot of educating to do. Either way, I'd rather have a route canal than work there.

  50. Um, maybe... by zizzo · · Score: 1

    If everyone at your company is doing similar enough thihgs this should work out OK. I doubt you will see any bump in productivity though.

    However, languages are tools. Like carpenters, software developers should use the right tools for the right job. Forcing everyone that's building your house to use exactly the same kind of hammer for every task doesn't give any benefit and will result in worse, not better, construction.

  51. Unlikely to succeed. by Anonymous Coward · · Score: 0

    The idea of a homogeneous environment is attractive -- it is obvious why management would be interested in this. But it probably will not succeed, or if it does it will hurt your company.

    It will be costly, as your company goes through the inevitable investigations, debates and infighting to try and choose a plan. Then come the struggle to port every product to the new environment; during which time you won't be adding features. But once you actually get everyone on the same platform, you are not done.

    What if you acquire another company? Will you port that technology to your platform? That is likely to be even more difficult and expensive.

    How will you upgrade your processes? No piece of the system can be replaced unless it is feasible for every part of the organization. I guarantee there will be some nasty old projects that will hold back everyone else. Every toolchain decision will have to go through the CIO. I hope they have a lot of extra time.

    In sort, while your company is navel gazing, your competitors who aren't locked down will running ahead.

    A foolish consistency is the hobgoblin of little minds.

  52. Root cause by sohp · · Score: 4, Insightful

    There is definitely value in having the members of the development team agree to a set of tools around which they can share common experiences and exchange solutions for problems that come up. That's fine. What scares me about your question is that it is driven from above,

    The main rationale is that people can be relocated from one group / project to another faster, because they don't need to learn a new environment when they switch.

    Developers are not plug-compatible interchangeable parts that can be slotted in and out of various projects according to shifting needs. It doesn't matter if they all know exactly the same toolset or not, dropping Jane from the accounting project who has been around for a couple of years in to replace James in the supply-chain project who left because he got married and his wife is taking an internship at a distant hospital and expecting equivalent results demonstrates a vast ignorance of how developers become productive.

    Nearly every company's management wants to imagine it can standardize developers for a lot of bad reasons -- because they believe that gives them leverage over someone who has deep domain knowledge and can't easily be replaced with a junior programmer for example. Or they imagine they can save money by buying bulk licenses for a product from a vendor. Beware of management playing golf with software tool vendors, you'll get stuck with some POS for sure.

    Perhaps going to management and suggesting that the developers collaborate to nominate a selection of acceptable toolsets from which management can select would work, but that kind of suggestion never seems to be taken very well by the suits.

    1. Re:Root cause by CyberDong · · Score: 1

      What scares me about your question is that it is driven from above,

      The main rationale is that people can be relocated from one group / project to another faster, because they don't need to learn a new environment when they switch.

      Developers are not plug-compatible interchangeable parts that can be slotted in and out of various projects according to shifting needs.

      The statement here could also be read as "people can be ALLOWED to relocate from one group / project...". Perhaps management is actually trying to HELP the developers - not just treating them as cogs. Sometimes management isn't really as clueless and detached as we think.

      Of course, I don't believe this either, but I'm on vacation right now, and it's nice to think happy thoughts... Now back to cloud-watching....

    2. Re:Root cause by sohp · · Score: 1

      "people can be ALLOWED to relocate from one group / project..."

      Agreed, which is why root cause is important. Because the initiative seems to be coming from the top down, I'd want to know management's motivation. It's the old track about asking 'why?' five times. Why do they want to standardize? So people can be relocated faster. Why do they want people to be able to relocate faster? etc...

      On the other hand, if the effort were coming from the development teams, then we could discuss whether or not the desire to move between projects is a motivation, and if so, why? Are there projects that really suck that people hope to get off of? Why is that? etc...

    3. Re:Root cause by sohp · · Score: 1

      To put it another way, "Although they offer us concessions, change will not come from above."

    4. Re:Root cause by Anonymous Coward · · Score: 0

      However, taking Jane from an F-22 trainer and moving her to an F-16 trainer to replace James seems perfectly reasonable unless the F-22 trainer uses linux and GCC while the F-16 trainer uses Windows and Visual Studio.

  53. Good Plan for Bankruptcy by skeptictank · · Score: 2, Insightful

    If all your company does is make websites(or web 2.0, cloud computing or whatever the buzz word is this month) this might be fine. If the company makes a variety of applications for different purposes or targets, then this is a really bad ideal. The engineers attached to the project are the people who should be making the decisions about the tools and languages that are used to actually make working code. Management above the project level is to far removed from the actual work that will have to be done to be making that kind of decision.

  54. Anatomy of a successful software project by khaledh · · Score: 1

    In most enterprise applications you'll be using multiple languages whether you like it or not:

    - A multi-purpose high level language for n-tier apps (data access, domain logic, presentation): Java, C#, Ruby, Python
    - A database language: SQL
    - Web interface (if it's web-based): JavaScript, DHTML, Flash
    - Integration and Middleware: XML

    As long as you're within one product boundary, one general purpose language is the way to go. Across products (from same vendor or from different vendors): different languages + well standardized protocols (XML or binary serialization) is the way to go. Mixing more than one general-purpose language in the same product is usually a bad idea IMO (unless the languages share a common framework; e.g. C# and VB.NET)

    The thing that ties everything together, whether using one or more languages is the development process and tools:

    - Source control (SubVersion) -> provides change tracking, branching, merging
    - Automated build environment (Ant, NAnt) -> can build code, database, tests with the push of a button
    - Continuous Integration (CruiseControl) -> detect and fix integration errors early
    - Unit Testing (xUnit) -> ensures predictable behaviour in the face of code changes
    - Bug tracking (Bugzilla) -> track defects, plan fixes
    - Documentation (Wiki, DocBook, code comments) -> inform your peers of your public APIs (i.e. how they can use what you have written), and possible extension points (how you can use what they have written); inform stakeholders how the system works (concepts, architecture, business scenarios); inform your users how to use your system properly

    A good project manager ties everything together and keeps everyone on schedule.

  55. Coming up to speed on New Environment? by skeptictank · · Score: 2, Insightful

    If this is a major factor when ramping-up a new engineer on a program, then your application domain is probably so easy that your jobs will be outsourced to Albania soon anyway.

  56. Are the tools really the blocker??? by Anonymous Coward · · Score: 0

    Does it mean that if all engineers in the World use Autodesk CAD for their jobs - it would be easier to put buildings architect as a part of space ship architectural team, then?

    I mean - are the tools really critical here? Hardly, IMHO. The problem the team working on is the most critical thing. Tools are tools and are changing still, we have to accept this. Changing the tool (to some degree) is peanut compared to changing (business) problem You are working on.

    Also, please send Your management copy of DeMarco's "Peopleware" copy... And hopefully the will finally know that developers ARE NOT INTERCHANGEABLE, whatever You will try to do.

  57. Outlaw all religions except... by betelgeuse68 · · Score: 1

    The church of flying spaghetti monster:

    http://www.venganza.org/

    That and make everyone on earth speak Latin... I'm sure it will all work out somehow.

    -M

  58. NFC, QED by oGMo · · Score: 1

    Upper management of the company I work at recently declared that all new development should be done with a single combination of development tools, language, and framework.

    Find a new company. And let us know which, so we can divest. Stock symbol? Riddle? C'mon.

    --

    Don't think of it as a flame---it's more like an argument that does 3d6 fire damage

  59. Choose an ide platform by Billly+Gates · · Score: 2, Interesting

    Management is stupid indeed and like another post said they do not know the difference between a language and an app. Management loves one big app such as peoplesoft or something that integrates and assume languages or like software programs to lower costs.

    If you pick Netbeans or Eclipse you can then use other languages for it and management wont realize it. You do not have to be stuck with java even if the ide is written in it. Management assumes everyone is using the same thing.

    Or if your an ms shop vs.net can use perl.net and python.net for small scripting and text searching while all using the same .NET framework for small admin jobs while still retaining your web (C#) and desktop C++/VB languages. This ensures your on the same platform but can still choose the right language for the job.

    I read here on /. that Catupiller uses C for everything including shell scripting and its obvious its a very bad idea as one language such as java has vast api's for serving dynamic pages while C is good for getting close to hardware and using assembly calls.

    Maybe recommending 2 or 3 languages using the same framework (.net) can be a selling point as they can integrate and retraining is low. But yes web programming is not desktop nor low level hacking as different tools are needed for different things.

    Standardize on 3 and chose a common framework for all. You do not have to use .NET if you do not want too but its commonly used. Java is getting better for non server use. But try to sell the ide as a language to get around any dumb requirements. ALso remind management that every language has a sub language within it like AJAX, SQL, etc so its its impossible to standardize anyway.

     

  60. Needs more info by GrouchoMarx · · Score: 1

    It depends on the situation. What sort of company? What size?

    If everything you do is web, then standardizing on [PHP|Python|Ruby] for all your web stuff makes sense. They're all close enough functionality-wise, and it will make mixing and matching your code and coders easier.

    Similarly, doing server-side programming sometimes in C#, sometimes in Java is probably wasteful. They're both close enough in their approach and capabilities that having to learn and remember both is wasteful.

    Standardizing that you'll use [C#|Java|Python|C++] for every line of code written? Nonsense. That's over-standardization. In at least some cases any one of those is going to suck royally.

    Standardizing your source control system? Definitely a good idea, unless you have to interact with a 3rd party open source project that is using something else. Even then, you should use just one for all of your internal stuff and then make sure someone knows how to use whatever the 3rd party uses. (I suggest svn myself, but some people prefer distributed RCSes. Pick what you like.)

    Standardizing your IDE? Only if you want to make 2/3 of your developers less productive. I can see an argument in favor if you are paying per seat for the IDE and want to only have one vendor and site license to deal with, certainly. But if you're paying that much for an IDE, you need to switch to an open source IDE anyway. :-) At my company we offer a standardized IDE for all programmers, but half of them use something else at least half the time. That's fine, as long as they get the job done.

    Same framework? Same argument as language. Within a given realm, sure, it makes sense. Use one, or maybe two, frameworks for your web stuff. Use one for your desktop stuff. But don't presume that you MUST use that for EVERYTHING. Just make it your first choice to try, not an absolute mandate.

    So it's all about balance, and picking the right battles. There are benefits to standardization as long as you don't over-do it and create a monoculture.

    --

    --GrouchoMarx
    Card-carrying member of the EFF, FSF, and ACLU. Are you?

  61. It isn't the tools -- it's the application by Anonymous Coward · · Score: 0

    Management is deluding itself if it thinks the use of a standard set of tools will make developers more portable.

    The learning curve for a skilled developer lies in learning the ins and outs of the application being developed -- not learning the development tools.

    When you transfer a developer to a different project the first thing you do is give the developer some programs to look at so they can figure out what is going on. I'll grant that if you give a visual basic programmer a java or c++ program he/she may be a bit slow for the first day or two, but (assuming a skilled developer) he/she will come up to speed in the new tools very quickly.

    Much more quickly than he/she will develop a full understanding of the application.

  62. Save so much time! by Anonymous Coward · · Score: 0

    Gosh, this is a great idea. I'm sure you'll save so much time you'll have plenty to play whole round of golf with a 7 iron!

  63. It depends a lot on company size&diversity by iceco2 · · Score: 2, Interesting

    We have the same issue come up in my company(~500 developers).
    Obviously with such a large number of programmers working on so many different pieces of software complete standardization is very problematic.
    We are finally deciding to create a set of 2 or 3 software architectures to choose from.
    And have them prioritized, and a process of getting an architecture approved. The idea is when starting a new project you should use the preferred architecture with minor changes unless you have a good reason to pick architecture #2 or #3. however You will have to have very compelling arguments to run your project on a totally new architecture and explain yourself to top executives.
    An architecture will include both development and production environment for example we may have the M$ option: win2003+IIS+mssqlsever+C#+Link+Visual studio+TFS
    or our java option:
    Red hat+jboss+hibernate+java swing+java web start+eclipse+SVN

    The problem is setting a process to update the architectures with time, we want to move forward with time but we don't want to be dragged in to new adventures every week.
    We can put a person/team in charge of a specific architecture but we still don't have a good process for phasing out an architecture and introducing a new one.
    How do we decide we are ditching C# and moving to Ruby on rails? This remains an open problem for us.

        Me.

  64. Minimizing the low points eliminates high points by klasbas · · Score: 1

    There are advantages in using a common set of tools across the board. It eliminates a lot of effort when people switch. Unfortunately it also eliminates innovation and creativity and it treats all people like androids who think and work the same way.

  65. "Herding cats" - I love it by Mathinker · · Score: 2

    "herding programmers is like herding cats" --- I love it! First time I've heard that expression.

    What's even better is the video.

  66. This only makes sense if you think job was trivial by polyex · · Score: 1

    least common denominator engineering. Wonderful idea, its up there with outsourcing American engineering to India.

  67. Not really all of that hard -it's about perception by dbIII · · Score: 1

    Call it $COMPANYNAME.build or similar, and just have it as some way to bundle all of the assorted tools that everybody needs. Extra points if it's a ghost or similar deployable disk image. Addition of any extra things that were not initially thought of can be argued as an upgrade.

  68. Right on by daemonburrito · · Score: 1

    That's really really funny!

    I nearly shot dr pepper out of my nose.

    Sign me up if you need an evangelist to do an engEDU-style talk.

  69. You are screwed by Anonymous Coward · · Score: 0

    If your upper management is telling the engineering management HOW to develop software then your company/organization is screwed. If your engineering management is going along, then you are beyond screwed.

  70. Solve the right problem by iwein · · Score: 5, Insightful

    First of all, it's a pile of shit and it stinks.

    I can show you two programs written in Java that are so different that you wouldn't know it was the same language if you found them in the wild. As remarked before, switching languages is almost never the problem.

    The problem is that developers in different divisions are not interchangeable like parts in a machine.

    Newsflash: developers are not interchangeable.

    If you hire and train in a smart way you might get developers that are smart enough to deal with somebody elses messes and that leave messes that can be dealt with by somebody else.

    The first thing that a developer will say when he starts at an existing project: "This should have been done differently, using language Y, framework X. This is a pile of shit!" (Y and X varying among developers and over time). Doing everything with language Y and framework X doesn't fix anything though, because they are in constant flux.

    Newsflash: projects are not all the same.

    If all your projects are the same you should come up with a way to let the business owners roll out variations on the theme and get the hell out of there.

    The interesting bit about writing software is to learn the domain and find the programming model that works best there. Then simplify it until you're done.

    This is not to say that developers should be allowed to try anything new. Reducing the choice a bit (dare I mention web frameworks?) makes a lot of sense. Eliminating all choice is just plain stupid.

    If you dumb down the organization by eliminating evolution of the programming model and robbing the developers of the freedom to do what makes sense, you will see the smartest developers walk first. The next thing you will see is a huge drop in the rate of change in the products and the responsiveness to the market. The last thing you will see is lawyers.

    --
    Show a man some news, distract him for an hour. Show a man some mod points, distract him for the rest of his life.
  71. If only... by Gavin+Scott · · Score: 1

    The only problem with "one toolset" is picking the set of tools to be included. If people are suggesting tools that are new or had major changes in the last year or two then you're probably screwed because people are just heat-seeking to the latest trendy tool chain.

    Any set of tools you pick is going to look pretty hairy in a couple years, and to be worthwhile a "one toolset" initiative really needs to be stuck-to for 5-10 years in a typical business environment. Anything less and you might as well just pick a new toolset for every project, since you're not going to get the benefit of standardization except over a long period of time.

    So my recommendation when people suggest this is to require them to pick a set of tools that existed two years ago, and restrict versions to things upwards compatible to what existed then.

    When forced to go through this exercise people tend to go "ewww, who wants to use that old stuff", but that's exactly where you're going to be in a couple years, and you need to be sure you're not using the "one toolset" initiative as a way to sneak in someone's idea of what this year's sexy hot new tools are.

    The trick is sticking with your choices long enough to get the benefits, and not just abandoning them as soon as the downsides of your tool choices become apparent.

    In general I think there's great benefit in making a "one toolset" decision, but only *if* you can actually stick with it through all the eventual pain and suffering. But I've never yet seen anyone (voluntarily) achieve that. If you try this then best of luck, and try to get buy-in from the people who own the company, not just the IT director of-the-week who might leave in 18 months and get replaced with someone with totally different ideas.

    G.

  72. Rule of Diversity by treblecaster · · Score: 1

    One of the basics of the UNIX philosophy... Distrust all claims for one true way.

  73. @Google by SnprBoB86 · · Score: 1

    There is C++, Java, and Python. Almost everything is in those 3 languages.

    Sure, there is a lot of javascript for the web apps.
    And of course http://labs.google.com/papers/sawzall.html is used for processing logs.
    Oh and a bunch of people like bash scripts for various things.
    And there are loads of domain specific languages for RPCs, data files, AI systems, etc. etc.

    But if you need continuous remote unit-test support? Use Python, Java, or C++.
    Want 5 minute distributed builds? Use the big 3.
    Find a compiler bug and need it fixed ASAP? Big 3.
    Want to integrate with other parts of the Google code base? B3!
    Need an expert to sort something out? You get the idea.

    You can standardize on a base toolset, but you can't exclude the right tool for the job. It's a simple cost/benefit analysis: If the benefits of using a particular tool out way the costs of straying from the beaten path, go for it. Otherwise, it doesn't hurt to standardize.

    --
    http://brandonbloom.name
  74. Size matters by Lally+Singh · · Score: 1

    You've already stated the key tradeoff: developer mobility vs tool leverage.

    If you have many small projects, then it's a huge win to standardize on one tool. Tool leverage won't help much, but having to swap dev platforms frequently leads to bad code (little experience with a single tool) and high overhead (for learning the tool).

    For larger projects, some specialization should be considered. Even within (for example) the Java stack, different teams could use different APIs (e.g. JBoss vs Spring) for their specific tasks. As long as you have a few people good at integrating them when needed, you'll be ok.

    The larger the project, the less a factor the tools are vs the sheer mass of the project. Then advantages brought by tool selection should be considered carefully.

    --
    Care about electronic freedom? Consider donating to the EFF!
  75. Two by sveinb · · Score: 1

    Not that I would force it down anyone's throat, but two languages should do for most jobs: One loose and fluffy scripting language and one tight and hard compiled language.

    The choice is simple, really. The tight and hard one must be C (or C++) because of its total dominance in its domain.

    The fluffy one should be JavaScript (don't laugh) for at least two reasons: 1. Some part of your organisation probably has to deal with JavaScript anyway and 2. JavaScript's syntax so closely matches that of C that it is possible to automatically generate completely transparent wrappers for absolutely any C function.

    So that't what I've been up to on my spare time for the past couple of years: http://jsext.net

    P.S.
    If you don't take JavaScript seriously as a programming language (most programmers don't), you probably haven't watched any of Douglas Crockford's talks. Check them out. They're online.

  76. Analogy by heli_flyer · · Score: 1

    Let me translate the original post so non-programmers can understand it:

    "Upper management at the car garage I work at recently declared that all car repairs should be done with a single tool. The main rationale is that people can be relocated from one car repair project to another faster, because they don't need to learn a new environment when they switch. Of course the tool used by everybody does not need to be the best tool for the job, but it should be good enough to allow every project to get done. What does Slashdot think about this? Is it OK to use the same repair tool for every repair project, instead of choosing what fits best? Will the time saved be sufficient to offset the time lost to the 'not the best tool for the job' mechanics will be forced to use?"

  77. A quote from a friend by david.emery · · Score: 5, Insightful

    "Management standardizes that which they do not understand, to relieve them of the responsibility of having to think about it any more..."

    dave

    1. Re:A quote from a friend by cheesemaker30 · · Score: 1

      Here's another quote: "You cannot improve that which you cannot measure."
      A corrolary would be that the only way you can measure is to make sure you're comparing apples to apples.

      --
      "It's a dog eat dog world, and I'm wearing Milkbone underwear..."
    2. Re:A quote from a friend by itsdapead · · Score: 1

      Here's another quote: "You cannot improve that which you cannot measure."

      And another: "No fair! You changed the outcome by measuring it!"

      A corrolary would be that the only way you can measure is to make sure you're comparing apples to apples.

      Unfortunately, some manager types would solve that by banning oranges and bananas.

      --
      In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
  78. God No. by Anonymous Coward · · Score: 0
    We're in a similary quandry. We have some developers who have been supporting a critical piece of the company's software for 8 years. This is all fine and dandy, but they're horribly behind the times in terms of modern development tools and environments. Web services? Bah, we have "services", it's just that we have to write you a custom API for each one! Maven? Schmaven, we just have all the source for all our dependency jars in our god damn project! Memory footprint! Bah, machines have a lot of memory, we'll use Java for everything even for small services that need to run on every compute server!

    And now they're trying to push their god damn "framework" on the organization, and management buys into it because the product they support is such a success! It's bullshit. At all costs fight it. Settling on some ridiculous "framework" (most especially one built in the company) will kill your innovation and ability to be agile. Fight those fuckers.

  79. My Toolkit for nearly everything by Krapulator · · Score: 1

    PHP + Symfony + Aptana + MySQL + Subversion + RSync + Gimp The open source swiss army knife!

  80. it's not terrible if done in moderation by Trepidity · · Score: 4, Interesting

    I'm in academia, where just about the opposite prevails: you can use whatever you damn well please, and generally PhD students don't even get that much in the way of hard-and-fast rules from their advisors, so they use what they please too, as do half the research scientists and post-docs. The results of that are why companies consider standardization.

    The main problem is that, while experimenting with lots of languages and using languages perfectly suited to a particular task is nice, doing it too freely makes for a nightmare if you ever want to combine things, have a programmer of one system help out on another project, etc.---just the sorts of issues that prompted this question.

    My current research project's codebase, partly inherited, partly pasted together from components that were lying around the lab, and partly of my own doing, using nine languages, as a result of everyone using whatever seems like the right tool for each job. There's a C backend for one part and a C++ backend for another part; an AI component in Lisp; some GUI and glue-y stuff in Python; other GUI stuff and some other AI stuff in Java; some text-munging scripts in Perl; some number-crunching in Ocaml; some parsing and god knows what else in Haskell; and some other AI in an in-house language that compiles to Java.

    Now some of those tools were indeed exactly the right tool for the job. But this is not ideal to maintain, and it's nearly impossible to ship to anyone who isn't me in a way that a mere mortal could get the code built and running.

    Oh, and there's some other projects in the group that use C#, and one that uses Scheme, if I want to go for double-digits...

    1. Re:it's not terrible if done in moderation by Anonymous Coward · · Score: 0

      My current research project's codebase...using [sic] nine languages.

      Is that really a problem?

      What about this mix?: html, css, javascript, xslt, (perl/java/ruby/python/etc), apache, sql, cron.

      That's a pretty mundane project--not very complex at all. A run-of-the-mill web app. That uses 8 different "languages."

      If you can't mix and match within the same project to make things work, you're in the wrong business.

    2. Re:it's not terrible if done in moderation by Double_Dark · · Score: 1

      On a recent project that I completed we used the following mix for a fairly standard web app.

      html,xml,css
      SQL
      javascript,xslt,ColdFusion,Java,C#

  81. A Management Perspective by cheesemaker30 · · Score: 2, Interesting

    I love all the flame comments on these threads. Especially the assumption that management is stupid. Not that there isn't a reason for this perception, but the same perception exists that engineers/code monkeys are introverted trolls that never voice their opinions to management to help them make the right choice...
    Anyway, being in management myself, (but having been a code monkey for 10+ years) I can understand the viewpoint that many here are taking.

    But that's not what I wanted to reply about. That was just my flame-bait! Really what I wanted to say is that I have a pretty good idea why the original poster's company is thinking about implementing a common tech stack. First, they have probably been burned by one or more of the following:

    1. A critcal piece of their system is written in an obscure/unsupported language that no one at the company understands any more, and even though they are willing to invest in updating it, the $ required to basically stay par with existing functionality is causing some heartache.

    2. A critical piece (or even non-critical) of their system has been found to have used a non-licensed or too restrictively licensed library that no one realized until just now, and they are facing legal risks unless they re-engineer it out of existence.

    3. The company has grown quickly and people now realize that there are at least 3-5 different code repositories on different source control systems and no one really knows where certain pieces are or which repository has the "latest" deployed version.

    4. Projects keep spending time writing and rewriting the same component multiple times, aka re-inventing the wheel.

    5. "Key/core/irreplacable" engineers insist on promoting NIH (Not Invented Here) practices which people in the company are starting to realize come for free in certain modern environments.

    6. In an existing product, the company released a service pack to customers, but as part of the work, an engineer upgraded a library/ide/runtime/etc which caused huge instability, and the QA team didn't catch it because they were assured that it was a very minor release.

    I'm sure there are more, but those are 6 things off the top of my head that have happened to me both as an engineer and as a management-stooge type. And while a common tech stack doesn't eliminate these types of things from happening, they can help give better visibility into seemingly innocuous choices that engineers make almost every day.

    Most policies like this are because something bad has happened somewhere in the company and people are trying to limit future exposure to risk. Now, I'm sure as you're reading this post you're thinking that you are a damn fine engineer and these things would never happen to you. And maybe you're right, but are you better than the other people that are reading this post? While I'm sure that you are surely God's gift to the engineering world, not everyone in the engineering world is. People make mistakes. Maybe even you.

    These kinds of initiatives aren't necessarily all bad if they aren't implemented in strict black and white. If they are used as guidelines that can be bent and broken for the right reasons, then it can be very beneficial. Even that process of getting permission to go outside the guidelines can cause good dialog to occur that can result in an even better idea to bubble up.

    Whew. That was more than I intended to type. Go ahead and rip me apart now.

    --
    "It's a dog eat dog world, and I'm wearing Milkbone underwear..."
    1. Re:A Management Perspective by Anonymous Coward · · Score: 0

      That's probably true, However, it's a symptom of poor management. Usually by treating the developers like crap, and having trouble retaining the top people.

      Fix that particular problem, and support the developers instead of dictating to them, and you'll save yourself from these problems, as well as save a ton of money.

      Most managers think that, since they're a manager, they need to start dictating what's the way to do things. Things spiril downhill from there.

      If you're going to hire bright, talented people, tell them what the problems are, and let them come up with the solutions. Otherwise, your approach is what's required for mediocre programmers.

      The problem with that though, is that the top people are then working for your competitors.

  82. Mine Mine Mine by Anonymous Coward · · Score: 0

    The new languages I see making inroads in the enterprise (yes, I'll just say it: groovy and ruby, etc.) are major sell-jobs for consultants and niche employees: see how quick I can whip this up? And if you can't refactor it and no one else gets it, that's just great for the guy mining this vein.

    What's a poor manager to do?

  83. Long term trouble by Anonymous Coward · · Score: 0

    I think they have eliminated the reasons why people become good programmers.

  84. build a box... by Anonymous Coward · · Score: 0

    and put it together with 47 different kinds of screws.

    One organization should standardize. It makes sense.

  85. focus on process by bugi · · Score: 1

    There is no such thing as one size fits all.

    Focus on process and your tools will standardize themselves to a sufficient degree.

    Try this: For each type of application, standardize on a platform for the production application -- OS version, language (compiler, libraries) version, database version, hardware platform. You will then develop a natural movement toward standardizing the build environment to the extent it makes sense.

    Like it or not, people will specialize. Maybe you'll want to move them around occasionally to minimize ossification, but keep in mind there is a reason that people specialize as DBAs or web app programmers or sysadmins. They all involve programming, but aside from that the disciplines don't share much. Many folks will naturally straddle disciplines -- use that to your advantage.

    A heterogeneous dev environment will help iron out your code, so let developers pick their platform. Just make sure to have a *process* for releasing code to users. You know -- QA, branch, staging, release.

    Beyond that, let people work how they work best. Never touch the editor preferences or you will see a sudden increase in carpal tunnel issues.

    If you've gone so far down this road that one programmer is the same as any other programmer, you're screwed. Sharpen your resume before your title gets changed to "programming resource IV."

  86. Analyze, then choose... by MrTail · · Score: 1

    In my opinion, there is no ideal process, tool and language. It always depends on a lot of things like type of customer, software/hardware architecture, expected team size, etc. I've seen a lot of companies trying to standardize on requirements and/or software configuration management tools but failed because they were unable to unify their process. Small teams work differently than large teams an usually require a different approach. Project managers should analyze their project and choose their process and tools on beforehand. Experienced developers, architects, requirements, test and configuration managers should advice the project manager and make a decision in best interest of the project. In my opinion, that would be a good foundation for a succesful project. Standardizing on one process, tool, modelling or programming language would just be stupid since you would restrict your company in their ability to optimize their productivity and quality.

  87. All the world is a nail. by Anonymous Coward · · Score: 0

    If you only have a hammer, all the world is a nail.

    Ever tried hanging wallpaper with a hammer ?

    You could I suppose.

  88. Try to talk sense into management or upgrade cv by Anonymous Coward · · Score: 0

    This sounds like the road to destruction. Once higher management starts making rulings into basic operations you should be alarmed. You should probably try explain to management about the term in CS called "Mystical man month" and why trying to create interchangeable resources won't work in the way they imagine. Somehow I get the idea from your post that your management tries to create the seemingly perfect environment (in their perspective) for developing software tool wise. It is hard to say can this be accomplished without knowing what kind of sw business your company is into, but in case of enterprise software i doubt this possible. In embedded software maybe? As one reply in this chain already pointed out the thing that management can and should focus on is the development process. Having appropriate and efficient processes will let developers more easily to integrate into existing teams and starting new teams, the tools are just something that can be homogenous inside each team. Creating some ready tool frameworks for possible project scenarios might be useful to help quickly start projects, but projects should be allowed to choose and tailor the best environment for themselves. Decent programmers shouldn't be limited to any one language or tool and not willing to learn anything new. CS in general develops at a fast pace and this means so do programming languages, related technologies and different IDEs.

  89. Devil's Advocate by nick_davison · · Score: 4, Insightful

    Yes, there are almighty drawbacks. Things aren't nearly as simple as management tend to believe.

    However...

    That doesn't mean the reverse isn't often true as well.

    Just like 95% of drivers know they're in the top 50% of all drivers, I know this'll piss off a lot of indignant engineers who know they're far too smart to fall prey to this...

    But, the truth is, a lot of engineers are absolutely terrible at picking the right tool for the job too.

    The right tool is not "anything other than the tool I used last time because I know that one has lots of flaws now." Every tool has flaws. There being a devil you know doesn't mean the other option is a blessed saint. It just means you don't know its flaws yet.

    I've watched countless engineers choose tool A, decide they hate A and want to use B because it solves X that they didn't like about A... Then decide B does Y badly so they move to C... Then discover C screws Z up but A has a new version that's supposedly much better. And then they repeat... Every time, writing lousy code because a decent tool that's poorly understood is often worse than a bad tool that you understand deeply enough to avoid most of the pitfalls of.

    Conversely, the right tool is also not the one that you know and won't put down because you're scared of the learning curve and don't want to look bad compared to other engineers when you're safe and secure in your existing kingdom.

    The right tool is also not the one that'll make your resume look really cool and cutting edge. Yes, it's often exciting to learn new skills and they make you look really advanced. Learning tends to have a diminishing rate of return. Say you can learn the first 50% of a language in a month. You can probably learn the next 25% in the next month. Two or three years in, you're hopefully smart enough to still be learning but you're only improving by fractions of a percent of what's out there each month. It's tempting to pick something new and learn 50% of a whole new language... but that doesn't actually make it the right tool.

    Engineers also tend to be very bad at understanding what makes the business actually work. Yes, I know there's deep moral righteousness but, here's the interesting thing... if the business can't find anyone in the area to help you ship a product on time because you chose too obscure a tool... if the business goes bust because they're paying too much for trendy skillsets... it's still the wrong tool. If the business isn't in business anymore because the tool ignored financial realities, it's the wrong tool.

    In short, there are a lot of ways that engineers tend to make very, very bad decisions about what a good tool is.

    Yes, I know you're not one of those engineers. I know bean counters make even worse decisions. I know I need to go to hell for suggesting this.

    But the right tool is often a combination of factors. Some engineers tend to get, some engineers tend to be very bad at getting, some managers tend to get, some managers tend to be very bad at getting.

    Being open to identifying the flaws in decision making processes and finding ways to make better decisions is how we really get to the point of picking good tools. In some companies, for certain processes, that may mean standardized tools, in others it won't. Smart people are open to all ideas and pick the best from them for each situation.

  90. It is a management analogy failure by A+Pressbutton · · Score: 2, Interesting

    Management see physical engineers using a relatively small set of standard tools (screwdrivers and wrenches) that they can easily carry around and ask (quite reasonably) why isn't there a set of tools for developers that is like that?
    They make two mistakes
    (a) Yes there is, it is called a PC and a Word-Processor

    (b) A programming language is not a tool in the sense that they think of tools. It, along with req. gathering, project planning, and testing tools is effectively the entire engineering dept.
    You choose the skill-mix in an engineering dept to suit the project in hand. The same should be true of the tools in the development chain.

  91. Best of each breed by StrawberryFrog · · Score: 1

    The obvious answer is to choose a "best of breed" tool for each class of problem. Otherwise you'll end up writing device drivers in Javascript. Or browser scripting in C.

    My employer is very much a "Microsoft shop", and C# is the tool of choice. But bear in mind that across all the projects that we bring C# to bear on, knowledge of the following is needed:
    C#
    SQL
    HTML
    CSS
    Javascript
    XML
    WPF
    MSBuild
    SOAP/WS*

    --

    My Karma: ran over your Dogma
    StrawberryFrog

    1. Re:Best of each breed by Shados · · Score: 1

      And really, all that is one thing: Web Development with the .NET/SQL Server stack. C#/HTML/CSS/Javascript/XML is basically ASP.NET, WPF is just a small piece of .NET 3.0, MSBuild is what runs when you hit F5 (and is incredibly simple compared to, let say, NAnt), SOAP/WS* is also part of ASP.NET, with a LITTLE added challenge of WSDL if you guys actually write those (and that fits with XML, since 90% of the learning curve of WSDL is knowing XSDs).

      Thats a far cry from actually needing to know different echosystems or anything (though I'm not sure, was that actually your point?)

    2. Re:Best of each breed by StrawberryFrog · · Score: 1

      Not just Web development, but also desktop UI development, SOA and Services development and Rich Internet Application development. And I forgot to mention Sharepoint and Biztalk, but that may just me trying to block out the memories.

      If you think MSBuild is "incredibly simple" then you haven't done much with it. Try doing what I am at present: care and feeding of continuous integration builds and software releases for a large project on TFS. The build script is split over lots of files, some custom, some company standard. The build log is typically over 50Mb, and we have had bugs in the build that took my team-mates days to track down.

      HTML/CSS/Javascript and XML are not part of asp.net, they are technologies that asp.net uses, as do other platforms. Javascript is a fully fledged programming language in its own right.

      These may all be "part of" or "used by" the .net ecosystem, but that's the point, it's not one tool, one "language, and framework" as the original questioner assumed, but a complex ecosystem.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

  92. Software Engineering by DrJokepu · · Score: 1

    I think one of the most important aspects of Software Engineering - and Engineering in general - is to choose the right tool for the task. There is no silver bullet in Computer Science. There is no "one size fits all" platform - every platform has its own set of advantages and setbacks, and its up to Software Engineers to decide the "least worst solution" to stick to. Sticking to a single platform is going to lead to wasting resources since the company often won't be able to use the best available solution.

    Also, it is going to seriously decrease the technical elasticity of the company; most of the trendy platforms out there today, like Java or .NET will become obsolete eventually, and the migration to a modern platform will really hurt if the whole company is tied to a single platform.

    In one line: This is the stupidest thing I've ever heard. (Bill Gates)

  93. Depends on your business environment by Anonymous Coward · · Score: 0

    If you are an all Microsoft shop and intend to stay that way, then use the MS tool set.

    If you have several different platformas to support then you may may want to look at something like Java/Eclipse.

    I also think whatever setup you choose you will have several "languages": Java, SQL, probably a scripting language like Javascript, Flash, a reporting system, something to pull data into management reports or Excel eg VBA etc.

    So I guess I would have to say that one language is impractical except within a particular limited scope eg Website serverside, website clientside, management reporting, database...

  94. Lack of information by LostMyBeaver · · Score: 1

    Seriously, depending on what kind of company it is and te focus of the project types.

    In my company for example, we would have to standardize on C with some cross platform GUI system like GTK+ and intially development time for every project would be inflated 50 fold over a more intuitive system since training time would be substantial and we'd have to let go a lot of junior developers that never learned how exactly object oriented languages work. Oh, we'd probably need to use Intel's compiler since then full x86 assembler would be supported.

    In a company that develops retail products which should be able to run on different platforms, I highly recommend C++ with Qt as it's the only polished environment for end to end product development I've come across in 16 years of large scale retail software development. Of course, getting locked into Nokia might be an issue.

    I a company that does no low level development, I would highly recommend C#, Visual Studio, Subversion, and the full kit, or Java with Eclipse and Subversion. It's a judgement call there. C# is generally a better system for Windows application development since the UI system is focussed on Windows... but it works on other platforms. For Java, even if you program with SWT, the look and feel is never quite right on each platform. So it would depend more on wht kind of developers you have and what your platform needs are.

    For a company which does nothing but database work, I'd still suggest the previous two options and add either a proper .NET server environment or a proper Java server environmnent. With Java, maybe toss in some cool tech like Google widgets or another "Web 2.0" technology.

    I personally would try and get TrollTech Qt or Visual C# into the system since I am a big fan of short time to market and .NET SDK and Qt both are very good for this purpose.

    I wish you luck whatever you choose.

  95. Rollback is the answer. by James+Youngman · · Score: 1

    Sounds like the guy is a net drag on your team. It also sounds like your boss is either blind to the factors that make software teams effective or is so reluctant to have a difficult conversation that (s)he puts up with a woeful situation rather than fixing it.

    Suggestion: implement test-based development. Have regression and unit tests for code. Implement a policy that commits breaking the build will simply be rolled back by the "build cop" (ideally it's best if someone else is the build cop since this defuses the interpersonal aspect of the issue). From what you said, I would guess that the guy who doesn't commit frequently is going to find that all his giganto-commits are rolled back because they cause breakage. The pain of the poor practice is therefore felt by the person with the poor practice, not by everybody else. This will put pressure on them to improve their practice in order to meet their goals/deadlines/whatever.

    1. Re:Rollback is the answer. by Just+Some+Guy · · Score: 1

      Suggestion: implement test-based development. Have regression and unit tests for code. Implement a policy that commits breaking the build will simply be rolled back by the "build cop" (ideally it's best if someone else is the build cop since this defuses the interpersonal aspect of the issue).

      I'll go one better: hook it into version control. As an example, we write Python and store it in Subversion. It should be a few-minutes job to write a hook script that only gets executed against Python code that runs a checker like "pylint", gets a numeric score, and rejects anything lower than a certain value. Then it's impossible for anyone to check uncompliant code into the repository.

      It's not perfect and you run into things like developers disabling warnings that truly don't apply to their code, but I still like the idea. You can always harangue Joe Bob about why his code has to disable 40 different checks before he can even commit it.

      --
      Dewey, what part of this looks like authorities should be involved?
  96. Does it really matter? by Fallen+Andy · · Score: 1
    If the company is big enough, and the number of projects, egos, groups enough, then your biggest problem is the "philosophy of the group", not the tools. Not to mention all the little in-house (group) folklore that works its way into project XYZZY over any stretch of time. Documentation - Hah! (always a lie).

    You might understand e.g. the GNU tool chain backwards, sideways and upside down but still be totally at a loss moving from a nice clean project to a cookie cutter one. (closes eyes and thinks of all those one line shell scripts on a project I picked up ages ago).

    In any case, expecting to hot desk developers from Project A to B with instant results is totally totally insane. Go make your managers or PHB read Brooke's (still relevant even today). Programmers (even the code slaves) are not cattle.

    Unless the projects are very closely related in philosophy, style and substance expect anyone moved to be unproductive for at least 2-3 weeks.

    It gets worse though. There is a vast army of Sheeple programmers out there who only know one tool chain, won't learn anything else, and depending on the range of tools you now use you may be faced with the cost of re-training (or major use of throwing axes).

    Andy

  97. operational impact by Anonymous Coward · · Score: 0

    This thread is a bunch of blaming managers for making bad decisions limiting toolsets, that developers should be able to use whatever they want. What about operational impact and maintainability? If different components/tiers/layers of your app are written in different languages, any new developer will likely need to understand all of the languages and be familiar with reams of library documentation before getting any work done. It is true that a good programmer should be able to program in any language, but in order to be useful and efficient, that programmer needs to understand the libraries that come with that language as well. It's a huge waste of time to make everybody learn more sets of languages than absolutely necessary to get the job done.

    The other problem is operational; in the worst case, you will have people writing apps in different versions of software. I remember once I worked for a company where this one guy wrote an app in PHP5 (developing in a vacuum). The servers we were supposed to deploy it on ran PHP4 and were running an old app that hadn't been tested on php5 (and didn't work on php5). Is it really worth the setup and configuration nightmare of installing another apache, setting up new libraries, etc, that would be required to run both versions of php at the same time, or would it have saved time to standardize the platforms? Also, what happens when different programmers use different versions of modules (say Perl modules) which implement different features? Standardization there is very important too.

    The last problem I'll bring up is maintenance; so you let every engineer program in whatever language they feel like. Does anybody realistically think that these new languages-du-jour like Lua, Factor, Groovy, and what have you will actually be maintained in 5 years? Is your code that throwaway that you are willing to wager that it will not be in use in 5 years?

    So there is a lot of pain, and the only REAL gain is a little bit of developer pleasure at being able to geek out the way *they* want. Unless the management is REALLY incompetent, they will define some standard languages that make sense, and everybody will be able to live with it. A good programmer can pick up any language relatively quickly, but even a mediocre programmer can usually get the job done in the most common languages.

  98. Management likes to look... by zullnero · · Score: 1

    ...like they're really in control of things, right?

    Every company I've worked for thought of that one. They enforced it in the coding standard. Same reasons you cite...always. And always, they build a team of generic code monkeys that only know and work with one language, and by extension, they get too specialized.

    Then, one day, a salesman gets a customer that really needs a piece of software written that integrates with some device...and the company can't turn it down because they need the business. Then, generic (company standard) language programmer Jim finds out that the device doesn't have a compiler written that compiles to its platform, so the company ends up hiring a guy who specializes on that device and its platform.

    Whoops. Just broke the standard. No biggie, it's just a short term deal, right? Well, not always. They might get more work on that platform. That platform may open doors to work on other platforms...at a catch. Their "corporate standard" language suddenly can't be enforceable or it would directly cost business.

    I think the last 5 contracts I've worked have all been like that. And I'm EXPENSIVE for short terms. It would be cheaper if they had salaried people on hand that were more experienced with multiple platforms and languages (like me!). I always was brought in to work with a language that wasn't the corporate standard...and the corporation looked the other way. Which makes that standard silly because the code I wrote would have had to be maintained by me or by one of the code monkeys who only worked with the standard language. It's better to set a priority for languages, if platforms can't do the top choice, try the second, third, etc. rather than force down a single language.

  99. You can tell its silly by the way its framed by itsdapead · · Score: 1

    "We're going to standardise on [insert favorite desktop application platform/framework] for all our desktop application develompent unless there's a strong technical argument for using something else" might be sensible.

    "We're going to standardise on [insert favorite DBMS] for all our server-based SQL database work unless there's a pressing need to use something else" = fine.

    "We're going to standardise on a single combination of development tools, language, and framework for absolutely everything" = we're not sure what a "framework" is but the salesman was very persuasive and had a nicer suit than our senior software engineer - so we're going to spend a shitload of money despite the objections from our developers and then go into denial about any problems. Update your resume now.

    --
    In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
  100. great for virus's by Anonymous Coward · · Score: 0

    this is a great idea with everyone running exactly the same framework it will make it much easier for virus writers

    think I'm wrong - look at windows....

  101. It depends by ps236 · · Score: 1

    I think it all depends on what the company does.

    If they are a web application development house, then they could, feasibly, decide on PHP, or Java, (or C#/ASP if their clients all use IIS) or whatever and all would be fine. If the company has a narrow range like that, then I'd say you'd probably be better choosing one set (eg PHP) than having several, with each developer choosing their favourite (one uses PHP, one uses Java, one uses ASP, one uses Python, one uses C++ etc)

    But if they are a general purpose software house which does all sorts, then, try writing device drivers in Java, or web applications in C/assembler and good luck with that... Pretty much the only language which could do almost 'everything' would be C (you might need assembler for some things, but that might be going too far) and using that for everything would drive productivity through the floor.

    OTOH, to a degree, slavishly using the 'best' language for the job can cause problems. Sometimes the weighting of developer familiarity & experience into the 'what is best' equation is ignored. For instance, if you need to write a quick utility, and the only developer you have handy is a web developer, then it may be best just to use PHP, rather than teach that developer how to write in C++.

    Each job really has a range of languages that could be used for it, the actual "best" to be used to do that job by one group of developers may be different from the "best" used by a different set of developers (assuming "best" means "getting the best productivity, accuracy and reliability" rather than "having the language features which most closely match the job requirements")

  102. Some quotes come to mind by DogPhilosopher · · Score: 1

    "get out of there it's gonna blow!" "Master, master, wheres the dreams that Ive been after? Master, master, you promised only lies Laughter, laughter, all I hear and see is laughter Laughter, laughter, laughing at my cries Hell is worth all that, natural habitat Just a rhyme without a reason Neverending maze, drift on numbered days Now your life is out of season" [fade out with evil laughter].

  103. poor financial decision by Rsriram · · Score: 1

    There is paid software on the desktop - It is a poor financial decision because it does not make sense to pay for licenses not being used. Unless you have floating/site licenses for everything (unlikely).

    All development tools are free - create a minimal standard set and provide freedom to developer to add more.

    In principle, the idea that languages are tools for the programmer is good. I would not go to a mechanic who claims he will solve all my car problems only with his favorite wrench.

    To a man with a hammer everything looks like a nail.

    --
    O this learning! What a thing it is - William Shakespeare
  104. this is the standard by augahyde · · Score: 1

    I am currently taking a project management course and this is the stuff that they are pushing. It might not be a perfect solution for every job, but will overwhelmingly save the company money. A particular job might take a bit longer, but it's a helluva lot shorter than training someone.

    1. Re:this is the standard by Craig+Maloney · · Score: 1

      This is a false dichotomy at best. Good programmers will bring their own tools for the job. You wouldn't expect a mechanic to use a collective set of tools for a job, would you? You may request that s/he have certain tools for completing a job, but if your mechanic prefers a certain brand of tools, would it make sense to tell them "no"? (If they're really expensive, or horribly inefficient, then that would be a reason to tell him/her no).

      Standardizing on a toolset sounds like a seductive way to take care of training issues, but you aren't saving anything by forcing developers that have already invested in their tools to relearn something else (and will likely piss off the developers for the trouble).

    2. Re:this is the standard by augahyde · · Score: 1

      Good programmers will bring their own tools for the job. You wouldn't expect a mechanic to use a collective set of tools for a job, would you?

      A programmer that brings his own tools is a cowboy at best, especially where I work. All tools must be approved and licensed (for commercial software) by my company to be installed. This prevents us from copyright infringement. There's a significant difference between a physical item, such as a wrench or a keyboard, and software.

    3. Re:this is the standard by Craig+Maloney · · Score: 2, Insightful

      A programmer that brings his own tools is a cowboy at best, especially where I work...

      Agreed, but who drives the decisions for what software to buy at the shop? If it's anyone but the programmers, you're in trouble already.

  105. It makes sense, if taken to its' logical extreme. by Organic+Brain+Damage · · Score: 1

    Programmers are like the old Tareyton Smokers

    Given: Most programmers love one programming environment and hate all others.

    Given: Most programmers, working in the programming environment they love are more productive than they are in all others.

    Given: Most programmers, confronted with working in the programming environment they do not love, will spend a lot of time arguing with everyone trying to switch their project to the programming environment they love.

    If managment decrees, we are a Java shop, do not hire ANY programmers who love C#, even if they could program in Java, you'll just get a religious war and a huge amount of wasted time.

    The whole 'right tool for the job' argument is only appropriate for about the top 1% of programmers. The vast majority picked their favorite tool at some formative point in their programming life and are not mature enough as human beings to move from language to language over time.

    I'd say, if your programming group has "upper management" then its large enough that everything is doomed in the first place, so if you don't want to work on projects that will fail to produce something useful 50% of the time and be despised by your customers 100% of the time, RUN SCREAMING from this workplace.

    WHEN you work on project teams with more than 5 people and you have no interaction with the actual people who will use the software you write, THEN your project is going to end in failure, even if your lower and middle management pretend otherwise and throw a morale event and print a banner on a big wide HP printer every time the whole mess builds.

  106. Shades of the Air Force by wireloose · · Score: 1

    They picked Ada. /sigh

    1. Re:Shades of the Air Force by Z00L00K · · Score: 1
      And?....

      That's their headache. If they only selected an operating system written in Ada too... :-)

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    2. Re:Shades of the Air Force by Anonymous Coward · · Score: 0

      Well we didn't exactly choose it out of our own free will. It was a DOD mandate that we "chose" to comply with. There were waivers of course, but those became increasingly harder to get as certified Ada compilers became available for more platforms.

      The original premise of Ada wasn't bad. As I recall, there were something like 28 different languages that the AF was having to teach in tech school to cover all the major software systems it was maintaining. We were trying to simplify a bit. I think we overdid it. Ada was originially designed for embedded systems and it should have stayed there.

      I took a month long Ada course as a 2nd Lt and never ended up writing a line of production code, though other projects in my division apparently succeeded. I had a waiver to write in C :)

    3. Re:Shades of the Air Force by profplump · · Score: 1

      If programmers wrote programs the way builders built buildings, it would still be cheaper to do accounting on paper.

  107. Smelly stuff. by Anonymous Coward · · Score: 0

    It's crap. And the premise is wrong. The thing that takes the most work to move from project to project is the acquisition of the domain knowledge and the architecture of the project, not the development tools and language.
        Best of luck.

  108. Tool reuse by tepples · · Score: 1

    If you work in a car factory (say Porsche), you use the specialized tools you are assigned to use for the tasks you're supposed to do.

    But how much tool reuse is expected when designing a conventional engine and drivetrain vs. a hybrid wheel motor engine and drivetrain in the same company? And how much tool reuse is expected in companies that make diverse products, such as between Sony Pictures and Sony Electronics, or better yet in the 1980s when Coca-Cola owned what is now Sony Pictures?

  109. Maybe... by Devout_IPUite · · Score: 1

    I think everyone using Eclipse as their IDE sounds reasonable. I think everyone coding in the same language is only a good idea if you only code one kind of application. If you code client-server apps, stand alone apps, web apps, big apps, small apps, stable apps, cheap apps, GUI apps, command line apps, or any other type of vareity, that choice would be stupid beyond all reason.

    Truth is, programmers can already switch languages pretty easy, especially if there's another person on their team who knows the language.

  110. It depends on the nature of the projects by mcvos · · Score: 1

    As to the language, we recommend that one be chosen for "prototyping/scripting" and another for "enterprise" development.

    Everything the submitter asks about, but particularly language and framework, depends first and foremost on the nature of the projects. If you're building websites, you need different language and framework than if you're building hardware drivers. If the company does both, then using a single standard is a terrible idea.

    If the company does only websites, then standardisation makes a lot more sense, but even then you need to ask: what kind of websites? Some frameworks are better for highly interactive websites, others are better for efficiently caching large amounts of dynamic content. If you're company does only one of those, you can standardise on one of them, but if not, you'd be seriously restricting developers.

    Also, if the company wants to be innovative, it's important that programmers are free to try new things.

    In short: standardise on what projects and programmers need, not on what management thinks is cool.

  111. IAWTP: build process is key. by Anonymous Coward · · Score: 0

    The rule here is that I've got to be able to check it out with one command and build it with one command. The goal is that I can take a stock PC (Windows and Linux in our case) with NO software, take a CVS snapshot CD, and download, install, and build in an afternoon.

    Disaster recovery needs to be part of the build process.

  112. Use Java by Gastrobot · · Score: 1

    Java is a good language to use for an organization standard. It eliminates several classes of errors (wild pointers, buffer overflows, and memory leaks) and may have less of a learning curve as a result. Today's enterprise code is far too large to avoid problems like these cropping up somewhere. For this reason I think that Java should be used for everything that doesn't require either a scripting language or direct control over hardware.

    1. Re:Use Java by Craig+Maloney · · Score: 1

      I believe you'll have a great career in upper management. :)

    2. Re:Use Java by Gastrobot · · Score: 1

      You didn't directly respond to anything that I said but you seem to be dismissing my one-language-fits-all stance. I'm simply arguing that Java has merits that make programming complex projects in it more realistic than programming the same in something like C++.

      If I were to say that C++ is simpler to program in than MIPS assembly language then few would disagree, and likewise few would object if I claimed that a programmer is more effective with MIPS assembly language than with machine code.

      Other languages convey the same benefits of Java: JavaScript and Python are two examples. I just also prefer statically typed languages for the same reason that I prefer languages that don't let me change what memory a pointer is referencing.

    3. Re:Use Java by Craig+Maloney · · Score: 2, Interesting

      What I'm discounting is the one-size-fits-all mentality that seems to pervade management circles. There's a fine line between preventing things that are unsupportable (MIPS Assembly Language) vs. preventing people from using better tools for the job (Python / Django for a CMS-like application vs. Java and Struts for the same application). It's the myopic pipe-dream of management that by standardizing on "the one true platform", they can hire the same type of programmer, interchange them efficiently between projects, and replace them when they eventually leave that drives me nuts.

  113. Warning single mindset company by Anonymous Coward · · Score: 0

    "all new development should be done with a single combination of development tools, language, and framework"

    Run for the hills!

    I work at a successful smartphone company, and we have a variety of teams with a variety of different tools. The way it works here is that we all use (pretty much) the same tools to access our data (SQL, sub version control, bug tracking), and use any variety of tools to develop. It works out well because different teams have good/bad experiences and we always learn from each other.

    If a company all used the same tools, everything would be unified. It would be easier for people to switch teams, but you'd never learn anything from it, and many of the projects probably wouldn't fit with that framework.

    Stick with variety.

  114. Screw the tools, *data formats* matter by Salamander · · Score: 1

    I think it's asinine for an employer to mandate the use of certain tools. What they should worry about is whether the data produced as work product is uniform or at least compatible, regardless of how it's generated. If code follows the coding rules, who cares what editor was used? If a spec is readable and editable by everyone who needs to read and edit it respectively, again, who cares? The problem is that achieving a certain level of file-format compatibility sometimes effectively forces use of a certain tool. Let's look at some examples.

    • At a previous job, use of emacs was mandated because somebody had developed a set of emacs bindings to insert standard file and function headers etc. Emacs is not my favorite editor but I'm quite comfortable with it, so I didn't find this requirement particularly burdensome, but I still think it was wrong. If somebody had developed an equivalent set of vi macros, or inserted the same headers by hand, the effect would have been the same and how they achieved that effect should not have been the company's business.
    • Fast forward to another job, where emacs was again mandated in one group, this time because that group used tools that were very finicky about tabs and indentation. This being Slashdot, I know everyone will say to fix the tools and someone else will say to use "indent" with a standard profile, but for the sake of argument let's say that those approaches were infeasible or insufficient. In that case, you'd have a situation where using different tools could yield work product that looked identical in an editor but was not in fact functionally identical, and the most practical way to ensure uniformity of output would be to mandate use of a certain tool. I can't reach a firm conclusion on this one.
    • What if it was important that IDE workspaces (defining files, build options, etc.) be shareable? This depends heavily on the workflow on that project, but if the workspace is part of the work product and only one tool supports it, then it might not be totally unreasonable to require use of that tool.
    • What about specs? Everyone can generate PDF, which is great for reading and printing, but what if you want many people to edit the document or attach comments during review? Our doc group uses tools that preclude either of these, and I think that sucks. Many others use Tex/Lyx, which I also find deficient in many ways. The standard workstation builds all include OpenOffice, so if it were up to me that would be the standard (we barely allow Windows on laptops, let alone workstations, so MS Office would not be an option).

    What many of these examples have in common is that the functional requirements applied to employees' work product often do end up practically forcing use of a particular tool, but that doesn't mean one should lose sight of the real goal - document compatibility. Requiring everyone to use MS Office, for example, might actually sacrifice document compatibility when half the company switches to a new version of Office and the documents they create are mangled or unreadable for those still using the older version. Been there, done that, more than once. Ditto for people using Mac versions of either Windows or *N*X software, when those versions are subtly different. OmniGraffle sure makes pretty diagrams, but if most people in the company use Linux and they need to be able to modify those diagrams then you'd damn well better save them in a format they can use and if you don't then you're out of line. The goal should be that all code is in a format that everyone needs to edit code should be able to edit, and all specs or manuals is in a format that everyone who needs to edit specs or manuals can edit, all diagrams is in a format that everyone who needs to edit diagrams can edit, etc. What tool you use shouldn't matter except to the degree that your choice of tool affects whether others can pick up your data and run with it.

    --
    Slashdot - News for Herds. Stuff that Splatters.
    1. Re:Screw the tools, *data formats* matter by Anonymous Coward · · Score: 0

      If I made it to a job where emacs was mandated, I'd have to quit. The emacs bindings are very tough on my fingers/wrists/etc. and cause a lot of pain. Other than that I think emacs is great, it can do anything. I'm a big LISP fan so I think being able to expand the editor in elisp is great. Also emacs can be anything, you can write an entire IDE inside of emacs (along with a web browser, news reader, maybe even an operating system....).

  115. A great study by Uzik2 · · Score: 1

    It would be ineresting to see if the benefits were worth more than the drawbacks. Why don't you take some measurements and use it for a study/paper/thesis?

    If they choose a reasonable language it will work fine and you will learn your tools well. I hope they
    didn't pick a microsoft languagre. It will be made obsolete in two years and your experience will be wasted.

    --
    -- Programming with boost is like building a house with lego. It's a cool but I wouldn't want to live in it
  116. Some common sense is needed by hey! · · Score: 1

    This is one of those ideas that has a very reasonable justification, but can go badly wrong if the policy becomes more takes precedence over the goals it is supporting.

    This decision is very simple in principle: you choose the tool for a project that benefits the organization the most. In practice, it is often more difficult than making the decision by top-down fiat.

    When I was a team leader, I always looked at projects for the "take away". The "take away" is the thing you got from the project that made you better on the next one, that allowed you to quote lower or to make your proposal stand out. The key idea is this: you should learn from every project and improve.

    You don't learn anything if every project is done exactly the same way, with exactly the same tools and methods, and with code cut and pasted from the last project. But you don't learn much if you do every project in a different language and platform using different methodologies each month. This is so blindingly obvious that it hardly needs discussion, except that this is the kind of obvious thing everyone dismisses as obvious, then goes on to blatantly ignore.

    Organizations go dysfunctional when people get stuck in black and white, narrowly paradigmatic thinking. Each end of the spectrum has a perfectly valid paradigm that shows its position is the correct one. The problem of real world management is striking an effective balance, a policy that is disciplined, but flexible.

    Yes, you want to steer developers into using the same techniques and tools, so that you maximize your depth of knowledge in those things. But from time to time you should try things differently. If you are a Java shop, you might try a C# project, so you understand what the competitors are using. It may also encourage you to look at new ways of packaging your Java code, say as web services, which brings new knowledge to the organization that will be valuable even on other java projects. No competent Java programmer is going to be flummoxed if he is called upon to contribute to a C# project, especially if that project uses the same design philosophy (probably more important than platform) as the projects he has been working on.

    It's also the case that inflexible standardization can sometimes make the learning curve worse and the expenses higher.

    Suppose you are standardized on SQL Server 2005 as your database, and you have a project that requires storing and manipulating map data. SQL Server 2005 doesn't have primitive types or operators for geographic data. You can create your own idiosyncratic ways of doing things (expensive and nonstandard). You buy an entirely new platform from ESRI that stores geographic objects in standard RDBMS tables, which means (a) buying more products (b) learning to administer another platform and (c) using whole new set of APIs. Or you can do the project in Postgres or Oracle or even SQL Server 2008, in which case you are just using the same old standard SQL with a few simple extensions.

    The brainless form of standardization in this case is to use the same product, then have to create or buy new products and platforms as a consequence. The more intelligent form of standardization is to stick to the techniques that you have been using, and know to work, which sometime requires a product that isn't your standard one. It might be reasonable to choose the former, but only if you understand this is actually a more experimental approach.

    The platform choice should be guided by a number of principles, which should be able to overrule the policy:

    (1) The project must succeed.
    (2) The company must profit.
    (3) Future support for the platform must be assured.
    (4) The project should have "take away" potential.
    (5) The company should continually learn and grow its capabilities, so it can respond to technological and competitive change.

    This last principle is important, and the degree to which it applies de

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  117. Office violence by DrYak · · Score: 2, Interesting

    If someone is good at something, ferchrissake KEEP THEM THERE!

    I see that finishing a project appears to be a foreign concept to you.

    And I see some members of the upper management haven't been beaten enough with the "Mythical Man-Month" book.

    Developers aren't a commodity resource you can happily swap around.

    --
    "Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
    1. Re:Office violence by Blakey+Rat · · Score: 2, Informative

      Woosh, you totally missed the point.

      He's saying that programmers will need to move on to something else once the project is done. You know, when there's nothing much else for them to do? When the project's finished?

      He's not saying that the company should be shuffling people around different projects all the time.

      Reading is fundamental.

  118. Standardization is generally good.... by klubar · · Score: 1

    If you look at the more efficient (overall) companies you'll see that they standardize on a few tools and get really good at it. For example, in the airline business, Southwest (one of the most consistent profitable airlines) flies only 737. This makes maintenance, pilots and service much easier. The less efficient airlines (e.g., US Air) fly a combination of almost everything--Boeing, Airbus and whatever. UPS has standardized on one or two types of vehicles for each need (local, long distance) again improving efficiency.

    The era of the cowboy programmer is pretty much dead at large efficient companies. Random tools and processes might be ok for very small teams (less than 5 people), but they don't scale very well. Any project with more than 10 people lasting more than a year is likely to have turnover (given that the average employee stays on the job about 4 years...so over the 2 year project life, there will be 5 new employees). This forces management to impose development standards--image if every new employee decided that they want to use their own development environment, tools, naming convention, etc.

    Professionally managed projects are more likely to be "slightly above average" -- an occasion cowboy (aka skunk work) project may be a spectacular success, but they are more likely to be a quiet failure. For big projects aiming at slightly above average isn't a bad goal.

    /. readers are excused from all standards because they are all super programmers, save the company tens of dollars by using free stuff (or cracked warz) and are all brilliant.

  119. Always use the right tool for the project by Koldark · · Score: 1

    Always use the right tool for the project. One language can't do it all well. If you narrow it down to two or three languages and pick one or two IDEs that can do these languages, that will cut down on problems.

    Figure out naming standards and using source control would help quite a bit.

    --
    Mike http://thenextgenerationofradio.com
  120. Wim by Anonymous Coward · · Score: 0

    This is absolute crap.

    Standardize tools ? Hell, why don't we GLUE everything together or perhaps use nails instead of screws (1 hammer can do what 50 screwdriver types do) or drill single size holes (avoids having to buy lots of drills) ...

    Tools are build to acchieve a certain goal. Not all goals are the same so tools are not the same. If that were true we would use PL/SQL or something to write applications because we need SQL to access the database and PL/SQL (or equivalent) comes standard with it)

    No there are different classes of toolsets. Low level (e.g. C) or middle level like (C++/Java) or high level (Like Prolog or 4GL).

    In my experience the higher the level of the tool the more restricted it's usage.

    M2C

  121. Take a deep breath and don't get so excited. by birrddog · · Score: 1
    Take a deep breath, relax, and try and envisage for moment that the world is not out to get you.

    This is a real issue, and the sooner developers realize:

    1) Programming is secondary to their role. Business / Functionality expertise is primary, programming is just how they express it. This primary knowledge is what makes them most valuable/irreplaceable to management. - Those that cling to their programming skills as primary are replaceable in any scenario, not just this.

    2) There are real business drivers as to why to standardize the SDLC. I will try and mention a few.
    a) code re-use
    b) common build / project management / source code versioning / test case execution / package management / software distribution / config management have huge benefits to any company. does not mean you have to limit yourself to 1 language. This saves money, time, ability to transfer between projects (good for developers career mobility), helps take care of regulatory or firm governance and reporting requirements.
    c) a common ide can make things even more automated. The reason I say a common ide is it helps concentrate / focus automation / plugin development, although no reason this could not be done across several ide's... if there is justification and the company is willing to pay for that.

    It's the 80/20 rule. Identify the 20% of what you do that makes you special (and I hope for your sake that is not the IDE you use, unless of course IDE development is your job), identify the 80% that you share with everyone else, standardize and automate as much of the 80% as possible/practical and put all your creative juices into that 20%.

    You will be happier, your company will be happier, everyone wins.

  122. Re:.NET by UseCase · · Score: 1

    Why is this modded troll? The AC is giving his opinion on the topic just like everyone else. Did I miss some other more sinister context to this post?

  123. Programmers shouldn't be reallocated too often by bcassol · · Score: 2, Interesting

    Programmers shouldn't be reallocated at all, if they are it's generally the project manager fault: bad planning. Programmers shouldn't be reallocated, not because of the language, but because of the context. For big projects it might take more time to learn the new project than a new language/tools. Plan well my fellow project managers, you all know changes are harmful to projects.

  124. Here's what your company should do: by Anonymous Coward · · Score: 0

    Decide a minimum set of tools that will be needed to work with any project. All projects must comply with these rules. Here's a hint on them:
    * Make
    * Ant
    * Gcc
    * Gcj
    * Bash
    * Mercurial
    * Git
    * Subversion

    and decide a minimum set of standards that every project must fulfill, such as 'there will always be a README file in the top directory with information about this and that', 'there must be a suite of tests that is good enough', 'no commits will be allowed if the tests are not passed ok (you can actually automate this)', 'the default target in the top dir's makefile will always compile the whole tool automatically', 'there will be no dependency on environment variables',...

    Most of those rules you can read in some coding and project standards and many open source projects do work with that.

    If you define a minimum set of requirements that guarantee that any programmer can contribute to the code if she has the minimum set of tools, then every programmer will be able to use whatever program/framework/IDE she wants as long as everything she uploads does not create a dependency on that IDE.

    The languages thing is much more difficult. Rather than deciding what language can be used, I would decide what languages (plural) can be used and what compatibility layers must be provided so that every module can be called from another written in
    a different programming language. I mean, if you have to program something, the key point is that you actually write the code. I don't care if you write it in ADA as long as I can compile it and I can understand it. Just give me a C interface so that you can use the programming language you want and so can I.

    This will even allow you to use prolog if the program is a 5 lines predicate that turns out to be a 40 lines Java program, as long as you can link the object file with others written in Java/C/etc.

  125. It's a political move by MrBlic · · Score: 1

    Upper management is not trying to be the market leader anymore, they're trying to look good in one way or another.

    Either they want to package the company for acquisition, and want the company to look like it has a bite-sized IT burden. or....

    This sort of thing can also happen when one of the people in management is trying to get rid of some of the better programmers who can accomplish more when they use additional technologies. In my experience it's been because the Manager wants to seem like they are the smartest person in the room, and they can achieve that if the tools that they standardize on are the ones that the manager knows. Anyone who disagrees with their wisdom can also be branded as not a team player and forced out as well.

    I've worked for a company in a similar situation, and was painfully forced out. Now I work for a company that will use the right tools for the job, and expect their employees to learn new technologies to suit the jobs that come up. Each employee documents every aspect of the project, so other employees can come up to speed on the project quickly... and it works!

    If your company is trying to standardize on one set of technologies, chances are that they are in financial trouble, or trying to hide some drama and want to cull the team.

    --
    Celebrate Excellence!
  126. Bail out now! by FeralCTO · · Score: 1

    This move tells you everything you need to know about that company. If you were able to read the mind(s) of the executive(s) you'd find that they have similar opinions of staff. You're all the same, just cells in a spreadsheet. And software development is a linear process, just like building a house. They don't value you. They don't understand that programming is a creative endeavor. They think success is a matter of accounting. Let me guess... You sit in a cubicle, right? How high do you have to climb the ladder to get a private office? VP? My advice is to get out now, don't hesitate, just move on.

  127. Not dev tools. by SanityInAnarchy · · Score: 2, Informative

    Two of us run Linux, two of us run OS X, and two of us run Windows. On OS X, one uses vim and one uses TextMate; on Windows, one uses Visual Studio and one uses Eclipse; on Linux, one is a tester, and I use Kate.

    While I'm at it, two of us use the Dvorak keyboard layout.

    To force us all to use one platform, and one environment, would be to drop our productivity severely for the learning curve, and permanently as we all work on a platform that doesn't as closely match the way we work.

    Now, forcing one language/framework, I can understand -- we mostly use Rails, and pretty much entirely Ruby. But what would be the point of forcing one dev environment?

    Is it so that they could easily give my laptop to someone else, or give me a different machine? We basically get a budget with which to pick out our own hardware. This laptop is mine but for a technicality: if I ever leave, they'll take it back and reformat it for the next person.

    I agree with many of the other sentiments here -- programmers should not be moved from project to project. But depending on the projects, it may be at least as difficult to learn the new project as it is to learn a new language/framework.

    But unless you've made an exceedingly poor choice of language/framework, you should still be able to pick (mostly) your own dev tools.

    --
    Don't thank God, thank a doctor!
  128. "software management" is an oxymoron by peter303 · · Score: 1

    Had very few competant program managers in my experience. Its the "Peter Principle": those who cant program get promoted into management.

  129. Pathetic by tchris67 · · Score: 1
    This kind of management makes me ill. It's another manifestation of the "every employee is an identical warm body" school of thought.

    Believing that something good, overall, will come of forcing every developer to use the same tools emphatically proves that said management should not be involved with software development in the first place.

  130. RPG and 3270 of course! by opslashdot · · Score: 1

    Probably the only answer a management thinking that way can understand. Hurry up guy, get a new job elsewhere and fast!

  131. Welcome to the slippery slope by Craig+Maloney · · Score: 1

    I've seen when upper management wants to standardize and treat their developers as interchangeable cogs in the machine that they're planning on exercising that interchangeability. You might want to update your resume, since you'll likely be replaced.

  132. I'm stuck using Fortran. Help! by Anonmyous+Coward · · Score: 1

    I'm forced to program in Fortran because that's the only thing the dinosaurs in charge know how to use. It's painful and verbose and it takes about 100 times as long to code anything as it would to just code it in ruby, even if it ran 10 times slower. For God's sake, someone please help me.

    Seriously though, the most efficient language is almost always the one the majority of your developers are most familiar with. And many projects lend themselves to using multiple languages/technologies for various different parts. LAMP and WIMP are okay, but personally, I like the PHP/IIS/SQLite/Subversion. For Scientific programming, I often use C/Unix/Nginx/Tcl.

  133. Right tool for the job? For each job? by natoochtoniket · · Score: 1

    How many different tools do you need? Is there one tool that is the right tool for every job? Is there even a small inventory of tools that includes the right tool for every possible job? I think the only answer is a resounding NO. Any fixed tool set is sure to omit things that are essential for particular types of jobs. And, any fixed tool set must exclude all newly developed tools, and hence must exclude those future innovations.

    I'm sure you have heard the one about the man who has only a hammer. Hammers don't work very well for installing screws. Hammers work even less well for cutting wood. And they don't work at all for cutting steel or soldering copper pipes.

    The construction people realized, long ago, that they need carpenters, masons, plumbers, and electricians. Each of the trades has its own set of specialized tools. They just had carpenters and masons for thousands of years. A few hundred years ago plumbing was invented, and that required specialized tools and knowledge. Then, just about a hundred years ago, they invented electricity, and that also required new tools and knowledge. New innovations sometimes require new tools and new specialists.

    In software development, we do need specialists. Some of use work on algorithms or protocols. Some work on databases. Some work on presentation or human-interaction. Each area has its own tools. Each has its own specialized languages, libraries, and environments.

    And, depending on the task at hand, it is sometimes appropriate to acquire or develop an entirely new tool. Several times, I have developed a new application-specific language extension before starting to develop a big application or a set of related applications. Each on of those extensions was used to generate huge volumes of code that would have been tedious and error-prone to develop any other way.

    Now, when you propose to bring a new tool into the shop, it is prudent to consider the costs and benefits. If you use a new language to develop a production application, that new compiler will have to be maintained, and the programming staff will have to maintain the knowledge of how to use it. That adds cost to the enterprise, even if the tool itself is free. So a judgment call is needed as to whether the benefit of the new tool exceeds that cost. Some tools turn out to be silly or ineffective, and others turn out to be extremely useful and cost effective.

    The decision to forbid all new tools is just a decision that there cannot ever be a new tool that will be useful and cost-effective. That manager avoids the cost of the new tools, but also avoids the benefits. And he eventually loses his competitive edge over his competition, his staff, and maybe even his job.

  134. Do It by trongey · · Score: 1

    Just keep in mind that if you're not willing to standardize on a single tool then there is some group of programmers on another continent who will be perfectly happy to all use the same tool for half of what you get paid.

    Sure, there might be a "best" tool for the project (more likely it's probably just a favorite tool), but is it so much better that it's worth the additional cost? Does a Rolex really tell you the time 5000 times better than a Timex?

    --
    You never really know how close to the edge you can go until you fall off.
    1. Re:Do It by jamie(really) · · Score: 1

      Soooo, how to outsource all development to another country:

      a) Get developers to agree on standard set of tools.
      b) Migrate to new tools.
      c) Fire developers and outsource to one company.
      d) ROFLMAO

    2. Re:Do It by trongey · · Score: 1

      Soooo, how to outsource all development to another country:

      a) Get developers to agree on standard set of tools.
      b) Migrate to new tools.
      c) Fire developers and outsource to one company.
      d) ROFLMAO

      I think most companies skip a) and b). Unnecessary expense.

      --
      You never really know how close to the edge you can go until you fall off.
  135. The answer is simple by Anonymous Coward · · Score: 0

    Would you like to be operated on by a Surgeon who has only metal tool to work on anything from skull fractures to gut perforation?

  136. Upper management thinks you're a machine by Anonymous Coward · · Score: 0

    quit

    take your skills to a good company.

    I did it and it was the best day of my career.

  137. Inflexibility is career death. by Anonymous Coward · · Score: 2, Interesting

    Malarky. You must be pretty young.

    I've been a professional programmer for 25 years. In that time
    I've been paid to write software on many OSs, in many languages,
    including....

    OSs: AppleDOS, PRODOS, DOS, CP/M, TOPS-20, WANG-OS, VMS,
    UNIX(various), Windows(various) SymbianOS, RIM-OS, J2ME,
    WinCE, WinMobile, and others.

    Languages: BASIC, Pascal, Assembler (3 types), Modula 2, C, C++, Java,
    SNOBOL, Symbian (very variant C++), SAIL, and others.

    Which is my favorite? Well not Symbian, but all the others
    are fine. You pay me, I'll use it.

    The inflexibility you describe is career death.

  138. Dig all these holes with a toothbrush! by agentultra · · Score: 1

    The benefits of a standard toolset are unlikely to realize any real gains even in the long term.

    Even standardizing on which VCS to use is really a moot point. Just pick one for the central repository. If the dev is more efficient in mercurial than subversion; there are scripts to convert between the two transparently.

    It's the product that matters. Follow the path of least resistance when it comes to productivity. Laziness is a virtue.

  139. Context takes longer tools! by Anonymous Coward · · Score: 0

    I don't understand why anybody would go to great lengths to standardize. The context of the development will always take longer to learn than the toolset unless you are doing minor development. However - analyzing the real motives will yield better answers:
    1) Flexibility of workforce. Hiring 1x Perl, 1x Java and 1x Ruby programmer is not as flexible as hiring 3x Java programmers. Any Java programmer can be redeployed - whereas you can't push a Ruby programmer into a Java role (All this from an HR perspective - not a "Programmers should theoretically know all languages").
    2) Licensing of Software
    3) IT Management - yes big companies pay a lot more to their IT departments and or IT management partner if they have too many configurations.
    4) Best of Breed perceptions. It might not matter to you and me, but it might matter to the board of directors and therefor the stockholders.
    5) Salaries - VB.NET programmers are just plain cheaper than Java ones and a Excel spreadsheet normally compares yearly salary against yearly salary.
    6) Job Market - some types of developers are rare
    7) Management Background - managers prefer managing things they have experience in.
    8) IT Support Turn-Around time. Having a developer spending two days installing their favorite OS after a hard drive crash is not an option for most companies BECAUSE downtime = money lost.
    9) Hardware support. Depending on the supplier of the hardware, it might only support a limited number of OS.

    While we might scream at the stupidity of some of these points they are not necessary invalid from a business perspective.

  140. When all you have is a hammer... by pergamon · · Score: 1

    ...you're going to have a lot of things forced into place.

  141. I wish by coyote-san · · Score: 2, Interesting

    In our dreams.

    In this reality, the alpha developers get fed up after a few years and find more interesting and/or lucrative work elsewhere. Or they just feel it's time to move on since they aren't learning new stuff (read: remaining competitive) because somebody higher in the food chain thinks you should leave developers in place once they've become the experts.

    The deltas, on the other hand, know they have it pretty sweet since they won't get canned unless they really screw up or there's a layoff... and they're relatively layoff-proof since the alphas and betas would have probably seen the writing on the wall and already split. Meanwhile they've been around the longest and most likely to be productive... right.

    Both of which argue for management moving people around. It gives the alphas room to grow and they don't feel like it's professional suicide to stay, and it kicks the deltas out of their nest so their new projects can identify them as deadweight that needs to be trimmed.

    --
    For every complex problem there is an answer that is clear, simple, and wrong. -- H L Mencken
  142. More detail by istartedi · · Score: 1

    OK, in re-skimming your post, it sounds like you're using Java and are heavily committed (no pun intended) to Eclipse metadata. First, I wouldn't code in Java. :), However, assuming that I was stuck filling this guys shoes, I would probably do the same thing I do here: Maintain my VS environment, and maintain Linux in a VM. Before making the final commit, I'd do all the Eclipsy stuff that needed to be done. This is essentially what I do now. Yes, I'm maintaining project files in addition to Makefiles, but maintaining a project file is trivial and takes virtually no time. Yes, I do everything in C and it compiles on Linux and Windows, with platform dependancies isolated. Ask me again why I don't code in Java. :)

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  143. Completely Off Topic... by Belial6 · · Score: 2, Interesting

    crush our enemies, see them driven before us, and we will hear the lamentations of their women.

    I know this is completely off topic, but you would be amazed at how many people don't know what the word lamentation means. My son's name is Conan, so as you can well imagine people are regularly quoting the movie at him. 9 out of 10 people will either mumble out the word 'lamentation', or outright apologize for saying it in front of a small child. Not for the quote, but for the word 'lamentation'.

    1. Re:Completely Off Topic... by Free+the+Cowards · · Score: 2, Interesting

      How bizarre, I've never even heard of this. What do they think it means?

      --
      If you mod me Overrated, you are admitting that you have no penis.
    2. Re:Completely Off Topic... by Belial6 · · Score: 1

      I had never heard of it either prior to my son's birth. Presumably because nobody had ever worried about talking dirty around me. I haven't called anyone on it because I never felt that it was a good idea to humiliate someone by basically calling them an idiot in front of my young son, so I'm not sure what they think it means exactly. Given their reactions, and the context, I think that they are associating it with rape. The word sounds somewhat similar to lactate, it is describing something about women, and it is something that a barbarian would want. If I asked you, What does a barbarian do to the women after he crushes the men and drives them away? Your answer might be to rape the women. I've found it kind of funny, because it had just never struck me before.

    3. Re:Completely Off Topic... by Free+the+Cowards · · Score: 1

      That really is strange. I think that the next time it happens, you should ask them why they apologized, and then find out what meaning they thought the word had.

      --
      If you mod me Overrated, you are admitting that you have no penis.
    4. Re:Completely Off Topic... by jhantin · · Score: 1

      Nothing dirty; it's more to do with lachrymation than lactation. (Insert obligatory wisecrack about crying over spilled milk here.)

      --
      ...when you're writing a game...tweak the difficulty of "Easy" to something [your mother] can cope with. -- onion2k
    5. Re:Completely Off Topic... by Belial6 · · Score: 1

      You think people don't want to use the word lamentation in front of a small child because it sounds like lachrymation? I'm not convinced that makes any sense at all.

    6. Re:Completely Off Topic... by jhantin · · Score: 1

      While they are long and relatively uncommon words, both lamentation and lachrymation are behaviors I'd expect a small child to be quite familiar with if not highly experienced at, and not anything to be embarrassed about discussing in front of them.

      However, perhaps I missed the intent of your post. As you suggest, the adults using the words likely don't understand them; whether they are more embarrassed by that fact or some imagined scandalous meaning is an interesting question.

      --
      ...when you're writing a game...tweak the difficulty of "Easy" to something [your mother] can cope with. -- onion2k
    7. Re:Completely Off Topic... by Belial6 · · Score: 1

      It sounds like you did. The intent of my post was that I believe they thought lamentation was a sexual word, and thus unsuitable for young ears. The only two things I could think of that would make one believe that lamentation was a sexual word was it's similarity to lactation and thus female breasts, and the fact that fact that it was describing an interaction between a barbarian who had just killed/driven off all the men, interacting with the women who were left, and thus the thought of rape.

  144. Workplace Hell by fm6 · · Score: 2, Insightful

    Once management starts treating all programmers as interchangeable is the day that all things start going to hell. Programmers are not interchangeable, and all languages are not interchangeable.

    Maybe not, but there has to be some standardization. If every programmer is allowed to do things their own way, you end up with a code hodgepodge that's unmaintainable.

    Mild example: I knew a guy once who had a weird thing for Javascript. He had found an engine that allowed him to run it outside a browser, and he used it for everything. (Ironically, he had no occasion to use it for a web application!) He even used it to write an RTF parser. Never mind that Microsoft supplies very nice libraries with all the parsing built in, he had to hand-code his own. The result was temperamental, consumed vast amounts of maintenanced and didn't support many RTF features. But he was insanely loyal to it, and resisted switching to a more common scripting language to the bitter end.

    Another co-worker at my current company wrote a bunch of tools that we still use a lot. Basically, he wrote them in Perl. Except Perl wasn't expressive enough for him, so he wrote his very own preprocessor. And it's a beautiful piece of work, his Perl code is very concise. (Brilliant guy, really.) But he never documented the thing, and he doesn't work here any more, so if any of his tools need maintenance, we are SOOL.

    Programmers need to get over the idea that they can do every little thing their own way. Your employer's role is not to provide you with a playground for you to do things the way you want. The company needs to sell stuff, and has hired you to make that stuff. Yes, it's a creative job, and you need some leeway. But if there are no rules or standards at all, then everybody's working at cross-purposes and nothing useful gets done.

    I've worked at software companies where this was the case. Very unsatisfying places to work because at the end of the day, you really had nothing to show. Plus you spent all day battle everybody's ego trip. That's my idea of workplace hell.

  145. Configuration Files As Languages by jd34 · · Score: 1

    Every time we write a program and create configuration files that the program can read, we are expressing ideas in a "language". Sometimes we express simple ideas using Windows "INI" syntax, and other times we may write more complicated ideas using Perl include files or bash scripts. Many current versions of *nix allow shebang notation (#! followed by the program name) to shorten the invocation "program cfgfile" down to just "cfgfile" at the commandline, which emphasizes how flexible its idea of "programming language" ought to be. There is no question that a Tower of Babel is hard to manage, but trying to force every programmer to use the same programming language will simply lead to re-inventing elaborate configuration languages. (XSLT, anyone?) A better solution is to have design/documentation reviews at various points during the life of a project to make sure the software is maintainable by the (multiple!) personnel likely to have to maintain it. Failing to arrange for multiple maintainers is much more likely to lead to project failure/obsolescence than allowing proliferation of languages.

  146. Screwed by Alex+Belits · · Score: 2, Funny

    This is one of situations where all I can say is:

    If your problem requires this solution, then it is actually unsolvable, and you are all screwed.

    --
    Contrary to the popular belief, there indeed is no God.
  147. Golden Hammer by clippermadness · · Score: 1

    This is one of the most ancient, classic mistakes in the practice of software engineering. http://sourcemaking.com/antipatterns/golden-hammer Please tell us which company this is so that we can all assiduously avoid ever working for it.

  148. Yeah, that's going to work... by CAIMLAS · · Score: 1

    A lot depends on the specific environment and how dissimilar the projects are. The smaller the organization and the more similar the projects, the more reasonable such a move might be. However, the more projects of divergent types there are....

    Not only does that seem like a horrible idea from the standpoint of producing functional, usable programs, but it also seems like a nightmare for the employees on a personal basis.

    Why?

    If you pick a single language, the employees will be little more than cogs on a wheel, and easily replaceable - at least, that's what management thinks, and will think. Management will likely want to pick something like .NET, which is pretty familiar to most recent graduates and works on "all the Windows platforms".

    What happens from there? Could be a number of things. Layoffs, firings, pay cuts... and once one of those things starts, the other two are likely to follow quickly. Can't get a project done on time due to the language you're required to use? BZZT! Fired! Expanding deadlines resulting in increased costs? Gotta get some cheaper developers! Meanwhile, anyone who manages to hang on has to deal with the organizational shit, and possibly a pay cut on top of threat of job loss.

    In 5 years the company won't exist.

    --
    ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
  149. Bad Corporate Thinking by BigLinuxGuy · · Score: 1

    Corporate Management wants to view all developers as being the same. Year in and year out, they spout the mantra of "replaceable cogs in the machine theory" that just doesn't apply to technology personnel. That is how Java managed to grow at the pace it did in spite of a number of deficiencies (C#/.Net grew the same way).

    Sadly, nobody wants to look at better ways to do things because they're too hard and non-technical corporate management wants to dehumanize (and devalue) their workers.

    Ever wonder why offshoring is so popular? If you can reduce anything to a manufacturing process, you can move it where labor is less expensive.

    Unfortunately, nobody seems to want to rock that boat because they've been dumbed down to think there are no other jobs out there that might be better nor should they have the right to expect to be treated any differently.

    Oh well, the future is bleak......

  150. Einstein: Simplify as much as possible, not more! by Anonymous Coward · · Score: 0

    So how many orthogonal languages ought be chosen, for a complete toolset?

    Low bugs compiled infrastructure single-machine code ( say Eiffel )

    Problem-domain scripting, single machine ( say Ruby/Python )

    Many-machines single-program-instance, massive concurrency ( say Erlang or equiv )

    what others, or how should orthogonality be decided?

  151. A gross stupidification of the process by fm6 · · Score: 1

    Sure, and while they're at it, let's give all the mechanics just one size of wrench and screwdriver.

    Mechanics don't create machines, they just fix them. They don't have any control over what kind of screws and nuts they work with. You're really talking about hardware engineers, not mechanics.

    Machines do need to have more than one size screw and nut. But suppose you have a big machine designed by a bunch of different engineers, each of which has their own fanatical view about what size screw is "best". Or similar opinions about metric versus SAE versus BA versus Whitworth threading. And about Phillips head versus Frearson, BNAE, hex or TORX. Let's not even get into the issue of screws versus other kinds of fastners....

    Fortunately, hardware engineers don't suffer from that kind of fanaticism. When some piece of hardware gets designed, somebody says, "we're only going to use metric Phillips screws" and everybody goes along. But when the equivalent suggestion comes up in a software context, rugged individualists like you whine that it's a "gross misunderstanding of the process".

    Frankly, you're the one who doesn't understand the process. Beyond the particular pieces of code that you own, most software is a big honking entity consisting of thousands of pieces that have to fit together. When all the pieces are designed according to each engineers personal whims, you end up with a lot of pieces that don't fit together, and the application as a whole is crap.

    As, alas, most software is.

    1. Re:A gross stupidification of the process by PCM2 · · Score: 1

      Machines do need to have more than one size screw and nut. But suppose you have a big machine designed by a bunch of different engineers, each of which has their own fanatical view about what size screw is "best". Or similar opinions about metric versus SAE versus BA versus Whitworth threading. And about Phillips head versus Frearson, BNAE, hex or TORX. Let's not even get into the issue of screws versus other kinds of fastners.... Fortunately, hardware engineers don't suffer from that kind of fanaticism. When some piece of hardware gets designed, somebody says, "we're only going to use metric Phillips screws" and everybody goes along.

      Hey man, don't tell it to us. We're software people. Tell it to NASA.

      --
      Breakfast served all day!
    2. Re:A gross stupidification of the process by fm6 · · Score: 1

      Actually, the NASA fuckup was a software issue too.

  152. It depends on what you are doing... by paploo · · Score: 1

    It really depends on what kinds of software the company is writing. If you had some groups writing web-based software, other groups working on low-level scientific code, some working on Win apps, and others working on general market x-platform apps, then this would be the stupidest idea I've ever heard.

    However if everyone is writing generally the same kinds of software, picking a language for all projects isn't too bad of an idea, as long as there is discussion every 12 months about if it was the right choice and if it will *continue* to be the right choice. (Think about what would happen if you picked COBOL in the 70s and never left it because corporate policy says you can't!)

    As for *environments*, I find that everyone thinks different, and to force everyone to use the same environment causes some issues. Indeed, everywhere I've ever worked, we take the opposite tact: *everyone* can choose the tools for themselves. What we quickly found is that the best tool would quickly win-out on its own and everyone would unify behind it (at least, until, something better came along).

  153. Only if the range of applications is small by ChrisA90278 · · Score: 1

    Going with one framework simple can't work if you need to do a wide rang of work. For example I've worked on embedded microcontrollers where you have only a few kilobytes of RAM. I've worked on radar systems that used large mainframes as a processing engine and new rocket telemetry. There is no way the same tools could work on those three jobs.

    But on the other hand if all you do is general office apps on a PC. Yes then standardize on a few tools

  154. I completely recommend management's approach! by wtansill · · Score: 1

    With a standardized tool set we should be able to crank out all that new assembly code lickety-split!

    --
    The contest for ages has been to rescue liberty from the grasp of executive power. -- Daniel Webster
  155. using perl 6 and guile both running on parrot.

  156. any question by Phantom+of+the+Opera · · Score: 1

    What's the quickest way to a headache?
    What's a language with sucky closures?
    What language had a promising start until the convention was to have GhostClassFactoryFactoryFactoryThatHidesLogicBehindAllLayers?
    Where can I get the best bloat for my buck?
    Where can I find a good way to store a few k of data into a matrix of XML cruft?

    That being said, java is reasonable when used reasonably. The current conventions is to use it to produce monumental bloat. It was fine pre J2EE.

  157. Languanges by demi · · Score: 2, Insightful

    There's a lot about the idea that's dumb, but I just want to talk about language standardization, since that's an idea that suckers even smart people.

    For a decent programmer, switching languages is not really a problem. On the other hand, there's not a lot of point in having a proliferation of quite similar languages.

    You're basically going to always have to write some C, whether you're doing some low-level control or interfacing to an API or whatever. For most business applications, this is a marginal task--that is, it takes place on an application's margins.

    You're going to need some kind of scripting language, and you can make it object-oriented if you like--that's not a bad way of organizing some programs and helps keep a handle on the sometimes complex applications "scripts" become. These tasks are also marginal (they're management or stopgap or interfacing or, literally, scripting server-side resources together). I wouldn't choose Perl here, it would be Ruby or Python; but really, any of those are fine.

    And then you'll need something for the really important stuff. And this is what kills me. Time after time, productivity studies show that terseness counts a lot for programmer productivity, and for quality (a programmer produces the same number of lines of code per unit time, regardless of language; and makes the same number of mistakes), and can otherwise show that Java is utter garbage for this task, but it's most frequently chosen anyway.

    Java's not much better than C for terseness, and it's full of typing misfeatures that have never been shown to increase code quality. On the contrary, Java is such an unmanageable beast you have to use a program to type chunks of your program for you. About the best thing that can be said for it is that the JVMs aren't bad and can sometimes be used to run non-Java languages.

    For the important stuff you'd think people would pick a family of languages that have been shown time and again to result in faster, higher-quality development: functional programming languages. But managers and developers alike resist it (unless the developer actually has experience with a functional programming language). Lots of people have speculated why and I'm not going to restate all that here.

    I'll put my word in here for Erlang because it comes with so much technology and fills such a need in the non-marginal problem space of so many business applications. But Haskell or PLT Scheme or whatever would be good choices, too.

    I recoil at the idea of picking a language because it might be popular with "average" developers. Who sets out to hire a large number of mediocre, interchangeable developers? If you choose Java, that's essentially what you're aiming at: a large number of minimally productive programmers producing reams of code that doesn't do very much.

    None of this should override compelling external factors. Sometimes you really need some FORTH because you want to embed an interpreter in something. Sometimes your embedded wiki is in Perl and you're going to extend it with that, your corporate standard of Python be damned. And, yes, sometimes maybe Java is the right answer (though if it is, I haven't come across the question yet).

    Now, look, we all know "any programming language can do anything." And we have all heard the religious arguments about all these things before. But surely, if a company is serious about "standardizing" it must do so on the basis of actual programmer productivity data and not on the basis of wild-ass guesses and the popularity of books? Continue to accept orthodoxy and be prepared to suffer a lack of excellence.

    --
    demi
  158. Micromanagement by Schraegstrichpunkt · · Score: 1
    Quiz: What kind painter would work for an employer who tells him he must use paintbrushes of a particular size, texture, and brand name, so that he may be more interchangeable?

    Answer: One who couldn't find work elsewhere.

    Don't do this. You'll lose your best people, sometimes before you've even hired them.

  159. Leave now by jamie(really) · · Score: 1

    Your upper management clearly hasn't got a fucking clue (expletive deserved). This is not usually a problem, since upper management quite often hasn't got a fucking clue about technical issues. However, your problem is that your middle management clearly hasn't got a clue at how to work with upper management. If nobody in your chain of command has a clue then you really need to quit or get promoted really quickly. Since you are asking this question here, it seems that you don't have a clue either, and I'm afraid slashdot is a poor substitute for a good lead. Go out and get a job with a team that has a clue.

  160. Hey, this could work with business processes too! by Anonymous Coward · · Score: 0

    To gain perspective, try suggesting they standardize on one business communication method. Say either mail, email, instant messaging, phone, video meetings, or face to face meetings. This would dramatically reduce the amount of support needed from the IT staff resulting in a huge cost savings. It would also save the managers the trouble of learning all of the new communication techniques. If face to face meetings are chosen, then, following the logic, randomly swapping managers from one meeting to another should pose no difficulty as they are already familiar with the format;)

  161. Re:Einstein: Simplify as much as possible, not mor by Maxo-Texas · · Score: 1

    Well,
    What would you use for report generation over multiple 20 to 35 million record files?
    With multiple summary levels that all roll up automatically without a lot of extra coding.

    --
    She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
  162. Makes No Logical Sense by anomalous+cohort · · Score: 1

    The so-called rationale behind this type of standardization of higher productivity for moved personnel makes absolutely no sense. If you allow everyone to use their preferred developer tool of choice, then you will achieve even higher productivity gains because no one will have to learn a new developer tool when they move. Why? Because I am going to take that tool with me with I move and continue to use it in the new environment.

    With regards to standardizing language and framework, consider the following hypothetical situation. If project A uses framework B, then the developers can be twice as productive than if project A uses framework C. Developer D is moved to project A. Developer D is twice as productive on framework C as framework B. How many developers have to be working on project A for the benefits of developer D's continued productivity to be canceled out by the lower productivity of the entire team because they are using a ill fitted framework?

  163. You don't dev Java by any chance, do you? by Anonymous Coward · · Score: 0

    I bet you are a Java development house, with an attitude like that...

  164. De facto standards by metachor · · Score: 1

    After reading some of the other replies, I suspect this will not be the most popular response, but here goes.

    At my current employer, we have a de facto standard on Microsoft development tools. This is not an enforced standard, but rather a recommended standard because the MS dev tools are the right tools for the job.

    Our problem domain is the processing of electronic documents for the e-discovery phase of litigation. This includes parsing e-docs to extract metadata and full-text and other relevant information to store in a database, so that each record can be reviewed as potential evidence for a trial.

    The majority of documents we receive from our clients (law firms and major corporations) are Microsoft Office format; Outlook .PSTs, .DOCs, .XLS, etc. This is probably because MS Office is such a highly used program in the corporate world. In any case, due to the relatively closed nature of the Office document formats, the best way to extract the data we need are the Microsoft APIs and, consequently, Visual Studio/.NET/etc.

    After developing core tools for the problem domain, there is significant investment in terms of man-hours (of .NET code) and money (i.e. software licensing costs) which can be reused or built-upon for future development.

    No developer would be actively prevented from using different tools, frameworks, languages, etc. However, it is encouraged to use the standard tool-chain because it makes sense given all the prior work which can be capitalized on for future development. Additionally, a lot can be said for consistency in development environments when it comes to multiple developers working on the same system.

  165. Need to Know the Company Name by tom's+a-cold · · Score: 1

    Are they publicly traded? If so I want to short their stock, thanks.

    --
    Get your teeth into a small slice: the cake of liberty
  166. It depends (but you're probably in trouble) by drew_eckhardt · · Score: 1

    >Of course the chosen language / framework used by everybody does not need to be the best tool for the job, but it should be good enough to allow every project to get done. What does Slashdot think about this?

    >Is it OK to use the same development tools and language for every project, instead of choosing what fits best? Will the time saved be sufficient to offset the time lost to the 'not the best tool for the job' environment developers will be forced to use?"

    If all your problems are sufficiently similar, it will be a time saver. This will be the case if your company just builds device drivers for one operating system or does electronic store fronts that are all the same apart from the graphics.

    For the broad spectrum of components that go into even a single product (a hypothetical digital video product for the broadcast market might have a high performance real-time system which does zero copy from network to disk and a web GUI) you'll do a lot better with tools that are appropriate for the job. You don't want to do zero copy IO with hard real time constraints of tens of milliseconds in Java. You don't want to do the web front end in 'C' regardless of what library you put on top of it. No popular language+platform covers those two bases acceptably well to say nothing of text processing, distributed systems, ad-hoc query processing...

    When you have to use the wrong tools for the job, really good people will use those tools to build better tools which are suited to solving the problem sooner with solutions more likely to be correct and performant. Less experienced or less talented people will just expend more effort trying to pound square pegs into round holes. In both cases where an appropriate tool exists you'll be better off just using it.

    I'd suggest you tell management that provided you have developers who know the programming paradigm (functional, object oriented, etc.); know one language in the Algol family tree; and know a good scripting/text processing tool set you're going to loose less time to spinup than using the wrong tool and start looking for a job in case that doesn't work, because

    1) in most cases tool and language constraints are going to be both unpleasant and cause productivity (and therefore profit margins) to suffer.

    2) management making decisions based on thinking they know more about technical subjects than the technical staff is not a good sign.

  167. One IDE, One common set of tools by beeradg · · Score: 1

    I seriously advocate the .net platform. With that get the following:

    Open Source:

    • Nant for builds
    • Nunit for well, what do you think?
    • NCover for coverage
    • NDoc if you need to generate apis

    Commercial:

    • Visual Studio 2008 Pro or higher for development
    • DevExpress DXperience Enterprise for a plethora easy and quick ui components, a wonderful ORM, and charting/reporting
    • TypeMock Isolator Professional for a great mocking platform
    • ReSharper 4.0 for quick and easy refactoring

    Of course your version control server/tools are also an important aspect. I currently use subversion but maybe you need a distributed version control (to each his own).

    I am rather experienced in both .net and java. I favor .net for web applications and desktop alike and point out that IronPython is a great dynamic language for scripting. Windows communication foundation is also unmatched in my opinion. It allows SOA implementations with virtually no plumbing.

    Considering you're moving to a central platform, I'm assuming you can sell windows as the os. I will not mention my preferences but will note that Windows Server 2008 is a great improvement when compared with previous versions. I will also mention if you are planning on writing anything that will use WCF, you really should get 2008 to host it.

    I do notice some concerns by commenters above in regards to the non-cross platform"ness" of .net. In response to those comments I point out the requirement of ONE single platform and associated tools. How does one be cross platform when targeting one platform? Good luck and I hope this post helps you in your decision.

  168. There's Your Sign by smagruder · · Score: 1

    This is what I call one of the "Sure Signs of Stupid IT Management". (That would make a great blog post title, eh?)

    First of all, management typically has no clue about the development technologies they are standardizing on, let alone the technologies they are excluding from their standardized set.

    Secondly, these management types don't seem to have a clue that the proper role of a software developer is to adjust to whatever language/technology is utilized for a specific project. Learning on the spot is part and parcel of the "daily normal" of a programmer's work existence. Any programmer who can't adjust properly shouldn't be a programmer in the first place -- they need to be in a different profession.

    Last, as others have clearly stated, using the best tool for the job is part of the professional decision making responsibility of the (usually senior) software developer. Only programmers can properly make these kinds of technical judgments. When management gets overly involved with such things, projects invariably turn into crap.

    --
    Steve Magruder, Metro Foodist
  169. Maven by Slashdot+Parent · · Score: 1

    I think you misspelled 'maven' as 'ant'. Oops.

    Other than that, I agree with your premise. As long as everyone can check out the project and build from the command line, it doesn't much matter if developers like this or that IDE, vi, emacs, TextPad, whatever. Let them use whatever they find to be most productive.

    --
    They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
  170. Three by Slashdot+Parent · · Score: 1

    What if I have a huge batch data-processing job to do? If I only have PHP and Java in my toolbelt, I'm in trouble.

    Better add PL/SQL or some other batch-processing language.

    --
    They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
    1. Re:Three by Tablizer · · Score: 1

      What if I have a huge batch data-processing job to do? If I only have PHP and Java in my toolbelt, I'm in trouble.

      Why is that? PHP can be run from the command-line, just like Perl.

    2. Re:Three by Slashdot+Parent · · Score: 1

      Why is that? PHP can be run from the command-line, just like Perl.

      Oh, really? Gee, I'm so glad to know that.

      For my next data processing gig, I won't even bother keeping the processing close to the data. I'll just whip up some hare-brained PHP script. I'm sure whatever needs processing will be processed sometime before the year 2050. Maybe.

      --
      They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
    3. Re:Three by Tablizer · · Score: 1

      Does sarcasm make you feel better? You are not being very specific about what you are looking for. PL/SQL may be fine if you only have Oracle data, but most shops have a mix of data sources.

    4. Re:Three by Slashdot+Parent · · Score: 1

      Does sarcasm make you feel better?

      Yes, in fact it does. Thank you for asking.

      You are not being very specific about what you are looking for. PL/SQL may be fine if you only have Oracle data, but most shops have a mix of data sources.

      The last project I did was for a company that needed to process 25M objects, each of which spanned about 30 tables, inside of 24 hours. This company had standardized on J2EE, and was (I shit you not) actually trying to perform all of this processing using entity EJBs for data access, and all kinds of remotable calls for each transaction. Needless to say, it didn't fucking work.

      Maybe PHP would have fared better. Somehow, I doubt it. In the end, we wound up denormalizing their schema and using a proprietary ETL tool, but PL/SQL probably would have sufficed on a sane schema. The client did not, however, want to maintain reams of PL/SQL code, and I can hardly say I blame them.

      --
      They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
    5. Re:Three by Tablizer · · Score: 1

      I agree that there is a need for a non-vendor-specific data processing tool that integrates native SQL with a scripting language that ties it altogether, along with an (optional) decent data browsing tool that would take the best of MS-Access, Toad, and Forest-and-Trees.

      I haven't worked much with EJB, so cannot comment on them. Generally I avoid Java.
               

    6. Re:Three by Slashdot+Parent · · Score: 1

      Generally I avoid Java.

      Your loss. As of about 10 years ago, Java has matured significantly. There is a lot of good stuff there once you get past your bigotry.

      You're safe avoiding EJB, however. The first usable J2EE spec was released about a year ago, and there are several more mature frameworks out there. If you're going to kill some brain cells, learn Spring instead.

      But what can I say? My own bigotry has caused me to avoid PHP.

      --
      They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
    7. Re:Three by Tablizer · · Score: 1

      There's kind of a personality difference between those who prefer type-heavy languages versus dynamic languages. And, they tend to specialize in different kinds of projects. It is not productive to get into a language fight over such. If you personally prefer Java, that's fine. Enjoy what what you like.
               

  171. They might also decide to use Esperanto by Anonymous Coward · · Score: 0

    if your company is multinational, or has international clients. I am guessing that this would be as popular as what they are doing now.