10 ms·
Coding Horror: The Magpie Developer (2008)
- michaelwww 13y agoThe Magpie Developer is easy to shoot down, but as this thread [1] makes clears, we usually switch roles in our career. If you're not a Magpie once in awhile, you're not trying new things enough. https://news.ycombinator.com/item?id=6938645 https://news.ycombinator.com/item?id=6938645
- RankingMember 13y agoDear god yes, agreed. For someone still learning the ropes, the absolute torrent of new buzzwords/languages/dbs is really fatiguing.
- kyle_t 13y agoIt truly is and even for experienced developers it can be overwhelming. It is simply impossible for anyone person to be knowledgeable every new technology and/or programming language. I used to constantly fall in the trap of shallow but wide breadth of knowledge. Something new would come out and I would drop everything and dive right in. It feels rewarding at the time but really in the end has very little benefit (unless of course your a tech reporter). My advice is to achieve a narrow and deep knowledge base. Pick a few that you feel passionate about and really concentrate on mastering those. It would help to pick those that have a large number of related job openings if its your livelihood. Mastering Java may seem old school, but the number of job postings I still see for java developers is amazing.
- danielweber 13y agoIt is incredibly fatiguing. Oh, you were working at a company for two years on technology X? Sorry, we need to hire someone who knows Y which you couldn't because you were working on X. No, I don't care that you could learn it in 3 days, our HR procedure says we can't give you 3 days. Then I go download some C source code from 15 years ago and it still compiles just fine and I smile a little bit.
- craigyk 13y agoYes, and to imagine I only got started in front and back-end web-development 3 years ago when I'd say things were even crazier. While learning I was being bombarded by the explosion of HTML5, CSS3, LESS, SASS, Stylus, templating engines: Mustache, Handlebars, Jade, Dust, server side frameworks: express, flatiron, tornado, client-side: prototype, knockout, ember, meteor, etc. It was common for me to see HN announcements for new JS libs or frameworks that would obviate my previous three weeks of work. This really prompted me to enter a magpie phase since it's hard to put your nose to the grindstone if you can hope (often with success) that someone else will solve your problem for you.
- habosa 13y agoA related notion is the Blub Paradox: http://c2.com/cgi/wiki?BlubParadox http://c2.com/cgi/wiki?BlubParadox "As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub." I, personally, am very slow to adopt new languages or frameworks for serious projects. Still haven't found anything I can't do with Java and/or Ruby on Rails. I do try to keep up with the news so I'm not totally caught off guard, and I make a point of building toy projects in other languages like Python, Haskell, Scala, Clojure, etc. It's important not to be a Magpie, but also not to get caught up as a Blubber and end up looking for a COBOL to Objective-C cross compiler so you can make an iPhone app.
- Domenic_S 13y agoThe old MMORPG adage fits here well: Anyone worse than you is a noob, and anyone better than you is a no-life neckbeard.
- mturmon 13y agoAlso, the neighborhood politics dichotomy: Anyone who has been in the neighborhood longer than you is a NIMBY bent on obstructing progress, and anyone who arrived more recently is a heartless gentrifier.
- g8oz 13y agoThere is one for religion too: anyone less observant than you is a heathen, anyone more observant than you is a fanatic.
- alxndr 13y agoWe're gonna leave out the sex one? "Anyone kinkier than you is a pervert, and anyone not as kinky as you is a prude." Suppose this works for any topic which can include relative descriptions...
- motter 13y agoI agree with the main conclusion here, but it's a stretch to reduce technology choices to a simple "new or not" dichotomy. Let's say you're writing a new web service in Java, because it has features aplenty and is also the language your team is most familiar with. You're confident the JVM is a platform you want to build on. Now you need to: 1. Choose a set of libraries or a framework. Do you go for Spring or Java EE, or for something newer like Play or Dropwizard? 2. Choose a build tool. Maven? Ant? Gradle? Maybe we'll write some scala, so SBT? 3. Choose tools for deployment, config management, etc. 4. A database. 5. And so on. All of these tools have different trade-offs. There are so many trade-offs that I don't think blog post comparisons (or whatever) cut it. And so you have the "magpies" who try and figure out some of these trade-offs for themselves by experimentation. (That is what, in my opinion, hack days and 20% time are for, not your new production system.) But don't listen to me, we wrote our new web service in Go ;) More seriously, it was a major decision and I couldn't possibly write a few hundred words on my blog to justify it. I may write a few thousand, though.
- kyle_t 13y ago"All of these tools have different trade-offs. There are so many trade-offs that simple blog post comparisons don't cut it. And so you have the "magpies" who try and figure out some of these trade-offs for themselves by experimentation. (That is what, in my opinion, hack days and 20% time are for, not your new production system.)" Absolutely. Someone has to be the designated pseudo-magpie in order to architect the stack. Doing so effectively though requires a dev who can look past the buzzwords and elevator pitches to really get to the core of it. Essentially they have to be magpie and anti-magpie at the same time. Does this new technology really offer me any benefit or is it the same end result wrapped in new clothing?
- pron 13y agoRight. Because like it or not, justified or not, when new tools are developed, old ones are abandoned. Sometimes if you stay with what you believe is the tried and true, you end up having trouble supporting new features. This is true mostly for libraries, though. If you switch your main programming language more often than once a decade then you're either a true magpie or you just don't know how to pick them.
- badman_ting 13y agoHell, a lot of us are just now absorbing ideas that came about in the 60s and 70s. There's good new stuff of course, but a lot of it is redoing an existing idea in a slightly different context, with new and exciting bugs waiting for you to discover them when you'd most prefer not to.
- apetresc 13y agoIt's at least a little bit ironic that Atwood predicts, in that 2008 post, that Rails is "already" dead. Jeff's latest company, Discourse, is all Rails. I guess it's not quite that easy to know what the fads are, huh?
- vitd 13y agoDoes anyone else find it odd that the majority of links in his articles are to his own articles?
- ben336 13y agoNope. He's written a lot within a clearly defined scope "the human side of software development", so his articles are often related. Beyond that, self-linking is a great form of self-promotion and getting readers engaged in a blog.
- Helianthus 13y agoMaybe. That was the style of the day, and Atwood's blog can easily be read sequentially (such that the self-references aren't necessarily self-promotion so much as they are helpful reminders of previous concepts). At least, I spent a summer in 2008 reading through his blog.
- tel 13y agoThis is definitely a reach, but the reason why I like learning math more than CS is because it's been around long enough to inspire confidence that it will continue to be around. Likewise, this is why I would study something like HoTT--reasonable certainty that the things I'm learning there will form the basis of the final programming language. I don't mind change, but I dislike putting weight in fashion.
- buckbova 13y agoI love shiny new things and will keep on collecting them. Thanks to this article, I may have found some more. It pointed to the 2007 article, well here's the latest Scott Hanselmans Ultimate Dev Tools: http://www.hanselman.com/blog/ScottHanselmans2014UltimateDeveloperAndPowerUsersToolListForWindows.aspx http://www.hanselman.com/blog/ScottHanselmans2014UltimateDev...
- danso 13y agoAfter spending a couple days pitching in on a Wordpress redesign...I'm reminded how lucky I was to have a little magpie in me. PHP was my first web scripting language and I was even able to build web apps from it. Later on, my employer switched to Rails, and I had never even heard of Ruby. But going back to PHP years later, I'm surprised at how much the variety of experience I've had just understanding different patterns makes it easy to go back, and even understand things that I had never understood before in PHP. I agree that newness is too fetishized, but trying out a fad can be a great way to unexpectedly learn and grow
- scarecrowbob 13y agoI agree-- I don't adopt every tool I play with, but how are you ever going to learn better patterns for working if you never look at other ways people do things?
- wwweston 13y agoIf I had to pick a single pain point about front-end development right now, it would be this. The new features in HTML, CSS, and native browser APIs plus the variations and limitations of each browser (plus the special and not particularly settled world of mobile/tablets) is hard enough to keep up with. But we're now in the stage where there's a dozen frameworks out there, probably classifiable into at least three distinct paradigms, and then we have the languages that target the browser. And I suspect we're a long way from shaking this out into a semi-stable point. The thing that I like least about this treadmill is that time invested in the ephemeral arcana of a stack/platform is time that isn't invested in skills that will transfer elsewhere and help you become a better general problem solver.
- bigtunacan 13y agoIt must be so wonderful living in your world where there are only a dozen frameworks to choose from. Does money grow on trees there too? Are the streets made of gold? Do people fly their cars to the beach everyday and swim in cherry flavored cola? Please tell us more.
- dictum 13y agoThere's a nice world where people aren't snippy about comments that aren't particularly offensive.
- bigtunacan 13y agoI didn't find the poster's comment offensive. It was a joke; relax and find a sense of humor. Heck; I even up voted the poster to give them some karma since they have a valid point. Sheesh.
- dictum 13y agoMy comment was a reflection on your comment—"It must be so wonderful living in your world" implies the parent is shortsighted and was ignoring the difficulties of real-life development.
- interstitial 13y agoI'm glad database technology with its deep (and provable) mathematical foundation like SQL is free from these distractions. I mean what if there was this huge push of Object-Relational Databases in the 1990s and 2000s, including XML-native databases? I mean what if there was this massive claim that normalization is just an old man's fetish, and a bunch of geniuses figured out you could store things in memory and flat files like the punch card days? And then they created this huge buzz on hash tables, and key value stores with some magic serialized JSON could be ankle deep in linked key/values stores and scalability and all such things were claimed but seldom proved. And then mathematics of normalization hit them in the face, so they have to invent a new buzz word for normalization while still pretending SQL is an old man's fetish. More acronyms I say!
- loudmax 13y agoYou do realize that there are successful companies storing massive amounts of data in NoSQL applications, yes? I guess you don't have to call key value stores and such "databases" if it bothers you. If you're making the case that traditional relational databases are still relevant today, I don't think you'd find many who would disagree. Databases of the sort described by Cobb are as valuable today as they ever were. NoSQL land has lots of competing technologies to draw the magpies. MongoDB was hot before. Now it's not. So it goes. But if you're trying to make the case that SQL is the only way to store data, you lack exposure to the variety of data out there. There are situations in which using a traditional relational database simply doesn't make sense. Would you really want to run, say, an instant messaging application with millions of users on Oracle?
- derefr 13y agoBoth of you are correct. Around 2000 or so, we started to see companies that 1. had Big Data; 2. spread it across data centers spanning different continents; and 3. needed to display and update it in real-time. These companies (Facebook being the modern example) basically needed to throw out normalization (i.e. to choose AP over CP) in order to get an acceptable UX for people interacting in different parts of the world. And these companies were prestigious. But these two facts combined meant that everyone was quick to adopt these "pragmatic solutions to Big Data problems" in order to try to signal some of the prestige involved with having "Big Data problems." But, since their Data actually wasn't Big enough for the real pragmatic solutions to be more helpful than harmful, the prestige-seekers sought to simplify the "pragmatic solutions" -- keeping all the pain involved with non-relational access, while shucking anything that could potentially operate at scale. Thus were "consumer" non-relational databases (e.g. Mongo) born.
- fit2rule 13y agoOne thing that we seem to constantly need to be reminded of, is the fact that the world gets a new set of human minds, every year, looking at the scene. Children are among us. While some of us may have had decades to dissect the polity of the world, yet new minds are today discovering the basics. Thus, there really isn't any 'news' as such - just 'data relevant to those available to view it'. The consumerist ideal of 'the new new' is a fallacy; in fact things need to be at least 6 months old before they become 'the new thing', in most realms of human cultural interaction. This fact of 'where new comes from' (sex, basically) is true of developers, as it is true of any other human responsibility that can be taken. Developers, new to the scene, who do not know what was there when they arrived (for various reasons), end up building new things. Those new things do in fact represent progress to the human species; in that they can be as-broken or as-brilliant as anything else, but won't - likely - be exactly the same as anything else out there. Difference drives us forward. But calling people out specifically and associating them with animals is, alas, not a new thing. It has been going on forever, it seems. Is it not tiresome to a developer to be instantiating fallacies like 'magpie disorder' on other human beings so easily? Not that I agree with the position that the 'always-new widget must be used' specifically; more that 'new ways to discriminate' isn't something this hacker, personally, wants to read about ..
- jorgeleo 13y ago"Users don't care whether you use J2EE, Cobol, or a pair of magic rocks. They want their credit card authorization to process correctly and their inventory reports to print. You help them discover what they really need and jointly imagine a system." Damn right!
- mildtrepidation 13y agoIt's become funny to me how people who aren't professional web developers assume that the "pace of technology" means you must obviously be learning and using the newest cutting-edge tech at all times. Aside from such a thing being irresponsible for those of us with clients who need fundamentally sound and stable groundwork, it's an incredible waste of resources. Unless it's actually your job to evaluate new languages and frameworks (which, by the way, would be awesome!), it rarely makes sense to be riding the latest craze just because it is the latest craze. It's good to have options. It's not necessarily good to try and use all of them.
- _random_ 13y ago"...the vast majority of programmers have yet to experience a dynamic language of any kind..." - We've tried them now, can you please take them back? At least JS.
- mkhattab 13y agoI'm reminded of Peter Norvig's "Teach Yourself Programming in Ten Years."[0] How can we develop intuition about new tools if their half-life is measured in days while intuition takes perhaps years to develop? --- [0]: http://norvig.com/21-days.html http://norvig.com/21-days.html
- curmudgeoned 13y agoI believe these sorts of people are also referred to as warez d00dz.
- deleted 13y ago[deleted]
- TheZenPsycho 13y agoHacker News declares new things are dead. Along with Web Pages, Blogs, Net Neutrality and PSD to HTML. The only things not dead are Edward Snowden and languages that compile to javascript. … And declaring things dead.
- lmm 13y agoBut progress is real. The people who moved to Ruby weren't just following fashion (at least, not all of them) - the language genuinely improved on what had gone before. And now that they're moving on again, it's not (just) to try and get away from all those losers who're writing Ruby nowadays - it's because lessons have been learned, problems have been solved, and there are some improvements that you can't make without writing a new language. Sure, it's possible to move too fast. But the dangers of stagnation are worse, IMO.
- aikii 13y agoI'm quite amazed that I almost never get any answer to the question : "what is the problem you're trying to solve ?". We should make placebo software. Zero feature, 100% marketing, but gives the occasion to look at the problems we really have. Maybe have a consultant for the vaporware acting as a therapist. Oh wait, I have a strange feeling of déjà vu.