4 ms·
I used Java for 7 years and got burnt out with programming because of the amount of upfront design effort required. I would never start coding because I knew my
by olegp 13y ago
I used Java for 7 years and got burnt out with programming because of the amount of upfront design effort required. I would never start coding because I knew my architecture wasn't abstract enough and refactoring it later would be hard.
JavaScript was a breath of fresh air. I could start hacking without thinking about the design, but instead focusing on simplicity and the problem at hand. Refactoring later was trivial.
A big part of this is that whereas Java is OO, JS can start out procedural, evolve to be OO and then go functional, all within the same project.
I'm now churning out more quality code than ever at https://starthq.com https://starthq.com
- aviraldg 13y ago>> I used Java for 7 years and got burnt out with programming because of the amount of upfront design effort required. That is essential for any software engineering project (and is almost the definition of `engineering`) >> I could start hacking without thinking about the design o.O >> Refactoring later was trivial. I've never heard someone say that about JavaScript -- in fact, I've heard just the reverse. Java tooling makes refactoring much, much easier. Not so for JavaScript.
- olegp 13y agoJust being honest here! This is my experience after coding in different contexts for 23 years. Your mileage may vary ;)
- agibsonccc 13y agoYou're right. As much as people rail on java here, it still has some of if not the best tooling in the industry. You can make javascript pretty easy, but the process is a bit more involved (not a bad thing to know your own code though.) It makes me happy to be able to use sublime for all my programming but java. That being said, I have to agree about the design though. You're only shooting yourself in the foot if you just start coding right away. Even just 10-15 minutes of design up front to understand what the heck you're doing will save hours down the road. I think it's more of a problem of balancing the 2. Some people overdesign and don't get anything done while others just do everything and end up with code rot and technical debt later.
- olegp 13y agoOf course one needs to think about the problem up front, especially in JavaScript. The problem with Java was that due to the fact that it's not dynamic, it was easy to get carried away creating abstract base classes and interfaces, or worse yet using generics to build up the foundation for what you actually wanted to do, before you wrote any code that was useful. In JS, the focus for me is to get something that gets the job done in as simple way as possible, and then work to make it more generic.
- agibsonccc 13y agoI could understand you getting burned out on it. I'm lucky to have the flexibility to decide when an actual class hierarchy is needed. I'm also a spring user (mainly for dependency injection and the ability to hot change things at run time). If you don't go overboard with the interfaces, it's not too terrible (still not ideal compared to what I'd consider more modern languages though) It's still my language of choice for data crunching though. I also use python and node/frontend js on a daily basis. I can't wait till I get enough of a break to migrate that over to scala.
- prpatel 13y agoYou need to learn Clojure. I would bet since you've been a developer for 23 years you've probably tried Clojure already - especially since it's popular among the Java/JVM crowd. Here's why, in the context of your post, I think you would like it: 1) Is dynamic like JavaScript, the learning curve for a seasoned developer such as you would be low and you'd get velocity quickly 2) Allows you to focus on the problem solving at hand rather than spending a bunch of time just build base classes to model your solution 3) Refactoring is easier as Clojure puts you on the road to pure functional programming, and your solution is not complected (or at least has low complection) 4) Has a nice interactive environment for prototyping/developing, much like some of the JavaScript tools out there 5) Can emit JavaScript for the browser using ClojureScript
- olegp 13y agoThanks for the advice! I have toyed with Clojure, but the idea of functional programming without a procedural escape hatch for any real world project puts me off a bit after doing ML at university. What would be the best book to read to get me excited about Clojure, in your opinion?
- prpatel 13y agoThere's several good Clojure books. I'd start with Rich Hickey's video "Simple made Easy": http://www.infoq.com/presentations/Simple-Made-Easy http://www.infoq.com/presentations/Simple-Made-Easy The "Joy of Clojure" is the best book on understanding the mid and high level constructs and design of Clojure (and FP). It's not a beginner book though - for that the books from the Pragmatic Programmers or Oreilly are excellent.
- olegp 13y agoThank you!
- crucialfelix 13y agoI also love Clojure, but I would recommend learning Scala. Its essentially a vastly improved Java. Or you could say its vastly improved on many previous languages. But at its core it is Java (JVM). Its easy to read, succinct, functional or OOP when you want it to be, and you can work directly with any java library. Its really a well designed language. The only downside is that the compile time is very slow, whereas with Clojure you can develop on the fly. The downside to Clojure is that the code is very dense to read. But if you have the time I also strongly recommend playing with it for a week. Scala play! is a pretty good web framework.