“Before you speak, listen. Before you write, think. Before you spend, earn. Before you invest, investigate. Before you criticize, wait. Before you pray, forgive. Before you quit, try. Before you retire, save. Before you die, give.”

Sunday, December 5, 2010

Ruby on Rails or the beauty of instant feedback

I was trying to write a GWT application that would help track the weight , calories and training for a person and make it run in the Google App Engine. Unfortunately I was always blocked by some configuration issues which made me delay it (being tired after work does not help).
So Saturday I thought maybe I should give this Ruby On Rails a try since I am into ruby a lot lately.
Using Netbeans I started with the sample "Depot application" and started to understand RoR a week ago.
After watching this video of DHH presenting Ruby on Rails and the concept of scaffolding I was able to get started in no time .
Today (less than 24 h since I started) I have a working weight tracking application which needs some improvements .. but it is working.
Being able to avoid the compile/deploy/test cycle and replacing it with just "test" was a huge benefit for me.
Instant feedback is really enlightening and reminds me of the reasons I actually loved PHP years ago. As a beginner programmer I wrote "working" PHP code that was horrible with no MVC separation .. or layering. It was a shame but it worked.
Right now when looking at Rails I see somehow what PHP should have been like ages ago .. the benefits of PHP and the engineering I used to see only in J2EE frameworks. And best of all I did not have to write one SQL line .. this is fantastic for me :).

Yes I know a Jedi JEE programmer must be able to just figure out things such that a single deploy will be enough for all fixes. Well it usually ain't the case and I find myself waiting for the machine to deploy only to find other things to fix .. which I thought were fixed and the human brain can only keep track of 7 things at a time .. add to this the typical open plan office space , personal concerns or other thoughts and you get minimal productivity ..
I realize running the projects inside Netbeans and/or Eclipse allows sometimes the automatic redeployment but even that takes time.
We have MVC , Active Record pattern for ORM , automatically generated unit-tests, integration-tests, functional tests , the famous convention over configuration rule , clean layers (except the service layer that for now I do not miss).
As I read in Bruce Eckel's "Thinking in Python" (for a while I wanted to choose between Ruby and Python) it's not the static type checking or compiling that brings so many benefits it's the use of unit-tests.
Hence I strongly believe well written Ruby on Rails applications can be equal or equivalent to J2EE applications for the same purpose it the test driven development technique is used. Moreover I wrote way too much Java to know that not using unit tests and a technology like EJB2.0 can lead to almost 0 productivity (unit tests seem to help as you do not have to start the container just for a small function you just wrote).
Yes the same can be said about PHP .. you can write horrible code in any language , but Ruby is the new high level language of the day and I tend to go with the flow.
Of course being an Java developer /architect wanna be I realize my 10 years experience in Java are going down the drain with this Ruby on Rails stuff but if I can get things done while having fun .. why not ?
Of course if I have to develop something that has to be distributed and integrate with other tools I will still go for Java but some smart guy invented JRuby meaning I could be running Ruby in a JEE container in order to do a slow migration.
Of course making a JEE application go through the build deploy cycle without issues would be nice , I just can't see how.
This link shows how much time we are loosing with deployment and 2.5 weeks a year looks like a lot considering just the salary of the average developer.

Sunday, October 24, 2010

GWT compiling performance

Just a reminder for myself of the required performance to compile a GWT -GAE Application.
This is on my Core i7 860 machine with only 2GB of RAM (for now).Some people might notice I am running on 1GB of swap so let's just say that this is the blocking issue for now. Still it's a core i7 running at full power for a while just to do this processing. I wonder if people developing with GWT do this kind of work on Core i7 980 processors (extreme hexa-cores processors).















I have created a Proof of Concept online for a Java application that I want to test but for now it is not quite ready to go public.
Google is number one for offering some things I could not find online
1) Affordable Java web hosting - this one is free for small loads
2) The GWT toolkit saving me from writing Javascript (I don't like Javascript very much).
3) The AI driven car which they are working on (but on this on a different article)-

