Archive for the 'software' Category

27
Nov

Programming language

I was browsing through some resumes lately and besides the standard templates and paragraphs everybody has, there was one thing that jumped out. In the languages paragraph, one person was claiming to be fluent in the following languages: Dutch, French, English … and … C#. I admit, I was intrigued.

Why would one consider a programming language in the same area as human language? Is it just a trick to make a CV stand out or are these languages essentially the same? How can you find a common denominator to indicate fluency in these languages? Do you read, write and speak C# as well as your native language?

Looking at a definition of language: "a systematic means of communicating by the use of sounds or conventional symbols". Pretty obvious, that does entail both human and programming languages. Still, it somehow doesn’t feel right to think in the same way about human and programming languages.

On human language we often split up our knowledge in 3 areas: reading, writing and speaking. Where reading is the ability to understand text, writing the ability to create text for others to understand and speaking the rapid fire combination of the other 2 abilities.

Maybe if we translate that to programming languages, reading would become the ability to filter out the logic from a piece of code and see the underlying architecture and patterns. Writing could maybe translate to the ability to create code using a base set of functionality from the language, much like most junior developers produce code. Speaking in the end should be what someone more senior does. To know and understand the strength and weakness of a language, the standard interfaces and how/where to use them.

But still, I’d argue to keep them separate on your resume…

27
Jun

The end of an era

Today has been marked in my calendar for a long time. Today is the end of an era. Today is the last day of Bill Gates at Microsoft.

We all have an opinion on Microsoft and their products and strategies. I don’t care what camp you are in, if you’re totally pro or against Microsoft. There is one thing you can’t deny. Bill gates had a vision and shaped the IT industry.

He had a dream of "a computer on every desk and in every home". Looking at where we stand today, I personally think he overachieved. It’s not just a computer on every desk and in every home, it’s gone far beyond that. And if you want it or not, Bill gates and Microsoft have shaped a large part of this, for better and, most likely, also for worse.

I’m not going out on a "all hail" rant for Bill, but respect is definitely due.

25
Feb

Tripit, it just works

Albert Einstein once said: "Everything should be made as simple as possible, but not simpler." That’s exactly what TripIt does.

All TripIt does is aggregate all data that you get from confirmation emails when booking flights, hotels, rental cars, … . Adds in bits of information scraped from the likes of wikipedia, the weather channel, google maps, … . It doesn’t require a genius to come up with this, parsing some standard generated emails is a piece of cake. Adding in extra info may require a bit more effort, but still isn’t rocket science. Nothing all that brilliant at first sight, but here’s the catch.

It’s dead easy to use, it’s fantastically thought through and cleverly crafted to minimize your effort. The lazy web at it’s best.

Really, all you do is forward those nasty gibberish confirmation emails. Tripit will figure it out for you. It doesn’t require a lengthy, time consuming, sign up procedure. Since you sent them an email, they know your name and your email address. That’s enough personal information for one day isn’t it?
Once you forwarded your first mail you get a nice return mail (caught by my company spamfilter, but they are aware this happens often, unfortunately). That return email contains a link so you can quickly go check out your travel plan, at that point you’ll be prompted by a "real" sign up, which has a nice skip button. So you can easily use it without having to register. Ever!
Further in that return mail is also a username (your email address) and a password, for future log-on purposes.

Finally, to add in some 2.0-ness, you can share and discuss your travel plans with friends (or colleagues) and figure out who out of your network is close to you. I still need to get some friends hooked up on this, so I can start checking this thing out :)

Conclusion. Awesome, it simply does what it needs to do, without making it complicated, time consuming. And since 90% of the population uses the same top airlines, travel agents, car rentals and hotel chains, it’s able to parse everything most people will ever need (you can still manually add/change if you really have to). I know the year is still long, but this is already a huge contestant for my personal "tool of the year" award!

Also check out the demo videos. It really is that simple.

19
Feb

Product ownership

I’ve been catching up on agile development lately, more specific, on the scrum methodology.

After sorting through various books, course material and tons of useful talks to colleagues, peers and agile people (not necessarily claiming they are agile but definitely adopting the concepts). First of all, I wish to thank all of these people for the time they took to educate me. I feel at a point now where I have a grasp on how it works and I’m past the steep hill in the learning curve. A good time to look back.

Starting with a statement: "Having seen the waterfall system in action one to many times, I am sure there is a better way". This, combined with my current employer wanting to adopt scrum, is what drove me down this road. Being on the operational side of the building, I have been experiencing product ownership from up close and here’s what I think are important qualities for becoming a good product owner.

  1. A deep understanding of the problem at hand
  2. A good enough technical background
  3. Great communication and negotiation skills
  4. A "business sense" and a vision
  5. No other job

Unfortunately, many companies (including mine), horribly fail at most (or even all) of the above, especially the last one.

In the coming articles, I’ll be elaborating more on those 5 points (= nice hook to have some more articles on my blog :) )

14
Jan

Why we will not have senior developers anymore

I have the pleasure of working with some people who live and breath software development. Coming from the old days where assembly was new and cool and above all something that made you think about the inner workings of a computer.

Now what makes a software developer senior?

These days it seems like becoming "senior" developer means having a few years of experience under your belt. You can easily have senior guys who never did anything else than php or .NET development. (nothing against php or .NET if used under the right circumstances, don’t get me wrong).
To many businesses this would qualify as someone who would be labeled ’senior’.
I think there’s a bigger issue here. Those new senior developers don’t have that deep understanding that many of the current senior developers have. They never had to be bothered with allocating memory or worrying about limited hardware resources.

The current trend seems to evolve to "if we have an issue with resources or performance, we’ll throw some extra hardware at it". I understand Ruby relies heavily on this principle, after all, development time is more expensive than cpu time.  A fact, just like looking good is more important to Paris Hilton than having something useful to say.

I personally doubt this level of seniority somewhat. They might be very good developers, but in their own language. When it comes to high performance apps and scalability, often it requires an intimate understanding of the inner workings of a compiler, down to bit level.

The "old" senior developers know for every line of code they write what bits move around, how that relates to the heap and stack. They intimately understand Pascal and C strings and the (dis)advantages of both, or why certain algorithms are more scalable than others. Simply because they grew up having to care about every bit in that machine.

Our future senior developers…

These days people often don’t get down to that level of computing. They have fancy things like objects, garbage collectors, excessive amounts of disk and memory available, … . And they often start out with a higher language like Java or C# which makes them unaware of all these intriguing little details that make or break large scale applications. I don’t blame the persons, those who really want will still find all the information necessary to get that understanding of the machine.

I think we should start reconsidering our school system (for Belgium for sure) and start teaching our computer graduates the basics first before letting them have a go at a high level language which takes away a lot of the machine related problems. In their first years, give them an 8086 or an emulator that lets them run assembly. Make them aware of address registers, stack and heapspace, allow them to fool around with 0 terminated strings and the up and downsides. Make them feel the pain, they will even more so appreciate the higher level languages, but above all, they will learn why some things simply require a lower level language.

This is a call to all deciding people on school boards. Don’t try to have a sexy education with fancy new languages, just get a good old hardcore education that teaches what they need to provide the world with senior developers.