12 ms·
I've found that a large subset of programmers share the same trait as a large subset of photographers: they become so obsessed with tools that they lose sight o
by rpeden 14y ago
I've found that a large subset of programmers share the same trait as a large subset of photographers: they become so obsessed with tools that they lose sight of the fact that the end product is what matters at the end of the day.
For example: there are many people who spend thousands on cameras and gear, and still take terrible photos. There are many developers who spend a lot of time keeping up with what they think is the latest trend, and yet they never finish any projects that get used.
Then you have the photographers who take great shots no matter what gear they use, and developers who write and ship great code and products using Java and other unsexy languages.
Can better tools help you be more productive? Absolutely. But if you spend all of your time worrying that you're not using the latest and great tools, you won't get much done, and you won't be satisfied with what you do get done. I have 15 cameras and unfinished projects in 10 languages that demonstrate that.
My advice? Sit back, pick technology a couple of steps behind the bleeding edge, and focus on results. Choosing Ember over Backbone isn't going to cause your project to fail; building the wrong thing or failing to finish, however, will.
- smutticus 14y ago"A bad carpenter blames his tools." -- Unknown
- _pmf_ 14y agoCarpenters with bad tools often permanently lose fingers.
- __alexs 14y agoA good carpenter blames himself for using the wrong tools and gets new ones?
- PommeDeTerre 14y agoBad tools can still severely hamper even the best of experts.
- rpeden 14y agoAbsolutely. In this case, though, bad tools aren't the problem. The problem is that there are too many roughly equivalent tools, and many of them are very good, but there is a lot of arguing and navel gazing about which new one is the best to use.
- meej 14y agoBad tools also completely confound beginners and can make them think they aren't suited to or do not enjoy an activity that they might otherwise enjoy if they had better tools. For example, I used to hate cooking, because I hated the prep work, it was very difficult for me. It turned out that my hand-me-down knives were very, very dull, a fact I didn't realize until I decided to invest in a nice set of Henckels. A sharp, quality knife makes the prep work easy and now I enjoy cooking much more than I used to. And now, whenever a friend tells me they want to learn to cook, my first recommendation is to make sure they have a good sharp set of knives, because for me, that made all the difference.
- skimmas 14y ago"A good carpenter will crave wood with its own teeth if he can't have good tools." :)
- eranation 14y agoAuthor of the original rant here, funny it became viral and translated to Chinese (and back to English) :) The rant was made as a comment here: http://www.zemanta.com/blog/i-bet-you-over-engineered-your-startup/#comment-685047168 http://www.zemanta.com/blog/i-bet-you-over-engineered-your-s... Picked up by a Tilo Mitra: http://tilomitra.com/the-crazy-world-of-code/ http://tilomitra.com/the-crazy-world-of-code/ And as discussed here in HN before: http://news.ycombinator.com/item?id=4226990 http://news.ycombinator.com/item?id=4226990 The point of it was actually: it's impossible to always keep up anyway so take something you like or already good at and move with it otherwise you'll never get your project done. It's nice to learn new frameworks, and you should, but it's mandatory that by the time you pick up something there will be something else that is considered better / more popular. (I'm not saying "use Java Applets / Flash / XML+XSLT" just because "you are already good at it", sometimes you must let go of what you know and adapt to change, just don't over-kill it by learning EVERY new technology as it comes out, taking 1 step back is always a good thing) I think the spirit of it was a bit lost in translation so here is the original text: > I agree, I can't keep up, I just finished learning backbone.js and now I've found out on HN that it's old news, and I should use ember.js, cross that, it has opinions, I should use Meteor, no, AngularJS, no, Tower.js (on node.js), and for html templates I need handlebars, no mustache, wait, DoT.js is better, hang on, why do I need an HTML parser inside the browser? isn't that what the browser for? so no HTML templates? ok, DOM snippets, fine, Web Components you say? W3C are in the game too? you mean write REGULAR JavaScript like the Google guys? yuck, oh, I just should write it with CofeeScript and it will look ok, not Coffee? Coco? LiveScript? DART? GWT? ok, let me just go back to Ruby on Rails, oh it doesn't scale? Grails? Groovy? Roo? too "Springy?" ok, what about node.js? doesn't scale either?? but I can write client side, server side and mongodb side code in the same language? (but does it have to be JavaScript?) ok, what about PHP, you say it's not really thread safe? they lie?? ok, let me go back to server coding, it's still Java right? no? Lisp? oh it's called Clojure? well, it has a Bridge / protocol buffers / thrift implementation so we can be language agnostic, so we can support our Haskell developers. Or just go with Scala/Lift/Play it's the BEST framework (Foresquare use it, so it has to be good). of course we won't do SOAP and will use only JSON RESTful services cause it's only for banks and Walmart, and god forbid to use a SQL database it will never scale I've had it, I'm going to outsource this project... they will probably use a wordpress template and copy paste jQuery to get me the same exact result without the headache and in <del>half</del>quarter the price p.s. it would have been a longer rant today, I have lot of new things to add to it, sadly things didn't get any better: Now I'm trying to choose between yeoman and brunch, coffeescript vs livescript vs typescript, LESS vs Sass vs Scss vs stylus, Haml vs Jasmine vs that weird language called HTML, testacular vs mocha, fixtures vs mocks, RequireJS vs CommonJS, with almonds or without, I started using underscore then figured out it's already "old school" and I need to actually use lo-dash. So I think I'm going to take your advice ;).
- benihana 14y agoThe second sentence really tells all. " Just learned Backbone.js and only found out it’s already out of fashion." This is why critical thinking and a sight of the big picture is so important. Who cares if something is fashionable? Does Backbone help you solve your problems? Yes? then use it. No? Don't use it.
- deleted 14y ago[deleted]
- sramsay 14y ago"Does Backbone help you solve your problems?" This really bears repeating over and over again, and I think it's a corollary of "start by writing the dumbest thing that can possibly work." If you start with dumb, simple things, the problems become more obvious. Dumb simple things tend to shake out the parts that are tedious to build, or non-conformant, or confusing to read, or hard to maintain. It may be that Backbone (or any of the dozens of other gizmos) alleviate the problems, but you really have to understand the problem first. I really think a lot of people are seduced by the marketing of various tools and frameworks into thinking they have (or will have) problems that they don't actually have. Then they end up with over-engineered solutions that are all the things they hoped to avoid. Don't meant to criticize backbone, or any other framework (or language, or platform). A fancy, hip tool can be just thing. The question is: do you know what "the thing" is really for, and does it fit your situation?
- protonfish 14y agoI don't know if this is good or bad, but when I read "... the dumbest thing that can possibly work" I immediately thought "PHP!"
- ludflu 14y agoI hear what you're saying, and I basically agree. However, I still see some shops building new product with Jakarta Struts, hand coded javascript, and no continuous integration. They spend way too much time doing things that could be automated, which would allow them to spend more time on quality, or more features. (Say, if you want to use a java webstack, have you heard of spring & jquery, and maybe you should try hudson for your builds?) So, its also important to keep abreast of whats happening in the field, so long as you don't fetishize the newest/latest thing.
- barredo 14y ago"Let's argue about whether Haskell or Clojure is better while somebody else ships products using PHP and duct tape." @agentdero https://twitter.com/agentdero/status/174965036928868352 https://twitter.com/agentdero/status/174965036928868352
- guiomie 14y agoMade my day. I will quote this tweet as often as I can to coworkers.
- papsosouid 14y agoI really dislike the anti-intellectualism in fallacious quips like that. People discussing haskell and clojure are not magically prevented from writing code as a result of their intellectual curiosity and desire to explore better tools and methods. The implication that people who are smart and use quality tools never accomplish anything or do any work is quite insidious, as newcomers start taking pride in ignorance because they are "shipping product" while falsely believing those other people aren't. It becomes used as a way to dismiss opportunities to learn because they've equated learning and being educated with not accomplishing anything.
- sbilstein 14y agoagreed. Just because someone can use a pocket knife and some twine to lash together a chair in 20 minutes doesn't mean someone is going to buy that chair. Craftsmen care about their tools, and great craftsmen ship. Shitty ones can ship too, but it won't be good.
- jskulski 14y agoThat's reading into it quite a bit.
- papsosouid 14y agoHonestly, I wish I could believe that. But I really don't see how I am reading anything into it. The implication that people who talk about programming languages that he doesn't want to learn about are not "shipping product" is quite clear. I don't see any way to interpret that sentiment other than as anti-intellectualism.
- freework 14y agoThats true of almost any hobby/endeavor. I know some people who call themselves "guitar players" but all they ever do is go to the guitar shop every weekend to exchange gear. They never actually play their instrument.
- MitziMoto 14y agoAnother problem with this is that tech companies (mostly startups) also fall into this trap where they feel like if they're not using the absolute latest and greatest frameworks they cannot be successful. This leads them to only hire developers who are "experts" with these frameworks (which is basically no one since they're so new) and they spend more time figuring out how to adapt this new technology to their business than they do shipping an MVP. It becomes a viscious circle because now the developers who are experts in some older technology feel like they have to spend all their time learning the latest shiny toy so that they can compete for jobs with said startups.
- api 14y agoAbsolutely. A truly cool app written in VB.NET is more interesting than FizzBuzz in Haskell.
- brehaut 14y agoDepends on the audience, and the implementation of fizzbuzz. This haskell fizzbuzz is great: http://dave.fayr.am/posts/2012-10-4-finding-fizzbuzz.html http://dave.fayr.am/posts/2012-10-4-finding-fizzbuzz.html
- daenz 14y agoBeautiful. I think it's also important to recognize that all tools have their warts, and to stop trying to pursue The Perfect Language/Framework/Environment™, because aside from marginal slow improvements, many modern tools are not that much better than their peers.