portrait

End of Line blog

Thoughts on software development, by Adam Ruka

Introduction

My foray into programming began for real when I started my studies of Computer Science at the University of Warsaw. It’s a very renowned place to study IT. I’ve heard once (and I’ve been repeating it ever since ;p) that it’s the third best computer science university program in the world (after Stanford and MIT). It is home to many programming world champions and winners of prestigious competitions like TopCoder, both individually and in teams. Compared to them, I was small fish. The beginnings were rough, but I finally felt like I found my bearings in the last years.

During the course of my studies I was introduced to a huge array of programming languages. Ranging from what I would call the “mainstream”: C/C++, Python, PHP, to, some would say, “weird” ones: Pascal/Delphi, Smalltalk, Haskell, to ones EVERYBODY would call weird: Prolog, OCaml, Dylan, Common Lisp. I think this was a great aspect of my studies. It allowed me to have hands-on experience with probably every programming paradigm known to man, and understand their nature more deeply: the motivation behind creating them, the advantages and disadvantages of each, the trade-offs their authors were faced with and why they made the design decisions they did. This sort of exposure also makes you more aware of some aspects of programming you might take for granted otherwise. You can’t really appreciate garbage collection, for instance, until you’ve wasted many hours wrestling with manual memory management bugs.

Astute readers might notice a glaring omission in that list: Java. And in truth, I have not taken a single course that would teach programming in Java during my studies. However, writing a project using it was an option you could choose in one of the classes. I guess they assumed that after being introduced to object-oriented programming with languages like Smalltalk and C++, Java should be a piece of cake. And they were kind of right – I was able to code in the language instantly. What is more, I was amazed at the productivity that Java offered. No memory management, no hassles with strings, no troubles with including outside libraries. And IDEs just floored me. You mean you can underline any errors while I type, without a separate compilation step? And suggest the class and method names, so I don’t have to remember them exactly? And all of this is FREE? I was in heaven. From that point on, whenever I had a choice of programming language to be used for a university project, I chose Java.

Well, the university years flew by, and before I knew it, I had graduated. It was time to start looking for a job. Since I’ve done my master’s thesis project in PHP, I was fed up with dynamically typed languages, and so I decided to see if this whole “Java” thing was popular in the industry. Well, to my delight, it turned out it was, and very much so :).

I don’t want to bore you (more than I’m doing now, at least) with all the details of my career history. The most important part of it is that I wound up at Pragmatists, a fantastic company where Agile, Extreme Programming and playing darts are held in the highest esteem (by the way, if this sounds interesting – contact us! We’re always looking to hire good people).

The rest? That is, as they say…, well, not history actually, but you will have to read the blog to find out :).

EDIT: note that this article is fairly old, and my current situation is a little (OK, a lot ;p) different. For an update, click here.