This is getting frustrating...No secure ID, no Office mail access, and to top it all, I do not have a BlackBerry. I am completely out of touch with the real world and just 3 days into my vacation. Man, can life be more boring than this? And to top the frustration is the news that the FBT is now on the employee. Which means, my ESOP would get taxed, if I get a car from the company I have to pay the FBT component on that as well (which was previously held by the employer). Now I am thinking, why not to try politics for a change.
There was a nice news today morning, which made me even more determined to try for the post of MLA or MP. All the relatives of MP's now get to travel for free by Air within India. And all the friends and relatives of MP get to travel for free by Air within India. And this bill is actually passed in the Parliament. So now, it pays to be a friend of an MP than work your ass off in a 9-6 job. I am still checking if I have any MPs in my family bloodline. Surely there should be one...No family is perfect :D. We all have our share of hyenas and wolves.
Now, I might sound that I am rambling and ranting out of frustration. But the truth is, Politics is a more profit making business than any other job. Consider this:
1. You do not need to pay for the accomodation
2. You do not need to declare your wealth
3. You do not need to be a BE, MBA, IIT Grad (Well if you are, it means you are over qualified)
4. You do not need to pay for the fuel (The idiots called tax payers would do that for you. Infact, you might even see a Software Engineer filling up your tank in a Shell gas station (thanks to the rising inflation))
5. You do not need to work on deadlines. (Hey, you are a politician. You could hire 10 MBA grads and get them to work on your deadlines. And then take the credit. Afterall, you managed the MBA grads)
6. You do not need to pay for vegetables, fruits, liquor, schooling, No parking fines.
In short, the outflow from your purse would be inversely proportional to the inflow. And in this case, the inflow would never tend to negative.
Lord, if you could make me an MLA of any one constituency (maybe Andipatti would be the best, closer to my home) in the next 10 years, I would break 108 coconuts for you (Out of the tax payer's money, ofcourse)
Freedom to choose is not how many items you can mark as checked, but how many radio buttons you can check at the same time
Dec 23, 2009
Dec 3, 2009
MS Does not trust SilverLight :)
Adobe Flex: The Perfect example of how a framework should not be
There is a growing discontent amongst the developers I have interacted with. And one common thing that bound our discontent is one thing, one thing only (as quoted by Lt. Aldo Raine): "Adobe Flex 3.0"
There is a saying "You realize the importance of something only when have the need for it and it is nowhere around". When we were working on MS .NET Framework with VS IDE till some years ago, we used to crib about the performance of the IDE and other non-important factors. Now when we are stuck inside Eclipse + Flex Builder plugin, "Oh VS 2005 where art thou?"
The point is, Flex is not all that bad. It is just the hype around it that makes it an evil component. And it all starts with the Ux. They use a simple tool like Photoshop (another sin from Adobe's factory) to design jazzy stuffs that it is impossible to achieve the same kind of look and feel in the UI framework code that you have no option but to hack your way around. Now Flash player is sort of Buddy Buddy with it's counterpart criminal Flex. So if it finds we are trying to play with it, it just spits fire and vengeance.
My rantings on Flex would go on as long as we are using it. Once done, I would love to put the following statement on my wall, as a warning to Flex and anyone who uses it"
"The path of the righteous is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he, who in the name of charity and good will, shepherds the week through the valley of darkness. For he is truly his brother's keeper and the finder of lost children. And I shall strike down upon thee with great vengeance and furious anger, those who attempt to poison my brothers and destroy them. And you will know my name is the Lord when I lay my vengeance upon thee".
The hands of the Lord rest on those who hate Flex.
Nov 29, 2009
The World of a crazy programmer
Have seen some real life fundo code and have been amazed at how this would be maintained.
It went something like this:
private static var oGlobalClassAObject = new GlobalClassAObject(new LocalClassB(olapDataClass,false),new URLLoader(new URLRequest("../local/assets/global/returnValidate.xml),false,new XMLList(result.result.data.children));
Needless to say, I was shocked, petrified, p***** off, on seeing this code. And the best part of this story was, a new "less Geeky" guy was asked to maintain this code. He read this code for the most part of the day and then called in sick for the rest of the week (my guess is he was attending interviews to escape out of this mayhem).
I would love to see a proper commented code explaining what each and every parameter of the above class constructor would lead to. A simple one liner would not hurt, would it? And if this API is tested as it is, the chances are, this object definition would end up in the automated test cases as well. So now the virus would spread from the development to quality to validation to customer.
"Always code as if, the person who would be reading it, is a psycho who knows where to catch you".
Nov 28, 2009
The Woes of FlexUnit testing
Ant's flexunit task does not run with a native FlexUnit testrunner component. You need to ensure you use the JUnitTestRunner component with task of Ant.
(I learnt it the hardway though :))
import flexunit.junit.JUnitTestRunner;
import flexunit.framework.TestSuite;
private var jUnitTestRunner:JUnitTestRunner;
private function onInit():void{
status.text = "Unit tests running";
jUnitTestRunner = new JUnitTestRunner();
jUnitTestRunner.run(suite(),onAllTestsCompleted);
}
public static function suite():TestSuite{
var _testSuite:TestSuite = new TestSuite;
_testSuite.addTestSuite(MyTestCases);
return _testSuite;
}
private function onAllTestsCompleted():void{
fscommand("quit","");
}
This makes me wonder, why is it named as Shouldn't it be ?
Crossed to kill.
The one thing that can never happen is Development following SCRUM and QM following traditional project management. In this case Development and QM can never do business together. Whereas the philosophy of Agile (and SCRUM as well), is that you do not give the SRS requirements for the entire product upfront. The reason: You do not have the requirements upfront. They appear as you start working on the features of the product. However, the Waterfall model says that you should have all the requirements on the table, reviewed, signed off, etched in memory of the developers and finally on their graves as well. In this situation, this is what happens:
Dev: We have 10 requirements for this sprint to be developed.
QM: And how many to be tested?
Dev: Hmmm....we cannot be so sure now. The sprint has just started. We might reduce or increase the scope based on priorities.
QM: OK. Assume this is the end of the sprint. Then, how many requirements can we test?
Dev: Duh (Pondering what to answer)...
QM: OK forget it. When can I have the requirements
Dev: The SRS would be ready by the end of the day and the development will be starting tomorrow based on the SRS.
QM: (Looks at the SRS) But I see only 10 requirements. Is this all that you are going to be shipping till the end of the year?
Dev: (Losing his patience). Look, we are following SCRUM. We might have the overall scope items, but the SRS will evolve as we progress. We cannot have the entire requirements of month 8 right now.
QM: Then how do you expect the testing team to come up with test cases? We need the requirements to do this.
Dev: But that is what I am saying, you cannot have the requirements for next sprint when we are still in sprint 1.
QM: What sprint?
Dev: What what sprint?
QM: You just said something about sprint...are you planning to run away overnight?
Dev: (Sighs and murmurs the F word) I said Sprint. SPRINT. Meaning an interation in SCRUM.
QM: Don't you dare call me a SCUM. I am not a SCUM. I am the QM of this team.
Dev: OK...Let me clarify here...what model of project are you following?
QM: What do you mean by what model?
Dev: I mean, how are you planning for your tasks?
QM: We have Microsoft Project. We have been having 2 hour meetings for the past 2 months to plan for the next 10 months. We have the qm testing phase starting in Month 6. That is followed by AT in Month 8. Then we do a regression on the reported issues in Month 8 Week 2 and a final issue consolidation on end of of week 3 of Month 8. Then on the next Monday, we start with the analysis of the AT results.........
Dev: (Has just slipped into a coma)
This immediately brought to my mind the Russel Peters video (Chinese and Indian people cannot do business together):
Oct 6, 2009
Follow the process, forget the rest
I was chatting with one of my many relatives the other day (I am proud to say my family has 3 generations of software engineers, starting from one who worked on punch cards :)), and this person was talking about how his organization has been working on a product release for the past 2 years. I was dumbstruck, how could somebody work on something for 2 years. When I conveyed my doubt he gave a long sigh and explained that his company focuses on the process of delivering quality products to the customer and hence has left the decision on processes with the Quality Assurance team. Every-time a new release is supposed to happen, the QA raises a red flag about some issue or the other and hence delays the release. One of the important points they like to focus on is documentation.
My idea of a software product is this.
- Based on the market requirements (read this) (The product management team gets the current market requirements and defines the idea. (Not more than 2 weeks)
- Development brainstorms the idea and comes up with a prototype (Max 4 weeks)
- Dev showcases this to the Product Management and gets their confirmation if they are on the right track.
- Product Management signs off the initial level of design, and requests Dev to proceed with the next steps.
- PM shows this to the Customer and if any changes, communicates to the development at the initial stage itself.
- The development continues with the iterative development and in a maximum of 4 months comes up with the final design as requested by the customer.
- Then another 2 weeks of testing. (During these 4 months of development, testing would happen at the end of each month on the monthly milestones).
- A total of 20 weeks (translates into 5 months), the beta is released to the customer.
- Once things are on track, the dev starts with Wave 2 of the requirements.
In this way, we can be sure that we are ahead of our competitors and follow the Agile methodology to the core. We always have time for documentation, processes, standards and quality. What we need first is the confidence of the customer that his requirements are really going where they need to go and not into 50 page MRDs and PRDs which no one would be looking into anyway.
Let's follow Agile, Let's Be Lean.
Till later.
Subscribe to:
Posts (Atom)