torsdag 3 december 2009

Överraska och bli överraskad - kan undvikas med lyhördhet

Jag tycker inte om att bli överraskad. Även om det är så att någon trevlig person bokat en hemlig resa till mig eller anordnat en surprise fest. Det låter kanske tråkigt - men jag är bara ärlig - jag tycker inte om överraskningar. Självklart kan jag alltid spela glad. Man är ju trots allt artig. :-) Jag tycker inte heller om att överraska andra. Jag tycker om kontroll. Jag tycker om transparens. Man kan visserligen inte alltid ha full kontroll. Men man kan ha stor kontroll. Oftast genom att ha öppna ögon och öron, vara kommunikativ och hänga med.

Det här med överraskningar gäller även i arbetslivet. Och särskilt vid systemutveckling.
Genom att hänga med, vara kommunikativ och ha diverse tentakler ute, kan man få bra koll på vad som är i görningen. Man ska inte behöva bli överraskad av att ett delsystem inte fungerar. Det bör istället upplevas som att ett nytt problem uppstått. Men inte behöva vara en överraskning. Har man inte beräknat att sådant kan hända, då blir man överraskad. Inte annars.

Om kraven förändras, eller om det tillkommer nya krav som problematiserar den design/implemenation som redan gjorts, då är det ingen överraskning. Det är helt enkelt nya förutsättningar. Och har man haft tentakler ute, god kommunikation - så har man antagligen kunnat ana att något sådant eventuellt skulle komma.

Man ska inte bli överraskad av att det är lågkonjunktur. Att den skulle komma visste man faktiskt INNAN Lehmans Brothers föll!
Man ska inte bli överraskad av att det snart kommer vara stor brist på it-utvecklare.
Under lång tid är det färre som utbildar sig inom det området men samhället blir mer och mer beroende av IT.
Man ska inte bli överraskad av effekterna som kan komma av att energi och datorer just nu hör ihop - och att energi är en bristvara.
Det är mycket man inte borde bli överraskad av. Ändå blir många alltid så överraskade.
Kanske beror det på att så många tycker om överaskningar...som 5-åringar också gör...

söndag 15 november 2009

Self studying and learning => more self confidence and fun

When I have been employed as a programmer, I have many times been allowed to enter an open course x times per year, invest x hours per year in self studying etc. However, usually, the subjects needed to be related to my work.
For me, it did actually mean that I connected learning with work. And I didn't want to work on my free time...

Then came a time when I realised that I had forgotten that I love learning IT stuff. I have always loved that - how could I just forget? But somehow I forgot it.
When I remembered - I started learning again, for my own sake, as my hobby and just to have fun - and on my free time. And it is so fun! When I learn on my free time I relate IT as my hobby - not as work.

I have now been into a period where I started to look more into Tapestry 5, Spring, Hibernate.
When looking into new techniques, it usually opens doors to so many other things as well. In my case, for example, openejb, Maven, HSQLDB etc.

Sometimes learning is like trying to plough through a really thick snow wall.
You feel like you never get through. And more and more snow is just falling off the sides of the tunnel around the plough.
Then when you finally are through, you have to reverse and collect the snow that fell down as well.
Ok - so here it comes....my metaphor. (I truly hate everyone else’s metaphors, always think they are silly, so let me therefore be equal silly and make my own....)
I see the small snow chunks that fell around me, as new leanings that I get on the way of pursuing my studies.
And many times they can be as giving as the subjects I intended to study.
When studying on my free time, I can just pursue any road I wish. If I find openejb interesting, I can just invest some days in that, and then when I am ready, continue with Tapestry.
I guess what makes it so fun is that there is no time pressure or pressure for effective study.

My experience is that no matter what I study, either if I study something I already know or if I study something totally new,
I always learn something.

Learning things we already know
Many times we learn techniques at work. We learn by practice.
For example, I guess a lot of people are familiar using Ant or Maven, but not all have actually studied the techniques in detail.
Sometimes it is not needed to directly study a technique in order to use it. And when needed, we may just study the part we need to use.
However, it can be fun, fairly easy and comfortable to read about something you already are quite familiar with.
Sometimes one can just sit in the sofa and read the code, and still get aha's.. That's convenient! No need to code yourself, because you get the picture any way.
Learning more in depth - gives me self confidence.

Learning things we have forgot
Some techniques needs a full understanding when setting up or creating - but may after an initial phase, not be altered so much.
For example, creating EJBs, webservices, project setups, database schemas etc. These tasks are very seldom performed, compared to just coding business logic etc.
So certain things we forget because we seldom use it. And when we need to use it, we need to refresh our knowledge.
It can be quite fun as well to refresh old knowledge. And usually it goes quick. Like driving a manual geared car after long time having driven automatic gears.
Quite fun! (Oooops - one more metaphor!)
Refreshing old knowledge also gives me self confidence.

