Lately I have been fan of the blog Proof is in the testing
by Govind and he has actually inspired me now to start blogging again ! Thanks Govind.
I have been in the software industry for almost for 10 years now and when I look back those memories still feel fresh. In Jan 2000, I joined DB2 team at IBM Bangalore to do my internship project for my last semester MCA course. The project I was given was to create a web application which will manage employee payroll and project details. I was given a computer of an employee who had been on on site assignment.He is a good friend of mine now :). I did not even know how to plug and assemble CPU, monitor and network cables to get them all into 1 piece ! We had lab coordinator at college who would all that for us. I was so thrilled when did that all myself for the first time.
I did not have a clue as to what needs to be done! All I was aware of was DBMS concepts, SQL and also software engineering concepts to some extent. So I had a initial discussion with my lead/mentor then (3rd line manager now :)) for requirements and details.
The requirement was simple - End product should be a web interface which will allow the user with admin privilege to add/edit/delete details regarding employee like name, salary, project , department that he is working for, whom is he reporting to etc. The employee him shelf should be able to only view his details and the manager should be able to edit few details of existing employees and so on. I had to use DB2 UDB
.(I used version 6 and the latest now is 9!).
It all started with reading various books (real heavy books :P) on fundamnetals of DB2 UDB, DB2 Command Line Processor,DB2 Call Level Interface
. So first goal was to create a clp file which would create a database
, create a table
and be able to insert rows.
Once I was able to do that and showed, I was given a next set of tasks to do the same thing dynalically. I did that using CLI. I spent almost a month just reading and practicing to get comfortable with DB2 as product and its concepts.
I then had to get to the real database design. By database design then meant only designing the table structures, normalizing them. I did not have to bother about how many table spaces
I should be creating and what should be type or size of each of those table spaces etc. I wasn't even sure as to how CLI/CLP would be turned into web ! Again I had to hunt down then answers and then came to rescue one more IBMer who gave an idea about using Java Servlets
for getting the web application up.
So back to square 2 (not 1.. I have already crossed square 1 u see). I had learnt C a bit in my college (We needed for our college projects and campus interviews :P) but no idea on Java Servlets.. So had to get back to good old friend.. Books ! Thats the first time I think I used search in Google to know on the technology. But sincerely, I loved the book Java Servlet programing
. I bought it and still have it with me !. I used Java Web Server
(I think it was a free down load then not sure now) for deploying my servlets and to see how my web app looks!
So I was ready with all my code, database design, DB2 database created, table structure ready etc. How ever, one fine day I understood (in real sense) what Object Oriented Programing Concetps
mean. And you will not believe, I rewrote whole of my project code to cater to the new lesson that I had learnt... I am glad I did that without some one's push and after really understanding what the concepts meant. It did not take much time to convert the existing code to suit the new requirement. All I had to do was to exactly imagine what a object should be consist of.
For ex : If I considered Department as a table which had department id, depart name column then I had a Java class which had a below structure
1. It had department id and name as its members or fields. (I dont remember at that time I had thought of declaring them private or public)
2. It had set and get methods to operate upon these fields
3. From operation perspective, I should be able to Add/Delete/Modify department data , hence the class had methods to do these. These methods would have JDBC calls made to DB2 database underneeth. Agian to note, I had completely read through this book
4. My UI should cater to Add/Edit the details - I had written a method PrintUI , which had code construct the java string using html tags and would return the string.
5. My UI should be able to delete the details. - Same printUI method was used with different parameter I guess !
So actually I am done with my Department object! All I had to do was apply the same technique for other classes/tables too.I might have written some extra methods specific to some complex tables.
During this project work, I spent more than 2-3 months to read and learn the technology, write code and test it probably in a month or 2 last 15 days to actually document the project report.
Hope this entry was useful to you in some way. I Plan to visit all my years in IBM one by one and bring back those memories and hope you would enjoy these entries !