Still the approach is causing me a lot of headache. You need to be able to write Java code which is then transformed into Javascript and then the whole package is transformed into a war and deployed on the server.
My other home hobby project is created as an ear and it only takes 40 seconds to compile , run unit tests and create an ear.
This one ( a very stupid GWT hello world) took me as much as 2 minutes to do the same thing in a normal non -blocking mode(no other consuming applications) 1 minute 30 seconds.
I need to look into it but I guess generating JavaScript is not quite instantaneous.
The benefit of writing Java code AND unit-tests is clear. You know exactly what goes wrong and why it goes wrong (if you are a decent Java programmer).


Nevertheless I think that adding another abstraction layer on top of JavaScript might cause some impossible to fix bugs ( without JavaScript knowledge).
It took me a lot to just compile classes and make GWT compile a different set of classes .. because GWT classes do not mix with backend classes such as Hibernate or JPA classes so you need to specify that accordingly.

Will it work ? Well I will let you know soon enough as I am preparing my application.

Later Edit : After a week fixing a RichFaces bug involving extending both RichFaces and Facelets frameworks (just to handle a ViewExpiredException and to make IE7 handle a redirect ) I have the feeling that GWT might be a better alternative then the JSF and Javascript combination at least in the short run.
Of course there is always Flex which is a bit safer but involves also learning anew language and buying the FlexBuilder.

Friday, September 17, 2010

The challenge

Here I am facing a new challenge : Getting admitted into the masters program at the university.
It's a Master in Artificial Intelligence which is a field I am interested in but it is not very easy to get in.
You have to pass an exam containing subjects from
1) Algorithms analysis and design -using the famous CLRS book ("Introduction to Algorithms")
2) Databases
3) Object oriented programming - mainly SCJP like questions
4) Subject of choice from 4 other fields - I chose AI here and the AIMA book.

I started reading the AIMA book and the CLRS book but it looks like the mathemathics involved is overwhelming ... I never was a math genius.

This situation raised a lot of mental blocks for me and considering that Monday I have to take the exam it looks like I am heading for a complete disaster.
But it never hurts to try. I need to get admitted on a 1 1/2 candidates/position situation , all things considered it is a lot better then some interviews I attended .

Also I realize that although I have a B.Sc. in Computer Science and Electrjcal Engineering I never used a lot of the knowledge from the university .. maybe this is a industry problem , maybe I am trying to learn astronomy when I am they guy that fixes telescopes.
Writing good programs involves knowing things like complexity , knowing if a problem is NP-complete and stuff like that .. but most of the times you can just call an external library that already figured this stuff for you .. so you don't have to.
Just for fun I wrote some Java code that performs a merge sort and another performing insertion sort and tried to enter 10.000.000 long array.
The difference was amazing. Even on my core I7 860 processor using it's 8 cores (4 physical and HT) it took 1252 seconds to do the insertion sort and about 159 seconds for the merge sort.
On the other hand most algorithms offered by programming languages are fast enough so I rarely was in a position where I needed to evaluate the algorithms.
So a part of me is wondering : shouldn't I worry about more important stuff then about this albeit important ,pretty much useless in real world enterprise development , but the part of me willling to learn new stuff supports this idea.
Now I need to get back to work and hopefully not be the last on the exam.
LE : If I fail I have the "excuse" that I studied for my SCEA certification and had not time for this exam , and I did not study algorithms design at the university .. and I am lazy :).
LLE : As expected I got a bad mark (6.91) qualifying me for the "tax" part of Artificial Intelligence. Since I am not eager to pay 1100 Euro to study AI I guess I can wait another year in which I can sort other issues in my life.
Anyway my view is that the exam was totally doable and thinking positive would have helped. No harm done anyway.

Thursday, September 2, 2010

Automating functional testing

So here is the drill : You need to wear the testing hat and verify the bugs .
You need to test a huge application and see if some bugs are reproduced.
Typically each bug requires about 3 page navigation and 20 clicks and you need to be able to reproduce it without issues and show it to a co-worker.
My attention span in the open plan office is not that big .. I always click some button I shouldn't have clicked and then have to start all over. Anyway bugs need to be fixed and issues need to be found. You also need to find new bugs and regressions.
Here is the solution: Automate functional testing.
What I used so far and can fully recommend:
1)Selenium IDE - first step is to record the tests and generate the required Java/Ruby Code
2) Use Selenium Java (or Ruby) driver and write the tests in the IDE
3) Start Selenium Server.
4) Run Selenium code from the IDE ( or a C.I. machine like Hudson,CruiseControl)

