Friday, September 29, 2006

Agile

For some reason agile methodology became a hot topic last week. Many new postings in many blogs were discussing the merits and the shortcomings of agile development, and many old posts on the same topic got promoted to the first page on sites like DZone . Many people were criticizing Agile, and many were defending it.

I, personally, have no experience doing Agile, and, therefore, I am in no position to criticize it (though I find many of ideas and methods of Agile contradicting my own experience and common sense in general). But I also want to add my 2 cents to the discussion.

I will not talk about Agile being better or worse than Waterfall or any other methodologies. I will start with one simple statement: methodology is a tool. It’s not a religion, not a science – it’s merely a way to organize production. But there isn’t such a thing as “universal tool” – every tool is good for something, and is bad for something else. There are exceptions – tools that are bad for everything, but in case of Agile this is not the case, since we’ve read some success storied, and I don’t have any reason to call the inventors of Agile liars.

What that means is – it’s absolutely useless to discuss whether Agile is good or bad; instead Agile users (both haters and lovers) should spend their effort on analysis of their stories, in order to understand when Agile is good, and when it is bad. I am absolutely sure that for certain types of projects (or teams, or environments, or combination of those factors) Agile is a blessing – and for certain others it’s a curse.

Technorati tags: ,

Thursday, September 28, 2006

Windows tips

Just found today a great discussion thread in The Joel on Software Discussion Group: Best tips that no one seems to know about. Basically, the whole thread is a collection of various simple Windows tips and tricks - mostly some interesting hotkey combinations. The conversation also mentions several quite useful links:

Firefox keyboard shortcuts
Windows XP keyboard shortcuts
117 run commands in Windows XP

Now, the only question I have is: how should I memorize all of these cool key combinations - or, at least, the most useful ones? Probably I should create some kind of printable list of my favorites and put it on my wall.

Technorati tags: , ,

Tuesday, September 19, 2006

PS3: a hidden computer.

Yesterday CNN published an article about using PS3 for distributed calculations. The scientists at Stanford University worked with Sony to port their Folding@home project to PS3. The idea is that the users will download a program to the hard drive of their PS3, and the program will perform some complex scientific calculations while the console is not being used for games. It will upload results to some central location, helping to find a cure to a number of diseases.

The article left me with mixed feelings. On one hand, this is definitely a creative use of PS3, and the project is, no doubt, beneficial for all mankind. I applaud the scientists at Stanford and the people (tehchies and business folks) at Sony.

On the other hand, this new project demonstrates one very important thing: PS3 is a device which has very powerful processor, local storage and connectivity capabilities. It can go online, download software, run it (maybe even in a background mode), and send data back. In other terms - yes, it is a full-scale computer, as we were told already. The question is - what about security?

I do believe that Sony did its best to implement various security features. But I know also that PSP, for example, was hacked in a very short time. In a contest between Sony and hackers I wouldn't bet on Sony.

You may say: "So what? Normal computers are also being hacked into daily; there are tons of malware out there - but no one panics because of that." The problem here is not a technical one - it's, rather, a psychological issue. Majority of users know now that the computers have to be protected against viruses, trojans and other dangers. People are learning to be attentive to unusual behavior of their computers; and they also learn to protect their PCs by installing automatically updating antiviruses, firewalls and all sorts of protective software (to say nothing about regular automated updates of OS). They learn it about computers - but almost no one will ever perceive their gaming console - a toy - to be a computer that requires an equal amount of protection. I strongly doubt that anyone will buy and install a firewall or antivirus for their PS3.

Next question is - what is a danger of compromising PS3 security? Yes, it doesn't have any sensitive data stored (though it might have account numbers and passwords for some subscription-based online games). But it has exactly what was used by people at Stanford: free horsepower and connectivity. So, I can clearly see a botnet of infected PS3s used for distributed calculations (breaking keys, for example), spamming, or DDoS attacks. And, even if the source of the problem will be traced to PS3s, it might be incredibly difficult to make people install some patches or run cleaning software.

Maybe Sony already addressed this problem somehow - I don't have enough information yet. But I can see an interesting and dangerous trend here. I am talking about having powerful computers in an ordinary gadgets and not even thinking about their true capabilities. It's not a new idea, but it seems less and less fantastic to me: we are close to times when one might discover that his coffee maker is being infected by a virus, and his vacuum cleaner is being used to crack some Pentagon codes...

