Archive for the 'Programming' Category
Sunday, June 21st, 2009
The BIG fuss about Agile Developments
I recently attended a session by Mr Joichi Ito on the topic of “Consumer Web in Focus” , and those who are lucky enough to get selected to pitch should know exactly why I haven’t stop praising the man since with the one-on-one session on FAME. I tweeted immediately on the most important takeaways on that day; #1 Develop a Scientific Approach (A/B) for Testing #2 Establish that WOW factor in the first 5 mins #3 Ensure Survivability in our game for all players.
In the talk itself, Joi spoke about the different stacks in the Internet, different tiers of VCs and how good products do not necessitate good a strong traction. The best lesson of the day imo to most aspiring entrepreneurs is on how startups should really “just do it” because it may cost more to find out if a product is really feasible than to work on the actual application suite itself. And to do that, your development methodology has to be agile and iterative.
Meet Extreme Programming (XP), one of the Agile methods Joi spoke about. The most “notorious” rule in XP is the arguably the concept of Pair programming. Most of my peers swear by the inefficiency, but they also tend to overlook some core benefits. Having multiple pair of eyes on the same screen in theory can produce better codes and applications in the long run. The programmer becomes disciplined while getting the occasional slap-on-the-wrist from his comrade. The comrade provides a second opinion on the functionalities, style and refactoring method that the programmer coded. The end result is both of them learns from each other and one can be sure pretty sure that the codes do what the client requires because 2 heads think better than 1. Still, time is an expensive commodity in the IT industry, and people gets edgey over such perceived redundancy. I would suggest that pair programming can evolve into 2 developers sitting alongside each other with their own macs, constantly checking on each other’s progress and using Subversion to sync their codes. (I will talk about SVN in another post) - lots of communications take place verbally to ensure the requirements are “what they are”.
The most important rule of Agile Development is probably the iterative nature where you can expect many many releases. Again, having multiple releases (not of the whole damn suite, but instead of individual components) again reaffirms the product development guy’s vision, as well as allowing the marketing person to track with his focus group. Any cost in changes is limited to between T=0 and T=1, where 0 marks the start of development and 1 marks the first release. At the end of the day, it’s about coding that “thing” quickly (e.g. with ROR) and roll it out to the market quickly in anticipation of Change Management. In Joi’s view, this makes much more sense than trying to figure out if your product works. Doing it on the cheap is feasible compared to 10,20 years ago (think waterfall approach, gasp*)
I would like to take the liberty to suggest an extension; Invest in refactoring your codes and deploying elegant framework (MVC is a nice pattern). While Joi is right about developing a product quickly to feel the market pulse, that does not mean you prioritize speed over scalability and elegance. I propose the 40/30/20/10 rule; Spend 40% of your development efforts coding, 30% testing, 20% refactoring, and 10% documenting and making sure others understand whats going on. The Web is an amazing paradise to launch products, only if one can scale and adjust at god speed.
Friday, November 16th, 2007
Singapore PHP User Group Nov 07 Meeting Review
Out of curiosity and support for a fellow developer, I accepted Michael’s invitation and attended his baby event yesterday. I reached around 7.30pm and was pleasantly surprised to see Hazel coming along with Euquin too. And it was over subscribed too! (darn.. looks like my support wasnt so helpful). Michael started the party at 8pm with his PHP crash course, but I missed almost the whole entire bit on the 2nd presentation to chat with a few old friends outside the room. The 3rd, from Uzyn of Ping.sg, was refreshing; Having been exposed to so many SMU style of presentation, geekish presentation is a fresh whiff of air. If you are interested, you could get more materials from http://blog.simplyjean.com/2007/11/15/get-your-php-user-group-presentation-slides-here/; I must say, I am immensely impressed with the live blogger, Jean, too.
Now for the review; Certainly, A+ for Michael’s almost 1 man show for this. Generally, this get-together was not bad. Not lousy, Not overly fantastic, but pretty not bad. Firstly, I’m not too sure how interesting it is to make experienced php coders to sit through the opening 1hr. Perhaps this cant be helped, since this event aimed to get as many people of different background together. I have to admit it was great for me, a non-php coder, coming from a purist Java background, with MVC framework like Struts my weapon of choice. PHP certainly looks fun to me! (I am trying to pick up ROR though right now too).
Next, moving on.. While going through Jean’s live blog on Raymond’s bit, I found several debatable points in the floor’s discussion and presentation. For happiness, peace, harmony and prosperity, I shall not elaborate too much on them. If you have read my very first post in this blog, I adopted a very neutral view towards open source solutions vs commercial solutions, so you will now how I feel towards the presentor’s arguements. I also wonder where that someone gets the fact that “most banks do not run Linux or PHP”. Maybe he/she meant something else like for frontend or for office work/purposes? Anyway, many banks I know of have extremely complicated technology infrastructures and organization that span globally from India, Singapore and even Hongkong, and they obviously do not run on a single platform all the time in their server operations. While PHP may not be adopted on the frontline of banks, they sometimes use it for intranets or some 1-time event websites.
The security workshop was a good refresher for me, with a couple of more web applications related security concepts which can apply to all other languages. However, at some stage, I felt the meet up was going to spiral out of control with questions popping out frequently, probably due to some rushing through of the presentation which defeated the purpose. By the time the whole thing ended, it was close to 11pm - something which I had not expected when I reached the seminar room at 7.30pm. Perhaps, each talk can be scaled down to just 30 minutes in future, with 10 minutes of discussion time in future! All in all… this was a relatively enjoyable event abeit the lengthy session. Unfortunately, I will not make it to the Dec session as I would be abroad, but I am sure it will be very much looked forward to by many others.
And yes, something was missing throughout. REFRESHMENTS! *hint hint*
OT(not related to event review, and warnings: technical dangers ahead): I have to also point out that web application developments arent that straightforward as some inside the room seem to think so. Yes I know PHP has its own MVC model too - afaik CakePHP is one of them. However, many PHP coders I have asked do not even know what that is (to date, Michael and I are still looking for CakePHP programmers for a project, please contact us if you are one!). I cannot comment much on how effective CakePHP functions as a MVC framework too, but my experience in using Java to code many web applications has been beautiful so far. I cant complain much about the support, the community, the elegance, MVC frameworks such as Struts, and commercial Java Servers for superior performances. The only thorn is probably EJBs for me, which its true intrinisic value is something I have yet to figure out. Similarly, some systems would require thread applications in the background on top of the web tier application. It is thus desirable at many times to use the same language for the entire system so the team does not have to deal with multiple languages. This is where Java and even ASP.Net would come in very beneficial for many companies; Disclaimer though: I do not know if PHP is a good language choice for thread or background applications (it can be done i think for scripting), nor know much on perl’s features. Perhaps, to draw a more compelling comparison of PHP’s true value compared to the rest, I should try developing a PHP web application myself (=
On the point that banks prefer more established technology, thats spot on, but its more than just that too. In evaluating web technologies, as mentioned earlier, we should look at other factors such as framework and number of developers who understand that framework, and availability of established vendors who can deliver robust applications. This goes as well for MNCs. Now, the golden rule of IT development is the all familiar “if it aint broken don’t fix it”, which these companies would follow religiously, especially when these platforms are already working so well for them. Even if PHP is established, I doubt the switch to PHP will come so easily. Another suspicion I have, though I cannot confirm, is that PHP programmers generally charge less than their ASP, JAVA peers, and thus are more suitable for SMEs and start-ups.
* I apologise for this very unstructured review, as I am doing this at the wee hours of the morning. *