Here is how I test a simple login , search and logout(Ruby version) :

require "test/unit"
require "rubygems"
gem "selenium-client"
require "selenium/client"

class WorldFredomTest < verification_errors =" []" selenium =" Selenium::Client::Driver.new" host =""> "localhost",
:port => 4444,
:browser => "*chrome",
:url => "http://localhost:8080/",
:timeout_in_second => 60

@selenium.start_new_browser_session
end

def teardown
@selenium.close_current_browser_session
assert_equal [], @verification_errors
end

def test_login
@selenium.set_speed"2000"
@selenium.open "/WorldFreedom-war/mainPanel.htm"
@selenium.type "j_username","mihai"
@selenium.type "j_password","freewilly"

@selenium.click "login_button"
@selenium.wait_for_page_to_load "5000"


@selenium.click "searchFreedomsTab_lbl"
@selenium.click "j_id102:searchButton"
@selenium.wait_for_page_to_load "5000"
@selenium.click "logout"

end
end

Of course no warranty is provided for the code above. It just works on my PC.
Coding the functional tests should be done by a functional testing team (no connection to the actual development team) and bugs should be reproduced by means of running these tests.
Of course in an agile environment these tests are also used as acceptance tests.
Setting the speed of the tests is also good since making them run too fast will reveal performance problems with the application.

There is a catch here : No test will ever catch a cosmetic bug , a colour which is wrongly used or a table that is creating a horizontal scrollbar. You need a human for that .. and that human tester will be required for the foreseeable future.

Wednesday, August 18, 2010

Sun Certified Enterprise Architect

Today I received a mail from Sun (well Oracle) stating that I have passed the architect certification .. one of my objectives for the year.
What does this mean ? It means I have passed the highest Sun Java certification enabling me to actually design and implement a solution for an actual business problem. It is an external confirmation of my worth as a professional and it makes me confident I can use my UML and design skills at my job.
It has been a lengthy process starting from I could say December 2006 (officially in October 2007 with part 1) and really ending in July 2010 (on 23rd) with the submission of the assignment.
How I took the parts
In October 2007 while working in France I took part I - easiest of all
May 2010 I received the assignment and started working on it.
Two months and a lot of work latter I submitted the assignment .
August 18th - received email from Sun confirming I have passed.

I was really busy and tried to stay committed to the goal while maintaining a busy work schedule and other social obligations. I think SCEA is a worthy goal for people with less than 10 years experience.

As I posted on the blog I was really motivated to do it as I had invested some money into it.
Now I am working on a GWT and Java application which will be running in the Google App Engine and which will be available to plenty of users (me especially). But that is for another post.

My Ruby love -affair is still on and on weekends using my wife's laptop I do some coding in Ruby also but for now I can't find anything relevant in the job market - not even project-based.
I had to cancel the master program (did not want to get into debt to finance it) but otherwise I am doing pretty good.

Tuesday, August 10, 2010

The failure

Ever had the feeling you know precisely what needs to be done and yet for an unknown reason you fail to do it ?
This is not about the failure of my SCEA certification .. I am still waiting for the results from Sun after having submitted it on July 23rd(although I might fail the cert too) , it's about failure to keep things over control.
The last months where a continuous and accelerated degradation of my life .. in more ways then I am willing to admit.
Although I am quite confident that a GTD style needs to be used and applied at work and in personal life, that diet food is better for me,that TV time is useless time e and that concentration on work things is mandatory I cannot do the right stuff.
I found myself procrastinating and browsing car forums despite my commitment to being car-lite or even car free.
I know debt is bad but I just applied for a credit card .. it is really unbelievable.
Here I am at 2.00 AM writing on the blog after not being able to sleep for 3h.
I blame the high daily temperatures for this (35-37 Celsius ) behaviour.
My mind is obsessed with 2 idiotic things : buying a laptop (and making the purchase look necessary) and controlling expenses ( I have been an avid reader of GRS)
Since working for one employer is a risky endeavours I am trying to find other income sources which can finance say a laptop purchase a month at least.So far not very successful with this issue.
I am looking at
1) Freelancing - slim chances in J2EE field
2) Google Android development - requires a 500 Euro investment in Android phone and offers
little profit guarantees
3) Doing something completely unrelated (driving a taxi maybe ? ).


