Tuesday, April 25, 2006
A few days home...
I started by running a little - I came closer to the top of the mountain, but I was in time-boxing mode :-) and decided to postpone gratification :-)) and turn back at 12:30. It's fine, anyway: next time, I'll get on the top.
Running is nice because very little conscious attention is needed, and the mind can wander everywhere, hopefully far away from everyday concerns :-). Sometimes, however, while running I get some interesting ideas, and this time it was about Gantt charts. Gantt charts are very popular and handy to document a plan; however, most experienced people tend to confirm my idea that those charts are not a good planning tool. They do not engage you in the kind of thinking that makes you plan better, and cannot even express some common real-world scenarios (incremental dependencies, open choices, uncertainty, etc). I've got some ideas on how to improve them, but the first step should probably be a SWOT analysis of Gantt charts. SWOT is usually considered a business tool, but I've seen it applied to technological issues a couple of times (can't remember where though) and it can be a useful mind tool.
Finally, I managed to complete version 1.0 of the probabilistic estimation tool I've been talking for so long. I just need to write down a first sketchy user manual (1 page or so :-), and it will be ready for a few beta testers (besides those few loyal customers that already tried out the underlying models using ugly prototypes; by the way: thank you guys :-). After a short period, I'll make the tool freely available to everyone, and sooner or later I'll write a short paper on why this tool is useful, and how it works internally.
While working on this tool, I had to work around a nice share of bugs in the .NET framework. Probably the worst has to do with using the SOAP formatter to serialize a class with events declared, but I'll need more time to present it thoroughly. Visual Studio gave me a very unpleasant experience when I first moved from debug to release, by silently erasing a whole lot of code that was using user-defined visual components. I had seen this happening before to other people, but somehow thought I was immune :-))). Well, it seems like I'm not :-).
I've been able to keep the code of this tool short and simple, first by trying to avoid hard work / boring work, and then by allowing me the luxury of waiting for good ideas :-). Sometimes, the best way to get a good idea is to take a walk; it's so bad (and somewhat stupid) that in most working environments, getting out for a walk is not considered a valuable problem-solving technique (at least, not during working hours :-).
Comments:
<< Home
Prima o poi devo decidermi a prendere l'abitudine di correre un po', se i risultati sono questi credo sia meglio sbrigarmi :-))
Comunque noto dai tuoi post un incremento per tutto quel che riguarda .NET. Ma non usi più il C++? I tuoi clienti stanno abbandonando? Devo buttare tutto quello che ho imparato finora?
Comunque noto dai tuoi post un incremento per tutto quel che riguarda .NET. Ma non usi più il C++? I tuoi clienti stanno abbandonando? Devo buttare tutto quello che ho imparato finora?
Povero C++ :-). In realta' gran parte dei miei clienti lo usa sempre; in qualche caso dovrei dire "lo usa ancora" visto che almeno uno lo sta abbandonando. Ma certo in molte applicazioni perde terreno ogni giorno, nell'embedded fatica ancora ad affermarsi anche se il trend e' buono, le riviste language-centric chiudono... insomma non sta passando un buon momento. Le ragioni sono tante, dalla lentezza del comitato ANSI/ISO, ad alcune scelte discutibili che hanno tagliato fuori troppo a lungo reflection ed AOP, alla difficolta' per chi mette insieme codice alla bella e meglio di usarlo, con la conseguente proliferazione di applicazioni C++ visibilmente difettose (contrapposte a quelle meno visibilmente difettose in altri linguaggi), alla crescita di efficienza dei vari JIT compiler, ecc ecc.
Io sicuramente ci sto giocando un po' meno di un tempo; in realta' anche in tempi recenti, con qualche cliente, ho creato alcune soluzioni [in C++] molto molto carine a problemi complicati, ma diventa ancora piu' complicato parlarne qui :-).
Nel caso specifico del tool per le stime, la componente GUI era significativa al punto da sconsigliare il C++ (nei confronti di C#, il C++/CLI per me rimane una non-scelta come linguaggio per scrivere applicazioni e non semplice colla di interoperabilita'). Era anche l'occasione giusta per fare alcune prove con l'ennesima variante sintattica :-) della mia libreria per le GUI Rules.
Sul buttare via le cose che hai imparato, non ce ne sarebbe motivo. Certo se hai speso secoli sopra MFC, o sulla GUI scritta a livello SDK, temo che non recupererai molto nel medio termine, anche se persino in quel piccolo tool, per risolvere in modo elegante un problemino, l'unico modo e' stato intervenire a livello di WndProc di un controllo (e chi non ha mai visto SDK o al limite MFC non si trova proprio a suo agio li' dentro :-).
E comunque, imparare bene un linguaggio e' un esercizio di stretching per la mente :-), sempre che si rimanga elastici :-)) e non si diventi fanatici... che e' uno dei motivi per cui gioco con C# :-).
Post a Comment
Io sicuramente ci sto giocando un po' meno di un tempo; in realta' anche in tempi recenti, con qualche cliente, ho creato alcune soluzioni [in C++] molto molto carine a problemi complicati, ma diventa ancora piu' complicato parlarne qui :-).
Nel caso specifico del tool per le stime, la componente GUI era significativa al punto da sconsigliare il C++ (nei confronti di C#, il C++/CLI per me rimane una non-scelta come linguaggio per scrivere applicazioni e non semplice colla di interoperabilita'). Era anche l'occasione giusta per fare alcune prove con l'ennesima variante sintattica :-) della mia libreria per le GUI Rules.
Sul buttare via le cose che hai imparato, non ce ne sarebbe motivo. Certo se hai speso secoli sopra MFC, o sulla GUI scritta a livello SDK, temo che non recupererai molto nel medio termine, anche se persino in quel piccolo tool, per risolvere in modo elegante un problemino, l'unico modo e' stato intervenire a livello di WndProc di un controllo (e chi non ha mai visto SDK o al limite MFC non si trova proprio a suo agio li' dentro :-).
E comunque, imparare bene un linguaggio e' un esercizio di stretching per la mente :-), sempre che si rimanga elastici :-)) e non si diventi fanatici... che e' uno dei motivi per cui gioco con C# :-).
<< Home