Since there are so much happening and so many techniques, one may feel overwhelmed. Where to start?
A couple of years ago I was frustrated by all new web framework that had emerged. No one could tell which to use.
Wicket, Tapestry, JSF, Struts, Rails etc
But once we just dive into it - it's not THAT bad.
When no one can tell which to use - we need to believe that we have the power to judge ourselves.
We can get a good overview ourselves. Actually it's like learning languages.
Once you know French - then Italian, Spanish and Portuguese is not that far away.
Same with web framework - you start to see the similarities. And can also appreciate the differences.

So what do I want to say with this post?
Learning new stuff and old stuff can be fun.
And it gives self confidence.

I at least like to be self confident and I always like to have fun.
So if you are looking for either of the above, maybe some learning can do the trick?

:-)

Technology stressed? Cool down. Relax.

Sometime I get technology stressed out. There are so many technologies coming all the time which I feel I must learn.
But then I think about India - where I am originated from - and I get relaxed. Because it's actually possible to just skip one or more phases. And you may still be a winner.

I am thinking about telephony. In India the infrastructure for landline telephony was never good. Most people never had any telephone and used telephone boots for calling. This was a great problem.

And then the cell phones arrived. And all of a sudden, telephony was not a problem any more! A great deal of the population could just skip the landline phase and go directly to cell phones. And it works great!

So sometimes when I get stressed about technologies I think the same way.
Some technologies come and then they disappear.
If I don't have time to learn them now - maybe it's not a problem. They may be replaced by something better or at least less buggy.
The longer I wait, the more experiences other have had from it, which I can learn from.

One thing most of us probably have experienced is how hard and frustrating it can be to be on bleeding edge. Since - you really bleed. The products to use are still not mature and you discover lots of bugs. Sometimes it can truly be effective to be one step behind!

As programmer, I love to learn new technologies. But soon vacation time is arriving - and I don't intend to be technology stressed then!

Don't be you either! :-)
After vacation - there may be a new release out there. Main bugs solved...and if you wait little more, the new introduced bugs will also be solved....

Ruby on Rails - my roadtrip so far

On my Ruby and Rails roadtrip I am getting new insights and understandings...

In summary - with a very few lines of code - you can accomplish so much with Rails.
However, the main bit is to understand how to use the existing puzzle bits.
Once one learns how to use the framework and plugins - it is just rolling...as they say.
I.e. not much coding to do.

There is an abundance of existing plugins that enthusiasts around the world creates and gives you access to - the main thing is to decide which to use, which will live and not die, which are the best for your needs.

My roadtrip so far:
I started out with the Eclipse IDE using plugins from Aptana and using SqlLite3 as database.
Then I moved over to Netbeans and started using MySql as database.
Ruby on Rails have/is moving to Github, a distributed source repository, and most of the rails plugins are also moving to Git. So I also needed to install and understand Git.

The main concepts of Rails builds on having a well thought through datamodel and using ActiveRecords for storing the objects. So it is indeed a VERY object oriented framework. I've learned how to use ActiveRecords for setting up the datamodel using belongs_to and has_many... etc.

One reason, I think, that makes Rails so flourishing, is that there are so many plugins out there.
However - I would say this is for both good and bad.
I guess the reason why there are so many plugins - is that the framework encourages own development of plugins.

However, some days ago, I got a wake-up call - of the vulnerability of the abundance of plugins and free opensource.
I was to use a plugin, named Streamlined, that there was so much buzz over.
A plugin that gives a administrative GUI interface to the datamodels.
A quite handy thing to have - and unnesseassary to build yourself.
As late as in october 2008 there was a lot of buzz about this plugin - but I realised I hardly saw andy post that was dated after that...
And while looking for a solution to a problem I found in the said plugin - I found a google group where one of the contributors told, what I deep inside had suspected...the plugin should be considered as dead!
"We've put out calls for others to step up and take over the project, but so far noone has responded. "

Ofcourse these things happens often - new techniques take over. But I was struck by how fast it can go.
And I guess that the faster the pace within an area, in this case Rails and all its gems and plugins, the faster techniques can also die.

Anyway - since another eqvivalent plugin exist, ActiveScaffold- with equal amount of buzz, I could continue to roll with Rails...
I am also using Restful_Authentication plugin - which is also very conveneient - since all authentication, including setting up of tables etc, is taken care of, I can roll even faster...

But I have philosophical reflections:
I assume the following:
  • Most plugins are contributions by individuals who have created them for free. In other words - charity work.
  • Most programmers like more to develop and less to maintain.
  • Plugins are developed isolated but may rely on version of rails and other plugins.
  • So when rails upgrade or change or other plugins change - the existing plugins may need to change as well.
It strikes me that theere is a potential danger here that there is creation of a lot of new stuff but less people who wants to care for the maintainance of it.

On the other hand - this is nothing new either. This is frequent in all languages and framework.
But I find it extra evident in Rails.

To end - I am still hooked to Ruby on Rails. And now I can say I know quite a bit of it!

Make your voice heard

So what do we actually need to ensure robust systems and effective system development?

We need a lot of courage. So we can stand for what is right. Each and every programmer or involved person, needs to feel the right to speak up.

