5 ms·
Many geeks/hackers don't understand or won't accept the fact that you just mentioned regarding maintenance and Enterprise.
by hello_moto 15y ago
Many geeks/hackers don't understand or won't accept the fact that you just mentioned regarding maintenance and Enterprise.
- Craiggybear 15y agoWell, I don't ... and it isn't just me who thinks claims made about the "enterprise" are pure marketing BS.
- elemeno 15y agoPerhaps that's because most people who think that the claims are BS have never worked with codebases that are expected to exist and be maintained for at least a decade with minimal downtime. Within large companies those types of codebases are normal. The upfront development cost of applications is significantly less than the long term maintenance cost - especially once you've factored in the cost of hardware over the time period, and having to keep institutional knowledge of the applications amongst development teams, sys admin teams and network teams.
- Craiggybear 15y agoOh I have worked with codebases (in large financial institutions and in engineering applications) that are meant to be contiguously maintained for more than a decade. They have been working nicely 16+ years and are easy to maintain with no downtime. Obviously, none of it involves the CLR or .Net. On the other hand, I've also seen seriously big projects ruined by .Net with no handover or documentation. But worst, no accountability. I've also seen a few successful ones but I would expect that culture to deliver continuous quality -- but it surely hasn't. That's why I am saying that most of these claims people bandy around about enterprise computing are nonsense.
- hello_moto 15y agoWe don't do marketing BS since well.. we'd like to use Rails occasionally as well. All I can say is that YMMV since this debate typically goes to no end. If we have a super-hacker on our team that can fix any problems ranging from C to Assembly to Linux Kernel to everything under the sun, we'd take the risk of using cutting-edge technology such as Node.JS to do SOAP/WS-*. Otherwise, it's all Java/.NET plus outsourcing the risk to Microsoft/IBM/Oracle support when shit hits the fan. Certain things don't apply to internet companies by the way. They can write a SOAP library, put it on Github and blog about it how much they save the money but Enterprise project has deadlines and impatient customers.
- stream_fusion 15y agoThe idea of attempting to refactor a 100k+ loc codebase, without static typing and a compiler that can identify issues at compile-time versus runtime is equivalent to asking to be punished. If you must, consider that the role of a type-checking compiler is simply to perform a first round of automatic unit-tests, tests that are conveniently available after providing some typing annotations. To escape static typing - if there is a demonstratable and exceptional need (loose coupling), simply wrap the required events up as objects and switch and downcast on them with enums or use a visitor pattern. Unfortunately associating dynamic languages like ruby, python and javascipt with some narrative of hacker agility and contrasting against a clumsy slow-moving 'enterprise' culture is confounding the issues. This is not to say that there aren't plenty of vendors/consultants selling FUD and over-hyped and over-complicated 'solutions' in 'enterprise' but it's a non-technical issue.
- rbanffy 15y agoFirst, lets assume your 100k+ loc codebase would be about 10k+ loc if coded in most of the "overhyped" languages. That's the primary reason there are not that many huge codebases in them - huge codebases aren't needed. That's also a reason no multi-year development is done with them - it just doesn't last that long. Next, remember not having to upcast and downcast objects considerably simplifies the code, simplifying the tests you need to write. Less code means less places a bug can hide. And, finally, understand that, while not passing compilation proves your program is wrong, passing it doesn't make it any closer to correct. Trust me. I've seen enough "enterprise" codebases in my life. They aren't that special.
- hello_moto 15y agoHm... Assumption #1: 100k+ loc codebase in X == 10k+ loc in Y (somehow... magic) Assumption #2: Assumption #1 is the primary reason not many huge codebases in Y Assumption #3: Static type implies upcast/downcast objects (despite the presence of generics...) == simplifies code == simplifies tests. Fact: Less code == less places a bug can hide Fact: BTW! we all are using tried-and-tested libraries to cut down code to be written Fact: FindBugs (or static code analysis) does actually find bugs to eliminate most technical bugs and leave you with business logic (and quite possibly race condition bugs). Argument: Compiler isn't special, see, I just show you it doesn't proved your code to be correct, there's the logic bug in your Business Logic. (Except that happens as well in dynamic language, AND on top of that you gotta work a little bit extra since you ain't got no compiler). I think this has become your typical nerd holy war between static vs dynamic with no end. Here's my biggest problem with Ruby or Python community: your libraries tend to have short-lived (i.e.: orphaned). When I looked at Java community, they're quite stable and rock solid since 2004-2005 (Apache Commons, Maven, Ant, FindBugs, Eclipse, EclEmma, Spring Framework family, JUnit, Hibernate). Newer libraries tend to have good internal codebases (GWT, Google Guava, Mockito). Most APIs are stable and solid. The stupid ones tend to get kicked out of the crowd (i.e.: Struts, JSF) This is what I'm looking for. I can focus on writing code that matters, instead of refactoring my code once every 4 months because things changed and I have to keep up.
- rbanffy 15y agoMaybe because it's simply false. Static typing is not a pre requisite for quality code. Quality developers is. If you have your codebase maintained properly, maintenance is easy and cheap.
- hello_moto 15y agoHow do you know it is false? (Hint: don't argue with me at this point, it's just random geeks meaningless debate. Really. I mean it. Y'all don't have a good proof that dynamic typing implies better developers or static typing implies bad developers and I'm a bit tired to hear "Good developers, not tools" that kind of crap when most Python/Ruby developers are just as average as Java developers).
- rbanffy 15y ago> Y'all don't have a good proof that dynamic typing implies better developers or static typing implies bad developers I never said (nor implied) that. I said dynamic typing leads to more concise and readable code. Most of the time, you'll be reading the code, so, it makes sense to optimize for readability. > most Python/Ruby developers are just as average as Java developers Wouldn't it then make sense to give them better tools? I don't use Python because I'm better than my colleagues who prefer Java - I use it because I want to get the job done and keep it done with less effort.
- hello_moto 15y agoThe argument of "readable" code is like saying Steak taste better than Chinese food: it depends on your audience. I used to buy the whole dynamic language argument (heck I even lead local Python user group) but not any more these days. To me, Ruby is less readable than Python. To me, when reading a large code base, Java is more readable than Python. To me LISP is weird (even though I kind of like it). Now you said "it makes sense to optimize for readability" the problem with this statement is that less code != readable code (and I don't mean to jam everything in one line a'la Perl). I find that I need to read, re-read, think, and re-think a few times just to understand what the Ruby crowds refer to short, concise, and elegant code. Whereas in Java, albeit more terse, I can just read within seconds to know the intention of the code. So it all depends. Hence me not buying the dynamic vs static debate.