Programming Part 1
So the question was asked, what language do I program in...so here is my programming story (possibly more than you wanted to know about my history, and maybe too technical to be entertaining):
I started college as a physics major. I had a good amount of physics in high school and loved it. I even went so far as to purchase quite a bit of extracurricular reading material on some more advanced and interesting topics of quantum theory etc. Yeah yeah, I'm a big nerd.
My first semester was Physics 1, Calculus 2, Chemistry 1, and other liberal arts mumbo-jumbo. It was OK...because I was taking so many strenuous courses, the one that I struggled with was Calculus 2. I had to take it again...So next semester I took Physics 2, Calculus 2, Chemistry 2...not a great semester either. Chemistry was kicking my ass. So after this semester I decided that maybe Physics was not the subject for me.
Considering my options, I had many friends involved in the Computer Science major. I had one course in computer science during high school, and figured I would give it a go. It ended up being ridiculously easy. So, I stuck with it.
I had good teachers, and even enjoyed the subject matter. We studied C++, Java, Lisp, C and other languages. I got pretty good at it...I even was accepted into the PhD program for graduate school. During my last year at uni, I had an internship at an insurance company doing J2EE and .NET programming. I learned allot but, meh, it was just a job.
By the time I reached grad school, I was programmed out. I really started to feel that I did not enjoy it much. Along with health issues, I was having a hard time of it. So, I quit, halfway into the first semester. I moved back to Lancaster, and looked for a job.
I ended up back at my place of employment with the insurance company...but at a very different type of post. I was a "Product Automation Specialist". I worked on automating the certificating system, learned too much about insurance, and got very frustrated. The company, and perhaps all insurance companies, was incredibly shady. No sense of responsibility for their lack of integrity. The certificates were sloppy, and honestly, not legal. I quit.
After this experience, I decided that maybe technology was not the environment for me. I needed something mindless, something enjoyable, but not heavy on the thinking. I went into banking. I was a teller training to be a head teller, then I was training to be at the desk. I enjoyed learning about banking, I enjoyed taking the classes, but I hated working with stupid people all day, customers and peers. So, I quit.
I got a job programming J2EE in Mechanicsburg. This was a young company, very small, but with allot of good, hard working, young people. It was OK at first. I enjoyed the people. The company's main task was contracting for the Navy. We worked on huge programs pertaining to the procurement of supplies from everything from nuts and bolts to submarine hulls and guns.
I started getting more and more responsibilities, but there was no where to go. People were leaving left and right, and management told me that they don't expect to keep people very long because of the low salary. I became increasingly distressed about management. They were arrogant and ignorant. They had no care for their employees. Most of us were just out of college, and they figured we were expendable. There are plenty of recent grads willing to work for a year or two for bread crumbs. So...I quit.
I sought my current position at a grocery distribution company much closer to home. With my varied experience they were excited to sign me on. They assured me that the new project they were working on was very similar, if not the same technology as I had been working with before. At my Mechanicsburg job, we worked in J2EE (Java) with Struts in Eclipse with an Oracle database and OC4J server. This new job is using ADF and BC in JDeveloper with an Oracle database and OC4J server. Sounds similar doesn't it? I was told that ADF is like Struts, and JDeveloper is just like Eclipse. All the above technologies are Oracle products.
ADF is NOTHING like struts. Maybe they pursue the same goal, web applications, but they are very different technologies. ADF is Oracle's version of Java Server Faces. It is a rather young product intended to phase out the old Oracle Forms. In its defense it appears that it is trying to be more like .NET than Struts. Which is a good goal, .NET is great!
The version of ADF that we are using is 10.1.3.3...it is on its last legs and getting phased out by version 11. Because the technology is young it is very immature in its implementation. Oracle has kindly donated allot of the framework to an open source project called Trinidad. The open source community has done allot to improve it and to fix allot of the existing problems. However, the real ADF and Trinidad are not used together, nor will we change to using Trinidad.
Even the simplest tasks in ADF become intricate problems that need to be hacked around. It is very frustrating to have to pull your hair out just trying to set focus to a particular field on the screen! The Oracle forum for this product is buzzing with interesting questions...resentment bulging behind every question...why is this product so stupid?!?
Lately allot of questions have been answered the very inadequate response of: we have fixed that in version 11, or that feature is not available, but will be implemented in version 11. Because the real version 11 is not out yet, and will not be available until probably the end of the year...and because our deadline for completion is well before that time, we are unable to simply switch and start using the next iteration of this inadequate product. So we hack it.
I will not go into the short comings of the technology...just know that our entire project is hack after hack...things that we have figured out in the most round about ways...are shoved into places they are not meant to be used, and forced to do tasks well beyond the scope of the technology.
ADF is not like Struts. Struts is a well developed, widely used, proven technology. ADF is just getting started, and in my opinion, should not have been chosen for as large a project as we are working on. I think it has the potential for being great...allot of promise...but at this time, and with the version we are using, it is not ready. Perhaps the next version will be mature enough to handle what we are trying to accomplish. But for now we are stuck banging our heads against the wall to achieve even minimal requirements.
Our project could have been completed had we used a better technology such as Struts. It would have been completed even if we were not using a framework at all! However, because of all the roadblocks introduced by this frustratingly immature technology, we are well beyond our deadline, and still not comfortable with how it all works.