By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,383 Members | 2,002 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,383 IT Pros & Developers. It's quick & easy.

Language change question

P: n/a
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!
May 17 '06 #1
Share this Question
Share on Google+
11 Replies


P: n/a
[followups set to C++ newsgroup]

Bryan wrote:
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.


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!!!
May 17 '06 #2

P: n/a
Bryan wrote:
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.


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
May 17 '06 #3

P: n/a
In article <9%Iag.18202$Lm5.16023
@newssvr12.news.prodigy.com>, sp**@nospam.com says...
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.
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...
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++?


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.
May 17 '06 #4

P: n/a
Bryan wrote:

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.


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.com, 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/googlegroupsreply/>
May 17 '06 #5

P: n/a
Hello Bryan,

On Wed, 17 May 2006 17:24:21 UTC, Bryan <sp**@nospam.com> 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.
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.
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.
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.
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++?
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?
I would be interested to hear any thoughts, stories of similar
experiences or pros and cons.
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.
Thanks!


David
May 17 '06 #6

P: n/a
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. [snip] I would be interested to hear any thoughts, stories of similar
experiences or pros and cons.


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.
May 18 '06 #7

P: n/a
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!


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.
May 18 '06 #8

P: n/a
Bryan wrote:

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++?


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
http://mateusz.loskot.net
May 18 '06 #9

P: n/a
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!


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.
May 18 '06 #10

P: n/a
"Bryan" <sp**@nospam.com> wrote in message
news:9%*******************@newssvr12.news.prodigy. com...
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.


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
May 26 '06 #11

P: n/a
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
Dec 14 '06 #12

This discussion thread is closed

Replies have been disabled for this discussion.