Hi,
I wish to correct an error on my part, I feel I should have introduced myself as soon as I logged on. I was advised by my College Lecturer that I should look for a junior position on a project to start my career. I was offered two positions after two job interviews 1. product Support role for a database company or 2. Junior Software Engineer. I decided to go for the junior software position as that would help me for self development. As Junior position one usually starts out doing testing. I was lucky enough to work for a bespoke hardware and bespoke software company in the aircraft industry. I would highly recommend a career start in the aerospace and defence. There, you will find out what best practices are, for example I was sent on a week course to learned ADA 83. No libraries are inherited, every line of code is written to meet specification. Software is tested in a number of different ways. The first project, aircraft fuel management system used state of the art hardware. I quickly moved from testing to another project to find the cause of software crash. That software needed to be reset via a hardware reset and the GUI was a red light in the pilot cockpit. This move happened because I pointed out my observation to the Tech Lead, from my understanding of a compiler and emulator that “Phil the contractor” was testing the emulator and he wants me to do the same. After that I joined a single product company which used 4GL, CA Open road and Ingress Database with approx. 250 tables. This company was also built on best practices with principals same as my first job. The software was then migrated from CA OpenRoad & Ingress to Oracle forms and Oracle database. To complete my self development I joined a software house where I was exposed to a number of projects at different stages. There I identified that a 2 tier thin client architecture was an ill conceived design. My view was confirmed when I found tomcat an application server which was part of a 3 tier architecture. With this discovery I felt I conquered Grady Booche's remark that “Industrial Strength software was beyond the intellect of a developer.” Ironically 2 tier thin client product used for developing applications, like struts is used for building applications, was from same company which offered me the support role. Would I have achieved my objective if I had taken that support role and not the junior software position ? At this stage, I do not believe in learning programming language first but start with the architecture first. That is how I arrived at struts. There were a number of other requirements which were met by struts also. I hope this helps anyone looking to master Industrial Strength Software. Keep in mind, test from specification not from code and testing MUST not to be done by the person who wrote the code as suggested in a book I read recently. Regards Zahid