Archive for July, 2005

Revisiting Xcode

Tuesday, July 26th, 2005

A while ago I gave all new Xcode 2.0 a shot. After some more getting-funky-with-it it’s time to remedy some of what I concluded back then.

First thing is Java development with Xcode. My iBook comes along with 640 MB of RAM. Now I’m a big fan of Eclipse, but it comes with a price. Especially if you have a build that runs different XDoclet templates during a single run. Running Ant took up to 200 MB of RAM with Eclipse demands an additional 200 MB. Well, you do the math. With Tiger, Mac OS X demanded a tiny wee bit more memory, so my iBook ended up swapping the crap out of my disk. With the hard disk not being the fastest, I could get a coffee in the meantime. So I got back to Xcode. As I wrote earlier, it’s not a full blown IDE like Eclipse is. But then, I asked myself, do I need a full blown IDE or the incremental compiler in particular for every piece of code I write? Probably not. I like Eclipse, and I often get back to it, when I build new packages or classes from scratch (since this is not Xcode’s biggest strength).

It took me some time to figure out the best way to set up my project, and I didn’t find it yet, but it was a start. The biggest problem for me was to import the existing project structure either as recursive groups or as a simple folder structure. The former has the advantage that you can remove or add stuff to your liking and that you can open classes directly with a shortcut. Something I haven’t been able to do with an imported folder structure. If someone has any pointers on how to quick-open a source file, I’d appreciate it. The downside with the groups is that new folders from the CVS don’t show up as new groups. If a new folders shows up in CVS, I have to add it by hand which is not how it’s supposed to be. Same goes for new folders created with Eclipse or TextMate. Both have great ways to quick-open files, by the way. In Eclipse it’s Command-Shift-T for classes and Command-Shift-R for any resource. And in TextMate, Command-T is the way to go. It feels a little bit slow sometimes, but it gets the job done.

Apart from the group/folder issues I started to enjoy working with Xcode (yes even in a Java project). The code-sense completion works fairly well. You can’t compare it to Eclipse’s, but it’s good enough for daily work. Navigating isn’t a big problem either. If you point the cursor over a method, you can use Find -> Jump to Definition as a way to jump from method to method. It’s not configured with a shortcut by default, so I used Option-Shift-D. It has some downsides, though, but I can live with them. If you want to jump to the definition of a method that occurs several times in different classes, then you’ll have to select the appropriate one from the drop-down box Xcode will present you. It doesn’t take the context into account, e.g. the type of the object that the message is called on. But other than that, it does a good job.

Another thing I started to dig about Xcode is the SCM integration. Though Eclipse’s CVS integration is not far from being a masterpiece hiding some flaws of CVS, Xcode’s support for SCM stacks up fairly well against it. It’s integrated very well and supports everything you’ll need. Awesome stuff, I gotta say.

There are still some things I miss. Xcode 2.1 started to support code sense only on classes that have an import declared in the current source file. That makes sense in a way, since Eclipse does it the same way. But there is no possibility (to my knowledge at least) to have the imports be organised with a shortcut or have new classes added while you’re code-sensing.

I haven’t tested the Ant integration that much, but it seems to be straight forward. You gotta be careful, though, if your default target (i.e. calling Ant with no arguments) doesn’t actually build your project. Xcode simply calls Ant without any arguments and delegates the building load. Calling custom targets seems to be a problem in the way that you probably can’t clean your active target anymore, since Xcode tells Ant to run the target clean on your build file. These issues are not that disturbing for me, since our projects consists of modules which can be built by themselves, and with the default target. But it would be nice, if the Ant integration could be kicked up some notches in the future.

Although there are still some glitches with Xcode and Java, it’s nice to have the option to work with a not-so-hungry-for-resources IDE when it’s necessary.

From Developer to Project Manager

Monday, July 25th, 2005

Recently I’ve decided to give my life as a professional a new meaning, when I proposed to my boss to become the project lead for a part of our project. It was quite weird for me. I wouldn’t have thought to take such a big steps during the weeks before the decision. The project didn’t go very well until then and I talked with my boss about the team motivation and mistakes from the past. Some things really went wrong. I won’t get into detail here about that, it just didn’t feel right anymore. After a while I started thinking about what I could do about it. We were talking about responsibilities, about the need for someone to lead the project and stuff like that. Backed up by a fellow project manager I offered my boss to take on the project lead. He didn’t hesitate for long and it was settled.