Technorati tags:,

Friday, September 15, 2006

Advice to interviewers

Lately on several blogs I've seen posts discussing different aspects of hiring. Most posts were giving advice to candidates - so, I thought I might also take part in this. However, instead of giving advice to candidates on how to survive an interview, I'd rather give some advice to interviewers.

Phone interview. Couple of times I've discovered that the person who is interviewing me over the phone has some speech defect or some extremely heavy accent. I'm not a native speaker myself, and, probably, I shouldn't complain about it, but still - the fact that I was unable to understand questions from the first time (and sometimes from the second and from the third times as well) made those interviews extremely - and unnecessary - stressful. So, advice number one is: make sure that the person who does phone screening speaks clearly.

Also, do not make candidates read or listen to large pieces of code. It's inconvenient, ineffective and, speaking frankly, pretty stupid.

And the last one about phone screening: be flexible about who calls whom. I've encountered once a person who insisted on calling me - in the middle of a working day in my office!

Pre-screening.

Do not ask the candidate to submit code examples from his (or her) previous job. This might be illegal, and it puts the candidate in an awkward position.

Test projects and on-line tests - well, I, personally, strongly dislike those practices. Nothing prevents candidate from cheating - and serious professional wouldn't like to spend his time on doing some bogus project.

On-site interview.

Always give your business card to the candidate. When going through an interview with 5 or six people in a row it's hard to remember everyone's name and title - and it's so embarrassing later to admit that you've forgot whom did you talk with!

Don't turn the interview into your ego-booster. Don't ask questions the only purpose of which is to prove you that you know something better than the candidate. As an example: in a list of "General SQL knowledge interview questions" in one company I've seen a question based on a strange, and, probably, incorrect behavior of MS SQL server under some circumstances. Do you think this is an appropriate question to measure general knowledge of SQL? I don't think so.

And, please, try to give a feedback. I remember one of my interviews. A man asked me questions, I answered, he said "OK..." and continued with the next question. At some moment, I felt uncertain about my answer. The man said "OK...." and I asked him: "Was it the answer you expected?" He calmly replied: "No. As a matter of fact, it was a completely wrong answer." I asked for a clarification, and discovered that I misunderstood his question. So, if the candidate answers your question incorrectly, tell him (or her) so - maybe they know the right answer, but just didn't get you right.

Technorati tags: ,

Monday, September 11, 2006

Microformats

I've discovered an idea of microformats quite recently, and I was immediatelty charmed by its simplicity and elegance. Simply put, microformats are about formatting semantically united blocks of data so it will be easily understandable both by machines and by humans. Examples of the data which will benefit from this approach are numerous. Microformats.org - a site dedicated to microformats - lists almost a dozen already existing formats, including hCard - format for representing people and organizations, hCalendar - format for events and calendar entries and others. Microformats are based on XHTML - which allows them, on one hand, to be easily integrated into a web page, and, on the other hand, to be easily extracted from the page and processed by any program.

There are already several tools - most of them are stil beta versions, though - that are able to detect the presense of microformatted data on a web page and extract it. One of the examples of a freal-world usage of microformats is the way Technorati processes tags from blogs - rel-tag is one of the microformats!

One thing I am afraid of, however, is an uncontrollable proliferation of incompatible microfomats once the idea becomes popular. It's so easy to come up with your own format! This might render the whole idea unusable - but I do hope that it will not happen, and I am watching with interest all the new development in this area.

Technorati tags: ,

Thursday, September 07, 2006

Back from hiatus

Being silent for a month is not a good thing for a blog. For a blogger, that's not a good thing either. It's even more difficult to write a first entry after such a long pause - somehow it seems that this particular entry should be very important, extremely informative, and should somehow justify the long silence. Since coming up with something having this level of perfection is definitely far beyond my capabilities, I decided just to write this simple "I'm back!" piece.

Last month has been a hectic time for me. I've changed my job - and while doing that I positively had no time to produce anything interesting enough of my readers. I want to take this opportunity to say "Thank you" to everyone who is reading my blog.

So, thank you - and stay tuned! I'm back.