In other news :
My Decathlon Triban Trail 7(trekking bike) is officially 3 years old .. and has only 3000 km on it .. I need to increase the mileage on it.
Today after 3 months I managed to see my weight going under 100 kg again - 99.9 kg.
My wife agreed to let me buy a road bike when I reach 90 kg so I must not give up.
Last but not least after spending a lot of money in our short holiday in Amsterdam we got to see that fascinating city. I got to walk and bike and .. yes smoke pot in Amsterdam :). I wish I could write more but all I can say after 4 days is that Amsterdam really is the city of freedom and it is fantastic for tourists a great place to spend some of your holiday.
On the other hand I realised that although it is a bike paradise ( you are king of the road with your bike there) it was not designed to be a bike paradise (neither was most of Holland) , the bike simply imposed as the best solution for the city transportation (the lands is very flat).
I have met another Romanian guy which as hired to work there this month. By checking the prices and the salary he quoted I know that it is better then what I make .. and many of my colleagues. Unfortunately for the moment such a thing is not possible for us.
Oh .. did I mention my English looks pathetic when compared to the English of people in Netherlands ? I should have... because I felt embarrassed there (this does not happen very often) for not spelling words right in English.

Well I wrote here for 30 minutes .. it's time to get some sleep and re-organize in the morning.

Saturday, June 5, 2010

About motivation

Since last month not much happened. Except loosing about half my co-workers to competition (better pay, more responsibilities ,respect were the reasons).
I started about thinking about motivation a lot this year and I see that in fact it is very hard to define it . In my mind it is obvious that a developer has to be well paid enough to not think about money issues too much but also that financial incentives do not work once you reach the "I can afford to live well no matter who I work for" status.
As Joel put it in order to motivate developers you need to give them a better work environment then they have at home and this means either hire really poor developers or give them a top work environment. Link
And I started evaluating other tools for organization that is the famous "Pomodoro technique" which I find very interesting even in a interruption prone environment because it teaches you to stay focused and also deal with interruptions comfortably.
The good news about having your colleagues leaving is that the great open-space is a lot more quiet so quiet that it is strange but the bad news is that management is so shocked nothing gets done around the base.
The weird stuff is still that my monitor is still placed in everyone's view and that I still feel like a rat under observation and that makes me browse StackOverflow or loose time on the internet on purpose .. more than I would in a more comfortable situation.
So as I want to finish my SCEA assignment and essay by June 27th I realise that I am a lot more motivated when I pay money for something.
I invested 535 Euro's in this certification and I want it done :) . I look at ways to improve the diagrams , to analyse the system and to improve it generally as much as possible. And I will not be paid .. but my efforts will (hopefully) be recognized.
On the other hand I was thinking about what level of salary would motivate me to actually deliver working solutions .. the sad part is that I would strive more out of professional pride (one I pass a certain level and I am close to it) then for money.
You can always fake your motivation but your pride is something you can't fake.
I will also post the youtube link here.

Monday, May 10, 2010

Following my yearly plan , going to the darkside ?

I am back again ..
First thing .. I managed to get to Constanta .. 10 h in the first day and 12h in the second day.The good thing is that I got there the bad is that I was among the last.
Strange enough there were several guys with new road bikes that did not make it.
The worst local brand "DHS" was present , some competitors used the damn bikes and got there .. with 100 Euros bikes. It's not all in the equipment after all.
The organization was not perfect and strange enough only the ones that left the group and went ahead got to Constanta , 60 km before a call to buses was made to pickup everybody , I and a couple of friends on MTB's were ahead and managed to continue.
The final descent to Constanta (at 21:00 I think) was made in complete darkness and at full (MTB) speed .. fantastic.As I and other fat cyclists learned 150 km (90 miles almost) are not something to do on a MTB when fighting wind and hills. Eventually we all got there .. but it was not easy.
Getting to Constanta made me think I can do what I really want to do .. so last week I went to Iasi and finished "Programming Ruby" by Pragmatic Programmers .. I really think I am able to write basic Ruby programs but still I am not ready to make the switch just yet but I do intend to use Ruby for prototyping.
And finally I bought the vouchers for SCEA as I intend to pass the Sun certification finally (part 2 and 3). I decided to really dedicate 2h /day (at least) to it to make sure I pass it before July 23rd.
Last but not least I intend to start a master in Management ( Management of IT projects) which finally puts me in the "DARK" side of programming - management.
To quote Jack O'Neill in Stargate : " I spent my whole life sticking it to the man .. now I am the man".
For starters I still think I need to pass the certification to increase the chances of getting a real architect Job .. or a senior software developer (as in respected senior software developer not the stuff I have to get through)


