Onitica's Journal for Winter 2009 Internship

Reflections on week 2/2/09 - 2/5/09: Today was my last day and thought its only been five weeks, I feel like I've been working at JPMorgan for a long time. This week I actually had a lot of work and got a lot done. I finally got that new feed file and I tested it with my changes. They are compatible. I also passed on all my work to a new hire there. Though I didn't actually finish the code(mainly due to the fact I got the feed file really late and its not due for testing for at least another month), I've set the basis for code that will actually go out into production on day and will definitely be used by people. Thats kind of cool.

I definitely learned a lot working there. I learned a lot about databases and SQL, something I never had exposure to before. I also learned a lot about what kind of tools are used in professional software engineering, such as SVN repositories and maven. But probably most of all, I learned a lot about how working on a team(which is also part of a much larger team) in a professional setting is like. The hardest part about it wasn't the programming or learning what I had to do to get the code done. The hardest part was learning how to properly communicate my work and collaborate with other people. Its not just about getting the code to work, its about making sure the code is maintainable and fills the end users needs. Also, the business terminology being thrown around often went over my head. However, that is something that would gradually be learned with more experience if I worked there again.

2/5/09

  • Spent most of the day further discussing the details of my project with the the coworker who would continue to work on it
  • Had a meeting reviewing my resume and further discussing my work there
  • Cleaned out my desk and said goodbye to everyone

2/4/09

  • Worked on testing the feed file a little bit more
  • Had a meeting explaining the work I'd done so far
  • Sat down and went through the details of my project with the person who would be working on it after I left

2/3/09

  • Got the feed file I needed
  • Tested the file for errors and compatibility
  • Have strange performance from SQL queries when using this, I need an additional filter

2/2/09

  • Reviewed some of the code I wrote with Jared
  • Did some minor SQL tweaks to see if they improved performance

Reflections on week 1/26/09 - 1/29/09: This week I didn't really have much work to do. My project requires a new feed file being built by another team. I can't test it(and I actually don't know the final requirements) until I get that file. Since I'm leaving in two weeks, I couldn't really be assigned another project. Also, I've noticed the work here lately has been pretty intense on the others. I'm guessing its because JPMorgan Chase has had a lot of mergers lately which would require much IT restructuring.

I spent a lot of time researching various topics in programming online this week. One thing I looked at was different programming languages, since I was considering picking up a new one to study. I'm probably going to go with Python because it seems easy to program in and versatile.

1/29/09

  • Reviewed programming references once again
  • Need feed file before I can finish my project

1/28/09

  • Reviewed some more programming references

1/27/09

  • Looked at a couple programming references online

1/26/09

  • Had a meeting with my manager and programmer I'm working under
  • Need to have test feed file given before I can finish the code and move to testing

Reflections on week 1/20/09 - 1/22/09: This week I had more experience with red tape. I was actually locked out of my work area on Wednesday(though I ended up getting in). My access card was never authorized for the room I'm working in, but I could always get in because the lock was broken. However, they fixed it halfway through the week. I requested access and it came through the next day.

Programming wise, I was shown the test server that would run my program when it was done. My program is actually called from a script which supplies it with its command line arguments. I had seen the script before, but now I actually got to use it and tested my program on the test server. It seems to be called from the script just fine. I also had to learn how to use telnet but that wasn't bad since I've done ssh before. It threw me off that some of the commands are different, such as exit and quit.

I've been reading up on SVN repositories and build tools(such as Maven/Ant). I've never used either but I was told they are big here in development and apparently at other places. I installed subclipse, which should allow me access to the SVN repository. I had lots of problems installing subclipse, because all the tutorials on installation use the automatic software update tool in eclipse, which didn't work for me. I finally managed to it zipped and figured out how to manually install it. However, I have to request access to the SVN repository so I don't know if I'll get to see the one here before I leave. Also, I've heard Maven is real important here. I haven't had a chance to work with that either though, but I read up a little bit on it as well.

1/22/09

  • Downloaded and installed subclipse to allow access to SVN repositories
    1. Had to do manual install, allowing eclipse to update through the web wouldn't work
  • Researched some information about SVN repositories
  • Applied for access for the local SVN repository

1/21/09

  • Tracked down problem with access card
  • Reviewed some programming references

1/20/09

  • Logged in to the testing servers and looked at the script that will run the application
  • Did some basic testing against the changes I made

Reflections on week 1/12/09-1/15/09: This week I was given a clearer idea as to what I'll be doing(not sure if I can post the details here though…). Anyways, I basically need to write a method that queries a database and several different tables to get information pertaining to a certain ID. The method should also arrange the fields into an array paralleling how the data is stored in an array when parsed from a feed file. My experience with databases is limited to one short class session about JDBC, but it seems pretty easy. It took me a while to track down how the fields in the database corresponded to the fields in the feed file example I was given. It didn't take me long after that to write some PreparedStatements to get the data needed. However, I ended up going back and changing the code after talking to Jared(the programmer I'm under) and doing some research online. Its much better design wise and performance wise to write stored procedures on the database and call those from the program. It took me a while to figure out how to do that, including that I needed a different set of login to have access to add procedures to the development database and then that I had to set access to allow it to properly be called from the program(or else it silently does nothing).

I learned a lot about SQL this week basically. I didn't find it difficult, but it took time to get through a lot of stuff. There are several simple rules that allow you to write much faster SQL code that I learned which is pretty useful. One is the stored procedures example I went over earlier. The other is to to combine the queries into one using JOINs to limit network traffic. Also to specify the fields chosen instead of using the * operator unless you really want all the fields. There are a few more but I think I've given the general idea…

1/15/09

  • Minor edits to existing code
  • Drafted a document designating all changes done so far

1/14/09

  • Figured out how to upload SQL scripts to the database and call them
  • Wrote SQL stored procs to replace JDBC prepared statements to improve performance

01/13/09

  • Worked on my project some more
  • Edited my SQL statements
  • Realized I need permission on the database

01/12/09

  • Discussed more in depth what I would be doing
  • Created a method that queries database input using JDBC and populates an array the same way data from a feed file would be parsed

Reflections for week of 1/05/09 - 1/08/09: Had a lot to do this week. Probably the biggest challenge was getting everything set up in the environment. Since I'm dealing with bank software, I have to be careful about everything. I also have to watch were I go on the web, and I can't check any of my school or personal e-mail or stuff like that while I'm there. I spent a lot of time on help desk trying to get all my passwords set up(one for e-mail/sametime/computer/etc.). In the end I had to have someone remotely access my computer just to get my e-mail set up. Even after all this I still have to wait a while for admin rights on the computer. I've worked around this by simply downloading everything to my temp folder and running programs that don't require registry edits to run. Its not ideal, but it works. :)

It was also a big change to get used to the business environment. Cubicles don't seem as bad as I've heard people make them out to be, but then again I haven't been there long. Everything is a lot more formal than school, but I guess that is just how it has to be at a bank. I'm still a little fuzzy on the details as to what I'll actually be programming but I think I've got the basic idea down and can start working on it. Also, everyone seems nice and I always get a quick response when I ask questions.

01/08/09

  • Was given a better idea of what I needed to do for my project
  • Read up on SQL(never did databases before)
  • Reviewed SQL scripts that were relevant to my project

01/07/09

  • Downloaded and installed programs I would need(Eclipse, Squirrel SQL, etc.)

01/06/09

  • Was introduced to TECs(the project I would be working on)
  • Set up my computer so I could work

01/05/09

  • Started internship at JPMorgan
  • Went through orientation
  • Was introduced to team members
  • Looked over some code