Archive for June, 2010

How To Program: Analysis …

Monday, June 28th, 2010

egg

Imagine that we have discovered a new planet and the world has called upon you to make a plan for visiting this new planet with a probe to gather data about it. Where do you start?

This thinking about a problem is called Analysis and it is a very hard skill to master even with experience but it is essential when learning how to program. Every requirement you uncover requires analysis to further understand it, validate it and quantify it before you start to think about a solution.

Sometimes this analysis can reach a road block where you don’t have enough information to know something for certain. To get through these road blocks you need to get the information or make a choice to enable you to move forward. This choice is called an assumption and these are ok but you need to track them so you can validate them at some later point. An assumption that is not valid may invalidate your entire analysis and you may be in big trouble.

Teaching analysis is hard and I’m not sure that I have a good approach since it is about thinking and thinking deeply about a subject. The more experience you have with the subject the wider and deeper your thought can be. This is why experience is such a valuable asset. I’m not sure that I even have a ‘method’ of analysis but I do have what I think is a good exercise in doing analysis.

Most of you reading this post will have at some point boiled an egg, and if you haven’t don’t worry you can still do this exercise.  Without going through the process or searching a recipe book or the internet, write down each step you would take to make a boiled egg, and I mean every step. Along the way you may make assumptions about things and you should write down these assumptions to. I’ll give you one assumption to start off with, “You are boiling a chicken egg.”.  So make your list of steps and your list of assumptions.

I did this exercise and here is my list but please do the exercise yourself before looking at my list. After you have made your lists then look at mine and compare the two. Did you have the same steps? Did you have more or less steps? Did your assumptions  match mine? Did you find yourself thinking, “I didn’t think of that?” or “Wow, I’m not winning Masterchef.”.  I’d like to hear about your experience with this exercise so please send me an email.

The best part of this exercise is that we can test it by going through the steps we have outlined in order, one by one and seeing if we end up with a boiled egg. Often in the Business of software we don’t have this luxury and therefore we need to do analysis. The better your analysis the more confidence you can have that you understand the problem. Notice I talk about the problem and haven’t talked about the solution? It is very important to analyse the problem and requirements before thinking of a solution.

How’s your egg?

Work on Pharo Smalltalk …

Tuesday, June 8th, 2010

There is a job add for a Smalltalk Developer to work on Pharo here and more here

Below is a rough translation by a friend, for those who don’t French.

INRIA is a Research Institute specializing in science and information technology (ICST) around communication.
It employs 3600 people in research centres spreads across seven regions.
The research centre in Lille (North of France) employs 260 people, spread across a dozen research and research support teams
The RMOD research team specializes in the development of dynamic object languages.

The chosen engineer will work on development and scientific experiments in one of the research teams.
He/she will work on the following: new infrastructure around a new compiler, improving network support, interfacing with C, improving the performance of virtual machines, improving object-runtime, improving code, improving the IDE.

The chosen engineer will participate in development and experimentation in a research team, leading to:
• software development: design, coding, testing, documentation
• participating in writing tutorials
• mailing-list animations (?!);
• integration of bugs (bug fixes?)

Skills and profile
• training in information technology and knowledge of software development and related bug tools (version management, compilation, documentation, testing, debugging,…);
• programming languages: Smalltalk, C;
• good knowledge of a dynamic language and in reflective (?) programming
• fluent technical and scientific English
• good writing skills;
• good-to-have skills: network, system, reflexive kernels

For more information, apply online through http://www.inria.fr/travailler/opportunites/ingenieurs/specialistes.fr.html
For more information on the role, contact stephane.ducasse@inria.fr
For information of an administrative nature, contact magali.lesaffre@inria.fr