Written from my Thinkpad

Monday, April 26, 2010

Biking the metric century and Ruby

So I am back on the bike and although I did not loose any weight recently I managed to get back on the bike for 3 weeks now.
For the weekend I brought my Decathlon hybrid bike to Bucharest from my hometown.
It was a 5h 120 km long trip with a lot of tail wind :) making me coast with 25km/h.
I was tired but I managed to break my old 7h and a half record with the Dahon.
Kind of scary considering I will have to do 275 km this Saturday and Sunday together with more trained people at a 24 km/h average (without the tail wind).Guess I will post Monday morning about it.
Also as a programmer I started to learn Ruby as a new programming language.
Funny enough it is a scripting language but is very popular and then I do agree that a true programmer must be capable of learning more than 1 language.
So I am a Java programmer but being able to use Php and/or Ruby means I am not limited to one (albeit very good ) technology when finding the solution to problems and that is an advantage.
On the other hand I do not think I will ever master Ruby as much as I do master Java.
While choosing this new language I was debating between Python and Ruby .. and I still am a bit but as my favorite "guru" Martin Fowler supports Ruby .. and as the "pragmatic programmers" chose Ruby I need to investigate it first.
I have in my mind to write 2 apps to replace my current Java and PHP ones.
One in Ruby (intranet) and one in Python (online on Google App Engine).
Meanwhile I want to start on my Architect certification but apparently can't afford it.


Written from my Thinkpad.

Monday, April 12, 2010

An old 2006 post ..to remember

Here is what I thought on J2EE and PHP in 2006 :) 4 years ago:




