Week 1, Monday

March 23, 2009 at 7:07 pm (Java, Week 1) (, , , , , , )

Alright, first real day of work in the books. I started off with the normal things, getting email and other account access stuff set up, and then Micah had me install IntelliJ and JUnit. Java, I knew it! Though Micah has assured me that won’t be the only language I work in: I’m betting on C++ as well, maybe some Objective-C too?

At any rate, my first assignment is to re-implement Tic-Tac-Toe in Java. And boy oh boy, this is a lot slower going than when I wrote it in Ruby.

First of all, I know Java only a little better than I know C. Which is not well. More on that later.

Secondly, I’ve read and learned so many things about object-oriented design principles recently that I’ve spent a lot more time trying to avoid a crazy dependency structure like my Ruby version had. That’s a good thing; once I learn to do these things right it’s going to be possible for me to write clean, maintainable code. I spent a bit of time mapping out what I thought would be a decent design, and then Micah helped me with some UML concepts at the whiteboard. I got a little bit better idea of how class diagrams work (public vs. private variables, dependencies vs. inheritance, abstract classes), and I started to understand dynamic diagrams a little better as well. I’d seen these in the PPP book (Agile Development: Principles, Practices, and Patterns) but I really just used context clues to get an idea of what I was looking at there. I checked out a book on UML from the local library; hopefully I can catch up a bit with that as well.

I’m learning a lot of Java. Most of my previous knowledge was from a kind of hand-holding online course where you mainly just had to fill in the blanks to complete the programming exercises. Sure, I read a lot of articles and some API docs, but it didn’t really stick, I guess. So I’m going to have a lot of “DOH!” moments along the way. A big one today was that to initialize an array in one line, you have to use curly braces:

char[] letters = { 'A', 'B', 'C' };

Yes, I was using square brackets and couldn’t for the life of me figure that one out (though to my credit, I finally found that problem without having to ask). Without going into all of my mistakes, we’ll just say that abstract classes and methods, and parsing user input (and especially testing that!) were also problematic for me. “Doh!” say I; “Duh!” say the Java people. Well, it’s new to me; I’ll learn.

I also got to sit in on an IPM (Iteration Planning Meeting, NOT Integrated Pest Management, as Google would’ve had me believe) for Fresnel, an open-source Limelight application, and learned a bit about the estimating process. Just like I’m reading about in Extreme Programming Explained, these guys estimate units of work (stories) with story points, which don’t really stand for a specific time period. The team has measured its velocity (number of story points from the last iteration), and it assumes it can get the same number of story points done in the next iteration. If the points completed go up or down from the previous week, the velocity has changed, so next time the team takes on fewer or more story points to match the previous iteration. The team comes to a consensus (unanimous in the case of the small team I was observing), based on discussion, about how many points each story is worth. I like the idea of measuring progress and adapting on an iteration (2-week) basis – it seems like over time you’d get really good at estimating, which is definitely a skill I need to work on.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: