Coding Horror: The Magpie Developer (2008)
codinghorror.com
codinghorror.com
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.
I was trying to be humorous since the parent poster had said dozens of frameworks; which I'm sure (s)he is aware is an extremely generous number.
There is a good link here on this common issue as well. Based on the number of down votes my post received; you apparently aren't the only one that took it the wrong way.
http://www.wired.com/science/discoveries/news/2006/02/70179
Personally; I believe that the way a person interprets something like this speaks more of that person's inherit trust/mistrust of society than anything else. I personally try to take the mindset that most people are on whole decent, nice people if you get to know them.
Quick; somebody down vote this guy with his 20 karma! Seriously; down vote me some more people! I want to see what happens after zero!
Do you do much front end development?
The beautiful thing is that the progress bar in question comes from one of the companies that pioneered lack of a progress bar in the browser. But hey, Javascript.
If Youtube finds that a progress bar is good for their user experience, more power to them. They can make sure it works as well as possible with their site, and change and remove it if necessary. It seems that you know more about Youtube's design than Youtube's designers.
I don't think that these are actually solved problems, and the web as an application platform can play a part in changing that.
Further, the whole concept of "patching up" a platform to "do something it wasn't born to do" is misleading. Every computing device you use has it's roots in older software that was developed without being intended to perform the tasks it currently is - we stand on the shoulders of giants.
The web as an application platform is still in its infancy, and we're currently playing around with a lot of different approaches - some will live, and some will die. It's how we make progress, after all.
Frontend web development is still absolutely painful and ugly. It's based on a broken paradigm (hypertext vs. interactive interfaces); relies on hacks for fundamentals (XMLHttpRequest is probably the best example); multiple standards pushed by organizations with special interests (remember having to encode video in 4 different formats?); is labour and time-intensive; tooling is still catching up with the 80's.
None of those, in isolation, are big problems though. The big problem is that, because you can always patch everything up with some javascript, there's no drive to have a platform that rests on top of more sound fundamentals - condemning ourselves to an endless cycle of frameworks.
Grumpy nitpick. The browser-as-platform hasn't been so much pushed on the rest of us, as if by some narrow conspiracy. It's been pulled along by mass economic force. Its ubiquity, extensive reach across OSes and devices, and freedom both in terms of beer and speech make it the best bang for buck a high percentage of the time, all things considered.
I agree though that the hypertext-browser and application-platform paradigms haven't always been easy to reconcile.
(frontend) framework design, paradigms and trends. If the stable point you mention will eventually be reached, I am sure everything on the way has contributed and those who have been involved in one way or the other will contribute the most to it and will be the ones that can best contribute to iterative improvements on that stable point.
"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.
Suppose this works for any topic which can include relative descriptions...
'Have you ever noticed that anybody driving slower than you is an idiot, and anyone going faster than you is a maniac?'
Isn't it more likely that "Blub" simply means whatever language it is you happen to be using ?
Also, the post I responded to (and my subsequent post) was a bit confused about what it referred to as Blub. Blub is in the middle and LISP is on the top of the power continuum.
In short, PG makes it clear in his writings that LISP is the most powerful language we have as of yet and he even puts forward the idea that it might theoretically be the most powerful language possible (due primarily to its syntax being a human-readable [and morphable] representation of an AST).
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 ..
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.
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?
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.
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.
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?
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.
Edit: not impossible, mind. Just difficult.
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.
Then I go download some C source code from 15 years ago and it still compiles just fine and I smile a little bit.
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.
The only things not dead are Edward Snowden and languages that compile to javascript. … And declaring things dead.
I agree that newness is too fetishized, but trying out a fad can be a great way to unexpectedly learn and grow
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.
Damn right!
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.
--- [0]: http://norvig.com/21-days.html
Sure, it's possible to move too fast. But the dangers of stagnation are worse, IMO.
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/ScottHanselmans2014UltimateDev...
At least, I spent a summer in 2008 reading through his blog.