02 May 2012

Ramblings about life and software in general


“Good news everyone!” , said the nutty professor in Futurama. And good news indeed. I get to talk another year on the Case24 software engineering conference in Zagreb. And I'm the first talk of the day with my talk about “Agile architecture with distributed teams”. And the time I have to talk about this really big topic is around 30 minutes. When I talk about this it usually takes me around 2 and half hours to scratch the surface.

I plan actually to focus on the key getaways I learned about working with distributed teams and agile architecture. In 30 minutes it is the only thing someone can really tell.

Fortunately I get to also write a paper on the topic in which I can get in more deeper in the problem space.

Software developers really should write more. It is a skill rarely seen in the software cummunity. Really, who of you guys writes regular documentation or event writes something which usable or even re factored or reworked as the project progresses? A really small number of people really.

But without good documentation we cannot do our work. See PHP or .NET for example both good examples of documentation overflow. You can learn PHP only from its manuall and on MSDN there is a ton of things about which ever way a specific class may be used. Java on the other side didn't really made be fuzzy and worm inside with the state of its documentation.

I've started refocusing on .NET lately watching BUILD presentations, reading about some new things doing my katas with .NET and Mono code. And was really taken aback in the difference of the quality of learning materials the basic platform documentation has for .NET and Java developers.

I've done a small 2 day Java project lately and it was Google/Stackoverflow all the way. I'm working on a PHP project currently and its is only the PHP manual by good that is the best piece of documentation I've ever seen. It is so freaking useful , a shame PHP is littered with problems as a language.

Of course .NET has a problem of its own , its like a flood. Microsoft really is getting a ton of things out if its development engines out into the world and you need a real control mechanism to stem the tide of information if you want to survive the day. That would explain some of the behavior I've seen in some .NET developers which can be described simply as “Ok I learned this, and I will stick to as if its the only parachute in the airplane and it is about to crash. “ Getting some of those guys to try something new or change paradigms is really, really hard . On the other hand I've see a lot of PHP guys with the attitude “Oh God let me learn and try something new, it is is so cool and so easy I just want to pile so many new things.” The few Java developers I know are mostly silent guru like types who for any problems just say “It is not a problem”. I do not know what to make out of those yet.

As a general rule more if more things are written and maintained around a technology the better, but if too much is written people will shun most of since they really cannot catch with everything and do something productive at the same time.

I've just started things what is the difference in the effort of training someone in .NET and PHP. I've done both. I've trained people to work in .NET (ASP.NET, C# , SQL Server, Nunit, Javascript) and PHP (PHP, MySQL and Javascript) and it is easier to train a complete newbee in PHP then it is to train the same person into .NET. It also takes longer to train someone to work with .NET. I think it has to do with the fact that .NET solutions have more complex code bases then PHP solutions with the same functionality implemented (lets face it .NET is more rigid then PHP and you really need to type more code to get some things done).
On the other hand you can be a better engineer with .NET since it enables you more clearly design and develop your system then PHP. PHP is more liberal and chaotic and while you can make good design and engineering work with PHP it takes more effort and is harder to battle entropy then it is with .NET. Of course bad coding is bad coding and no language can replace it. But given the fact that more effort needs to be spent in learning .NET then PHP I think some people just give up, or learn good practices or just raise more awareness around things then before.
It was just so with me. I've started as a PHP developer and then after a three or four years of constant PHP development I've switched for around a year of Python development (still do it some times) and the for four years of .NET work with mix matching PHP work. And it changed me. It really did.
I've transferred my PHP skills and way of thinking around the code to .NET , saw that some things do not work that some things do work and then I've returned to PHP with .NET experiences which I could transfer and apply to PHP projects. Like energy regardless on the platform or language you are working on nothing is lost, knowledge just changes state.

Life is complicated, software development is complicated as hell , it is not easy and it is not pretty but I love it none the less just as I love life and my family. To me being an architect and technical lead or just a developer is natural like breathing and cannot imagine my self doing something else.