<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-78956284148129023</id><updated>2012-02-15T23:43:24.629-08:00</updated><category term='thoughtworker'/><category term='http://www.thoughtworker.com'/><category term='Tiltviewer'/><title type='text'>Here is Shakiel</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hereisshakiel.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/78956284148129023/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hereisshakiel.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Shakir Shakiel</name><uri>http://www.blogger.com/profile/00009271943748275992</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-78956284148129023.post-6782562610996549494</id><published>2009-05-22T07:36:00.000-07:00</published><updated>2009-05-22T07:41:18.246-07:00</updated><title type='text'>Avoiding Premature Optimization</title><content type='html'>When I write a code I am often concerned whether my code can be optimized further. One fine day, I came across a code where two queries were being fired to a database. I knew, it can be combined by some joins and conditions. I went ahead and did it. When I did that I was breaking "Responding to Change" principle. Then a future requirement came for which the older style of writing queries would have been a correct choice. &lt;br /&gt; &lt;br /&gt; So when I did that I should have asked myself 3 questions :&lt;br /&gt; &lt;br /&gt; -&gt; Is the current system working fine ?&lt;br /&gt; -&gt; Is the change making a great level of optimization ?&lt;br /&gt; -&gt; Is this optimization one of your performance goal ?&lt;br /&gt; &lt;br /&gt; If I have asked these three questions to myself at that point, the answers would have been -&lt;br /&gt; &lt;br /&gt; -&gt; Yes, the system was working fine.&lt;br /&gt; -&gt; The two queries were taking 0.01ms each. The join query was taking 0.015ms.&lt;br /&gt; -&gt; No that optimization was not a performance goal. The system was working as per the performance requirements.&lt;br /&gt;  &lt;br /&gt; There was only optimization of 0.005ms. Is this optimization necessary in the cost of readability,maintainability and extensibility? I feel definitely "no".&lt;br /&gt; &lt;br /&gt; Donald Knuth,the father of "analysis and algorithms" had said "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/78956284148129023-6782562610996549494?l=hereisshakiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hereisshakiel.blogspot.com/feeds/6782562610996549494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=78956284148129023&amp;postID=6782562610996549494' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/78956284148129023/posts/default/6782562610996549494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/78956284148129023/posts/default/6782562610996549494'/><link rel='alternate' type='text/html' href='http://hereisshakiel.blogspot.com/2009/05/avoiding-premature-optimization.html' title='Avoiding Premature Optimization'/><author><name>Shakir Shakiel</name><uri>http://www.blogger.com/profile/00009271943748275992</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-78956284148129023.post-1406977025120579819</id><published>2009-03-13T08:12:00.000-07:00</published><updated>2009-03-13T09:04:31.778-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughtworker'/><category scheme='http://www.blogger.com/atom/ns#' term='Tiltviewer'/><category scheme='http://www.blogger.com/atom/ns#' term='http://www.thoughtworker.com'/><title type='text'>How to add Tiltviewer to your blog ?</title><content type='html'>&lt;/br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href="http://www.thoughtworker.com/"&gt;http://www.thoughtworker.com/&lt;/a&gt; has implemented Tiltviewer for showing its gallery.&lt;br /&gt;&lt;/br&gt;&lt;br /&gt;Infact we can implement Tiltviewer in our own blog without uploading any javascript and downloading Tiltviewer itself.&lt;br /&gt;&lt;/br&gt;&lt;br /&gt;1. Open your flickr account and upload some public images.&lt;br /&gt;&lt;/br&gt;&lt;br /&gt;2. Find your Flickr user_id &lt;a href="http://www.flickr.com/services/api/explore/?method=flickr.people.findByUsername"&gt;here&lt;/a&gt;.Enter your user name and flickr will return you the user_id.&lt;br /&gt;&lt;/br&gt;&lt;br /&gt;3. Enter this link in src attribute of iframe tag and include this tag while writing your post.&lt;br /&gt;   "iframe src="http://www.airtightinteractive.com/projects/tiltviewer/app/?user_id=12345@N05&amp;columns=2&amp;rows=2" width="300px" height="300px" "&lt;br /&gt;&lt;/br&gt;&lt;br /&gt;-&gt; Enter your user_id in user_id param.&lt;/br&gt;&lt;br /&gt;-&gt; rows and columns params are optional&lt;/br&gt;&lt;br /&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;For sample you can see my small gallery here.&lt;br /&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.airtightinteractive.com/projects/tiltviewer/app/?user_id=36243708@N05&amp;columns=2&amp;rows=2" width="500px" height="300px"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/78956284148129023-1406977025120579819?l=hereisshakiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hereisshakiel.blogspot.com/feeds/1406977025120579819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=78956284148129023&amp;postID=1406977025120579819' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/78956284148129023/posts/default/1406977025120579819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/78956284148129023/posts/default/1406977025120579819'/><link rel='alternate' type='text/html' href='http://hereisshakiel.blogspot.com/2009/03/how-to-add-tiltviewer-to-your-blog.html' title='How to add Tiltviewer to your blog ?'/><author><name>Shakir Shakiel</name><uri>http://www.blogger.com/profile/00009271943748275992</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-78956284148129023.post-1365813674187045063</id><published>2008-11-03T06:22:00.000-08:00</published><updated>2008-11-03T06:35:22.699-08:00</updated><title type='text'>Group Dancing,The Agile Way</title><content type='html'>&lt;br&gt;&lt;br /&gt;Hi I am Shakir Shakiel. I am an Application Developer in &lt;span style="font-weight:bold;"&gt;ThoughtWorks,Bangalore Office&lt;/span&gt;. I am now in &lt;span style="font-weight:bold;"&gt;TWU&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I have been a dancer in my college days. And now after coming to TW i find my trainers talking about &lt;b&gt;agile methodology&lt;/b&gt;. As a dancer i keep on comparing the practices to that of my dance team &lt;b&gt;"SOLOMON TWISTERS"&lt;/b&gt;.And i would like to share my thoughts with fellow ThoughtWorkers.&lt;br /&gt;&lt;br /&gt;Group dancing involves a lot of teamwork as in agile.Everyone does a brainstorming for a specific beat of the music and the best and the craziest move is selected. The steps are not clear and bound to change.And as in every project there is a deadline. Here in dancing a deadline means a competition.&lt;br /&gt;&lt;br /&gt;Initially the requirements are unclear.What style to adapt in this competition? What music to select? The best thing we do in selecting a style for a competition is to conduct a meeting with the seniors. Take a voting and decide the style. There was a situation when &lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;American Jazz(AJ)&lt;/span&gt;&lt;/span&gt; came with the maximum vote and nobody in our team actually knew American Jazz.As you might have guessed we hired a choreographer who knew American Jazz. In agile terms a professional with the domain knowledge of American Jazz. Why we did that was we thought of setting this new jazz trend(concrete experiment). We were taking a high risk there because the choreographer said that American Jazz has not become popular at that time and we didnt have enough money to hire him.So we signed a contract with 30% of the winnings of the competition to him if we danced his AJ track.We also went with his instincts and added another song following a Hip-Hop style which was the most coolest style then and we were good at it. We already had a readymade Hip-Hop song&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;("Music makes me loose control")&lt;/span&gt;&lt;/span&gt; fully choreographed.We selected a AJ track&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;(J.Lo 's "Lets get Loud")&lt;/span&gt;&lt;/span&gt; and started choreographing it.The sponsors who were seniors in our case would come once in a week and watch the outcome. They were not happy with what we were doing and asked us to choose a more fast AJ track.In every iteration(once a week) we started to get more negative feedbacks (like AJ style was not at all seen )from almost all of them.So we gave this AJ high priority and we started learning it from the basics which included simple moves and poses. We understood that any large change made at a time just dont work. We started doing incremental change which is one of the important principle in agile. We started to understand our velocity with adapting to AJ and started to go with it.And guess what ?We started delivering business value to our sponsors. But  still they were not happy with the tempo of the track. So we changed the tempo of the track.Eventhough the tempo was changed we were able to adapt to the change in about two days.Thats were responding to change principle comes. We were facing a tight budget and did nt sign up for the costumes then. But when we started receiving positive feedbacks we increased our investment and rather than signing up for a costume we bought it.We knew we were going to adapt this style for atleast a year.&lt;br /&gt;&lt;br /&gt;And finally there is acceptance testing with the sponsors. They might come with some moves which we know might not work. For eg., coming up with a rock and roll move(our seniors were rock n roll fanatics) in jazz.Imagine how funny it would be and how awkward for us.But as in agile &lt;span style="font-weight:bold;"&gt;"SPONSOR HAS THE RIGHTS TO BE WRONG".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When the competition was only one week a ahead when everything was going by our plan, the seniors came up with the idea that we should add two tracks to the whole sequence.But where to add(in between AJ and Hip-Hop or in the last)? We agreed to do another Hip-Hop track. But we said to our seniors that adding two tracks were not at all possible in this short span. We gave our honest measurement on that. We did another Hip-Hop track and we won the &lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Sarang 2007,Choreonite&lt;/span&gt;&lt;/span&gt;. And our experiment on AJ worked out.&lt;br /&gt;&lt;br /&gt;If it had failed it would not be a big loss to us. But the important thing is we won as a team.And open communication with the seniors and the choreographer really helped us.&lt;br /&gt;&lt;br /&gt;I hope you guys might also have a similar agile development experience in your life.Share your experience with us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/78956284148129023-1365813674187045063?l=hereisshakiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hereisshakiel.blogspot.com/feeds/1365813674187045063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=78956284148129023&amp;postID=1365813674187045063' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/78956284148129023/posts/default/1365813674187045063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/78956284148129023/posts/default/1365813674187045063'/><link rel='alternate' type='text/html' href='http://hereisshakiel.blogspot.com/2008/11/group-dancingthe-agile-way.html' title='Group Dancing,The Agile Way'/><author><name>Shakir Shakiel</name><uri>http://www.blogger.com/profile/00009271943748275992</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
