Thursday, March 26, 2009

Automation

1. Deployment automation
2. Test automation

Automatic deployment and automatic tests are the developer`s best friend.
An application development has three stages: Development , Debugging and Maintanance.
In the first stage you have a lot of time to spare. In the secod you have less and in the third you have none.

Automatic test and deployment save you time and bugs on the 2nd and 3rd stage , when you really need them ( need to fix the bug and redeploy by noon tommorow morning otherwise your very important customer will drop you , and just now your QA is on vacation and your IT guy is on sick day ).
But automation takes time to develop. It will elongate your development time (usually by mere few days) and automation may not be the coolest feature to develop (usually its pretty boring) ... you understand where it is going...

When you are at maintanance mode and suffers greatly from the wasted time on the manual testing/deployment and you understands the need for this , you simply do not have time to spare on building it.


Conclusion: Think ahead , in the development period , if the feature can benfit from automation down the line. If so , add the required days to the (middle) of the development period - you will thanks yourself later for doing so.

Saturday, March 14, 2009

Google App Engine

Prediction:
Google App engine (or its copycats) will be the only way to develop web applications in the following years.
They have everything exactly right except the programming language. Note to google: the average industry developer does not know Python. In fact if he knew Python, he would have probably already been recruited as a Google employee... So your runtime environemnt is not usuable to us , the common programmers.

When(and if) they implement PHP , Java (and maybe even ASP) runtimes , this project will become te industry leader and will kill all the data-stores(including Amazons) and half of the IT guys in the world.

If they will be smart enough, it can even create a standard web-development kit , as long as it is not Python based!!!

Outsourcing

In the current state of the economy, outsourcing become more popular every day.
Recruiting new workers is tough . Recruiting new workers from outsourcing is even tougher.

I'm doing a grouse generalization here and I apologize for it in advance for this observation:
Outsourcing workers can be divided to two groups:
The first group is extremely talented and experienced men who understands they can do a lot more money as outsourced-consultants than as regular workers.
The second group is of the "refugees" - the less talented/experienced men which could not find a regular job as company employee and turned to outsourcing companies as a last resort

The outsourcing H.R. will always tell you their workers are excellent for the job. So how can you distinguish between the extremely talented and the less-than-averages ones?
One way is to have a good technical interview, but as you usually outsource the field in which your group do not have the technology expertise , it will be hard for you to really estimate the interview results.
A second way is quite simple. The expert will demand a salary which is usually more than twice the salary of a regular employee whereas the refugee will usually ask for a salary similar or even less than a regular employee. So if the man you are interviewing wants a lot of money , there is a good chance he is the real deal. If he is cheap , there is a good chance he is not worth a penny.

I'm not saying anyone who demands lots of money is immediately good and that anyone who demands less is immediately bad , but pay attention to that...

Another Gem from Joel

Joel is truly a genius. As I`m "maturing" in work experience , I see more and more how true his observations are.

Joel is has written a great post on "How to be a Product Manager"

And a remark of few other great ones:
1. UI - Never show a UI-screen to an "outsider" before it is fully polished.
2. The law of leaky Abstrsctions