I agree with Anton on this one. Proof has nothing to do with this.
It’s very obvious that we are the only people who profit from
implementation of the argument that more complicated produces better
results. Personally, I think the argument that the easier you make
things appear, the worse your developers are going to be makes a great
deal of sense, but making this argument is always a non-starter.
Essentially what one is saying to management is that no one can do this
but me so don’t pay me less. I think that they see it as a power play,
which it is. It’s also, in my opinion, full of merit, but I know which
is more important to me, at least, when it comes to decision making.
There’s nothing to prove to Microsoft, because most of them already know
it, in my opinion. That doesn’t mean discension is a viable option,
especially because the argument “what were doing right now isn’t
working” is tough to get around, no matter foolish it can be, depending
on what is proposed. They also know, generally, what sells, and that’s
what any business that is operated for a profit cares about, which makes
a lot of sense to me, at least. While the technical details are
obviously different and much, much, much better, in attitude and
essence, all of this is presented in a way not different than how a VB
based three tier middleware with an Access backend was 7 - 10 years go,
when it was going to meet the needs of developers of mission critical,
internet aware business applications in a robust manner with equivalent
performance. Lower TCO, lower developer cost, all of that. Unless I’m
missing something, leaving out fluctuations in the economy, the cost to
develop software has never really done anything but go up over the
Windows era, at least, and in most ways it should.
This isn’t just a Microsoft or Windows thing; it’s basically a paradigm
of the history of any 4GL, expect that I doubt anyone still makes the
almost certainly contrary to historic fact claim “this can’t be done
without this language.” If they do, they might consider asking, say,
the IRS or Air Traffic Control how it’s working out for them. To date,
everything that was intended to fix the problems of C and C programmers
has been an abject failure. In my opinion, C++ is not an exception to
this, because, in addition to not even coming close to displacing C if
one imposes the constraint that ‘C++’ means something along the lines of
designing around a class hierarchy, fundamentally and more importantly,
C++ wasn’t intended to do anything outside of Bell, and this is the
distinction that I think is important - C++ gained ground because it
worked well for some people, in some situations, and no one ever
designed it for the market. Also, it had enough of a legitimate base to
survive the ramifications of the marketing it suffered starting maybe
fifteen years ago as, well, a better C that would address problems of
scale that C could possibly handle. Aside from the obvious problems
introduced by designing for the market, and really the future market, I
think the bigger issue is that what rears it’s ugly head in anything
that is designed for anything to make money, in and of itself, is the
politics of getting things funded internally. This, in my opinion, is
why something that’s internet aware, mission critical, et. c. is going
to funded - by people who know that is at some level, to some degree,
somewhere between unreasonably optimistic to total bullshit - , over
something like improving the quality of samples. Idea people who ‘think
big’ get their ideas funded, and go on to manage, generally somewhere
else, because their big idea didn’t work, but everyone likes an idea
person, who, no doubt, was undercut by his or her former employer’s lack
of dedication to his or her vision. People who analyze complex
situations and attempt to solve the problem by taking small, cautious,
reverseable steps and change their plans based on the results, get to be
engineers, because the lack ‘leadership skills,’ like ‘sticking to their
goal.’ While it’s very easy to criticize this, it’s a very good policy
for those who make decisions, because making decisions the way an
engineer would in situations a manager is in will get the manager fired
if it doesn’t work out. Fundamentally, this all boils down to
accountablity, just like everything else.
All that said, I think C# will succeed, which is unfortunate it my
opinion, because, to me, programming is about representation, which C#
has, and management of memory, which it doesn’t. When either of these
are not present, in my opinion, the situation becomes not unlike that of
budgeting in organizations operated not for profit - anything seems as
good as anything else. Personally, I distrust the work of anyone who
finds memory management a chore or detail, and much less important than,
say, organizing your program around a collection of singlets, mostly
because I have doubts that they enjoy there work, and take pride in
their craft. Were I in charge of anything managerial, which I deeply,
deeply hope never to be, I would never hire anyone who hasn’t spent most
of their time using C or C++, and instead C#, because, no matter what
it’s virtues, applying one of them to a C/C++ program would be a
disaster and likely to happen because they look similar.
Just my ramblings,
mm
For the same reason
, and it’s also why I think that ‘proving’ is a complete waste of time.
xxxxx@hotmail.com wrote:
Hagen,
> So how long can it take to develop and test? 1/25th of the time? Now throw
> in some newbie kernel programmer “can-do” attitude for a really explosive mix…
This mix is not yet that explosive - after all, as long as they are unable to even load a driver without BSOD,
it will become obvious to a manager, no matter how technically ignorant
he is, that it does not work this way.
In order to make this mix really explosive, you have to add WDF to it,
so they actually succeed in loading a driver and
doing some basic operations is it -at this point the manager will get a
false impression that newbie’s “can-do” attitude
is not-so-unfounded. This is when real troubles will start - when they
try to add something *actually* functional (for example, MP
synchronization)
to their driver, funny things will commence, because the newbies cannot
tell a spinlock from event and has no clue about IRQL. At this point we
will see
countless “my driver don’t work…please help” posts…
> It is our responsibility to bring up good arguments and if necessary
> prove the complexity of driver writing.
Prove it to whom??? Who is going to ask your opinion (until the troubles begin, of course) if
they decide that they are able to do everything without any external
help??? The only situation when
you have to prove things is when they ask your for help, and it is
obvious to you that it is impossible to fix
their driver without rewriting it from the scratch. At this point you
may, indeed, have a hard time explaining to
them that they have just wasted N man-years and X hundred thousand USD
on something that just cannot work…
Anton Bassov