Recently in Agile Category

Last week Sun launched JavaFX, its Java-based platform for Rich Internet Applications. Sun picked up the high level of interest in Adobe's Flash as an application runtime, and perhaps Microsoft's Silverlight as well, and hurriedly developed its own equivalent. JavaFX is a new scripting language that runs on the JVM (Java Virtual Machine) and is optimized for graphical effects and multimedia. It brings to Java animation features like timelines and motion paths, support for a variety of audio and video codecs, and a way of coding a graphical user interface without the supposed complexities of Swing with its Model/View/Controller (MVC) design. JavaFX applets can run within or outside the browser. One innovation is that you can drag an applet out of a web page and onto your desktop. If you close the browser, the applet keeps running, thanks to support for out-of-process plugins in Internet Explorer 7 and Firefox.

So far JavaFX has received a mixed reception, and it is easy to see why. The launch was rushed, and some early visitors to the site had a bad experience, with videos that would not play or samples that did not run. Videos running in JavaFX flash unpleasantly if you resize the browser. The install experience is not as smooth as for Flash or Silverlight in my experience, because you need to install the Java Runtime Environment (JRE) as well as the JavaFX plugin. The download size is larger, although this is disguised by Sun's slimmed-down initial install. The idea is that you get up and running quickly, while the rest of the JRE installs in the background. The SDK does not yet run on Linux or Solaris, although the applets themselves should run because they only require the standard JRE plus a runtime jar (add-on library) and can be executed using Java Web Start. The latest NetBeans has JavaFX support, but another downer is the lack of any dedicated visual design tools. Sun only offers an export add-on for Adobe's Photoshop and Illustrator, or a converter for SVG (Scalable Vector Graphics). There is no 3D API yet, though it is promised.

It is easy to be negative; but some of these problems will disappear as JavaFX matures. A visual design tool is in the works, as is a mobile version that will be shown at the Mobile World conference in February next year. JavaFX will have a place for Java developers who are envious of what Flash and Silverlight can do. While it may not match Flash in terms of broad runtime deployment, I'm guessing that Sun will outpace Microsoft in this respect. JavaFX also has a couple of advantages over Flash, including more sophisticated client-side security and better code performance in some scenarios. The Java VM is mature and well optimized. Adobe's ActionScript virtual machine does have a just-in-time compiler, but seems slower than either Silverlight or Java for code execution. Speed of graphical effects is another matter, and while I have not seen any comparisons yet, I suspect Adobe's long multimedia experience may come into play here.

JavaFX will be welcomed then by Java developers who need more expressive graphics in their applications, and will be an interesting option for those developing games for mobile devices. Try as I might though, I'm finding it hard to believe that this is a huge section of the market, or that Sun will have much success persuading designers to target JavaFX rather than Flash, or that JavaFX will win much market share from Adobe for web-hosted video. Swing works well these days, its MVC architecture has merit, and it is well-suited to the kinds of Enterprise applications which commonly have Java clients. JavaFX is a useful addition to Java, but I doubt that Adobe is losing sleep over its likely impact. That said, I'm keen to hear from developers with plans for JavaFX applications, so don't hesitate to let me know.

You may have heard "there's no room for project managers--or any other kind of manager for that matter--in agile." Well, there is. Sort of. The role for managers and project managers is much closer to a form of servant leadership. It's certainly not command-and-control project management. Here are some ideas that may help you move closer to an agile approach for project management.

Ask the project team to explain what their deliverables are to get to the next milestone. Forget this business of assigning people tasks. The people on your team are grownups. You can treat them like grownups. You don't have to--and you shouldn't--assign them work every day. Not only should you not assign them tasks, you should ask them--as a team--to tell you what they have to do to get to the next milestone. Let them fight it out, ahem, discuss it. The more discussion, the more confidence you have in the schedule.

Use iterative or rolling wave scheduling, so you don't try to create an entire schedule before you know what's going on, or worse, once you realize the original schedule was someone's pipe dream. Once they've reached one milestone, it's time to estimate and plan to get to the next one.

Make people on the team estimate their own work, or, even better, estimate their work as a group
. A group's estimates are bound to be better than an individual's, and much better than a manager's estimate. Group estimation is a form of Wideband Delphi, an estimation approach that's been around forever, and works like a champ. When people create their own estimates, they tend to track them, because their estimate is part of their deliverables.

Consider using timeboxes to help focus people on the work they have to finish now, not the work for later. Timeboxes are a time-honored approach to finishing pieces of work. Use them.

The more you move from command-and-control to guiding/steering the team, the more they will produce. And, the more you practice ideas like these, the more flexible you are as a project manager, which makes your value go way up. And, it's easier to find a job.
So you've decided the agilists aren't completely crazy and maybe it's time to think about it. And, your waterfall project is in the dumps. You'd like to make some progress, and oh, maybe even find another job because you can't see how your company can live through this project disaster.

If you're considering how to integrate Agile into your work, here are four tips you can try to implement now:

Decrease the size of your tasks so you can get to done faster. One of the issues in non-agile lifecycles is that the tasks tend to be too big. It's common to see 1-week, 2, 3, 4, even 6-week tasks. The problem with tasks that large is that people get lost in the task. They lose sight of what done means. They wait until too late to start the task (also known as student syndrome). It's just too hard to do. So, instead of trying to manage big tasks, break every task down into smaller pieces. I like 1 or 2-day tasks max (also known as inch-pebbles).

Work in short timeboxes. Once you have smaller task sizes, make a todo list for just one week at a time. I have to admit, I have my big todo list, so I can track and see all the work I have to do. But my working todo list is just one week long. Because I work in short timeboxes of one week, I have a pretty good idea of what I can get done in a week. And, I know when I'm not making progress in a week, so I have some early warning signs.

This can be quite difficult to do if you have many partially finished tasks, or if your boss wants you to multitask, or if you are depending on other people for input into your work, or if you've never received feedback about your estimates. Don't worry if your estimates are wrong. Estimates are just guesses, so guess for now, and track your work. I don't track actual hours per task, I just look at my one-week list and see how much I have on it and where I am during the week, and where I am at the end of the week. I often have a task or two I did not finish. I don't beat myself about it and neither should you. Take that information and re-estimate what you can do for the next week.

Finish partially completed work. One of the biggest changes I found when I moved to agile is I had much less partially completed work. I still have several articles (and books!) in progress, but they are all at reasonable stopping points. When you have partially completed work that's not at a reasonable stopping point, you feel a pull to go back to it until you get it to a reasonable stopping point. That pull causes you to multitask, which prevents you from finishing more work. So the more work you can get to a reasonable stopping point, the better. That frees your mind to go do the next piece of work. Which means you can do small pieces of work and get to done faster.

One of the ways I do this is to use the SCM system to help me. I integrate continuously, no matter what I'm writing (code, tests, documentation, project plans). That way the latest version is checked in, and I know the state that it's in and I don't have to think about it.

Know what done means. Any given task may have a different definition of done, but a project's definition of done is "fit to release." Since the project has to be ready to release, I like my pieces to be ready to release also. Sometimes, as one individual contributor, that's not possible until other people have done their parts. But make your pieces as done as you can make them.

For me, this means working by feature more than working by architecture. If your project manager is still organizing the work by architecture, offer to work with others across the architecture so you finish a feature, even if you don't finish the architectural layer. Yes, this may seem counter-intuitive, but it's faster and leads to finished product earlier.

Why should you do this? Because if you're looking for a job, even if you don't have agile experience, these practices will help you add value to your organization now. And you can talk about them in interviews.

Current Vacancies

Powered by cwjobs.co.uk
Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4