Now this is a weird thing for me. Some weeks earlier I would sit in front of your laptop, hack away for the day and get lost in my tasks as a developer. I didn’t fancy meetings (though that didn’t change, but it depends on the meeting’s purpose now ;), and I would work on my part of the project. Team communication wasn’t that good and we had a productive low. I for my part hate being unproductive and so I needed something to get me into a higher gear again. And it helped. Since I took on the project lead, I found a new motivation to make the project a success. It’s still a tough one, but that’s the challenge I needed. It’s a little odd, but it’s an experience and it feels good to work productively and with a goal in front of you again.

The day my boss agreed to let me lead the project I thought about where I could get some project management wisdom. I’ve seen projects being lead in good and bad ways, and I wanted to try my best to make it right. So I turned to “The Art of Project Management” by Scott Berkun. A fellow project manager in my team recommended it to me and Merlin Mann (of 43 Folders fame) had good stuff to say about it as well. So I picked up a copy and started diving in.

This really is an incredible book. Scott has worked about ten years at Microsoft managing different projects, and he picked up a lot of experience. From that basis he writes, in a straight forward manner, what turned out to help in his projects and what did not. A lot of what he wrote got me thinking about how I take part in my projects, how I communicate with and treat people and the project. I also recognised some things that didn’t go well in my company and that wouldn’t go well according to Scott’s experience. Following his advice I started to spent a lot more time talking to the people in my team. In a way it’s sad that I just now started to realise, how important that is. And it helped. If you ask people about their/your/other’s problems, their progress, the project and so on, you get a lot more perspective on the project itself. It took me some time to realise this, but I guess I could fix some problems from the past that way.

In his book, Scott takes you through all issues that you’ll come across as a project leader, be it the design process with visions, specifications, or how to deal with your team and what to, when things go wrong. I can recommend this book to everyone involved in software projects. Developers will pick up good habits from this book as well, or propose according changes to their team, if things don’t work in an optimal way. The book is very well written. It doesn’t read like a dry book telling you the theories of team psychology or development processes. When you read it, you’ll feel like someone talking to Scott about project management based on experience. He’ll honestly tell you about his own mistakes and how and what he learned from them. Pick it up or you’ll regret it! No, seriously, I’m sure that everyone taking part in software projects can learn a lot from Scott’s experience. Or get a peak first and have a read through the sample chapter. I gained a lot of knowledge and perspective from this book, and I’m going to get back to it whenever I feel it’s necessary.

I started thinking about what’s important: communication, commitment, trust and delegation. And guess what? They all belong together. You can’t have one of them without the other. Without communicating with your team mates and committing to certain tasks as a project manager, no-one’s gonna trust you. And it’s probably going the other way around as well. Without you not trusting your team, you won’t delegate stuff. You load yourself with more and more tasks and start to procrastinate stuff and bring your project near the edge of the cliff. Delegation is really hard, and I’m gonna have to learn to do it, but it’s worth it. I thought about how my boss delegated the huge task of managing the project to me, and how I found a new challenge with it and started to grow into my responsibility. Then it really hit me (yeah, quite late, but I’m glad it did anyway). The way we started to communicate built a more trusting relationship between us which allowed him to trust me with leading the project management. Yes, it was one of these eureka-moments. It took me a while to realise it, and it probably would have taken longer without reading about Scott’s experiences, but it was all worth it I guess.

So what now? I feel quite well about being the project lead. Besides being a challenge for me, I see it as an invaluable experience, in whatever way it’s going work out. And then there’s a deadline to meet. So back to work!

Rails 0.13 is out!

Thursday, July 7th, 2005

Man, these Rails guys pump out those features. 225+ new ones in the new release, the last milestone before we hit version 1.0. Can’t wait for the Rails book to come out and get a nice hands on with it.

Elsewhere, Europe’s parliament rejected software patents for now. Good one! At least you can start believing again that there’s a little democracy left.