I am back to working with ADF. I am doing this in personal time out of a wish to keep in touch. I haven’t worked on JDeveloper after the 11g Tech Preview. The production version is quite fast (comparatively) but there are a lot of random error notifications popping up now and then – just a minor irritant considering the awesomeness of the LAF ADF RC provides. I am yet to fully explore the Oracle UI Shell functional UI pattern (or Oracle Dynamic Tabs) but from what I have read and tried, it looks like an excellent way to maintain a uniform LAF across the application.
My organization is moving onto experiment with Lean development. Lean comes from the manufacturing sector but fits surprisingly well into software development. After all, Lean is not specific process but a set of principles. Some of the main principles of Lean include removing waste, delaying decisions, delivering faster, building in integrity – all of them aiming to get products/services out to the customer speedily. What’s more! Agile practices like Scrum help achieve some of these principles. For e.g. the backlog in Scrum enables delaying decisions like what will go into the final version of the product, etc. Read this excellent article that maps Scrum practices to the Lean principles and how a team can use Scrum to go lean!
Sustaining and Kanban
While Scrum works very well for teams involved in a typical development cycle, it is not flexible enough to adapt to a maintenance oriented team. We have a dedicated team that works on product bugs reported by customers. They reproduce, fix and release fixes regularly. Any maintenance/support team has to work within the complexities of changing issue severity, customer impact and unpredictable resolution times. As a result, the concept of product (or in this case issue) backlog and sprints cannot be used in a maintenance/support team.
This is where Kanban comes into the picture. Kanban can be applied to a waterfall model as seen in sustaining teams. Read David Anderson’s paper – A Kanban System for Sustaining Engineering.
In our sustaining team, the main focus is on three kanban concepts – Limiting WIP, Self Directing and Pull Production. How do they help?
Limiting WIP
At any given time, the sustaining team maintains about 3 or 4 versions of a product and about 10 different components within a version. Pre-Kanban, every resource on the team worked on a large number of issues simultaneously. The context switching was a huge overhead as every switch potentially required starting up a particular version of the product, installing reproducible cases and sometimes switching between product components. Now, with the limited WIP, the team is limited as a whole to have X issues in progress and as a result every individual is limited to a much lesser load. This not only saves context switch times but also allows the individual to focus on one (or two) issue at a time and push them out of the queue.
Self Directing
The Kanban master merely prioritizes the issues in the To Do column of the Kanban board. Except for production-impact issues, all other issues are self assigned by the individuals. This ensures that the individual picks up tasks in accordance to available capacity and thus don’t get overloaded. In addition, it allows individuals the opportunity to pick up issues in areas that they would like to work on – translating into motivation and pride.
Pull Production
The issues are never pushed from the upstream states. They are always pulled by the downstream states. This means that if there is a bottleneck (a downstream state being full), the team will know and they can work together on the bottleneck and get it out to the next state.
We started out with a physical kanban board using coloured Post-It Notes. The colour of the note signified the severity/priority of issues. The board was the talk of the office and drew a lot of interest from other teams. Our throughput was sometimes too high and meant regularly going up to the board to shift the notes. And the post-its kept falling off the board :-)
We have since switched to an online version hosted by www.kanbantool.com. It’s accessible and available 24/7 whether we are in office or working from home. It’s not as much fun as the physical board but it works very well.
We have been using Kanban for about 2 months now. The board has changed quite a bit from its original state – one of the good things about kanban is that it is meant to be continuously improving/changing. We are in a fairly static state now but we do expect to optimise the board further.
In the 2 months, we have managed to cut down our issue backlog by about 15% inspite of seeing 2 weeks which showed a steep rise in new bug reports. Kanban sure has worked wonders for our team and we are hoping to keep it that way.
Update (11th July): The team went on to break a record of sorts. After compensating for the inflow, our backlog is now down by almost 50% now. Kanban does work.
The much awaited 8.0 release of the webMethods platform was announced at the Gartner summit. Read more here.
We are back online after a malware injection, wordpress upgrade and a domain renewal. The wordpress upgrade brought me to 2.7.1 what-seems-like-minutes-before 2.8 came out. Ah! Such is life.
Software A.G.’s collaborative portal Brainstorm is live. Customers and partners can enter product feature requests, collaborate on their priority, add comments and communicate with Software AG product teams (including webMethods components). All you have to do is go to Brainstorm and self-register. A whole lot of ideas are already there.
Awesome trick using reflection and java.lang.String’s literal store.
http://www.theserverside.com/news/thread.tss?thread_id=53818
Tried out iText sometime back for creating PDFs in a J2EE app (ADF 10.1.3 to be specific). It’s a fabulous tool. From my initial read up, pdf layouts will be a bit pain to create as the component tree has to be programatically created. I didn’t need to do layouts so I may have missed out easier ways of doing that. For my use-case, I had pre-built PDFs with AcroForms. With iText, it’s quite easy to fill in the fields in the AcroForm and save a copy. All in a few lines of code. If you have to create/edit PDFs in your Java application, iText is the best thing out there.
Everyone knows the ubiquitous instanceof operator especially when we drill into our minds that instanceof is not a method, it is an operator. :-) You would’ve found it useful in many situations especially when you need to do a bit of refactoring or reflection. This is one operator any programmer ought to be careful about. Unfortunately, you find it strewn around the place all the time. When used in the wrong place it easily becomes a bug.
Did you know that the Java VM ships with two different binaries? Yes, there’s a client VM and a server VM. They differ in various compilation policies and (in particular) heap defaults. While the client VM can be used for applications that require quick start-up and low memory footprint, the sever VM is – well – for “server” like applications. The server VM is started up by default on “server-class” machines. See Ergonomics in the 5.0 Java[tm] Virtual Machine for definitions.
Sadly, my dev box – a 32-bit intel running MS Windows – does not qualify as “server-class”. I would have to start up java with the “-server” switch all the time. This can be impractical when I am using someone else’s ant scripts, etc. So what can I do?? Well, there is another unsupported (and mortal) way. Edit the file “jvm.cfg” found in $JAVA_HOME\jre\lib\i386. Move the server entry to the top of the list and you are set to go.
I can’t believe that I did not notice this before. It was only after I installed Google Chrome and saw the chrome icon and the Windows media player icon next to each other that it struck me. Have you noticed that Google’s icons and M$ icons have the same colour palette RGBY. Hmmm, that’s interesting. I am sure there is no conspiracy there but now it’s easy to get confused between the round Chrome icon and the Windows Media Player icon.

Recent Comments