Sunday, July 27, 2008

My limited expereience - start in programming

To pickup from my last post now I am going to elaborate on what I have done thus far. I took a C++ class in college and am not sure how I passed it but did. I don't recall anything from the class so I don't even consider it. My first attempt at Java (Required class) was 2 1/2 years ago and I had to drop it. I wasn't ready for it and I had a new job so I needed to focus. I took Java during the Spring 2008 term again and this was a totally different story. During the first class nothing made sense to me. The second one - nothing DIDN'T make sense - I know a double negative. It all clicked and amazingly easy. I passed the class easily and even enjoyed it. Since that was complete I decided to look at C# and see what I could do with it since they are both very similar. Note I used a Java Book by Tony Gaddis and it was excellent so I bought his C# book too (Starting out with C#). It took me a weekend to go through a 500 page C# book. I was shocked. It clicked too. I though maybe this software thing was cool and could do it.

Prior to this I was interested in database technologies and spent about a year going through PL/SQL and SQL Server programming books. I increased my SQL skill set tremendously during this time and got a lot of experience setting up and maintaining Oracle and SQL Servers.

I figured my next steps were to read, read, and when finished - read some more. I found a list of some recommended programming books and immediately purchased them.

  • The pragmatic programmer (Andrew Hunt and David Thomas)
  • Don't make me think (Steve Krug)
  • Facts and Fallacies of Software Engineering (Robert Glass)
  • GUI Bloopers 2 (Jeff Johnson)

I have completed GUI Bloopers (great book and would recommend to anyone) and am about half way through the Pragmatic Programmer and Facts and Fallacies. (Hey easy - only so much time in a day). I also decided to expand my library a bit and bought some more books to use

  • Microsoft Visual Studio 2005 unleashed (Sams)
  • Visual C# 2008 (MS Press)
  • ADO.Net 2.0 (MS Press)
  • JavaScript Step by Step (MS Press)
I am currently reading a book from MS Press on Debugging .Net 2 applications which is really informative too.


So that is my current "Educational Reading" list I am working on.


Now on to my first project. Due to confidentiallity reasons I have to be vague about what I mention so the names are changed to protect the innocent :o).

I wanted a way to create meaningful (this is the key) test data for my testing purposed. I also wanted to get some interaction with a form application and a database. I decided to create a tool to use during my qa role. This tool would do the following:

  • Connect to an Access, SQL, or Oracle database
  • Provide a snapshot of the database (Counts) to give an idea of how it was being used
  • Run data validation checks to ensure the database had no corruption
  • Generate Test data to insert in bulk to the database yet have the data be meaningful and unique
I decided on a Windows Forms C# application. Originally I wanted this to be completely independent of our software so I began designing. I implemented the database connection dialog using the XMLReader class and storing the connection substrings in an XML file external to the application. I gave the user the ability to open a connection string from a drop down list or manage the drop down list in a separate form. This form allowed users to Add, Edit, or Delete database connections from a single XML file. The user could also do a "test" connection via the click of a button. I spent a great deal of time learning this feature and how to apply "Global" settings so each one of my forms would use this string. I also set these other forms to inactive if a db connection was not set. After completing this I moved on to the "Statistics" page and realized a challenge I had ahead of me by providing connections to 3 different platforms (DB). I would have to create an implement a Data Access Layer (DAL). Not sure if that's what I wanted to do with my first project.

I turned to our existing product and utilitized an existing DAL and Logging mechanism that was already in production and stable. I threw out (saved actually - can use later) the XML db connection manager I had spent a week on spent a day implementing the common class from our existing apps. This worked nicely and gave me exposure to integrating with existing classes.

I completed the Statistics page and was able to run it successfully against all 3 platforms with less than a second lag time from form load to stats populated. I had a total of 23 different pieces of data to return so I think it went well.

The next step which I worked on this weekend was to logically skip over the data validation and create the GUI for my Data Generation. I didn't rush this one as this would require a lot of thought to implement correctly. I drew this out on paper 3 times before I wrote the GUI. This allowed me to catch 4 logic errors I would have missed if I jumped and started coding. I have the GUI done for half of the data generation and know how I need to proceed. I took the rest of the weekend off and spent it with my family and just did some reading. I figured I would come up with other ideas and have. I will sit down tomorrow and map out my plan one more time then start coding away.


Thus far I am happy with the way things are going but know I have a long, hard road ahead of me and am anxious to learn as much as I can as quick as I can.

All for now....

No comments: