The American Dream Realized: NYC-based Java Consultant. Author of Play Framework Mods Elastic Search, RabbitMQ. JavaLobby Featured MVB Writer. I blog at http://geeks.aretotally.in and tweet at http://twitter.com/_felipera. Felipe is a DZone MVB and is not an employee of DZone and has posted 13 posts at DZone. View Full User Profile

Thinking In Reverse - Not Taking Orders From Your Boss in Realtime

02.21.2011
| 7687 views |
  • submit to reddit

Today I was talking to my crazy, crazy-smart and great friend Mike Marshall, the creator of Massh about how difficult it is for some people to adapt to new things. We were also talking about Realtime Webapps, wondering how many wasteful pull-style apps we have done over the years (open a connection, make a request, get nothing in return and then do it again, over and over again).

It's funny how you need to totally think in reverse sometimes to understand something. I remember the first time I heard about Kanban, the inventory and scheduling system created by Taiicho Onho, the father of Toyota's Production System (That used to sound a lot more impressive before the latest scandals Toyota had with their cars). Traditionally production systems and scheduling systems use/used a "Push" method and its success requires a good amount of forecasting and all the issues that come with trying to "predict the future", miscalculations are very frequent and there is a cost associated with that.

In simpler terms, it means that traditionally our boss tells us what to do, pushing the task to each team member, sometimes one task at the time, sometimes a whole pile of tasks and he/she tries to predict how much work you and your peers are gonna get done. Kanban solves the forecast craziness by just eliminating it completely, by using a "Pull" method when there's demand; that means you go to your boss (or a Kanban taskboard) and gets a task (a Kanban card) to work on. When you are done, you repeat the same process;

That avoids your boss giving you too many tasks that just sit there in your pile while someone else, right next to you sometimes, has nothing to do. That also avoids you finishing all your tasks and going waste time on your favorite website because your boss is not there to give you more tasks. It makes sense! Somehow this whole process of just eliminating a problem completely reminds me of NoSQL databases (transactions, isolation levels, locking) but we'll leave that for another day.

In traditional webapps the client requests information from the server, a "Pull method". Then Ajax came a long and webpages became more alive, things seem to change without a full refresh but in a lot of cases there's still a lot of requests pulling information from the server involved. As there's a new breakthrough on the Web every once in a while, every five years some would say, we are starting to see become mainstream pushes from the server to clients (that's right - clients) to create realtime webapps that won't require the stupid pull requests I described before (I know Comet and Bayeux have been around for a while, take it easy). It works in reverse just like Kanban. I heard it be called Ajax Push, Reverse Ajax, HTTP Streaming; call it whatever-hell you like, I hate marketing buzz words anyway, they seem to get outdated so fast. When you think of Ajax (Async Javascript and XML), do you think of XML or JSON? JSON!

Riding on this wave there's node.js, which I love, but I decided to create a little example in Java. Poor Java, I love Java, but it gets so much criticism nowadays; you can do a lot of cool stuff with Java! So since today I was bored out of my mind at work, and I can't stand being bored, I decided to spend the day to set something up; I came up with a simple sample application I am calling Jaye (because of Node.js' Kickass Faye which is also based on Comet and Bayeux).

I created the whole thing today, code, hosting, deployment, etc. It is using Cloudbees for hosting, very impressive, super easy to setup, just worked! I created a free account, verified my email, uploaded a war and boom, it was all done! I didn't have to setup Apache, I didn't have to setup Tomcat. You gotta love PaaS, great job guys! It is using Raphael JS for the map, a SVG vector map by the way, we are not talking about gifs, excuse me. That means it works on different zoom levels, it works on mobile phones and it is very very cool for all geeks reading this.

I want to add more features of course, that's just a sample application; if you want to help me, fork Jaye on the always awesome Github and contribute.

Thank you,
Felipe Oliveira (@_felipera)

 

Originally posted at http://geeks.aretotally.in.

Published at DZone with permission of Felipe Oliveira, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Sivaprasadreddy... replied on Mon, 2011/02/21 - 2:13pm

Taking work from Boss, finishing it, asking for next work and getting the benefits accordingly... If we can go into this dreamland that would be really great :-)

I like this pull-based philosophy to apply for web app development.

 

Cheers,

Siva

Felipe Oliveira replied on Tue, 2011/02/22 - 9:43am

Hi Siva, That's not a dream, it's very possible and I can tell you it works very well in the real world. It actually makes the life of the manager a lot easier too. The manager or the project manager just need to make sure the taskboard is always up-to-date and the priorities are organized, so developers just need to get the next task from the board which can be created in any format, whatever works best for the company. That allows the manager to devote less time for day-to-day management and more time on the roadmap for the team, making sure tasks are getting completed in an efficient matter, etc. Jira Greenhopper example: http://www.atlassian.com/software/greenhopper/images/tour/kanban-board-exceeded-1.png http://www.atlassian.com/software/greenhopper/ Hand-Written Example: http://www.infoq.com/resource/articles/agile-kanban-boards/en/resources/Fig1_task-board.jpg Thank you, Felipe

cowwoc replied on Wed, 2011/02/23 - 3:52pm

Felipe,

 

You're in lala land. Business revolves around making money, not keeping you busy. You can't make money unless you can sell and you can't sell without knowing when the product will be ready. It's nice and well that you're happy as a developer, but the company can't operate the way you mentioned.

 

Customer: "Here is $1 million. When will it be ready?"

Salespeople: "I don't know. It'll be ready when it's ready."

Customer: "Uh. I want my money back. Goodbye"

Felipe Oliveira replied on Wed, 2011/02/23 - 5:18pm in response to: cowwoc

The whole thing revolves around the distribution of tasks within the team. Instead of guessing you are gonna finish your let's say 2 tasks in 4 days and your other team member the same, the manager just defines one list of 4 tasks that will be worked on as each tasks gets done. It actually decreases the total amount of time needed. I wish I was in lala land, unfortunately I can't afford it, yet.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.