8 ms·
Do call yourself a programmer, and other career advice (2013)
- dinkumthinkum 12y agoDijkstra was a humble programmer. [1] Is he good enough for you? :) I do call myself a programmer. Some people prefer software engineer, architect, etc. I think it is very contextual. 1. https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340...
- sillysaurus3 12y agoThe strange thing about the real world is that your salary is almost completely divorced from your actual skill. Take a skilled person who never negotiates and the result is that they're paid less than someone many times less skilled but who negotiates. So it's not necessarily about "are you good enough?" but rather "how much do you want to get paid?" And once you focus on the latter question, you realize that skill is a tiny portion of it. Your salary is mainly dominated by how much time you have to shop yourself around, how quickly you can get several offers from different companies, and how long you can afford to say "no." The last one is very important, because if you get through an interview stage and are unable to say "no" if you need rent for example, then you'll end up with a low non-negotiable offer. You can bluff, which is always worth attempting since I'm not aware of anyone who lost out on a job offer for bluffing, but if their initial offer is $X, and you say "no, $X + $Y please" and then they say "$X + $5k is our final offer," then your options are to accept or to shop. And if you have no time left to shop around, then you're forced to settle. That's how you end up with a low salary. All of this is obvious when someone explains it like that, but the trouble is, few people talk about stuff like this. You can spend your time from college to career without even really examining any of this, to your personal detriment, and you won't even realize it. As Patrick said, you can easily get +$5k at your next job with a minimum of effort. If you have time to shop around for several months, then you can get +$40k or more in the right circumstances. Sorry for the ramble. These are just some unintuitive things which were surprising to me.
- rational-future 12y agoThis is far from the true most of the time. In my experience the only places where pay doesn't mostly depend on skills/smarts/effort are government and to a lesser degree the big monopolies/oligopolies like Comcast.
- sillysaurus3 12y agoWhat I'm saying is, if you're pretty sure you're more skilled than some of your coworkers based on whatever heuristics you choose to use, there's an excellent chance those less-skilled people are making more money than you if you haven't been aggressively negotiating your salary. The cool thing is that negotiation skills are a hundred times easier to learn than programming skills. A few weeks of effort will net you thousands or tens of thousands. The effects are cumulative over your life, so the sooner you start, the better.
- morgante 12y ago> In my experience the only places where pay doesn't mostly depend on skills/smarts/effort are government and to a lesser degree the big monopolies/oligopolies like Comcast. Your experience is definitely different from mine them. Even in startups, I regularly see developers with less skill being paid much more than their better colleagues merely through negotiation. The key determinants of salary, in order of importance, are: 1. Negotiation ability 2. Years of raise accumulation ("experience") 3. Skill
- juliangregorian 12y agoI never understood why "developer" became the dominant nomenclature for professional coders - to me it's short for "real estate developer". Since I do design and optimize processes etc. I prefer to call myself a "consultant" rather than developer or programmer, which I always felt were too limiting and made clients think of me as the guy doing who-knows-what in the basement.
- r00fus 12y agoThe problem with "consultant" is the big-5 consultants out there who absolutely dilute the term as many of them don't know a thing about coding... even the ones billed e.g. "Enterprise Software Consultant" - could only be implementers and not developers.
- Alupis 12y agoYou can only call yourself an Engineer under specific circumstances: 1) You follow a well defined and repeatable process 2) You are able to measure progress 3) You have predictable results 4) You are capable of adapting to requirements change 5) You follow a standard of some sorts (coding style, organization, etc) 6) You provide thorough documentation People who don't adhere to these principals are just developers/programmers. If you just set out and hack on some project, then you are not engineering something. A lot of engineers hack/develop/program on their free time, but as a professional on a professional project they adhere to these principals (and therefore are engineering). There are a lot of people in this world who call themselves engineers without actually being an engineer. "Customer Service Engineer"... what are you actually engineering? In software in particular, there's a lot of people who just don this title because it sounds more impressive ("Systems Engineer" instead of just calling themselves an Admin)... but if you speak with them about their process, etc... it becomes clear they just hack on something until is works (sort of). That's not engineering; that's not a well defined and repeatable process that one can follow every time and produce predicable results. They aren't able to measure their progress other than a best-guess.
- kevin_thibedeau 12y agoI feel for you. Too bad you've just violated the HN groupthink and will get downvoted for speaking the truth.
- andywood 12y agoIt's not a matter of truth, just convention. "Software Engineer" is a title used in many organizations - not a subtype of engineer. It means programmer. Trying to apply arbitrary qualifications after the fact to make it more "engineer-like" is misguided. Some of us are called Architect even though we don't design buildings or use CAD software to design our products.
- enraged_camel 12y agoThe older I get, the more I realize that "truth" is often a matter of perspective.
- dylandempsey 12y agoCalling yourself a Software Engineer when you're not is like calling yourself a Surgeon when you're a Nurse. A Software Engineering degree is way more difficult than a Computer Science degree, they are not the same. A 3rd of students drop down to Computer Science or something else after they fail in the first 2 years. This is at least the case in Canada.
- dylandempsey 12y agoI like how this will get down voted because people don't like it. This is a fact, you will not be recognized in Canada as a Professional Engineer and if you claim you are one in your practice there are legal consequences, the same if you practice as a doctor without the acknowledged certification. I am just stating facts...
- dllthomas 12y agoI don't think it's "because people don't like it", but rather because it's only true in a few countries that most HNers neither live nor work in, and you spoke as if it was applicable everywhere. That, on top of the fact that the article had nothing to do with the term "Software Engineer."
- StavrosK 12y agoFacts of Canada, not the entire world. The counterpoint is equally valid in other countries. I can call myself an engineer all I want, nobody will bat an eyelid[1]. [1] Well, not me personally, I do hold an electronics engineering degree.
- nrmitchi 12y agoThe fact that you cannot claim to be an engineer in Canada without the appropriate credentials is a fact. Your statement that "[a] Software Engineering degree is way more difficult than a Computer Science degree" is not a fact. I have seen this whole 'CS vs SE' debate in the past, typically in a joking manner. Your manner however is downright insulting.
- 12y ago
- swatow 12y agoFirst, I want to acknowledge that neither article was actually about who gets to call themselves a software engineer. That said, clearly that's all the HN comments are going to be about , so I'm diving in. I call myself a software engineer because it makes me feel smart and important. To me, that's the only difference between an engineer and similar jobs. I don't want to heap scorn on people who make sandwiches at subway, like many will use this discussion as an excuse for. Nonetheless, the reason the term engineer doesn't apply to them is that their job is neither important, nor requires a lot of intelligence. Things like following a specific process, taking ethics courses, or being certified, are just things that some engineers happen to do. If you're smart and capable, you will do what is necessary to do the job well. Sometimes, this involves following a specific process, and sometimes regulation is necessary to ensure that everyone does this. But other times, individual judgement is the only solution. I believe this is the case for software engineering. I don't really care about the word that much (although I really like calling myself and engineer), but what I do care is the implication that our industry needs to be regulated like professional engineers are. In fact, I'm opposed to all forms of organization, either unions or professional organizations, because they have nothing to offer the industry, and can do a lot of harm through rent seeking behavior. I'm not opposed to regulation that forces businesses to protect user information better, or provide better privacy safeguards. But these are regulations of the business practices. I don't want to have to get a certificate for something I can read online, even if someone else worked really really hard to get their certificate.
- kd5bjo 12y agoI agree with most of what you say, but there has to be more to the definition of engineering than "important stuff smart people do". The best working definition I have comes by way of several of my college professors: An engineering problem is one in which you are given a set of requirements and asked to minimize cost; anyone who solves such problems is an engineer. Most subdisciplines of engineering have developed their own language and standards for how to specify the requirements, develop potential solutions, and analyze the cost of those solutions. In young subdisciplines, like software engineering, these can appear more like folk wisdom than rigorous processes sometimes; that doesn't mean they're not engineering, just that we still have a lot to discover about them.
- eigenvector 12y agoI don't work in the software industry. But I'm often frustrated by nitpicking over who is or isn't A Real Engineer. Implicit in these discussions is the concept that engineers are superior to mere technicians or operators. As an engineer I have worked with technicians who want to go back to school to become an engineer, because of the perceived prestige and earning power that would come along with it. Often, they don't even realize that they make more money than I do [1]. In my industry the chief divide between engineers and technicians is that engineers design systems whereas technicians construct and operate them. These are fundamentally different jobs, each with its own challenges and benefits, although they often overlap. Pay is roughly the same, though engineers tend to have more generalized knowledge that can help them shift into a different sector more easily during a downturn. Both roles are essential, and I like to joke that if all the engineers disappeared, the technicians could keep things running for at least a decade, but if all the technicians disappeared, the lights would be out within 24 hours. Good engineers can't function without good technicians. Both have a good deal of specific knowledge that the other does not. And somebody who is good at one role is rarely good at the other. Be an engineer because that's what you want to do, because you genuinely feel that designing systems using the application of engineering theory is better situated to your skills and personality, not because you think it might be more prestigious or respectable that what you're currently doing. [1] I work in the power industry where a skilled technician commands a similar or higher hourly rate to an engineer, more overtime and usually does a hell of a lot more work, like fixing overhead power lines at 2am during a winter storm.
- mattmanser 12y agoGreat, but not sure what this has to do with the article though. It's like you read the title and replied without reading the actual article. Then again, so are most of the other comments too.
- eigenvector 12y agoI'm responding to the numerous comment threads below on this topic, rather than the article.
- 12y ago
- mikerichards 12y agoI call myself programmer, but we generally refer to ourselves as developers now. At the previous place, we were Programmer/Analysts and then right before I left they had changed it to Software Engineers. I find it all pretty amusing.
- jay_kyburz 12y agoI like the term Developer because I do a lot of things all day that I believe are more important that the actual "programming". Working out what the product should be and how users interact with it for example.
- mattnewport 12y agoIt strikes me that much of the advice in "Don't Call Yourself A Programmer" is more actionable than the counterpoints in "Do call yourself a programmer". While there may well be advantages to working for 10+ years in one company, it can be difficult to engineer your (programming) career to achieve that these days. Companies go bust, get acquired, go through re-orgs and cost-cutting rounds of layoffs and it's not easy to select a company at the outset of your career that will be unusually safe from such events. Over the course of my career I've seen many good engineers laid off for reasons having little to do with their engineering ability. I've also seen companies go bust with very little warning for the employees, people who were happy with their jobs re-org'd into positions that made them miserable and engineers who weren't laid off but did make friends with their co-workers see many of their close friends laid off and often as a result move away to another city/country. I think even if your ideal outcome is a long career at the same company working with many of the same co-workers you'd be well advised to plan for not having that option and to be prepared for finding other work at any time if your circumstances change due to external events.
- enraged_camel 12y agoA big disadvantage to working for the same company for a long period of time is that you will almost certainly get paid less than you would if you changed jobs regularly. The biggest raises these days come during job hops, rather than annual performance reviews.
- morgante 12y agoIn general, this article seems pretty weak. It's light on actual arguments (including any real arguments for its titular conclusion) and instead is basically saying "I'm successful and happy despite calling myself a programmer, so you should too." > The impact of these choices on relationships could thus be weighted as more important than the impact on career advancement because it's more predictable. That's an extremely lazy argument. Something can easily be both very hard to predict and also crucially important. For a business example, it's much easier to predict the cost of your rent than it is to predict the success of your employees but the latter is much more important to success.