Language change question

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Bryan

    #1

    Language change question

    Hi,

    I work for a company that is heading towards an FDA approved development
    process. We have always used C++ in a windows environment, and we have
    more than 6 years of code, applications and libraries developed.

    Our IT director has made the decision that to speed up development times
    we need to re-architect all of our existing code, and has hired a 3rd
    party (offshore) company to do this for us. They have recommended that
    we change from C++ to java, spring and hibernate.

    We are all professional programmers here, so learning java is not a
    problem for those of us who dont know it. But the time to learn the
    tools and environments may take a bit of time. But the real question is
    what do we gain from moving to java? Or conversely what do we lose by
    moving away from C++?

    I would be interested to hear any thoughts, stories of similar
    experiences or pros and cons.

    Thanks!
  • Phlip

    #2
    Re: Language change question

    [followups set to C++ newsgroup]

    Bryan wrote:
    [color=blue]
    > I work for a company that is heading towards an FDA approved development
    > process. We have always used C++ in a windows environment, and we have
    > more than 6 years of code, applications and libraries developed.
    >
    > Our IT director has made the decision that to speed up development times
    > we need to re-architect all of our existing code, and has hired a 3rd
    > party (offshore) company to do this for us. They have recommended that
    > we change from C++ to java, spring and hibernate.[/color]

    Polish your resume.

    Someone has sold FDA compliance to your director, and with it comes the kind
    of disruptions and "reorganization " that will increase your bug rate.

    Your director could have sped up development time by ordering all
    programmers to write unit tests as they write the tested code. These
    systems have been shown to reliably speed up production, leveraging
    existing code bases.

    However, your IT director fell for the oldest trick in the book - promising
    that Java development is faster than C++ "because you can't have dumb
    memory errors". Ever since Java came out, we have seen companies follow
    this exact path to ruin: "Rewrite it all in Java, and development will be
    rapid and bug-free!"

    Then the monkeys start flying out your butt.

    --
    Phlip
    http://www.greencheese.us/ZeekLand <-- NOT a blog!!!

    Comment

    • Walter Bright

      #3
      Re: Language change question

      Bryan wrote:
      [color=blue]
      > I work for a company that is heading towards an FDA approved development
      > process. We have always used C++ in a windows environment, and we have
      > more than 6 years of code, applications and libraries developed.
      >
      > Our IT director has made the decision that to speed up development times
      > we need to re-architect all of our existing code, and has hired a 3rd
      > party (offshore) company to do this for us. They have recommended that
      > we change from C++ to java, spring and hibernate.
      >
      > We are all professional programmers here, so learning java is not a
      > problem for those of us who dont know it. But the time to learn the
      > tools and environments may take a bit of time. But the real question is
      > what do we gain from moving to java? Or conversely what do we lose by
      > moving away from C++?
      >
      > I would be interested to hear any thoughts, stories of similar
      > experiences or pros and cons.[/color]

      It will be a disaster. Your working, debugged code is going to have to
      be both translated and extensively (especially from C++ to Java) redesigned.

      The 3rd party programmers who will be doing the work will have never
      seen your code before. They'll know nothing about the design of it, why
      the code is written the way it is, and will not know that the ugly
      detritus in the code are undocumented fixes for specific problems.

      Chances are good that if it took your company 6 years to get to where it
      is now, it'll take the 3rd party 6 years to duplicate it and bring it up
      to the same level of capability and bug-free-ness.

      In the meantime, you'll fall 6 years behind the competition.

      Essentially, you're stuck with using C++ for your existing applications.
      Switching to a significantly different language only pays off for new
      code, or if you're forced to by things like severe unfixable compiler
      problems.

      The number one, proven, way to improve productivity with an existing
      code base is to improve the test suite. A thorough test suite means you
      can change code without fear of breaking things. The better the test
      suite, the less fear. The less fear, the faster development goes. Best
      of all, test suites can be improved incrementally without interfering
      with your release schedule.

      I suggest starting with a good C++ code coverage analyzer, and work from
      there.

      -Walter Bright
      www.digitalmars.com C, C++, D programming language compilers

      Comment

      • Jerry Coffin

        #4
        Re: Language change question

        In article <9%Iag.18202$Lm 5.16023
        @newssvr12.news .prodigy.com>, spam@nospam.com says...[color=blue]
        > Hi,
        >
        > I work for a company that is heading towards an FDA approved development
        > process. We have always used C++ in a windows environment, and we have
        > more than 6 years of code, applications and libraries developed.
        >
        > Our IT director has made the decision that to speed up development times
        > we need to re-architect all of our existing code, and has hired a 3rd
        > party (offshore) company to do this for us. They have recommended that
        > we change from C++ to java, spring and hibernate.[/color]

        You haven't said a lot about what your code really does,
        and that makes it impossible to say much with any
        certainty.

        That said, for this to accomplish anything positive at
        reasonable cost depends upon your doing things that are
        substantially better supported by Java, Hibernate and
        Spring than they are by C++ and whatever libraries and
        such you're using with it right now. Since we don't know
        what you're doing or what libraries you're using, it's
        very hard to say that couldn't possibly be the case.
        Assuming you've been doing much that's worthwhile for
        those six years, however, my guess is that it'll take at
        least three or four years with Java just to get back to
        where you are right now...
        [color=blue]
        > We are all professional programmers here, so learning java is not a
        > problem for those of us who dont know it. But the time to learn the
        > tools and environments may take a bit of time. But the real question is
        > what do we gain from moving to java? Or conversely what do we lose by
        > moving away from C++?[/color]

        Learning the language and environment is more or less
        trivial. The real question is how much you gain -- and
        for this to be a positive thing at all, you need to gain
        a _lot_. In fact, you need to gain so much that my guess
        about how long it'll take to get back to parity is off by
        an order of magnitude or so. Personaly, I find that hard
        to imagine. Unless you (collectively) have spent most of
        the last six years sitting around and twiddling your
        thumbs, re-creating what you've done in less than (say) a
        year sounds awfully far-fetched to me. People can argue
        back and forth about the benefits of this feature or that
        in one language or the other, but few even go so far as
        to claim that there might be such a large benefit to one
        or the other (not to mention actually showing it).

        The only possibility I can imagine that would allow this
        would be if your C++ was sufficiently Java-like that you
        could do a mostly-automated translation from one to the
        other. The problem with that is that it doesn't support
        any sort of re-architecture and such, so there's almost
        no chance you'd gain anything from it.

        I'd view this proposal with _extreme_ skepticism.

        --
        Later,
        Jerry.

        The universe is a figment of its own imagination.

        Comment

        • CBFalconer

          #5
          Re: Language change question

          Bryan wrote:[color=blue]
          >
          > I work for a company that is heading towards an FDA approved
          > development process. We have always used C++ in a windows
          > environment, and we have more than 6 years of code, applications
          > and libraries developed.
          >
          > Our IT director has made the decision that to speed up development
          > times we need to re-architect all of our existing code, and has
          > hired a 3rd party (offshore) company to do this for us. They have
          > recommended that we change from C++ to java, spring and hibernate.
          >
          > We are all professional programmers here, so learning java is not
          > a problem for those of us who dont know it. But the time to learn
          > the tools and environments may take a bit of time. But the real
          > question is what do we gain from moving to java? Or conversely
          > what do we lose by moving away from C++?
          >
          > I would be interested to hear any thoughts, stories of similar
          > experiences or pros and cons.[/color]

          Please tell us the name of your firm. It is time to sell its stock
          short, assuming that these products are a significant part of its
          output. We also want to know the name of the offshore outfit,
          which is going to make a short term profit. It obviously has your
          management under good control, and will milk it for all it can
          get. Publishing the name of your "IT director" would also be
          helpful, in the quarantine sense.

          A useful move for you might be to collect your cohorts and leave,
          forming a firm whose purpose is purely to service your old firms
          products. Take all the source you can legitimately lay your hands
          on. If you can't access enough legally, then this won't work. But
          you will be needing new jobs regardless. Run, Spot. See Spot run.

          --
          "If you want to post a followup via groups.google.c om, don't use
          the broken "Reply" link at the bottom of the article. Click on
          "show options" at the top of the article, then click on the
          "Reply" at the bottom of the article headers." - Keith Thompson
          More details at: <http://cfaj.freeshell. org/google/>
          Also see <http://www.safalra.com/special/googlegroupsrep ly/>


          Comment

          • David

            #6
            Re: Language change question

            Hello Bryan,

            On Wed, 17 May 2006 17:24:21 UTC, Bryan <spam@nospam.co m> wrote:
            [color=blue]
            > Hi,
            >
            > I work for a company that is heading towards an FDA approved development
            > process. We have always used C++ in a windows environment, and we have
            > more than 6 years of code, applications and libraries developed.[/color]

            An FDA process is fine and shouldn't be a problem with C++. I'll also
            make a guess that with six years of development that most of the code
            performs well and that your team knows the implications of their
            decisions and limitations of their design.
            [color=blue]
            > Our IT director has made the decision that to speed up development times
            > we need to re-architect all of our existing code, and has hired a 3rd
            > party (offshore) company to do this for us. They have recommended that
            > we change from C++ to java, spring and hibernate.[/color]

            You've not mentioned why your IT director made this decision or if
            you feel that it is a valid course of action to improving the
            development timeline.

            I get very worried, and verbal, whenever the higher powers decide
            that they know far more about how the business should operate and
            start making sweeping changes. The change from C++ to Java is more
            than just a language change and will affect more than just the way
            the code is written. Reliability and dependability are much
            different in Java than C++. I'm presuming that your director thinks
            that the maintenance will improve along with the development.

            Just switching languages by itself will never, ever be a quick path
            to an improved process. I doubt that Java offers any real advantages
            over C++, but you've not said anything about the tools or products
            you develop. Stating that Java development is faster than C++
            development just shows the lack of intelligence of the person who
            said it.

            Any third party brought in to help you has exactly one goal in mind
            -- to bill you now and try to continue to bill you later. All
            contractors have this basic mentality as it is part of why they
            exist. I can't comment on their conclusion, but it seems rather
            suspect. Cetainly if your development team doesn't agree with the
            "conclusion " perhaps there is far more at stake than just who will
            be performing some of the work and what it should accomplish.

            I've seen such battles before and it helps to know why the "powers
            that be" made their decision and why the current process isn't
            meeting the desired goals. Sometimes they make the correct decisions
            and other times they don't. I've never seen a "golden bullet" scheme
            work yet. There must be an internal plan for it to really achieve
            the goals and success. Furthermore, you must allocate an appropriate
            transition period that accounts for the risk involved to your
            products. A simple rewrite, even in the same language, is fraught
            with many problems.
            [color=blue]
            > We are all professional programmers here, so learning java is not a
            > problem for those of us who dont know it. But the time to learn the
            > tools and environments may take a bit of time. But the real question is
            > what do we gain from moving to java? Or conversely what do we lose by
            > moving away from C++?[/color]

            As professional programmers, I'd hope that you could make suggestions
            with your leadership and help decide how best to meet their expectations
            or at least change some of their expectations.

            Since you have no idea how Java could impact your products as they stand
            today, any decision to trust "the recomendation" is likely to lead your
            company down an unpredictable and possibly unprofitable path. Plan to
            learn the implications of other tools and see if Java meets your needs
            and goals.

            C++ under Windows is basically a standard, predictable language on top
            of a reasonably trustworthy and reliable operating system.

            Java must have a run-time package on top of any operating system that
            runs it and is limited by certain constraints that operating system
            has. Java code may be easier to port to other Java systems, but
            FDA certification would still dictate that the entire platform be
            recertified.

            Any change in language may cost you the familiarity and trust that
            you currently have in your tools. You will also make mistakes that
            perhaps you wouldn't have made with the current system due to an
            unfamiliarity while determining how best to use your new developemnt
            tools.

            Rearchitecting parts of, or the entire, product within the same
            language generally has a more predictable certainty of achieving
            the desired goals. Again, we cannot judge the impact to development
            speed or whatever the problem is that your team is not achieving
            from what was mentioned. Perhaps there are simply better ways to
            go about developing your product. For instance, a heavily hard-coded
            product might benefit from reusable tools that help developers create
            solutions faster. Again, I have no idea if your product already has
            something like this.

            What do you and your team mates feel are the weeknesses in your
            process and how best to remedy them?
            [color=blue]
            > I would be interested to hear any thoughts, stories of similar
            > experiences or pros and cons.[/color]

            I've worked with all kinds of products in my 30 years of development.
            The path you seem headed down is one of the most unreliable promises
            toward improved development performance. However, I've seen at least
            two management groups (both in the financial industry) that repeated
            this mistake at least four times in a row. I was just a spectator
            hearing about their woes, but I knew better than to accept
            responsibility for fixing their unachievable expectations.

            My recommendation would be to talk with your development team and
            leadership to decide what expectations are not being met and then
            figure out what can be improved and how. An infinite amount of
            cheap, outsourced labor, will not simply improve your development
            timeline without affecting other factors... like meeting FDA
            approvals for your products.

            I've worked on FDA and FAA approved devices, both of which have
            hefty requirements and goals. The development cost is usually
            a minor portion of the costs involved with gaining the approval
            for new or revised products.

            I'd also agree with some of the other responses that you might
            want to keep your resume updated.
            [color=blue]
            > Thanks![/color]

            David

            Comment

            • Phil Cairns

              #7
              Re: Language change question

              Bryan wrote:[color=blue]
              > Hi,
              >
              > I work for a company that is heading towards an FDA approved development
              > process. We have always used C++ in a windows environment, and we have
              > more than 6 years of code, applications and libraries developed.
              >
              > Our IT director has made the decision that to speed up development times
              > we need to re-architect all of our existing code, and has hired a 3rd
              > party (offshore) company to do this for us. They have recommended that
              > we change from C++ to java, spring and hibernate.[/color]
              [snip][color=blue]
              > I would be interested to hear any thoughts, stories of similar
              > experiences or pros and cons.[/color]

              I went the other way. I started off developing a client in C#/.NET, and
              my server in Java. It was a reasonably high-volume system that had to
              process pretty much the entire Australian Stock Exchange activity for
              stocks and options. Performance was woeful, and I ended up redeveloping
              both the client and the server programs in C++. It was a great. On the
              server, the CPU was pretty much idling all day, and it was only a DL380
              that had to process everything twice (once for live data, once for 20
              minuted delayed). The client? Ha. The client no longer grabbed up to
              70mb of RAM simply because the user moved the mouse around the screen.

              A friend of mine consults for another company that did a huge
              redevelopment in WebSphere and Java. Again, woeful. They figured out
              that they need something like five times the processing power to get the
              same performance out a Java implementation as a native one. Oh, and
              then, part way through the project, Sun went and end-of-life'd all of
              their hardware.

              Phil.

              Comment

              • Dave

                #8
                Re: Language change question

                Bryan wrote:[color=blue]
                > Hi,
                >
                > I work for a company that is heading towards an FDA approved development
                > process. We have always used C++ in a windows environment, and we have
                > more than 6 years of code, applications and libraries developed.
                >
                > Our IT director has made the decision that to speed up development times
                > we need to re-architect all of our existing code, and has hired a 3rd
                > party (offshore) company to do this for us. They have recommended that
                > we change from C++ to java, spring and hibernate.
                >
                > We are all professional programmers here, so learning java is not a
                > problem for those of us who dont know it. But the time to learn the
                > tools and environments may take a bit of time. But the real question is
                > what do we gain from moving to java? Or conversely what do we lose by
                > moving away from C++?
                >
                > I would be interested to hear any thoughts, stories of similar
                > experiences or pros and cons.
                >
                > Thanks![/color]

                Why on earth is a _director_ making a decision like that? Approving the
                decision, yes, because only a director has the authority to approve a
                plan that will set the business back to the stone age.

                OK, maybe this is America, where it seems everyone above the tea lady's
                biscuit fetcher's assistant's gopher's assistant is some kind of
                director, vice president or some other grand sounding title; here in the
                UK a director is at or slightly below board level, and to be below board
                level there has to be several layers of management: plebs, team leaders,
                lower management, middle management, senior management - this last
                category or higher is where you'd expect to find someone with "director"
                in their job title. Directors (even the IT director, who is on the
                board to represent the IT dept) make business decisions, not technical
                decisions, and the decision to make a language switch is most definitely
                a technical one that should be firmly outside the remit of a director.

                So I agree with those who suggest you polish up your CV. This business
                is going to go seriously down the pan; at the end of it there's going to
                be a seriously retarded product that nobody will want (I've been in a
                company that decided to port its main product from VMS/Pascal to C/Unix
                and the finished product was years behind the main one that was still
                being developed. It wasn't helped though by the use of a Pascal to C
                convertor that knew nothing of Pascal, C, VMS or Unix and output C that
                resembled the original Pascal at best in the same way a pavement pizza
                resembles yesterday's evening meal - bits of it were recognisable
                although horribly munged, and there were diced carrots all over the
                place with no sign of carrot in the original). It'd be nice if you
                shared the company name so that those with stock can do something useful
                with the cash instead of watching it plummet in value.

                Comment

                • Mateusz Loskot

                  #9
                  Re: Language change question

                  Bryan wrote:[color=blue]
                  >
                  > We are all professional programmers here, so learning java is not a
                  > problem for those of us who dont know it. But the time to learn the
                  > tools and environments may take a bit of time. But the real question is
                  > what do we gain from moving to java? Or conversely what do we lose by
                  > moving away from C++?[/color]

                  Hmm, how would you estimate time necessary to accustom
                  Java in your company?

                  I've read about time necessary to enter new programming language may
                  estimate in >=6 months. The cost may be very hight.

                  I think you should try to organize your current development path in
                  a better way first.

                  Cheers
                  --
                  Mateusz Łoskot

                  Comment

                  • scott moore

                    #10
                    Re: Language change question

                    Bryan wrote:[color=blue]
                    > Hi,
                    >
                    > I work for a company that is heading towards an FDA approved development
                    > process. We have always used C++ in a windows environment, and we have
                    > more than 6 years of code, applications and libraries developed.
                    >
                    > Our IT director has made the decision that to speed up development times
                    > we need to re-architect all of our existing code, and has hired a 3rd
                    > party (offshore) company to do this for us. They have recommended that
                    > we change from C++ to java, spring and hibernate.
                    >
                    > We are all professional programmers here, so learning java is not a
                    > problem for those of us who dont know it. But the time to learn the
                    > tools and environments may take a bit of time. But the real question is
                    > what do we gain from moving to java? Or conversely what do we lose by
                    > moving away from C++?
                    >
                    > I would be interested to hear any thoughts, stories of similar
                    > experiences or pros and cons.
                    >
                    > Thanks![/color]

                    If the 3rd party offshore, which is of course in India, is going to do
                    the work, then there would seem to be nothing to do except update
                    your resume. The next step would be to trim local staff down.

                    Of course, what is more likely is that, despite what you have written,
                    the 3rd party is not going to do the work, but has analyzed your code
                    and come up with this solution, and won't be around or responsible for
                    the result.

                    The likely result is that none of this will occur. Management will tire
                    of the project, and layoffs will result on declining sales.

                    Why any of this matters to you is the question. If you own stock, sell
                    it. If you know Java, you can lead the project. If you don't know Java,
                    the company is about to pay you to learn it.

                    Some of the best jobs I ever had were companies that were failing. The
                    pay is good until the end, and having your old company empty with a
                    for sale sign on the door looks great on your resume. Nobody faults
                    you for either quiting or being fired.

                    Comment

                    • William

                      #11
                      Re: Language change question

                      "Bryan" <spam@nospam.co m> wrote in message
                      news:9%Iag.1820 2$Lm5.16023@new ssvr12.news.pro digy.com...[color=blue]
                      > Hi,
                      >
                      > I work for a company that is heading towards an FDA approved
                      > development process. We have always used C++ in a windows
                      > environment, and we have more than 6 years of code,
                      > applications and libraries developed.
                      >
                      > Our IT director has made the decision that to speed up
                      > development times we need to re-architect all of our
                      > existing code, and has hired a 3rd party (offshore) company
                      > to do this for us. They have recommended that we change
                      > from C++ to java, spring and hibernate.[/color]

                      Let's see. To speed up development, this director is going
                      shove the stick into reverse...

                      Sounds to me like you need an IT director with better run-time
                      error checking.

                      You know this 3rd party company probably suggested Java because
                      it's what they know, right? I bet they can scare up three Java
                      programmers for every C++ programmer in their region, and at
                      about the same price. Basically, they've recommended you improve
                      their profit margins by switching to Java.

                      -Wm


                      Comment

                      • William Cai

                        #12
                        Re: Language change question

                        Bryan wrote:
                        Hi,
                        >
                        I work for a company that is heading towards an FDA approved development
                        process. We have always used C++ in a windows environment, and we have
                        more than 6 years of code, applications and libraries developed.
                        >
                        Our IT director has made the decision that to speed up development times
                        we need to re-architect all of our existing code, and has hired a 3rd
                        party (offshore) company to do this for us. They have recommended that
                        we change from C++ to java, spring and hibernate.
                        >
                        We are all professional programmers here, so learning java is not a
                        problem for those of us who dont know it. But the time to learn the
                        tools and environments may take a bit of time. But the real question is
                        what do we gain from moving to java? Or conversely what do we lose by
                        moving away from C++?
                        >
                        I would be interested to hear any thoughts, stories of similar
                        experiences or pros and cons.
                        >
                        Thanks!
                        We ported the whole product from C++ to Java several months ago. It took
                        us about 3600 person day and introduced a lot of "regression bugs".
                        However, I think it's a wise decision to port to Java-based application.
                        1. We finally get rid of most of C++ based 3rd party products, like some
                        STL libraries, etc. It's painful to compile and link those stuff on
                        different platforms...
                        2. We get the ability to port the product to a new platform rapidly.
                        3. Get rid of database dependency.

                        Hope that helps you make decision.

                        Thanks,
                        -William

                        Comment

                        Working...