Hello
I used to develop with PHP because I had no J2EE tech experience.
I wanted to develop something fast .. with PHP it really worked (I was in my 4th year at the university)-and I am thankful for that ...
as I had a strong C background then.
At my previous work place I was employed as a Java web programmer but then forced to switch to PHP because they said that J2EE was not worth it
... thinking back about the bussiness I would agree now .
Let me tell you why I moved to J2EE
1) I have a BsC in CS and PHP programming has no methodology attached(I would like to see some design methodology applied to PHP but can't)
, no patterns that you can use as guideline .. except when you already know them from other languages and implement them willingly .. .that's not always the case.
2) When my ex-boss gave me the specifications for a new project they where so scarce that it all sounded like monkey bussiness ..
do something that looks good and it's simple (easy to say for the boss). I had to reuse code from the existing codebase (written in a spaghetti form) but using
the high-tech method copy-paste (or monkey see -monkey do).
3) Being a PHP programmer .. as amazing as it is for a beginner in programming languages is seen as an underqualified job for a person with a BsC in CS and you are
paid accordingly : I now earn 70% more as a beginner web programmer in J2EE then as a PHP experienced (3 years) programmer.- I learned patterns .UML , EJB , algorithms ,OO tehniques and stuff that a PHP programmer does not need to care about.
As a PHP programmer I had difficulties explaining why we should use Smarty at my work place .... they thought it was a waste of time to separate bussiness logic from presentation .. and stood by the idea until I left (I used to develop my code with OOP when posissible and they called the best thing for code reuse indentation(to copy-paste it better).
4)Bussiness applicationes (E-Bussiness) demand the use of J2EE desperately .. PHP is really behind here.
Of course if I want to develop some blog site it would be ok to use PHP and Apache2 and place it on my old k6-II server with a MySQL support.
But ... if I want something like E-bay or Amazon .... I can't even think about the complexity involved with PHP.
As a hobby or as freelancing PHP rocks ... just don't use it for bank operations
PS : What really amazed me was when some of my colleaques presented their graduate projects (with advanced software engineering tech involved) in PHP
while I struggled to develop it in Java (without EJB it's true) - they have done a nice job and followed rules from SE ..
but for me PHP was not even on the list for a serious project.


For the record this post was also written on my old Thinkpad .. I love the machine if only it would be reliable.

Sunday, April 11, 2010

Back on the bike.

I admit it . I am unable to keep a diet :) . I managed to loose 20 kg in 2 months .. and now I am putting it all back.
Because I am a bit desperate I managed to fix my Dahon D7HG (with the help of 2 bikeshops).
The only big problem I have now is the fact that my Shimano Nexus 7 needs some adjustement and nobody can do it for me.
So recently I managed to get some riding ... about 100 kms in 2 long weekends.Needless to say after each ride I feel better , more relaxed and in a state of deep harmony with everything around (yes .. Nirvana,flow .. you name it it's great).
Starting tomorrow I will start commuting to work again and see whether the magic effects of biking work. They usually do :).
I am committed to doing about 100 km /week .. with 24km commute/ day I should easily get to 120km + other shopping rides .. it should do the trick.
People are starting to get back in their cars and today the used car fair organized each Sunday in Bucharest caused major road blocks .. it looks like we finally finished with the economic crisis. I will keep riding my bikes nevertheless.
Also I am trying to do a group ride on May 1st Bucharest-Urziceni -Constanta .. a 2 day touring trip for which I will take the old hybrid (the big wheel size is suited for touring ).
I decided to continue to improve my concentration skills and for once not to try to switch jobs again .. some continuum is required in my career.
And the best part .. my Thinkpad is working .. with interruptions so I am typing this on my old (2005) R51. I will not buy another laptop .. not ever again at least not for serious development work.
I bought an Asus K52 JR for my wife and guess what it is also overheating .. a brand new 2010 laptop.
Oups .. had to switch back to the desktop to finish the post .. damn Thinkpad died again .. so not more then 1h of productivity .. kind of forces you to be in the zone.

Monday, March 22, 2010

The great "open space" move

So finally it happened. After 1 month of being threatened(that is planning) we were finally moved to the "open space" .. a room where people get to work with little to no natural light , constant noise and interruptions and impossible to change temperature,ventilation,smells .. the nightmare of every introvert (and I am definitely one)

Anyway I discovered this was not as bad I expected .. not when your boss is right there on the floor next to you. People would finally refrain from making noise when they could be seen very easy and that is a good thing (something I did not count on).
However I expect this to change very soon and I prepared some classical music to listen to while coding ( the classical headphones solutions). I can't stand white noise for now so I will have to find good music.
Of course my monitor could be seen not only by my boss but also by 4-5 other persons plus passers by on the hallway.
Of course my back was turned to a door (and a high traffic area) and I had no saying in how I would be positioned. Of course I was told that nothing I do should be private so unless I have something to hide I should be happy people can see everything I do always. Of course there is no privacy whatsoever.
So the classic solution to this would be to stay late (and do overtime) to compensate for the lack of concentration. Before I did that and in the 2 h of overtime(when finally I would get some peace and quiet) I would fix things that I couldn't in the 8h at work (and enjoy coding also).
Well not any more .. I decided to spend exactly 8h at work and then run away as fast as possible (or bike away I hope very soon). I do not need nor want to code in these unfriendly conditions.
The next time my manager will tell me that the performance is poor I will tell him to read Peopleware (not even gonna buy it for him),Code Complete and JoelOnSoftware ... enough is enough I would rather spend more time on the bike than in the bull pen.


Which brings me back to biking ...
Hopefully my trusted Dahon D7HG will be fixed this week and I will enjoy some full 28 km round trip commute to work. This should help concentration and also my general well being (not to mention weight loss). So hopefully this blog will also be on biking again ..
Just thinking about biking makes me happy so I am even thinking about buying a 26'' foldable bike(Dahon Matrix , Montaque Paratrooper) if I can't fix the old Dahon.
Unfortunately I can't afford a new bike for the moment not since I had the accident and ruined my wife's bike.

Tuesday, March 2, 2010

Steward delegation vs. Gopher delegation

