5 ms·
Dont call yourself a programmer (2011)
- weinzierl 14y ago"In the real world, picking up a new language takes a few weeks of effort and after 6 to 12 months nobody will ever notice you haven’t been doing that one for your entire career.". Not exactly my experience. I agree that there are many programmers that think they are fluent in a new language after a few months. Learning the syntax of a new language, like learning how chess pieces move, takes a few hours. Mastering a programming language is like mastering chess, a lifelong journey.
- kevingadd 14y agoMost uses of a language don't require mastery. Especially if the rest of the team knows better than to write unnecessarily clever code when boring code would do just fine.
- weinzierl 14y agoI don't think it has to do much with clever vs. boring code, but it's more about knowing your idioms and avoiding pitfalls. When it comes to mastery I think most recruiters prefer the master over the novice.
- justin66 14y agoWow. You're fortunate. I've never met a recruiter who would recognize a master if they were assaulted by one.
- bdcravens 14y agoManagers would prefer a master, not recruiters. Recruiting requires throwing everything at the wall that remotely looks like a fit (I know .NET, am not a master, but it's on my LinkedIn - every freaking unsolicited recruiter contact I get is for .NET) Also, if they can get a novice in there, there's a chance they can pay less yet bill the client the same (talking on w2 contracting here)
- PaulHoule 14y agoI think it takes at least a year to learn OO design enough that you can write code worth (re)using. The Java ecosystem is also so big that it takes years of experience to really get your head around it. And don't get me started about C++. Sure, a decent coder can learn to write "hello world" in any of those languages, but if you need to pick up a legacy system and understand what's wrong with it (I think this is 80% of the jobs) it takes depth. If you've got enough depth in how systems work you can get sort-of up to speed in various languages quickly, but there's no substitute for taking the time to know the details of what you're doing. As for LOB work I can say that LOB systems can be a lot of fun to develop. Your average e-commerce or social media site is basically an LOB system. Developing a system of practices that lets you deliver LOB systems on time and under budget is a challenge, but in the right environment it can be done and there is something very satisfying about delivering something that makes people's work easier. The trouble with LOB work is that it's usually not greenfield work when it comes to you. They had some junior guy who never heard of primary key integrity build an app in an access database and a year later the database is full of junk and the app doesn't really work. The process of rebuilding the schema is tortuous and then you need to update every single screen and script to work with the new schema and then there's the long and involved process of reconstructing what the database contents should have been with minimum data loss. Although maintenance programming can really widen your skills and ability to deal with "it" there's also something destructive about spending all day deeply understanding the logic of terribly flawed code.
- cynicalkane 14y agoI think patio's targeting the HN crowd, and not the mediocre-programmer-with-30-resume-padding-languages crowd. Most very smart programmers know enough about software engineering to do it in any language, and good engineering is far more important than mastering language idioms.
- jeremyjh 14y agoGood engineers care about being consistent with language idioms. The only practical consequence is that they are a little bit slower than they will be after a couple of years; but they are still faster than nearly everyone else anyway.
- CodeMage 14y agoIt's not about idioms themselves. It's about the thought processes behind those idioms. The difference between learning language idioms and learning the thought processes behind them is like the difference between learning how to solve math problems that appear frequently in exams and learning math. I'm not arguing that you can't be a decent programmer without "mastering language idioms", but there are good reasons why different languages exist. If you just pick up a language without understanding the problem it solves, you're just adding a tool to your toolbox without knowing how to use it effectively, when to reach for it and how to accomplish what it does when you don't have it.
- cynicalkane 14y agoThis is true for what pg calls Blub programmers who get stuck in idiomatic ruts, but there's so much idea-sharing among the current popular high level languages that I think once you master a certain number you can pick up new ones fairly easily. The current ecosystem is one in which the really important idioms--fundamentals of good software--translate well from language to language. Exceptions might exist for things like APL, and to a lesser extent "extremist" languages like Haskell, Lisp, Forth, which require paradigm shifts to think about effectively.
- CodeMage 14y ago
- ZoFreX 14y agoI thought it was amusing that he went on to say "Much of Fog Creek uses the Microsoft Stack. I can’t even spell ASP.NET and they’d still hire me." - Joel Spolsky wrote a great article on the value of knowing a language in depth: http://www.joelonsoftware.com/articles/LordPalmerston.html http://www.joelonsoftware.com/articles/LordPalmerston.html That said, his point is still largely true - you don't need your entire team to be specialists. But don't underestimate the value of knowing <some significant technology> inside out, backwards, and upside down.
- boothead 14y agoIf you read some of his other stuff you'll see that they did hire him and paid him somewhere in the region of 5 figures per week. :-)
- vidarh 14y agoYou respond to something that's not in the quoted text. Picking up a new language to the point where 6 to 12 months later "nobody will notice" on average means pretty much that you know general principles of computer science so you can stay afloat by figuring out how to translate that into your new language by hitting Google 50 times a day. It does certainly not require you to be fluent or master the language fully.
- dschiptsov 14y agoYeah, I almost see it.) You are not your stack.. Not an IDE you're using.. Your are not any particular design pattern or an agile process.. You are not special. You are not a beautiful or unique snowflake. You're the same decaying organic matter as everything else. But this was already taken and became a cliche years ago.)
- cfontes 14y agoVery good text, I liked it a lot thanks for sharing it.
- dawidw 14y agoc) ”What is your previous salary?” is employer-speak for “Please give me reasons to pay you less money.” Answer appropriately. Could you elaborate on 'appropriately'?
- factorialboy 14y ago"Why is my previous salary relevant to what I offer you today?" Or something along those lines..
- dawidw 14y ago"Because you haven't improved much since yesterday so your salary should stay more or less the same" - they may answer :-)
- mgkimsal 14y agowhich is a non-answer. your salary often has no bearing on what you're capable of. If I'm working for a company that only knows how to extract $80k of value from my labor, and then only pays me $65k, that says as much about their ability to manage their business and resources as it does about my innate ability. My exact same skills might bring $250k of value to a different organization. Paying me based on what I earned in the past is ... wrong.
- nostrademons 14y ago"That salary was what I was worth when I started working for them. I've learned things since then. If you don't believe I'll be more valuable to you than to them, why are you hiring me?"
- factorialboy 14y agoThey have no way to ascertain whether I have improved or not. ;-) Plus what I might be offering them may be very different from what I offered my previous employers.
- napoleond 14y agoPatrick has often suggested replying to that question with some variation of "As a matter of courtesy to my former employers I prefer to not disclose the salary they paid me. I will, of course, extend you the same courtesy." and then back to establishing your value. I have no gauge on how well that would work; it's been aeons since I've done a job interview. It's true that your previous salary is none of their business, though.
- jt2190 14y agoEarlier discussion on HN: http://news.ycombinator.com/item?id=3170766 http://news.ycombinator.com/item?id=3170766
- dualogy 14y agoYeah, programmer, engineer, software developer, those names all don't cut it for me these days. I call myself low-brow "caveman-coder".
- rymith 14y agoI'm a programmer..
- CodeMage 14y agosigh Again? There are tons of great advice in that post, but the title and the eponymous section are based on something I didn't buy the first time around, either: “Programmer” sounds like “anomalously high-cost peon who types some mumbo-jumbo into some other mumbo-jumbo.” Heck, I'm just 34 years old, but you make me feel like a friggin' dinosaur because I got into this line of work out of my love for programming. It used to be an exciting thing to do, with a whole world of new things to explore. Nowadays you have people who are trying to make it sound like you're doing something mundane and boring, like you're expendable and should be ashamed of not having achieved anything greater than being a nerdy peon. Look, as far as I can tell, it doesn't matter what you call yourself. From what I've lived so far, until you build up some solid skills and experience, nobody gives a damn if you come up with a fancy name or explanation for what you do. And once you've built up some cred, it won't matter what you call yourself either, because you'll be able to prove your worth. Here's another piece of advice people don't offer frequently because it's not glamorous: do what makes you happy. We all grow up thinking we want to be rich, famous and/or powerful. If that's what you still believe in, go read or watch "Fight Club". Then come back and try different things and different paths. Maybe founding startups will make you happy. Then again, maybe working for BigCo Inc. and programming your own stuff on the side will make you happy. TL;DR: The post offers good advice, but use your own judgment. There's nothing wrong in being a programmer.
- phillmv 14y agoOf course there isn't. A programmer will probably always be a (relatively) high-skill, high-wage job. The point behind the post is that 'programmer' in business thoughtspeak means you're basically an undifferentiated commodity. "Programmers" are people you're always trying to outsource to India. If you want to improve your career, you need to market yourself better. You're not paid to write code; you're paid to provide business value.
- CodeMage 14y agoYou're not paid to write code; you're paid to provide business value. I once had an argument with a friend who had an indie game development company. He wanted to develop games so he could make money. I wanted to develop games and make money off them. It's a very subtle difference that becomes clearer when you dig deeper: he would have (e.g.) made soap if he thought it was a better way to make money; I wouldn't, because for me the important part was "developing games". It's true that you're not paid to write code, but provide business value instead. Indeed, good programmers will try to write as little code as possible and if they can provide business value by removing code, so much the better. On the other hand, if you're reading the OP out of your own interest, you're most likely not being paid to provide business value by drawing pictures of stuff or assembling furniture or arguing in the court of law (to give some examples of activities), but instead you're being paid to provide business value by dealing with code. Yes, you need to market yourself in order to improve your career. Good marketing won't hurt and really bad marketing can hurt you badly. None of that means that you should disregard the fact that you are a programmer and that good programmers aren't an undifferentiated commodity that you can "outsource to India" without second thought. I agree that marketing yourself is important, but there are many -- perhaps too many? -- people telling kids that marketing is important and not enough people telling them that doing what makes you happy and becoming awesome at it "just because" is even more important. I'm just trying to help balance the scales ;)
- philhippus 14y agoI don't have a problem with calling myself a programmer because, when you take away all the fluff, somebody has to tell the machine what to do. The only people that can do that are programmers. An engineer can have the brightest ideas,but still needs programming. The buck stops at the programmer, you'd better respect us.
- agentultra 14y agoGreat advice if you want to optimize for salary. Most of this stuff I learned from the streets and I've done pretty well following it. However I've reached a point where a bigger salary, better benefits, and equity offers won't cut it for me anymore. There's a hidden nugget in this article that suggests that there are things in life outside of work which are better sources of happiness. One of the sources it fails to mention is accomplishment and achievement. If you are a programmer that spends their time reading the latest research, crafting your skills by implementing a compiler for some exotic language you're interested in, and following your passion then you will find optimizing your career by writing CRUD forms for an accounting package for 8+ hours a day to be an incredible waste of time and energy. (It's also incredibly hard to develop a source of accomplishment and achievement if you spend the majority of your life being bored) I've once heard the advice that you should optimize for happiness and great things will begin to happen. If modelling weather simulations is what turns your crank you will never be happy building web APIs to a legacy CRM system. If you enjoy pushing the envelop of static analysis then what good are you doing for the world hacking on a javascript front-end for a client at a creative agency? Rather than optimizing for salary you optimized your life around what motivates you and makes you happy then perhaps we'd have better weather predictions and early warning systems for tropical storms or better tools that allow us to write safer, faster, bug-free code. The icing on the cake is that you'd be happy to do it. If you're just getting out of school though, then I'd follow the advice in this article for a while first. You don't know where to go without getting a lay of the land first. And a good salary will help you build up a "screw-up" fund for when you're ready to take the dive and follow your calling.
- euroclydon 14y agoLots of good advice, but don't get hung up on the title. http://www.linkedin.com/in/patrickmckenzie http://www.linkedin.com/in/patrickmckenzie
- pixie_ 14y agoHave some pride in what you do for gods sake.
- djbender 14y ago[2011]
- Zenst 14y agoDependant upon who your dealing with you tailor the description. In general I use the term `Binary BDSM` this means that I can avoid a lot of silly conversations. Programmers spend there time programming computers, debugging computers and in effect deprogramming computers. They operate upon binary and in that there will be those that appreciete a more encompasing term. Now of all the work labels we encounter the one I find most off is `Human Resources` when it is mostly paper programming that they do. So you could equaly have the term Binary Business Muscian or many other permutations, its fun. Now if as a programmer you work to the letter of yoru contract and job description then many of you would see that programmer do alot less work. That is how you qualify your worth in part. Ironicly engaging with HR and all the other overheads of working life also help. So by doing less work you can get paid more money. That tells you more sadly. But there are two types of programmer, those working in large business and those who are not and with that the definition and the work involved vary greatly. Also the opertunities too work bomb yourself with no return are also varied. No two programming jobs are the same, yet the job title stays the same. Maybe we could learn something from other industries like the food industry and the various types of Cheifs. Who wouldn't want to employ a mitchlen stared programmer, sadly there is no standard that is respectfuly recognised. This is why in many area's programmers are looked upon as the labourers in the digital construction undustry and don't get the love they deserve or truely need. Bottom line if your not happy then you are doing something wrong or letting somebody else do something wrong too you. This is true of all jobs, nomatter the title bestowed upon them and with that does a label effect your work or the perception that work has is realy the question here.
- drd 14y ago“90% of programming jobs are in creating Line of Business software” That is awfully true. That is why I always teach my students at the very beginning the simplified versions of software business life cycle for both categories of consumer software and customized software. http://www.drdacademy.com/?id=12 http://www.drdacademy.com/?id=12 I am also planning a set of lessons-learned for new hires to avoid their frustrations. Stay tuned.
- andrew_wc_brown 14y agoIf a company is smaller than 10 people I can't be bothered with formal processes and HR people. When I get people applying that call themselves engineers I just think of comp-sci graduates who have no practical skill or someone trying to play up their ego with a fancy title. When it comes down to it, its the code you produce. I never give out résumés. At the end of the day its what you can produce.
- SatvikBeri 14y agoI find it's really helpful to be flexible with your terminology. The power of different phrases is enormous-it can make a difference between taking 5+ minutes to explain a concept to someone so that they superficially understand it, vs. having them instantly get it at a deep level. For example-I work on Machine Learning, and that's the phrase I'll use with the HN crowd. With the general public, I'll use "Big Data". With Statisticians, I'll use "Predictive Analytics". One problem with the phrase "programmer" is that it's just too general. It is impossible to get a sense of what value you create when you tell someone you're a "programmer", because the term is so broad. "Web Developer", "Statistics Automation Guru", "Ruby on Rails Consultant", "Data Scientist", "SEO", "Marketing Automation Expert"...all these are really useful terms simply because people instantly grok them. And when people have a clear sense of what you do, it opens up a world of career opportunities.
- deleted 14y ago[deleted]