So this week at work was not one of the best, or to be more accurate, it stunk. A few things went wrong and management panics, needs things fixed ASAP. What they like to forget is that all the problems we are seeing now were foreseeable. In fact, I and a few others even made proposals on how to fix it. Nothing of course happened back then, but now as the problems keep occurring, the cries for fixes get louder and louder. And some even recommend now what we proposed months and sometimes years ago. So you may ask, why did we never implement our recommendations?
The answer is that my project is notoriously understaffed when it comes to good programmers that can go with an idea and make it happen. Without requiring handholding and another PY to fix what they did. The reality is, that for every capable programmer there are about three to four who have no clue what they are doing. On top of that, there is more and more people who are watching what is being done. Right now it feels like a pyramid org chart tat is upside down. Tons of management and other useless positions for every few people who actually do work and can do the work. I have a job that should be done by at least 3 good people and to do it really well, 5 to 6 would be the right number. Yet, for the past few years I and at most one inexperienced or part-time programmer helped. What does that mean for the quality of the code? Well, you have to cut corners. You have to go with solutions that will work but are easy to implement in a relatively short amount of time. They are often not the best solutions or the ones that should be used. (To give you an idea what my job is: I am trying to write code to maintain a web scale full-text index on too few machines ... ) The problem with this chronic lack of resources is, that over time, you end up in situations where you keep patching, and patching, and patching ... It is time for a rewrite. But for that I will not have the time, I already know that. And that bugs me!
Thursday, October 20, 2005
Thursday, September 29, 2005
It's the time of the year ...
... when you call it a day early, go to a bar and watch some postseason baseball. Who cares about deadlines ... Did that last year a few times and it was a lot of fun. And this is way better than the NFL playoffs because they play on weekends and don't give you an excuse to leave early. Not that we really need that but having a reason is better than just being lazy. Let's all hope for interesting playoffs and a World Series winner other than the Yankees (if they make it).
Tuesday, September 13, 2005
My Quest for a PhD ...
For the past 4 years I have been attending the PhD program in Computer Science of University of California in Santa Cruz. Now that I have completed most of the class work I am (sort of) ready to tackle that tiny problem of coming up with a dissertation topic and then actually writing it. Now, I have no illusions that my PhD work is going to change the world but doing this part-time while having a full-time job it better be something I enjoy. Well, I do enjoy sports, fast cars, my two kids, Ben and Jonas, but that ain't going to work ... Unless I can bribe the thesis committee to accept a proposal of studying an entire baseball season from a computer scientists point of view.
Anyway, so here I am and I am not quite sure on how to start this whole thing. It will definitely be in the area of information retrieval, indexing, etc., because that's where I have spent the last 4 years of my work life and it is actually very interesting. Will keep you posted here on what I am going to do ... (or not if it so secret that noone can ever find out).
Anyway, so here I am and I am not quite sure on how to start this whole thing. It will definitely be in the area of information retrieval, indexing, etc., because that's where I have spent the last 4 years of my work life and it is actually very interesting. Will keep you posted here on what I am going to do ... (or not if it so secret that noone can ever find out).
Career stuff and credit histories ...
I had one of these frustrating days at work. I am at a point at my job where it seems it's not good enough anymore to do a really good job at what you do. Instead having become a more senior employee it is expected to reach out, make others better, etc. While I don't have a problem with this, on top of that stuff, my managers want me to become more visible. So, within a company like IBM, there are certain groups, panels or institutions that can help to get to the next step on the career ladder. I am told, that it is important for me to connect to these folks. One of these groups often hosts internal studies or conferences and any IBMer can submit his proposal for participation, sort of like a conference. Now, a month ago, I submitted a write-up and got the notice that while there was nothing wrong with my proposal, I wasn't invited. No reviews or criticism, just the notice that there were many proposals and that they were sorry. After a little bit of poking around, I found out that participation was sort of restricted to the people who have already made it. Now here is the dilemma, in order to get to the next phase of my career I need to part of these things, but in order ot part of these things and get exposure, you already need to have reached that next phase. Doesn't make sense, you say? I agree, it is like trying to get a credit card when you come to this country as a foreigner. Most often, they tell you you can't have one because you got no credit history and you can't really build a credit history without a credit card. Sometimes I don't get it ...
Tuesday, August 30, 2005
C++ and Java ...
I work at IBM Research on the WebFountain project. I pretty much do 95% of my programming work in C++. I consider myself a fairly decent C++ programmer. Nevertheless, every once in a while I run into these embarrassing moments, where I write a simple piece of code and lazily use an explicit cast and all of a sudden my simple program simply won't work. That's the reason why there is the C++ casting operators static_cast, dynamic_cast and const_cast. My advice is, that you should learn how to use them because they can save you a lot of time. Anyway, thankfully I found the problem myself after I asked my friend and co-worker Dan to take a look. But it was still embarrassing having to tell him that I f..... it up.
Which brings me to my next point, C++ and/or Java. That thing would have never happened in Java, since there aren't any pointers and you either geta compiler error for casting inappropriately or you get an exception during runtime. However, even though you have to be more careful in C++, I like it better because it gives you more control and programmers who start out in a language like C or C++ are generall the better programmers because they have to know the concepts of memory management.
I mean, why for crying out loud, does a simple instant messaging application written in Java have to have a memory footprint of 50MB or more (referring to an in-house IM client which is nice but a memory hog). I occasionally interview people for jobs here and come across students that only learned Java and never wrote a line of C or even Assembler. I think that's wrong because it teaches them to not worry about memory management because there is garbage collection. I know machines have more memory and get faster by the minute, but the way some programs are written these days, it looks like there will always be a programmer to fill the extra Gig of RAM.
The moral of the story is, to be careful when and how to cast, and C++ is still way cool.
Which brings me to my next point, C++ and/or Java. That thing would have never happened in Java, since there aren't any pointers and you either geta compiler error for casting inappropriately or you get an exception during runtime. However, even though you have to be more careful in C++, I like it better because it gives you more control and programmers who start out in a language like C or C++ are generall the better programmers because they have to know the concepts of memory management.
I mean, why for crying out loud, does a simple instant messaging application written in Java have to have a memory footprint of 50MB or more (referring to an in-house IM client which is nice but a memory hog). I occasionally interview people for jobs here and come across students that only learned Java and never wrote a line of C or even Assembler. I think that's wrong because it teaches them to not worry about memory management because there is garbage collection. I know machines have more memory and get faster by the minute, but the way some programs are written these days, it looks like there will always be a programmer to fill the extra Gig of RAM.
The moral of the story is, to be careful when and how to cast, and C++ is still way cool.
Tuesday, August 16, 2005
Good programmers, big projects and useless head counts ...
Someone send me links to two blog posts related to programmers and working on a big project.
The fist one is about how working on a big project is somewhat like trap:
Formula Engine Rewrite
Reading it, I felt like I only need to replace the company and project names with the names of my cmpany and project and it would still make sense ...
I still like my project and I am still working on it (IBM's WebFountain) but nonetheless, there is lot of truth in what he is writing about.
The other one is from the blog "Joel on Software" and deals with the widely spread misconception (Hitting the High Notes) that adding more programmers to a project will help finish it faster and get more done. What you really need is a few really good programmers.
Which brings me to the point I am trying to make today. In most big companies, each group has a certain number of positions available, so called head count. Additionally, such head counts are categorized into different salary levels, so that you cannot just hire a bunch of kick-ass programmers and also pay them a competitive salary because it would exceed the salary budget. Instead, what is being done is to fill positions with average programmers that fit into certain salary levels. Waiting for the right guy to come along also does not work, because if you don't use the head count you will lose it. My solution to the problem is to get rid of the notion of head count and just give each group a certain budget for salaries. Then it is up to the group to decide on whether they want to get 10 medicore developers or 3 to 4 really good ones that are paid slightly (or significantly) more. Just having people for the sake of filling head count is not right, and if you have an important position to fill, you want to get a good if not great programmer. To stay competitive you can't be stuck in some head count, salary level jungle that makes it impossible to make a competitive offer.
Now, what if you don't use your salary budget in a year. Well, there is two ways, you can use the money to reward you top performers at the end of the year, or you just save the money. I also don't believe in the model that a lot of companies have that you will get less money next year if you don't spend it all. Makes no sense whatsoever. You get punished for being conservative in spending money. Yeah, really makes no sense. I will leave it at that for today.
The fist one is about how working on a big project is somewhat like trap:
Formula Engine Rewrite
Reading it, I felt like I only need to replace the company and project names with the names of my cmpany and project and it would still make sense ...
I still like my project and I am still working on it (IBM's WebFountain) but nonetheless, there is lot of truth in what he is writing about.
The other one is from the blog "Joel on Software" and deals with the widely spread misconception (Hitting the High Notes) that adding more programmers to a project will help finish it faster and get more done. What you really need is a few really good programmers.
Which brings me to the point I am trying to make today. In most big companies, each group has a certain number of positions available, so called head count. Additionally, such head counts are categorized into different salary levels, so that you cannot just hire a bunch of kick-ass programmers and also pay them a competitive salary because it would exceed the salary budget. Instead, what is being done is to fill positions with average programmers that fit into certain salary levels. Waiting for the right guy to come along also does not work, because if you don't use the head count you will lose it. My solution to the problem is to get rid of the notion of head count and just give each group a certain budget for salaries. Then it is up to the group to decide on whether they want to get 10 medicore developers or 3 to 4 really good ones that are paid slightly (or significantly) more. Just having people for the sake of filling head count is not right, and if you have an important position to fill, you want to get a good if not great programmer. To stay competitive you can't be stuck in some head count, salary level jungle that makes it impossible to make a competitive offer.
Now, what if you don't use your salary budget in a year. Well, there is two ways, you can use the money to reward you top performers at the end of the year, or you just save the money. I also don't believe in the model that a lot of companies have that you will get less money next year if you don't spend it all. Makes no sense whatsoever. You get punished for being conservative in spending money. Yeah, really makes no sense. I will leave it at that for today.
Thursday, August 11, 2005
What about the title of this page ... ?
Well, my real first name is Jörg or Joerg if you cannot find the ö on your keyboard or know how to type using key combinations. It is a German name and the -J- is pronounced as a -Y-. Anyway, I work as a programmer/researcher and, like all good or not so good programmers, I like coffee and espresso. When my work buddies and I go out for lunch we usually cap it off with a cup of Joe from Starbucks. (I am not the biggest fan of Starbucks because they really make money selling milk, but I will leave this to another post). So back to getting coffee at that Starbucks. After standing in line for a few minutes and being bombarded by a whole lot of displays that scream at you: "Please by whatever is displayed here, even though you only want a cup of coffee ...", it is finally my turn to put in my order. As part of that they generally want to know my name. Now, here is where it gets interesting, pronouncing my name the right way in English gives you no idea how to spell it. The correct pronounciation would sound something like saying Yirk. No, no, I know what you are thinking, sounds an awful lot like jerk, but I must disagree here. Back to Starbucks. So I spell my name for them and they write it on the cup which will eventually be picked up by the barista, who will prepare my Americano or coffee and then try to call my name. That's usually the time I am being called a jerk. Even more interesting, looking on the cup after I finally hold it in my hands, I see the weirdest names:
In the future, expect more here about all kinds of stuff, not just buying coffee and spelling names.
- jurich
- jourg
- yurk
- jorge
- joreg
- george
- gork
- borg
In the future, expect more here about all kinds of stuff, not just buying coffee and spelling names.
Subscribe to:
Posts (Atom)