Make the voice heard - when things are going wrong. But it's not always easy. We are all humans. And humans may be shy, scared or even worse...uninterested.

Musicians are bold people. They sing about the worries and bad things in the world.

Can we save some systems out there if we sing about them....? A song about releases and bugs, IDEs and memory leaks...

I tried. I'm bold. I think... I thought - there can't be any woman out there who sings about effective systemdevelopment....so let me be the first one! I made a rap song.

Beware: I'm not a musician so if your ears are damaged for ever...don't sue me. Sue the enervating systems out there....

Enjoy: triginta.net/JavaRap.wav

Ruby on Rails - den spännande fortsättningen...

I förra veckan skrev jag om hur jag också sett ljuset - Ruby och Rails.
Nu är det dags att lära sig på riktigt.
För så pass mycket har jag insett - att detta är något jag verkligen tänker mästra!

Det gäller ju inte bara att skriva applikationer, man vill ju även att de ska bli skrivna elegant, följa rätt praxis och utnyttja styrkan i ramverket och språket på bästa sätt.
Helt enkelt - man vill skriva lite "by the book".

Så nu har jag köpt en riktigt bra bok om Ruby on Rails - som jag läser i soffan.
Varför jag skriver om det just nu och här?
För att alla ni som läser detta ska veta mitt mål - och genom det tvingas jag att uppfylla det - med råge.

:-)

Äntligen har jag också sett ljuset - Ruby och Rails!

Jag måste medge, det var så mycket snack om Ruby och Ruby on Rails att jag inte visste om jag bara skulle vara nyfiken eller även unna mig att bli lite anti - just för sakens skull.
Så fort man läste om det, så var det ju bara superlativ och folk som jublade.
Nästan så det kändes för mycket.
Jag tänkte - ja men så himla bra kan det ju ändå inte vara.
Det som definitivt slog mig var att alla som skrev om Ruby on Rails beskrev det i termer som att det var så roligt och kul.
Ja - som att det fanns ren glädje i det hela. Självklart kan man ju bli extra skeptisk av sådant - särkilt när man tänker - men varför kan inte jag detta!

Så jag provade! Och det är bara så kul! Så kul!!!!

Jag utvecklade i Eclipse och använde en befintlig plugin.
Det måste medges - att det enda som varit krångligt i det hela, var att få till miljön. Mitt långsamma hemnätverk bidrog till den frustrationen, så det ska absolut inte ligga någon plugin till last.
Det jag främst fick erfara - var Aptana. Wow - en helt ny värld öppnar upp sig.
Vad är Aptana?
Ja inte vet jag riktigt - men det är hur mycket som helst! Sen alla "gems" - som om det var ett vedertaget uttryck!
Look it up yourself! Jag orkar inte förklara här. Hursomhelst, det är från Aptana man får nödvändiga plugin och gems till Eclipse miljön.


Sedan när det är på plats, så vill man antagligen fixa så att man kan köra med en egen liten databas.
Det finns bra inbyggda varianter - jag testade med SQLLite3 som var ett bra alternativ att börja med.
OBS - jag har ännu inte kommit till det roliga!

När väl miljön är på plats - då bara smäller det!
Man högerklickar och skapar ett Rails projekt.
Sedan använder man inbyggda funktioner för att skapa ett färdigt flöde som innehåller allt från websida med GUI funktioner för att uppdatera data till att de facto spara ned och hämta upp datat från tabell.
Det enda man behöver göra är att på en rad skriva objekt med kolumnnamn. Sedan ett knapptryck.
Då skapas klasser, websidor, databas scheman och rubbet.
Sedan ett till knapptryck där man skapar tabellerna utifrån detta.

Alltså - totalt 2 knapptryck och en rads specning - och en hel websajt är på plats. Unbelievable!

Visserligen - detta är ju då rätt fyrkantigt, såtillvida att det tex bygger på engelska.
Jag skapade en bilbytarsajt där jag hade objektet bil med fälten biltyp, arsmodell.
Självklart skapas ju då automatiskt objektet bils som kan innehålla flera bil.
Så i detta fall inser man att det som vanligt är bättre att köra med engelska. Då blir car och cars mera logiskt än bil och bils....

Men det är ju ändå inte menat att man ska använda det genererade rätt av. Däremot, ger det en enormt bra hjälp för att komma vidare och tänka själv.
Man är väl inte mindre programmerare än att man kan ändra på saker - när man väl har ett facit nära till hands!

Så Rails är bara så kul! Så enkelt!
Men - det är inte lämpad för större komplexa system - men perfekt för mindre grejer. Och kul!
Oj - jag kanske redan hade sagt att det var kul...
:-)


Men då har jag inte berätta om det som är riktigt kul! Det är scriptspåket Ruby.
Jag hittade en kul sajt i helgen - där lär man sig syntaxen och det väsentliga inom Ruby på 15 minuter.
Prova! Jag tyckte denna turorial var jätte kul!
http://tryruby.hobix.com/

Så därja. Nu har jag nog inget mer att säga.

En del säger att diamonds is a womans best friends....jag vet inte jag....kanske är det ruby....