Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Author 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-s...

Picked up by a Tilo Mitra: http://tilomitra.com/the-crazy-world-of-code/

And as discussed here in HN before: 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 ;).



The absolute worst is SOA (the "enterprisey" buzzword for lots of small services) architectures in which every service is written in a different language!

"Oh, our payment processor is in Node, but our site's in Ruby. Our file caching layer is in Python with bits of C for high performance and our crypto stuff is in C++ with Boost and libcryptopp but it talks to a Java app that uses Cassandra..."

(Runs outside, sets self on fire, shoots self in head...)


I'd take that situation any day over a monolithic monstrosity written in only Java. Small losely coupled services that do one thing is the only way to build a large system if you want to keep your sanity.


What's wrong with that if every service is using the right tool for the job and provides a sane API? Maybe maintenance?


A few things:

(1) Code reuse, or lack thereof.

(2) Multiplication of surface area for things like security bugs... now you have five different stacks to keep track of security updates for instead of just one.

(3) Multiplication of deployment resources-- now you need multiple VMs, maybe multiple instances with different stacks to run them on, etc.

(4) Developers can't pinch-hit for each other unless they know every damn stack in the world.

(5) If you sell, God help whoever has to support that stuff in your new organization.


(5) If you sell, God help whoever has to support that stuff in your new organization.

It would be interesting to know if an acquisition fell through because due diligence revealed something like this and the purchasing entity didn't want to deal with that mess or it conflicted with their culture.


Absolutely not - no it manager worth their salt will pass up the opportunity to say - well we can do it but we will need more cash - we have to hire a ruby team a node team a ...

:-)


In the 1970s, the US DoD had what one could parallel to SOA. They had hundreds of languages; they'd start a new project and with it came a new programming language, stack and toolset. They created the High Order Language Working Group which worked on a document of requirements for one language to rule them all, the Steelman. A competition was had to which 4 colorful languages were entered. The winner, Green, became Ada which coincidentally has just wrapped it it's latest language revision process at ISO. Much of the Steelman focused on maintenance, reliability, readability and other traits that make for good software that will last. It is a good thing take that step back and make sure we are programming up to her level.


Yes. The more different languages (and frameworks) someone has to know, the harder it is to hire them. If you hire people who only know the language of one small part of your system, they can't help out on other parts during emergencies and there will be difficulties adding new parts (which language do you use, or which existing part do you steal developers from). If you hire people who know one language and train them in the rest, the more languages there are the more that training will cost.


And it's rather a good thing, no? I mean, for me, as a developer who happens to know at least a dozen of languages quite well and has a basic grasp on a dozen more, I like it that way. Namely, I like being a harder to find good with limited supply, this means that I will be paid more.

Otherwise what would be the point of learning all these languages, frameworks, libs and environments? Of course the learning experience can "make you a better developer", but is it supposed to be only that?


Read the article the original rant was posted as a comment on. It discusses exactly that.


Author of original post here ...

... this is a crazy trip for a comment to make! And I still think most people over-engineer and over-think their startup tech.

Customers don't care what you use, as long as it solves their problem. The rest just helps with recruiting I guess.


I am amazed a rant can go English -> Mandarin -> English via half the world's tech forums, and still be recognised by its original author.

But what really blows my socks off is how a tech forum in Beijing follows rants from Slovenian blog to a Californian forum and back again. And it actually matters to the Chinese because they liked it as much as we did.

Welcome to the new global culture, sharing the same memepool.


This is scary, we are loosing diversity at an incredible rate.


Of all the conclusions to be drawn from this observation, I believe yours is the most pessimistic.

I'm much more excited by the fact that information was able to quickly traverse national and language barriers, making it's way all around the globe to catch up with where it began in such a short time. That's pretty amazing if you ask me!


Heh, not surprising that comment isn't popular among the group of people who are currently exporting their worldview.

Harder to see the harm in it when it's your culture that's becoming the monoculture. That's the "good one"!


I don't think that's entirely fair - we can safely assume the Chinese tech forum techsmth has a techie culture, because to the relevance of the rant.

That does not mean they do not have heavy influences from their own (and from a quick surf-by Japanese) culture - lots of threads on photos from the 70s and what was it like then.

They will export back. Just because all the money in Hollywood is forcing young pretty WASP vampires at us does not mean its the only way to express oneself


Yeah, it's not just a one way thing. "Western" culture and American in particular is mostly exporting at the moment. I just found it quite funny that a pro diversity comment was downvoted and so disagreed with (well, it was when I posted) here. The startup culture (that HN had a large part in defining) is extremely monolithic and really skewed to exporting ideas right now. Sure, it's happy to import arguments or small ideas from anywhere, but only if they don't disturb the core philosophy.

I feel a powerful need to poke at people, especially smart ones, when they seem to be knee jerk supporting the status quo. Just a good/bad habit of mine.


Some forms of diversity we want to lose - the current Syrian culture stands as a good example, China's own culture of terrible human rights abuses is another. On a more usual definition of culture diversity of attitude towards race or sexuality covers diverse opinions such as the KKK and that guy who protests at gay funerals.

Not all diversity is positive - and given that the norms on the forums this passed through are themselves widely different is a indication of how culture will disconnect slightly from geography.

A genepool is strong if it has variety and if it can spread the beneficial genes widely. This can be dichotomous, but trust me 4chan proves generating a wide variety of memes quickly is something we can do.


I don't think this implies we are losing diversity. Internet makes easy to connect with like minded people and share information. That sounds good. Like minded people around the globe becomes more alike? Maybe. But just in the field they share. And they started with similar interests anyway.


And the ability to spell as well.


Ironic since the original comment complaints about too much diversity. Just because a good rant is recognised across cultures does not imply a loss of diversity. Somethings are just common on this planet, like gravity.


It stands to reason, therefore, that humans do not want this diversity.


Because humans are rational actors with perfect foresight?

What on earth would make you think that this leap "stands to reason"?


To those who are confused due to the myriad of OPs here, Swizec is the author of the excellent blog post that is the beginning of this interesting global thread.

(I bet you over engineered your startup, posted on July 2012 at http://www.zemanta.com/blog/i-bet-you-over-engineered-your-s...)

If you haven't read it yet, highly recommended, much better than my rant.


Sometimes I love over engineering my projects. It helps me hone my skills and keep updated. But I limit my self to one side. E.g. Back end or front end.

In my case, it's back end. API and stuffs. I'm also trying to limit my self in using different kinds of language. My current Back end stuff today are Grails for web app, Scala for non web, Redis, memcached, MongoDB.

Don't ask me about front end. I'm not updated with it by choice.


Hi, OP here. Didn't know the existence of your original post, hope that you don't mind my 'unofficial English version', :) I've updated my blog to reference your post and previous discussions. I'm glad that my version isn't too far off.

it would have been a longer rant today, I have lot of new things to add to it, sadly it didn't get any better

Please do. I would look forward to the newer version.


:)


"you'll never get your project done" This, it is about shipping product in the end. You will have a hard time selling an incomplete project. You are solving problems for customers.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: