Skip navigation

Maybe this happens to all developers, but I am terrible estimating the effort to implement a feature. Sometimes is less but even more times is more.

Today was a day that I underestimate a feature. The feature sound really simple, at least in the bug tracking tool: there’s a save that it is not working correctly, a field is not getting saved, so fixed.

So I went to the code and first, I had to diagnose why the app is not saving that specific field, then you have to right the code that fix that, code that has to shepherd the data from the GUI (where I had to fix WPF bindings), to a web service client, to the web service, to the database. Those are 4 layers in which you could miss something and then you have to diagnose again.

And then you have to do unit testing. And integration testing.

Man, a simple task like this can expand during the whole day: you need to pay attention to the details and even then, you could have miss something, and back to square one.

At the end, you do all that and test as much as you can, and if you are a little lucky (or if you have developed something to keep track of the details of a feature [I’m trying to figure out mine]) then you are done and everything is alright again.

I do not now why it have took me all this time to understand one simple thing: the only way to get better at writing software is to write software. Sounds ridicule, I know, but I just did not actually understand it until now.

I am a 28 mexican programmer that start programming something like 10 year ago, that is, when I got into what you could call College in Mexico, getting a Bachelor’s degree on Computer Systems.Yeah, that was my starting point in programming, and yeah, I also think I started pretty late. When I found out what programming really is, I was in love, I mean, I loved it, and still do, but I just do not why I never understood that, to be as good as I want to be, I need to write more and more software.

I think there are several causes for this lack of understanding:

  1. I have never thought much of myself. Like many (I would like to say most) of the programmers I know, I do not think I am really “good”. I know that I know a lot of stuff, but still, I just do not feel it, and it is not a false modesty or a case of “humbleness”, I just do not feel it. Even when I am one of the guys that other guys go to help them figure out a problem or design a new app.
  2. I have read a lot of stuff. Technical and non technical stuff, and I got from that I have to read a lot code, and be better at reading code, than writing, because, let’s face it: as developers we spend most of reading code, debugging, looking at specs or references from some APIs, and, lastly, we tight all that together with the magic strings of our language of choice.
  3. I wanted to know everything. I know that I can not simple know everything, that just plain impossible, but I wanted to give it a try. So read about programming languages, I read about new technologies, I read about protocols, theories, programming paradigms, everything and anything that I found remotely interesting. This gave a broad view of the Industry and the Science behind what we do, but as everyone that tries to do this (unless you are Leonardo Da Vinci or similar, you know, a VERY SMART MAN) I have become a jack of all trades and a master of none.
  4. I have always thought that my code does not worth shit. I have code apps that are in use in the industry and that gets the clients happy, I have always seen my code as worthless.

So, at this point, I sound depressed, and most probably I am, but I need to overcome that and start coding some goddamned code, leaving behind the fears..besides, what’s the worst thing it could happen?

I couple of weeks ago I cleaned up my system, re-partitioned it and reinstalled all the tool I need to develop the software that I love. This time, I decided to test xubuntu: a community-driven distribution based on, as you might imagine, Ubuntu, but with the XFCE as default desktop.

I have to say that I loved everything from the very beginning, the only thing that I had a hard time setting up was the support for dual screens. I mean, I am not a guru but also, I am not a total n00b, so this was getting frustrating.

So, after search for a few days and reading about using the ATI or Nvidea tools (my laptop has Intel integrated Video Card) or using Xinerama but I found that complicated and, as I have used ubuntu before, I thought that there should be a better way; and there are one: grandr.

Grandr is just the GUI for randr, a tool to allow clients to dynamically change X screens, so as to resize, rotate and reflect the root window of a screen. If you are having problem setting your extra screen with your laptop in xubuntu, just go a terminal and type:

sudo apt-get install grandr

Then go to the main menu, then System and under it, you will find the “Multiple Monitors” option. Awesome.