In the beginning of the year I finished reading 3 very interesting books:
"Getting Things Done" - David Allen
"7 Habits of highly succesful people" - Stephen Covey
"How to win friends and influence people"- Dale Carnegie

The most influential for me was definitely "7 habits of highly succesful people" and I like the way the author describes the leading of a team.
There are principles like this described in Dale Carnegie's book and as a human doing knowledge work - computer programming for the record I do agree with the "stewardship" approach.
The problem is that the IT world especially in Romania is filled with the "Gopher" delegation that is the boss controls everything and is responsible for everything and the developers are just dumb peons doing the grunt work.
I do not think this is a productive approach for either the company or employee as the employee looses his confidence and ability to learn and the managers of the company get way too low into details to do anything productive.

Today was just another day when I could barely think. I am trying to setup a steward delegation system in my team that is everybody get's his section to develop and be responsible for and we meet at the end of the day to see how far we all advanced.

Unfortunately the way the before-me leader did it was by gopher delegation and people try to follow the same pattern. I have to admit with beginner developers it is easier to manage by Gopher delegation then by steward delegation but I feel that I am going nowhere with Gopher Delegation.
So today I did implement about 95% of what I wanted to implement ... but people in my team did not do so well and I was supposed to guide them and help them. The thing is I do not always know how to do it and I can't always analyse their problems as I should - the result is a mountain of interruptions coming at me and destroying the one thing I love when coding : " The Flow".
No flow means no productivity and people should understand this sooner or later when doing the coding. Did I mention that "Gopher delegation" style of management is always associated with open plan offices ?
Communication is valuable , but when talking about your holidays while people around are working I suggest you do it elsewhere and yes I know you will hate me for that , it's just that I don't care.

Thursday, February 11, 2010

Debt-free

Finally I managed to pay for my car so if I exclude my rent and other bills I am finally debt free.
My first goal for the year is accomplished.
The feeling is very good to say the least .. so good that I don't think I will sign another loan contract again. I read this on a site (can't remember where) : "Think before you act , listen before you speak , earn before you borrow" .
The last part is the one most people don't think very often until they are forced to by economical realities.
As far as I am concerned I think it is just a matter of economical planning for a person and/or family.
If you want a new car and you do not have the money for it is simply means you can't afford it.The same goes for a new laptop , bike or anything else.
Borrowing money to buy these items would mean just lying to yourself.

Of course the culture we live in and the media always go for instant gratification at any cost. "I want to have it and have it now" .. yes but at a cost the cost of your future and your life. Guess who gets to use this trick : the banks world wide.
That was before the crisis. Commercials would show a bike (with an almost naked woman attached) and say : "Do you want to wait until you are 80 to get this ? " and people would buy that kind of nonsense and run to the bank asking for the biggest loan possible. Something like 10 years loan for a car was not unheard of and people would buy a 20.000 Euro car with 400 Euro salary/month (which is financial suicide if you ask me). I kept hearing : 20.000 Euro is nothing .. from people that would need 4 years in salary to get that kind of money (never mind saving).
The bank profits were huge and more important they would expand to almost every street corner.
People including the ones that should have been wiser (my dad) kept telling me that saving is not worth it and getting debt is a good thing .. but I still believe that even in business common sense is more important then the so called money-sense (or at least as important). Selling your future is never an option (never ever) and I hope people will understand that before our civilisation crashes down burning.

I read the famous book Rich dad,poor dad and the one thing I agree with is that borrowing for non-assets is something a smart person should never do. So borrowing money for a car/computer or worse case food is something that should never happen.. borrowing money to fund a start-up on the other hand might be ok if you believe in it and are willing to make it happen (but even then saving might be better).
Unfortunately even in my country it has become impossible to save money for a house (in a short period of time) so renting is my option for now(especially because the place I rent is ok and not very expensive).
Now I need to learn about something only the people in the communist past of our country did .. saving (and maybe investing).

Friday, February 5, 2010

R.I.P. Sun ...

For those of you browsing java.sun.com you might have noticed the Oracle name and tm there.
This Blog entry by James Gosling says it all .
I have been a Java programmer all my life (now just starting with Flex) and I really cannot believe that Sun is gone .. and MySQL will be gone soon enough.

