Very nice write-up! I’ve suspected that a lot of those things are true, but wasn’t too sure, so your saying them increases my confidence. Especially the thing about avoiding overtime. I’ve brought it up before but most people seem to have the opinion that “you learn at work, so you may as well work late and keep learning (not taking into account the opportunity cost)”.
What do you think about the chances that a good programmer with a few years’ experience could easily find a new job? It seems pretty high to me. a) I here so much about the demand for developers. And b) in my job search it seemed that there was a huge demand for developers with a few years’ experience. But again, this is outside view-y and I don’t understand the components too well.
most people seem to have the opinion that “you learn at work, so you may as well work late and keep learning
Depends. Now that you wrote that, I remembered the time when I was freshly out of university; it did work that way. Thanks for reminding me! Everything was new. I didn’t have internet at home. The computer I had at work was more powerful than the computer I had at home. I even had a few books about programming at work. So when I stayed overtime, I learned a lot. I was a 100% nerd back then, zero social life, no hobbies beyond programming. Thus staying at work late was like staying at Disneyland.
The difference is, back then I was not supposed to do any specific work when I stayed overtime. As a total noob I was not expected to be highly productive; the time I had to do my work was measured in days, not hours. It was understood that learning is a part of my work, and that learning takes time. That is why I was free to learn.
That is completely different from when you are told to stay overtime. It usually means there are specific problems you are supposed to work on, which usually means: the same stuff as always, only more of it. Or that someone in management messed up something, so you have to do something again, just differently. Or that there is a bug in the application that no one can find and the customer is angry about it, so you have to find the bug. There is no time to learn.
Exploration / Exploitation—it is okay to do overtime for the former, but when the overtime is required, it is the latter. Also, make sure the “exploration” is in the direction you want grow, instead of some dead end. (I have spent a few months studying a stupid product that was discontinued a year later.)
Also, being a 100% nerd is not the optimal strategy. For example, I learned a lot back then, but I still had laughably low salary, because I had no friends, didn’t communicate with people, so I didn’t know how much could I expect, and I didn’t know how to sell myself. At that moment, picking the lowest hanging fruit of the social skills (such as calling a few programmers I knew and asking then whether there is a job opportunity where they work, and how much approximately could I ask) was financially more profitable than any increase of my technical skills. Skills and salary are only weakly correlated.
What do you think about the chances that a good programmer with a few years’ experience could easily find a new job?
I think you can always get a programming job; the question is what are your salary expectations. I cannot tell you how high salary is realistic where you live.
At the very beginning, people will ask you how many years of experience you have, which technologies you know, and how many years of experience with their preferred technologies you have. After maybe five years, they will also ask you if you have an experience leading a team. Being able to show your own project that you did in your free time is probably a big advantage: it shows you are able to complete the project (as opposed to many people who only do the beginning that is most funny, and then abandon the project). I guess most people do not have such projects.
Very nice write-up! I’ve suspected that a lot of those things are true, but wasn’t too sure, so your saying them increases my confidence. Especially the thing about avoiding overtime. I’ve brought it up before but most people seem to have the opinion that “you learn at work, so you may as well work late and keep learning (not taking into account the opportunity cost)”.
What do you think about the chances that a good programmer with a few years’ experience could easily find a new job? It seems pretty high to me. a) I here so much about the demand for developers. And b) in my job search it seemed that there was a huge demand for developers with a few years’ experience. But again, this is outside view-y and I don’t understand the components too well.
Depends. Now that you wrote that, I remembered the time when I was freshly out of university; it did work that way. Thanks for reminding me! Everything was new. I didn’t have internet at home. The computer I had at work was more powerful than the computer I had at home. I even had a few books about programming at work. So when I stayed overtime, I learned a lot. I was a 100% nerd back then, zero social life, no hobbies beyond programming. Thus staying at work late was like staying at Disneyland.
The difference is, back then I was not supposed to do any specific work when I stayed overtime. As a total noob I was not expected to be highly productive; the time I had to do my work was measured in days, not hours. It was understood that learning is a part of my work, and that learning takes time. That is why I was free to learn.
That is completely different from when you are told to stay overtime. It usually means there are specific problems you are supposed to work on, which usually means: the same stuff as always, only more of it. Or that someone in management messed up something, so you have to do something again, just differently. Or that there is a bug in the application that no one can find and the customer is angry about it, so you have to find the bug. There is no time to learn.
Exploration / Exploitation—it is okay to do overtime for the former, but when the overtime is required, it is the latter. Also, make sure the “exploration” is in the direction you want grow, instead of some dead end. (I have spent a few months studying a stupid product that was discontinued a year later.)
Also, being a 100% nerd is not the optimal strategy. For example, I learned a lot back then, but I still had laughably low salary, because I had no friends, didn’t communicate with people, so I didn’t know how much could I expect, and I didn’t know how to sell myself. At that moment, picking the lowest hanging fruit of the social skills (such as calling a few programmers I knew and asking then whether there is a job opportunity where they work, and how much approximately could I ask) was financially more profitable than any increase of my technical skills. Skills and salary are only weakly correlated.
I think you can always get a programming job; the question is what are your salary expectations. I cannot tell you how high salary is realistic where you live.
At the very beginning, people will ask you how many years of experience you have, which technologies you know, and how many years of experience with their preferred technologies you have. After maybe five years, they will also ask you if you have an experience leading a team. Being able to show your own project that you did in your free time is probably a big advantage: it shows you are able to complete the project (as opposed to many people who only do the beginning that is most funny, and then abandon the project). I guess most people do not have such projects.