5 ms·
I've noticed over the course of my career a fairly severe corollary, which is that making the best technical choices for my employer can often be bad for me in
by tutufan 12y ago
I've noticed over the course of my career a fairly severe corollary, which is that making the best technical choices for my employer can often be bad for me in the long run.
As an example, for about the last 10-15 years, I've tended to choose Python over C++, for projects where it seemed it would produce a better solution (e.g., cheaper/faster to implement, easier to maintain and alter, performance sufficient to the task at hand). Because Python is actually quite adequate these days for large swaths of the task space, this means that my Python chops are quite good, but that my C++ is a little rusty.
In itself, this isn't exactly a problem, but in an interview scenario, it can look quite bad. "How much template metaprogramming have you done lately?" "Not much." "So, you're more of a junior programmer then?" "No, I just haven't hit a problem lately that needed that, and I prefer not to introduce unneeded complexity and maintenance nightmares into my employer's codebase." "How much work with GDB automation?" "Very little, since the code I write pretty much just works." "Ah, so weakness with the debugger as well." Etc.
Not really sure what to do about this. I don't really want to write tens of thousands of lines of unnecessary C++ just to impress future employers. But I have to acknowledge that that's really how the rewards are set up.
- vinceguidry 12y agoThis dynamic is part of why I feel like programmers should really just stop resisting the pull to move into management. You might think about programming as the most amazing thing ever, to be agonized over with a fine-toothed comb and the 'best tool for the job' elevated to a nigh-religious consideration, but to your employer, it's one line item on a budget.
- ColinDabritz 12y agoIt might be 'easier' in a certain sense, and possibly a way to optimize for your paycheck, but 'resisting the pull to move into management' for me is about wanting to do high quality engineering, having a sense of professionalism and pride in my work, and feeling good about what I'm doing at the end of the day, even if my management doesn't understand it fully. If I'm a "line item on a budget", I want to be the best damn line item I can be. I am an engineer.
- vinceguidry 12y agoYou can do high-quality engineering in management. You're just doing it with other people's code, as well as your own if you choose to continue programming.
- ColinDabritz 12y agoWhat activities would you expect to be doing in such as scenario? For me, if I was doing it "with other peoples code" rather than "with other people", I would expect to be doing things like large scale architecture, developing tools such as domain specific languages, and investigating new technologies for possible adoption, setting the stage for the rest of the engineering team to write good code and solve hard problems. I would consider this engineering, and "working with other people's code." I would feel some secondary 'ownership' of the rest of the teams code in this scenario. On the other hand, if I was working "with other people" as in a managers potions, the most technical things I would expect to do would be making hiring decisions, considering the skill sets and training needs of a team, and helping a team make good technical decisions, as well as other less technical manager duties. I see this as a separate management role, that doesn't really involve engineering, and working "with other people" rather than the code they produce. Importantly, I would NOT feel much ownership in their code in this scenario. I would feel ownership in their success coding, but not in the product itself. You could, possibly, do some of each although I find the two work styles severely interfere with each other, so focusing on one at once is far more effective. If you are an amazing person you might get away with sneaking in some engineering time while being an passable manager as well. If I was in a managerial role, I would focus on that to allow myself to be more effective, and get my engineering satisfaction elsewhere. Note that some large tech companies recognize this difference, and have explicitly create two distinct promotion tracks, one through management, and one through engineering. I feel it is a tragedy that many companies feel that "engineering is the thing you do first, they you get promoted out of it into management to continue your career," and structure their org chart with engineers at the bottom. I think this comes from people who enjoy and are good at management not recognizing that there are people who are not like them, and building a hierarchy that reflects their world view. If more companies realized that there are people who want to be good engineers throughout their career and could relate to them better, more amazing engineering would happen, and it would be well managed too.
- lugg 12y agoRebrand yourself as a python developer. I know you might not want to hear that, but you'll probably find much more enjoyable employment anyway.
- tutufan 12y agoEssentially, that's where I'm at, as a practical matter. But it feels wrong to be typecast that way, since I regard my C/C++ capabilities as being quite sharp as well. And it seems like knowing when to write 100 lines of Python instead of 1000 lines of C++ ought to be valued, rather than seen as more of a technical faux pas. (Hey, I can dream, can't I? :-)
- damon_c 12y agoWork for people who are more concerned with the business value you provide and how fast, and reliably you provide it, and who don't care about the details of what technology you use. This often means being hired by the CEO and not the CTO.