Monday, February 1, 2010

The rebuild :)

Finally after working out the plan for 2010 (and taking into account my bonuses and raise) I decided to buy a faster computer sooner.
So here it is the config :
CPU : Intel core i7 860 (the best price/performance for a core i7) 2.8 Ghz Quad core +HT and 8MB L3 cache.
Memory : 1 GB (very cheap) Zeppelin 1333 Mhz memory - TODO upgrade it
Motherboard : Gigabyte P55A-UD4 - that is 333 or Serial Ata 3.0 3x power and USB3.0
PSU : used the (2 month)old one a Rasurbo silent power from my old Sempron
Case : Nexus version 1 aka Caterpilar - the quietest case I could find for less then 100Euro
GPU : Gigabyte Ati Radeon 4350 (yes it's slow but it works out nicely for my moderate gaming needs).
The best part is that I managed to build it all my self. I have changed some components before(CPU, GPU,RAM,RAM) but this is the first computer build I do by myself and is .. let's say very empowering to know that you can do this and have total control over your configuration. The shops selling parts would do it for 10$ (3o RON) but there was a 2 week waiting period and you were forced to buy the parts from one shop (and not use your old parts).
So I managed to get the total costs to around 550 Euro's (around 750$) for a great machine with good parts waiting for upgrade.

Needless to say Java /GlassFish/Mysql run a lot faster (up to 5 times faster) than my old computer BUT hard disk performance is still the bottleneck in some operations.
I could have used the money for a core i5 and more memory but these processors are all expensive so I feel fine with what I got since I can always add more RAM when I get some cash.
What I have here is a wonderful bicycle for the mind and used properly it could be an amazing tool and I feel almost guilty when I use it for gaming or web browsing .. hopefully the time and money invested in this machine will be worth it for the next 2-3 years.

Sunday, January 17, 2010

Project management .. or how do you get 1 baby in a month using 9 women

Since I started doing some kind of mini-project management I worked I realized something shocking. We (the developers) are just resources .. like a car engine or robot. The thing is that we are very expensive resources and we need to deliver code to actually ensure the company has profit.
The way management views us is that simple. And recently I have started to do it myself when using tools such as GanttProject. As you can see below this tool actually runs on Linux which makes it a great tool for new non-corporate project managers.















Ever since I started as a developer I had my conflicts with project managers. They would keep insisting that the task should take 2d because the project would not be on critical path otherwise .. and I would just say : It will not happen I think it takes 4 days (at least).
Now I get to do the estimations and the only way we could do the estimations right in my opinion is by using something called : Evidence Based Scheduling
I do not think you could ever estimate a new task without having it done before. This is not picking apples activity this is a complex endeavour. It is quite hard to say whether I can split a task between 4 people and parallelize it.
So as a team leader I am expected to make the right choice when doing the Gantt Diagram and sending it to management but I always tend to err on the safe side because I happen to know how it feels to be stuck before an error you could not possibly understand or to need something from a fellow developer and that guy is not available. Or to have some other priority taking away one or 2 members off your team.
The result is that I always finish on time and even before that but that is not always good because that time is always too long.
As far as I am concerned I feel obliged to honor my own estimation and that is that.
There are 2 ways of doing task estimating and only one is right in my view
1) We have a project deadline (already specified in contracts and signed for) let's split it between the developers and see how we can deliver it. The developers just have to do it in the specified time (or we will fire them).
2) We need to implement a project. We get together the team. Each developer chooses the features he needs to implement and gives an estimate. The team leader( me ) comes up with a sum of all estimates + some slack and the deadline is specified to the client (upper management might add some more slack).

Fortunately people understand that they need to do it using the 2nd method (at least where I work) but there are still shops doing the first method (been there done that) and these shops do not stay in business for long.
I like to be organized and I did my best to study time management techniques or to be effective in my work so I like to actually create a schedule and respect it (as a true professional) but I just don't like the idea that everything is already planned for you and you the developer don't get to actually say how much a task will take even if it is assigned to you. Developers that can't be trusted with estimates should not be trusted with code .. but (some) project managers seem to miss this point so they do the estimates for the poor guys and ask them to come during Weekends to get the work done.
LE: could not help it 9 women give you 1 baby /month :)