Ok, with that background in mind, what have I done in
the last two years here
at Oracle? Looking back at all the things I've done, all the projects
completed,
well not that many projects really. I see practically nothing that's
actually
survived two years of product development. Not extremely surprising.
I'm a big
believer in rewriting from the ground up. The first version gets things
done
and it's more of a learning experience. The next version is better and
can stand
on it's own. But there will always be design mistakes (unless you're
really
good and lucky, and few people are both) or there will be new
requirements and
the model has to be redone.
My first project was a SQL layer for Java. The design requirements was
something
easy for people to use, multi-threaded and scalable, and of course it
would be
nice if it worked and was fast. Basically hide JDBC from the other
developers.
So I wrote this two-level architecture: a front end that takes SQL
requests
and caches the results and a back end to run the requests through the
JDBC
layer. Input where SQL in Strings or a procedure name plus a String
array of
arguments, output was a String table. The hard part was processing
procedures.
Since I wasn't asking for much information (like argument types or
schema name)
I had to search through the Oracle database for the information, which
was very
slow. That lead to a caching mechanism to speed it up. In the end this
thing
worked and I think it was pretty good. But I could see that the next
version
would have to be rewritten to make it more streamlined and more robust.
I never
got the chance and in a couple more weeks all our code will have
finally been
moved off of my SQL layer and to another layer developed in 11i.
|
Next project I had a partner and we had to develop a
schema for the 3i CCT
products. (3i is version 3.1 of CRM products, we then went to version
11i which
is really 11.0 and syncs with the version numbers used in ERP. So
really 3i =
1.0 and 11i = 2.0. CCT is Call Centers and Telephony, my group.) In
tandem with
this we had to develop screens and forms to edit this data. Eddy did
the forms
and I implemented accessing the schema data through my SQL layer; we
both worked
on the schema. Here is where having a partner helps. We had an
incentive clause:
if we finished in about a month there would some nice bonuses, which
although I
didn't accept, did make me work harder so that Eddy would get his bonus
at
least. The 3i schema did the job, but was quite limited. All the code I
wrote
has been replaced, and most of the tables have been replaced or so
heavily
changed I don't recognize them anymore. But I can still see some of our
tables
and some of our weird field names and conventions and the schema doc is
the
one I wrote with a lot of stuff redone.
My third 3i project was the statistics module. Another team was writing
a few
call center reports and they needed call center data for them. So I
wrote a
module that worked on top of our core product without any dependencies
from
our core product on my module. Basically it just listened to all of the
events
thrown by the core and built up a picture of the call center. As each
call is
completed it writes the data to the database. The hard part here was
interpreting the events. In hindsight perhaps I should have worked more
closely
with the core team, because I just looked at the events and tried to
fit my
module around them and any inconsistencies. I never really got all the
weird
things ironed out. Some data just wasn't there, some events weren't
guaranteed,
some events came out of order. Part of it was the requirements from the
reports
team, which were rather stringent and specific. Still it did 90% of
what it
was supposed to do. I've rewritten the statistics module for 11i and
it's much
better now. The requirements were reduced which made everything much
easier.
The code is cleaner and more streamlined, although one more rewrite
would be
nice before I'm satisfied with the module.
|