Archive for May, 2005

Ship It! Sneak Peek

Wednesday, May 25th, 2005

If your team always delivers successful projects on time and with all planned and wished for features, then there’s probably no need to read this book. But since (insert huge number of failed projects here) projects fail or don’t get finished on schedule, chances are that you’re in one of those teams where some things just don’t feel right. You feel the need that something has to be changed or improve. This is where “Ship It!” comes to the rescue.

Though not being published until the end of the month, the Pragmatics already offer some sample excerpts for your reading pleasure. Just like “The Pragmatic Programmer” this book won’t tell you what to do, but will tell you what worked out for the authors. And reading through the sample excerpts I consider it as kind of the sequel to “The Pragmatic Programmer”.

The first one, “Develop in a Sandbox”, seems obvious to a lot of developers, but reading the Pragmatic Programmers mailing list for a while now, it seems that a lot of teams don’t (hopefully yet) use version control for their source. I had a similar experience in a company, where developers worked on a shared network volume. And if you were lucky and just saved your source, closed the editor of your choice and go out for a cuppa coffee, then in the meantime one of your fellow developers saved his changes. Later someone asks you where the feature is you implemented and things are starting to get messy. Well, a lot of you probably went through a developing hell like this, too.

The next excerpt talks about not experimenting with core technologies, using the build process as an example. Not too long ago I worked on a project that used make to build the Java source, run XDoclet (via Ant) and all that fancy stuff, and only two people really knew how that build worked and what to do to improve it. While I know how to deal with make, a lot of people in the project didn’t, because Java programmers tend to use Ant for their building pleasure. Well, some time later the build ran out of the box, without any network drives and such needed, and within a much shorter amount of time.

The List! Enough said ;)
Well, not exactly. The List is about tracking, estimating and prioritising the features of your project. So far I’ve seen both ways of The List, having one and not having one. Wanna guess which one is better?

While only having read through some sample excerpts, this book seems like a good read for every developer, unless you’ll skim through the table of contents and find that your team already does everything the authors recommend. While I see “The Pragmatic Programmer” as a collection of practices to develop the skills of you as a developer and your team as well, “Ship It!” takes it to the next level, the project(s) you work on and how to succeed with them. The authors encourage you to try the practices for yourself and adopt them, if you find them useful for your project. I’m looking forward to getting my hands on a copy of this book, since I’m always keen to improve even those practices I/we’ve already adopted.

Growl 0.7 is out

Tuesday, May 24th, 2005

Being a big fan of “Pragmatic Project Automation”, I like using Growl to notify me of build results and stuff like that just like Mike Clark and Michael McCracken do.

If you work on a Mac, then you should definitely check it out.

Working productively with Xcode

Sunday, May 22nd, 2005

When developing for the Mac with Objective-C and Cocoa, there doesn’t seem to be an easy way around using Xcode, at least for the beginner. With Tiger it has been bumped up to version 2.0 and comes along with some nice features like class modelling, distributed builds and better Java support. But using Eclipse for my every day work, I got to thinking about what makes an IDE a tool to help the developer be as productive as possible.

Comparing Xcode to a full blown Java IDE is not easy and I don’t want to get into every little detail here. So what’s there (or not)?

Support for SCM

Starting off with CVS and Perforce, Apple added Subversion to the list with Xcode 1.5. I made a start to switch my personal development from CVS to Subversion yesterday, and it’s quite nice how Xcode handles it. One downside is that you have to check out by hand first, but once that’s done, you can just enable SCM for your project and let Xcode do the talking.

Unit-Testing

Being a fan of Test-Driven Development, I like having those xUnit tools at hand. Xcode doesn’t come with anything out of the box, but you can use stuff like OCUnit, UnitKit and OCMock for Mock Objects. I chose UnitKit for a start. You don’t have a nice view like Eclipse has. You have to run a specific target to run the tests. But via target dependencies, you can have your main target depend on your test target and have those tests run every time you build your code. That works for both UnitKit and OCUnit, afaik.

Refactoring

Now there’s something that’s missing. Having those mighty refactoring tools available in Eclipse or IntelliJ or (insert your favorite IDE with support for refactoring here) really eases the work. Well, Xcode definitely misses out on productivity improvements here. No refactoring, no quick fix. Would be nice to be able to start hacking on a plug-in for that kind of stuff, but sadly the frameworks used by Xcode plug-ins are private (and as such coming along without header files or documentation).

Documentation

The Developer Tools come along with an excessive amount of documentation. What I miss here, is some hovering magic or a single view like Eclipse has. It’s exhausting always having to switch to that giant and not so easy to use documentation viewer (or class browser which is another option).

Editing Source

Xcode has a very good code completion called Code Sense (it wouldn’t be good, if it doesn’t have a unique name, does it?). It’s gotten quite responsive in Xcode 2.0 and is nice to work with. Again, I miss having the documentation for a method at hand when (hopefully) selecting the right method (or selector, to speak in Objective-C).

Other stuff is just neat, like splitting a source file editor for a single file vertically, switching between header and source file, indentation and so on, but that’s not really innovative and can be found elsewhere, too.

Miscellany

Xcode 2.0 crashes a lot, and it does it while doing very simple stuff. Sure, I can ignore the problems, if possible, but it’s not very productive having to close Xcode every now and then, because those errors just keep on coming.

And what’s with the editor? Click a file once and it will open in the embedded editor, click it twice and it will open in a separate editor window. You get used to being careful with your clicking, but I’d prefer having an option for that.

Smart groups rock! Although there not new (Working Sets in Eclipse come to mind), they’re a nice feature anyway.

The integrated source file outline is neat. When working with Eclipse, I usually don’t use the Outline View, but the Quick Outline while editing, and I’m glad that Xcode has something similar.

finally{}

Xcode is good project management and code editing tool, and I like to work with it anyway, but it’s far from being an IDE that makes a developer really productive. Interface Builder, on the other hand, is an awesome tool for creating GUIs.

But nothing (at least for now) will convince me to change my Java development to Xcode, not even the Ant-integration (which I’m keen to give a shot anyway). I’ll dig deeper into Xcode anyway. Maybe there are some killer features somewhere under the hood. And for development with Objective-C and Cocoa, it will still be my tool of choice for now. Unless someone can point me to a Mac-IDE that’s as productive as Eclipse of IntelliJ.

Apple could improve a lot of stuff in Xcode, and I hope they will some day. Until then I’ll have to make those refactorings by hand.

I’m still keen to try out stuff like the class modelling to implement something with Core Data. Haven’t worked with the debugger, either. So there’s more coming ;)