10 ms·
I don't want to be a Real Programmer
- Spearchucker 13y agoTime. Work. Those two things are the only things that can deliver on your aspirations. By your definition I'm a real programmer, and yet after well over 20 years programming I'm still humbled by what I don't know. There's so much I could write here about where to focus (focus on a real problem, forget about agile or lean, focus on the joy of the moment, worry less about whether you chose the right stack), but I've got work to do... I will leave you with one thought - every time I finished a project badly I learnt something profound that was scarily relevant in the next project, and made that next project successful. It's that continuous motivational cycle that's so addictive.
- walshemj 13y agoThere do seem to be a lot of rather "precious" induhviduals coming into the industry these days who seem to easily get obsessed with trivial stuff whilst missing the bigger picture.
- collyw 13y agocoming to the industry? I am working with a bioinformatics team leader who seems to be obsessed with his hipster stack Mongo, Node , Angular, hang on... nope, changed to Tokyo Cabinet, Nope, its Elastic Search this week. Its basically a relational problem we are trying to solve, but because it is moderately big data (will be a few terabytes in the end), we NEED to use NoSQL.
- loladesoto 13y agogreat essay. ime, the best programmers are equal part artist and hacker. but, the synthesis would be impossible to describe or even recognize by most non-programmers. and: conversations about their abandoned or unrealized projects are sometimes more interesting than their completed ones.
- dlange 13y agothey are also engineers and computer scientists. Even in these fields creativity allows one to look at problems from different angles, and through experience, recognize or innovate solutions. This may not always be a vocational skill picked up by anyone over a few years
- dsaravel 13y agoWell attended a JS conf last year and I got to be at the same room as TJ Holowaychuk. I had no idea who the guy was and ended up asking where he came from, what he works with, etc. Shame on me haha.
- ses 13y agoIts interesting to hear from someone who's more of a hobbyist programmer. You don't meet so many, mainly I think because once you become half-decent at programming you have access to a range of well paid jobs. Of course as you say, those jobs come with certain conditions that aren't for everybody. I've often thought of quitting professional programming and it to become a hobby instead. I think sometimes great things come from playing around and working on projects you want to and enjoy working on as opposed to the 'drudgery' of implementing someone else's vision. In my experience although the job has its perks, very few 'real' programmers actually care much about the products they work on. Sometimes they do when they start but it doesn't take long for the pressure of getting something done vs. getting something done you have real pride in generally breaks you eventually. At the end of the day I think if you can write some code, you are a programmer, whether you are a hobbyist or not. Some of the best developers hack on open source projects and live off very little and they're pretty happy with their lifestyle. A lot of paid-up programmers are in fact more like 'impostors' than these guys.
- JimmyM 13y agoI'm a hobbyist programmer, but I'm able to use my programming in my work - even though it's not strictly related. Programming skills can be a nice extra to a creative or administrative skillset, especially in smaller & boutique companies.
- jowiar 13y agoThe job title gets thrown around as "data scientist" sort of evolved out of a mix of "Professional Programmer/Amateur Statistician" and "Professional Statistician/Amateur Programmer" types. Anyway, for me, programming has always been something I do, not something I am... I think this might lead to the exclusionary nature of our field a bit - I know I've looked around and seeing people who identify as programmers, not really doing the same, and wondering if I belong...
- JimmyM 13y ago> programming has always been something I do, not something I am I think this is important, it's the kind of thing that I read and think "Yes, how obvious, of course!" but in practice I wouldn't think of it myself. A very healthy way of seeing things.
- einhverfr 13y agoIn my experience there are two kinds of programmers. Those who program (largely based upon practices they are told are good) and those who also really think about their own programming and try to develop their own paradigms in response to their own problems. The latter tend to be, in the long run, far more productive than the former. However, this takes both motivation and it takes extra time between iterations to think about what problems you are having with development and how to solve them. Continuous iterations get in the way of it, but it isn't clear that the heavy engineering waterfall model gets people to do it either. Sometimes you need some distance so you can come back and ask "is this good code? What can I do better?" Without distance, it is like editing your own essays. After 10 years of coding professionally and over 20 years of programming experience, I find that that capacity, which is entirely independent of how many hours someone actually spends coding, is the best indication of how productive someone will be. If I am ever hiring programmers, my questions won't be puzzle questions. They will be questions like "how do you decide what needs testing?" or "when and why do you comment your code?" Those questions are likely to tell me more about how much someone has thought about their own code experiences than whether they can solve a certain puzzle or not.
- collyw 13y agoThe distance thing is the best way to improve your own code in my opinion. I have a medium sided codebase to look after. When I have not touched a bit for a few months and I need to go back, it should make sense to me very quickly (I wrote it after all). If it doesn't I ask myself why it doesn't and what I would expect to find to make it more understandable. Then refactor from there. Its too easy to be focused on the details of a piece of code, and not see the bigger picture. That's why being away from a piece of code gives me the best opportunity to evaluate it objectively.
- ownagefool 13y agoLearning 30+ years of CS knowledge from scratch doesn't sound very efficient. The truth is, anyone who constantly delivers must have the capacity to understand _why_ but they'll still be largely benefiting from the trails marked by others.
- noelwelsh 13y ago> Since I started about 3 years ago Let's get some perspective here. If you were an undergrad you'd just be about to graduate. Nobody would expect you to be particularly good at programming at this stage -- your career is literally just beginning!
- nightski 13y agoIt seems the OP is trying to compare himself with the internet. We may hear about great achievements every day, but often those achievements while only taking minutes to read about took years or even decades of work and labor and were hardly achieved by one person alone. A Real Programmer is simply one who keeps on learning and doing. It is important to look back occasionally on what you have achieved, instead of what you have not.
- Dale1 13y agoTech is such a rabbit hole anyway no one person can learn everything and the internet can be a curse throwing constant suggestions of the stuff you 'need' to learn! Some times in work i feel inferior to my buddies until someone asks a question about something close to my heart. A detailed explanation later which no one within 100 miles could give and it hits you, we're all excellent at something no matter how bad your impostor syndrome gets!
- rdudek 13y agoAgreed. Reading it, looks like OP is reading too much into things yet fails to understand that each person he listed, those folks have spent years understanding and developing. I fell into the same trap in the past. I started learning one thing, others were quick to comment on that I should learn this , this, this, and that as well! That caused me to spread out way too thin. Programming can be overwhelming. Once you start digging into it, you'll then realize how much you don't really know and how much of it is out there.
- erroneousfunk 13y agoOne of the most revealing lessons to me, as a young programmer, was when my uncle (worked on the Java project when it was Oak, published his own network architecture, distributed systems professor, etc. etc.) asked me which content management system he should use for an important project, and I was able to help him out with that. You'll always know something that the "Greats" don't.
- benreesman 13y agosomething about this aspirational mumbo-jumbo rubs me the wrong way. there are plenty of objective standards to judge one's self against, most of the best ones are available to the general public in one form or another these days.
- RyanZAG 13y agoThe real issue is a guy who has been programming for 3 years is trying to compare himself to people who have programmed for 30. Practice makes perfect - if you've only been coding for 3 years, I can almost guarantee that you don't understand a big chunk of the code you use. Once you've been coding for awhile though, you really can get to a stage where you understand everything from the bottom up. At that point, creating new frameworks, languages and algorithms becomes an obvious task. I've noticed the best programmers are the ones who have actually coded their own compiler, frameworks, etc even if they were only toy implementations. The understanding that comes from building a 3D engine or high performance message bus is usually impossible to obtain in any other way.
- verybadalloc 13y agoI have a feeling that feeling satisfied with one's knowledge will also come with experience. I couldn't agree more on your second sentence though: not only will you learn a lot more, you will be able to hone your problem solving skills, which is what I wish to achieve now.
- adamors 13y agoNonsense like this > For sure, they are plenty of Real Programmers out there, who easily agree to the 80+ hours/week workload. has to stop. I think the opposite is true: if someone is working 80 hour weeks they either overcompensate for their lack of skill or are being willfully exploited.
- gearoidoc 13y agoAgreed. If there's one danger to our industry, its notions like this. (Most) humans aren't supposed to work 80+ a week. I say most because there are always those superhumans you come across that just seem to be able to do it; but most can't. I always try to look at statements like this through the eyes of a would-be programmer. If I was about to start down the programming route and was told I could never achieve my aims without accepting an 80 hour work week then I'd run a mile.
- adamors 13y ago> (Most) humans aren't supposed to work 80+ a week. I say most because there are always those superhumans you come across that just seem to be able to do it I don't think they're superhuman, they are people who have no lives and will burn out in a short period of time. I can only feel sorry for them.
- amirmc 13y agoThis thread seems to assume that there's a clear distinction between 'work' and 'not-work'. That isn't always the case as it's entirely possible that someone can love what they do to the extent that the lines completely blur (yes, that means those people could be exploited for that passion). An example of this is academia where every prof I've met 'works' insane hours but are completely (and happily) absorbed in their fields. The whole thing feels like a hobby to them. The only thing they'd want to get rid of is the paperwork (research assessments, etc) so they could spend that time with students and research.
- tluyben2 13y ago
- chriswarbo 13y agoIt can be quite humbling to realise how large a particular field is, but it in no way makes one an 'imposter'. Pro tip: Those 'Real Programmers' who's JS experiments make your CSS look quaint aren't the world's best programmers. They're 'yet another frontend guy' to, for example, those who write Java servers. Guess what, those writing the Java servers are 'just end-users' as far as the JVM hackers are concerned. Likewise, the JVM hackers are 'just end-users' for the OS developers. The OS developers are 'just end-users' for the hardware guys. The hardware guys are 'just making an interchangable commodity' as far as the sysadmins are concerned, as they virtualise everything away. And, of course, the frontend devs laugh at the sysadmins for not being programmers. You might think of some Node.js guy as a demi-god, but I've never heard of him since I don't particularly care about Node.js. Likewise there were a lot of tributes being paid recently to a Ruby developer who passed away. It's touching to see how many people he'd positively impacted, but again, I've never heard of him because I don't particularly care about Ruby. Am I an 'imposter' since I don't care about these things? Not at all. I have a high-level knowledge of what they are, and I even played around with Node.js a bit (unfortunately it was just after 0.4 had broken compatibility with most libraries in NPM!), but I can't go too far down those rabbit holes because they're not the stacks I use. Likewise, I don't expect those who are deeply into Node.js and Ruby to care about, for example, the recent death of John Reynolds, or Robert Harper's kidney transplant. Just stick with the rabbit hole you've chosen, as long as you're enjoying it; let the work of others guide you down, and if you reach the bottom you'll suddenly find yourself to be a 'Real Programmer' who can help with the digging. Alterntively, if you disagree with or don't understand some of the decisions/conventions on the way then you should absolutely start digging in your own direction, even if it doesn't go anywhere. PS: Knowing APIs inside-out does not make one a 'Real Programmer'. My day job is PHP, but I still tend to Google the most basic built-in functions (which, admittedly, is an artefact of PHP's poor API). You should instead strive to understand your problem inside-out, from multiple perspectives, then you can pick and choose any API/stack you like and let the docs guide you through the tedious act of plumbing it all together. Or write your own :)
- deleted 13y ago[deleted]
- CmonDev 13y ago
- kayoone 13y agoNewsflash, your hero TJ Holowaychuk probably does not even exist. Seriously imo this guy tries to compare himself to everybody else on the internet, which is dangerous.
- skimmas 13y agoOP: just would like to point out that you might get some weird looks when mentioning your domain name to the portuguese speaking crowd. Visually it looks a lot like "very badalhoco".
- verybadalloc 13y agoGoogle translate did not return any result. I assume it is some kind of swear word?
- lfglopes 13y agoI actually laughed when I realized. :) "Badalhoco" translates to naughty.
- likeclockwork 13y agoI would usually never respond to so,ething like this. But.. "programming" isn't just one thing. "Real programming" is pretty specific to your own values as a programmer. Look around, find out what interests you.. probably look away from the web, because the web is over-caffeinated with a lot of churn that resembles real progress. (Not that there isn't a lot of cool stuff on the web, just that it's a confusing ecosystem to measure yourself against.) It's an art and a science.. it's not about 80 hour weeks and writing 10,000 libraries a year. Maybe there's something you have to contribute that you only work on for 5-10 hours a week and it takes you 2-3 years to complete it and it still blows our socks off.
- garrettdreyfus 13y agoI think the only solution is to code if it makes you happy.
- rumcajz 13y agoFor reference about real programmers: Real Programmers Don't Use PASCAL http://www.ee.ryerson.ca/~elf/hack/realmen.html http://www.ee.ryerson.ca/~elf/hack/realmen.html
- PascalPrecht 13y agoTJ isn't real. You can't be like him.
- RunForFun 13y agoI would be curious to see if there has been any study to see which profession has the most skilled workers who think that they are "imposters". I have to admit that I fall into this category and I have been seeing increasingly more people also admitting to this in our industry. It's nice to know that others feel this way, and it's nice to see many of the encouraging comments that allude to the thought that imposter syndrome may be more a matter of perspective, rather than one of performance.
- harrystone 13y ago80 hour weeks? Hell no, if that's what it is then I don't want to be a real programmer either. Maybe it's because I'm old and cynical, but you young guys can knock yourself out. If you're working that hard you better be working for yourself, otherwise you're just being taken advantage of.
- k__ 13y agoI'm switching between superior and imposter all the time. The people at the small company I worked for made me feel like I'm a JavaScript guru. Last month I did some small stuff for Mozilla and felt like an idiot.
- websitescenes 13y agoWant to b a "real" programmer? Don't be so attached to your code. It doesn't represent you. It does represent where you are and it does indicate where your going but it doesn't define you. If you identify as a programmer, then you are. Physics tells us that, to a large extent, we create Our own realities and our perceptions of such. Put your code out there and don't give a shit what people think. Is there a better, newer way? Yep. Always will be. So keep learning and don't get comfortable with your current skill set.
- goldenkey 13y agoThe viewpoint in this article is disillusioned at best. A real programmer is not someone who loves programming and attends hackathons to build iOS apps that map the sewer rats in NYC for fun. That stuff might be fun to the hipster who just learned iOS, sure. But I doubt someone who's been programming for 15+ years wants to build an app for bullshit. Every line counts more, because the capability is higher. Wasting time is dreadful, when one has been programming for so long. I've been programming for nearly 16 years; code is not as fun as it used to be, and most programming jobs are inconsequential bullshit of buzzwizardry and magic frameworks, agile standup chicannery and the dread of dealing with the zesty pimple pricked CS graduate who just loves AngularJS and thinks he can code his way out of a paper bag when he's never done reverse engineering. Never made a web scraper. Never messed with shell code or assembly. Never wrote a game hack using hooks/detours. Never written a line of C. Etc etc. Programming is full of happy go lucky adult kids. Real programming is for getting shit done, that's all it ever was and will ever be to a seriously learned seasoned programmer. Whether it's building something, destroying something, modifying something, binary or source, the seasoned programmer has the skills; but don't expect him not to sigh when you bring up your giddiness surrounding menial programming labor for worthless causes; or just plain repeats of the last decade.
- badman_ting 13y agoIt's really a shame we probably don't live in the same place because holy crap would I like to hang out with you.
- tdees40 13y agoThis might be the single greatest comment in the history of Hacker News.
- markartur 13y agoIt's this exact type of blog posts, that are constantly on HN front page, that make me feel like an impostor. >Oh look i do hackathons, OSS contributions at all times of the day, try new stuff, etc etc, and feel like an impostor. Shit man, how does that leave me?
- vezzy-fnord 13y agoA prolific Node.js developer is what constitutes a "real programmer" these days? Honestly? No offense to Holowaychuk, he certainly does appear to have contributed enormously to the server-side JS ecosystem, but I do not care for JS, so I have not heard of him. This is all assuming he's not a collective pseudonym. I agree with the user goldenkey in this thread, and will quote him: Most programming jobs are inconsequential bullshit of buzzwizardry and magic frameworks, agile standup chicannery and the dread of dealing with the zesty pimple pricked CS graduate who just loves AngularJS and thinks he can code his way out of a paper bag when he's never done reverse engineering. Never made a web scraper. Never messed with shell code or assembly. Never wrote a game hack using hooks/detours. Never written a line of C. Etc etc. Programming is full of happy go lucky adult kids. Real programming is for getting shit done, that's all it ever was and will ever be to a seriously learned seasoned programmer. Whether it's building something, destroying something, modifying something, binary or source, the seasoned programmer has the skills; but don't expect him not to sigh when you bring up your giddiness surrounding menial programming labor for worthless causes; or just plain repeats of the last decade. I find it disturbing that "real programmer" is being reduced to a trendy magpie web developer code monkey who goes to hackathons. Lord. Ultimately though, you just have very warped definitions of what this whole thing constitutes. My advice is to relax, keep doing what you love doing and let go of these false ideals.
- emersonrsantos 13y agoMother I'm afraid I do not want to malloc Mother I'm afraid I do not want to learn ARM Mother, I am afraid Waking up as Tron Guy Waking up as Tron Guy Waking up as Tron Guy
- BasDirks 13y agoOP is indeed not a real programmer. I guess that ends the conversation.
- imsofuture 13y agoThis 'Real Programmer' thing is a dumb strawman.
- it_learnses 13y agojust wanted to point out that according to the top comment on the link to quora you posted (http://www.quora.com/TJ-Holowaychuk-1/How-is-TJ-Holowaychuk-so-insanely-productive http://www.quora.com/TJ-Holowaychuk-1/How-is-TJ-Holowaychuk-...), it seems that TJ is a hivemind. Are you sure you want to compare yourself to that?
- GFK_of_xmaspast 13y agoI don't want to be a Real Anything.
- agentultra 13y ago> If you are anything like me, you want to become as good as TJ. Who? If you pick up a guitar because you want to be better than Jimmy Page some day you're going to burn out. You might not even realize that you don't even like playing guitar until years later when it becomes apparent that you're not achieving the success and fame you thought you would. We're all subconsciously reinforced to believe that with hard work, perseverance, and that hidden spark of special talent in each of us that we can achieve our dreams. This fantasy is the perfect entry way into our brains to implant desires and ambitions. You want to believe you're the hero of your own story because the reality is certainly not preferable. Don't get caught up in it. Create your own narrative. If programming is only interesting because you want the attention showered on other people then programming is not going to be interesting to you in five, ten years when your fantasy fails to materialize. Programming will always have it's greats just as any field, industry, or art form. Learn from them. Don't try to be them. Many of them are about as talented, smart, and clueless as you anyway. Donald Knuth didn't spend half a life-time and counting writing TAoCP just to speak at conferences. That kind of work takes dedication that only an intrinsic love of the craft can produce.
- erikb 13y agoIf you are really a programmer for just 3 years, then being lean was hot long before you even thought about starting to program. Currently hot means big data. To get on topic: Don't give up just yet! Yes you can not be awesome at everything that you read here on HN. But if you, e.g., care about squeezing out great pixels out of your CSS, you can certainly become awesome at that. Maybe it's more awesome in your eyes to churn out a new iPhone game every week, then you certainly can be good at that. You just can't be good at most things you do. Either you are mediocre at everything, or quite good at one thing and quite bad on the rest. If you think a programmer is so much better at everything, learn to know these people better. You'll see that they might be awesome Node developers, but they might not know even part of what you know about bash and vim. Or English might be their mothertounge, while it is actually your second fluent language, etc. Most of the awesomeness you see in people on stage is biased observation. And certainly you don't get to be awesome if you slave away at 80+h/week. Better stay in the 30-50h/week range and spend the rest of the time to prioritize tasks, stay healthy, networking, etc. With the first approach you will be nothing more than a machine after just 2-3 weeks. With the second approach you can learn and get better every week of the year.
- dsugarman 13y agoI wouldn't fall into the trap of thinking more hours = more production. I find I am most productive and efficient when I don't work 80 hour weeks, that's when the code I write creates problems.
- ratsimihah 13y agoYou failed when you gave up.
- ibrad 13y agoA real Programmer is a machine that does all the work for you. I do understand that you want to be that. I don't either.
- mrpoptart 13y agoif(happy){ continue; } else { try{ somethingElse(); } catch (e) { fastFood() || parentsCouch(); } }
- julesbond007 13y agoBy saying you don't want to be a real programmer, I'm hoping you don't mean a good/great programmer. Isn't it interesting how we're telling everyone to learn how to code, but then people feel like impostors? Well you can't learn good programming and cs standards in a few days or weeks, even in a few years. So no wonder a lot of people feel like impostors. Having said that, it takes quite some time to really develop as a software engineer into a real software engineer. You need to know architecture, design, best decisions, security, caching and more. That's what I call a real programmer. Can you design a search service? If you can't, can you learn enough to design it? How would you even start? Everyone can code, but not everyone can design a system that is scalable, fast, robust and secure. In addition, to be a real programmer, I think you need to start thinking about the future...how will people want to use a browser in the future? If I'm a developer, how can I make XYZ easier and faster to build for other developers? How can I make it so that the code is reusable? Will a framework make it easy? How should that framework be built? How are people going to use it? Etc... Some of it is deliberate thinking and some of it is work experience. So a lot of this kind of thinking comes from real problems software engineers faced while working. Discussions, debates, etc... They found a solution and it was elegant enough for others to use. That's how I think someone goes from an impostor to a real programmer.
- marcosscriven 13y agoI enjoyed reading this. I must have 10 to 15 years on Anas, but I can confirm the feeling doesn't dwindle all that much. The important thing is that you make sure you're enjoying it. Incidentally, think the presentation on that page is excellent. And I like the domain name too.