10 ms·
Programming is Terrible
- kzahel 14y agoDNS is centralized? Not as I understand it.
- steveklabnik 14y agoThey mean 'hierarchical': http://en.wikipedia.org/wiki/Root_name_server http://en.wikipedia.org/wiki/Root_name_server
- andyzweb 14y agoIANA and the 13 root servers are the central authority of DNS
- chrisbennet 14y agoBitter much? I've been fortunate to have never worked with bad programmers. Some were not super experienced but still they cared. They did their best. A bad programmer would be someone who didn't care about the next guy. As for "A" players, they exist. They develop code that others can understand yet probably wouldn't haven't have come up with themselves. Hard work does not make you an "A" player. Intelligent work does.
- recursive 14y agoIt's possible to care and do your best and still turn out worse code than someone who doesn't care. I've seen it.
- endlessvoid94 14y agoYep. Passion, unfortunately, doesn't equal quality.
- kaeawc 14y agoI have worked with people who not only do not care about the next guy, but will insult and belittle others in every way. This ranged from racism to sexism to throwing his title of "senior software engineer" to order others who did not report to him. This person was almost let go for these reasons multiple times, yet toed the line in front of management. I am glad that I've only met one person who was that negatively impactful... yet I'm just 2.5 years out of school. I feel of buzz words like "rockstar", it makes things extremely ambiguous. If I say full stack dev, you know that person is comfortable going from data stores all the way to UI. If I say guru in python, that means he is not only proficient but an able teacher of python. If I say rockstar dev or A player, what is that? If you say someone who works intelligently does that mean those that are not A players are unintelligent? In that case I would only want to hire A players... and then why not avoid the buzz word and say that? On the other hand, I can see how addressing someone in terms of praise on their endless ability to solve problems by their great capacity for creative thinking would warrant a term like rockstar.
- ddw 14y ago> A bad programmer would be someone who didn't care about the next guy. Unfortunately I wish this was true to non-programmers. But a "successful" programmer ships without worrying about how difficult it is to add a feature or to debug a problem when they're gone. At least that's my experience in my current job where I'm mostly maintaining shitty code. And I know it's a culture problem too.
- kawsper 14y agoYup, the company hero programmer ships and meet deadlines. While all the "bad" programmers sits there, worrying about stuff breaking in the wild, with only their 1% code-coverage tests to verify that everything is working.
- unimpressive 14y ago> The only supporting evidence for the “uberhacker” was a study on batch processing vs interactive programming, in 1960. On a handful of people, in a half hour session. The rest of the noise is untamed adolescent egotism. I present exhibit A: Richard Mathew Stallman before he got RSI.[0] The stories of those early computer pioneers should make computer users everywhere take pause and seriously think about the damage they're doing to their tendons. [0]: In fact, if you type "uberhacker" into wiki it redirects to him.
- Sodel 14y agoAgreed. Whatever you think of RMS, some respect is due anyone who can honestly say "I implemented Common Lisp once".
- jdale27 14y agoRMS implemented Common Lisp?
- Sodel 14y agoYeah. He mentions implementing Common Lisp for Lisp machines in [1], but unfortunately doesn't go into any real detail. My guess is that it was part of the work he did to help LMI during the Lisp Machine wars. [1] http://www.gnu.org/gnu/rms-lisp.html http://www.gnu.org/gnu/rms-lisp.html
- Intermernet 14y agoMust be a random selection from a list. When I tried it I got Linus Torvalds :-) That, Wikipedia, is very cool!
- TeMPOraL 14y agoNot really; someone changed the redirect moments ago: http://en.wikipedia.org/w/index.php?title=Uberhacker&action=history http://en.wikipedia.org/w/index.php?title=Uberhacker&act...
- deleted 14y ago
- token_female 14y agoThe article referred to sexism in tech. Cue downvotes.
- CoolGuySteve 14y agoFinally, a reasonable programming blog post. I'm so tired of the inane myths coming out of the programming community like the recent 'liberal/conservative' thing and the 501 manifesto. It seems like every 2 months I have to stop visiting hacker news and proggit while another one of these seemingly intuitive but unsupported link-bait blog posts comes around followed by a deluge of links saying NUH-UH. Here's the thing, if there is no research supporting your intuition, it's just bullshit. Bullshit is all fine and good until it gets repeated as fact, after that it hurts our professional integrity and enforces biases and discrimination. Fucking stop it.
- jacquesm 14y agoLots of research gets started because of intuition. If there is no research supporting your intuition it may simply be that nobody got around to doing any, not that your intuition is 100% certain bullshit. So when you find your intuition is not supported by research go do some research. Don't automatically assume it is bullshit or otherwise lots of research will never get done. And then share the outcome of that research (positive and negative) along with your intuition.
- cben 14y agoI disagree - distilled intuition is priceless. Intuition is why I learnt most of what I know about hacking came not from university courses () but from scouring the internet for interesting reading, studying open source and RFCs, and reading blogs. Intuition is why I come to HN and and stackoverflow (or formerly to the c2 wiki and usenet) instead of reading ACM journals. The programming landscape is vast, and there are a 1000 ways to do the same thing, but a few of them are beautiful, and I want to know why, and what guided their design, and how should I think about these things. Research is mostly silent on this, and when there is research it's hard to tell how credible it is. Whereas if Bram Cohen writes something about networking, I listen up, because having created bittorrent is a way stronger signal of credibility than having an X citation index. And yes, I'm deeply biased. E.g. I read Stevey's Rants because I share a lot of his beliefs, and love his writing style. So I get confirmation of my beliefs, and they may still be wrong, but at least now I have a good vocabulary* to discuss my beliefs, e.g. "liberal"/"conservative". I loved the Unix style before reading TAOUP, but now I have clearer definitions - and names - for the qualities I admired. BTW, the Jargon File is an early example of hackers seeking out a shared vocabulary of intuition. (*) SICP was an outlier (as were some other courses my university borrowed from MIT). Written by exceptional hackers, talking about design principles explicitly, and exemplifying elegance on every corner (it wouldn't be half as great if it used CL instead of Scheme!). "Programs should be written for people to read, and only incidentally for machines to execute." - SICP didn't cite research to support this intuition, but I'm ready to repeat this one as fact. What was bullshit was an OOP course taught by a CS professor who doesn't code much and TA'd by a Java drone.
- amplitwist 14y agoThis article is an example of everything I don't like about Hacker News. The author decries everyone's supposedly "black and white" world, but commits a far greater sin by replacing it with a one-color world, where everything is grey, all shades of grey are equal, and distinguishing between them makes you a bad person. The worldview of many here denies the fruits of virtue. Some, like this author, deny even the possibility of virtue. This is the epitome of foolishness - virtue contains the seeds of its own rewards, and always will. As an an example, I read an article on here about a champion competitor in an algorithms challenge. The comments section on here wasn't focused on how he solved the problems, nor on how he prepared for the competitions, nor on how to improve our own skills in this area. The vast majority of the comments were along the lines of "these are meaningless and arbitrary challenges, and his skills are useless. why doesn't he spend that time building something useful? i wouldn't prefer him over another potential hire who was otherwise equally qualified, but didn't win global coding competitions" Meanwhile, a company that was not afraid of righteous judgement is profiting from an excellent problem-solver with great insight into difficult problems. The endless equivocation, nihilistic relativism, and snarky hit-and-run comments, like the author's jab at sexists, provide no insight into anything. Most comments here lay down a thick smog of words that obfuscate whatever insight their authors may be capable of.
- codeonfire 14y agoSo true. You have to learn that programming is politics from day one. Unfortunately, unlike the sciences where there is a framework for determining who is good and who is bad, in programming it is left up to sometimes immature people to make their case. The best way to silence them is with working software.
- rayiner 14y agoThis can be said for nearly every white collar job besides maybe trading or something similarly measurable.
- codeonfire 14y agoWith sciences you have citations, peer review, credentials, etc. What do you have when management absolutely loves their immature high school dropout rockstar because they fooled investors enough to bring in big money? I think that programming is a bit of a special case.
- tkahn6 14y ago> With sciences you have citations, peer review, credentials, etc. You should read this: http://en.wikipedia.org/wiki/Dan_Shechtman#Work_on_quasicrystals http://en.wikipedia.org/wiki/Dan_Shechtman#Work_on_quasicrys...
- codeonfire 14y agoI'm not saying that the sciences are not political, its just that you have to do decades of work before you can even begin to criticize your rivals. Even then, you are trying to convince smart peers in writing. In programming, the thinking on the street is that the younger, less educated, and less experienced you are, the more awesome you are.
- rayiner 14y agoThis blawg has much potential. Love the post about marginal expected value.
- joesb 14y agoOn the other hand, many if not most businesses run just fine getting only 20-40% profit. Some business even run on being able to get only 2-5% profit for each investment, but re-invest tens of times per month. Why must software project have 500% profit before it makes sense to kick-off.
- rayiner 14y agoSoftware projects need more than a 10% margin for the same reason constructing a skyscraper does. Some types of investments are inherently less predictable than other types.
- shadowmint 14y agohm. Correlation and causation aren't the same thing. You can correlate good programmers with all kinds of things, but that does not mean that those things make good programmers, necessarily. ...but, you know. There's probably a pretty strong causation in some cases (eg. write code in spare time, play music, speak a second language, believe in TDD, whatever), and if you're trying to be a better programmer, looking at the things that other good programmers do is the right way to get better at it. Some correlations are obviously stupid though (gender, politics) and I'd be vastly more interested in data mining life-analytics of good programmers for interesting useful correlations (eg. play sport? hand-eye coordination? memory? write c++ for fun? know how to write assembly?) rather than just saying, well, all correlations are probably arbitrary and don't have any relation to causation. Pity there isn't really any way to get hold of that sort of raw data to play with~
- j45 14y agoProgrammers who can say "I don't know, but I want to." are the type that build things of worth in my books. Beyond this, this post brings up an interesting question when examining the unpalatable extremes of the programmer personality spectrum: Do Programming fundamentalists share ignorance and intolerance tendencies like racists or bigots? - us vs. them - the preference of my language/framework vs your language/framework - there's no way anything can be true or possible if I don't understand it or hold it as my current view point If we notice, fan boys quickly can get defensive, or worse, assault others that don't fit their way, group, or mould. It's sad, but this is done as much covertly as overtly. The test: Bring up a tool, process, language or framework that's not in vogue right now but may be perfectly capable. Notice how some (mostly inexperienced and insecure themselves) may scoff, belittle, deride, and denigrate others. I just think it's a shame. We have in our hands and our minds a way to leave the world better than we found it. Instead too many of our kin are busy needing to be told we're special rockstar ninjas who are the growth cutting and bleeding edge that are busy crushing and killing things, but continue procrastinating and searching aimlessly here.
- wallflower 14y agoMaybe rockstars isn't the best term, legendary is better [1]. John Carmack (Doom), Dave Cutler (Windows NT), Jeff Dean (Google's competitive advantage) [2], Bill Joy (Unix, vi), Peter Norvig, Larry Wall (Perl), Steve Wozniak (Apple II), Jamie Zawinski (Netscape), and many more who I may have missed... All of these programmers/engineers are legendary. For example, Steve Wozniak - read how he hacked a floppy disk and color into the early Apple computers [3]. [1] http://news.ycombinator.com/item?id=1017939 http://news.ycombinator.com/item?id=1017939 [2] http://research.google.com/people/jeff/ http://research.google.com/people/jeff/ Not just Jeff, also Sanjay Ghemway: http://research.google.com/pubs/SanjayGhemawat.html http://research.google.com/pubs/SanjayGhemawat.html Craig Silverstein: http://www-cs-students.stanford.edu/~csilvers/ http://www-cs-students.stanford.edu/~csilvers/ [3] http://www.foundersatwork.com/steve-wozniak.html http://www.foundersatwork.com/steve-wozniak.html
- Permit 14y agoI wonder if the author is simply trolling with the first post. He says: "This myth has many forms, with many attempts to explain the magic power away in terms of some physical characteristics– 1. Programmers who have a penis are good 2. Programmers who do not have a penis are bad If you believe in this in any way, it is highly likely that you are not only a terrible programmer, you are a terrible person too." Then on his Twitter he proudly displays in all capitals "I AM A TERRIBLE PERSON" https://twitter.com/tef/ https://twitter.com/tef/
- bonzoesc 14y agoThere's an undercurrent of gallows humor you're missing. Recognizing and being mindful of your shortcomings is wisdom.
- kenjackson 14y agoThis guy gets it wrong in his last post on reliability (but the other posts seem reasonable). Reliability is hard because we continue to move the goalpost. I can write a pretty reliable program to compute sin/cos tables or to sort a phonebook or to do some basic projectile trajectory. But those aren't even table stakes anymore. Today a first year undergrad student might be expected to write a program that in 1970 the most advanced programmer in the world couldn't do with a large team and millions in funding. I hate the analogy to other fields of engineering (and this author doesn't fall down that trap, but plenty do). Bridges haven't changed in the past 10 years the way programs have (in terms of functionality or complexity). And lastly, this is IMO, a corollary for why ageism is so persistent in our field. Experience means very little. Why? Because I can capture 70% of your experience in your code -- in your library -- and build directly on top of it. I don't actually need you. There are few other fields where as much of your experience can be captured in something so reusable (despite our constant protests that code isn't reusable -- it's more reusable than any output from my plumber). Programming is terrible because we obsolete ourselves by moving technology out of our own grasp. The fact that newer programmers don't understand the foundation they build on is irrelevant, since few need to look behind the current. Unfortunately, I think it is simply the nature of the beast. It's why we love it and do it -- and probably why we'll all eventually stop (or at least move into management).
- jiggy2011 14y agoThat last point rings quite true with my experiences. I've been writing PHP and some other languages off and on for about 10 years now. Looking at current jobs listings it's difficult to find things that I am particularly well suited for, even in web programming. Since I was using PHP well before the current crop of mature frameworks and CMS the majority of my experience is in trial and error development of my own database access patterns , anti XSS , anti SQL injection and all of that other stuff that you used to do yourself in the early 2000s. As a result I have handwritten countless numbers of CMS systems and frameworks and am comfortable taking a bunch of hardware , building a Linux server out of it and mounting it in a rack. But nowadays the conversation is not so much about that stuff, it's "what do you know about EC2?" , "What do you know about codeigniter?" , "What do you know about Wordpress?". So, my knowledge has been abstracted (generally by people who would do a better job it than I did). It's quite a hard thing to explain to your family when they say "But you've been doing programming for years! You must know everything about it now!"
- moocow01 14y agoProgramming is honestly a very tricky sector of work to understand how to make progress in the practice of it from here on out. You have essentially an almost infinite number of ways to get to an endpoint with very few real constraints... this is good and bad. We have lots of creative freedom within the constraints of code to achieve a certain piece of functionality. For example, authentication - Ive seen it done somewhat differently on every product Ive worked on not to mention the different languages and coding styles used. Most programmers enjoy the mental process of crafting their own implementation and there is usually a real reason for custom development - every product is a little bit different. The bad... we seem to have to continually be rewriting custom implementations of very similar things which equals cost and usually mediocre reliability. We barely even have adhered to guides for something as common as authentication (at least that anyone pays attention to). This is quite vastly different than other professions. Take for example plumbing - while not every job will be done the same by every plumber, there are a set of standards that all plumbers leverage - specs on pipes, fittings, etc. Or take for example healthcare, most doctors have at most a few different treatments that are agreed upon as effective. But its not like certain sections of the programming community haven't tried... we have open source libraries, plugins, published recommendations, etc but the problem is that the landscape is a mess not to the fault of any individual... programming languages, technologies, business requirements come and go every day effectively erasing much of the work/libraries/best practices/etc that were just starting to get established. Its as if we need to only have one universal unchanging language and a set of universal devices we all agree on with an unbiased committee that organizes open source modules - I also live in the real world so realize this is a bad idea that will never come to fruition for a 1000 and 1 reasons but I have to agree with the author and dont have much hope in short term "real" advances in how software development gets done.
- rohamg 14y agoI see this as a positive, not at all a negative. Programming is rare in that the field lends itself very well to creative destruction / natural competition / evolution, for many of the reasons you describe. The process is chaotic on an individual level but the population as a whole moves forward far more intelligently than any centralized process could hope to mimic.
- chrisringrose 14y agoTLDR: Don't bother making anything - there's no chance it will be successful, no matter what. Life sucks, then you die.
- jhuni 14y agoNo.
- jhuni 14y agoProgramming is just terrible for you because you don't have the awesome Emacs setup I do.
- coaxmetal 14y agohey cool I thought of tef when I saw the title of the post and it was tef!
- plorkyeran 14y agoYeah, the @tef link at the bottom was completely unsurprising.
- benwerd 14y agoI'm so pleased tef is blogging this stuff. It's fun to see it in one place.
- artsrc 14y ago> Really, we don’t know how to write and maintain software, let alone reliable software, without throwing vast amounts of time or money at the problem. when we come up short we’re left with the inevitably bug-ridden fruit of our labours. The way to write software efficiently is to have a small team of skilled, experienced and motivated people deliver it incrementally. The space shuttle team developed a process to deliver software that was not bug-ridden. This was costly. And there are collections of patterns to improve robustness of systems that are discussed in books about Erlang.
- johnbender 14y ago"Another hope might be academia, but much of the focus is on program verification, rather than reliability. Well typed software will eliminate some failure classes, but it doesn’t give you robustness." For anyone who's curious, academic research into verification extends far beyond "Well typed software". For example: Klee: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs [PDF, very approachable] http://www.stanford.edu/~engler/klee-osdi-2008.pdf http://www.stanford.edu/~engler/klee-osdi-2008.pdf That paper is a nice example of how constraint based model checking can provide code coverage well beyond what a human developer can accomplish.
- eru 14y agoAnd there's also proving code correct. Like the recent example of seL4.
- aut0mat0n1c 14y agoIt seems like to me the problem is not that academia isn't interested in reliability, its just that they are solving the wrong problems. I am thinking about Byzantine Fault Tolerance specifically, as from what I understand it is a hot topic of research at the moment. That seems to me to be an example of academic research that is next to useless for practitioners. BTW that quote is from Leslie Lamport, maybe its so obvious he didn't think it needed a credit.
- dschiptsov 14y agoProgramming is a Joy.. Ignorant cowboy-coding is suffering.) Read (learn) before you write. 80/20 rule works here.
- tesko8482 14y agoAs a programmer young in my career, it's interesting to get this type of perspective.