4 ms·
I'm not sure I agree much with this. When I first started learning Java I had six or seven years of programming experience and I still found dealing with matter
by cutchin 6y ago
I'm not sure I agree much with this. When I first started learning Java I had six or seven years of programming experience and I still found dealing with matters of classpath and javac remarkably complicated. I had things down well enough with the tools I used before, but it all seemed so foreign in the Java world.
And to this day I find junior devs struggle with the same things unless they have a maven/gradle project all set up for them.
I'm all for folks learning these skills eventually, but in a first-year CS class I'd really rather students worry about the language and general concepts of writing software.
Lots of javascript tutorials start off with opening and browser's javascript console and typing out some simple stuff and I don't think people would tell them they need to jump straight into node.js and webpack.
All the other intricacies of writing systems will come to them but I find something uniquely wonderful about sitting and writing code, and if we're lucky we'll find students who can have that same experience. I'd rather meet them where they are and talk purely of the language and core concepts, and introduce them to the ugly details as their progress dictates.
- afarrell 6y ago> and general concepts of writing software. Especially if it is their first experience writing code. Until a student learns to tolerate the discomfort of "the machine isn't doing what I want for some inscrutable reason", it makes no sense to throw them into package-management errors.
- therealmarv 6y agoActually I agree for the Java world here. Thanks to the design of Java and many Java libraries you cannot write a little more complex Java code from your mind. Even importing all this nested OOP libraries is complicated without an IDE. For me Java is really a language which is impossible or too time consuming to master without a good IDE. Working for many years in the python world professionally some people are still amazed that I'm essentially using more or less a normal text editor. IDE is optional for many languages but for some languages it's a strong requirement.
- EdwardDiego 6y agoWhen I was teaching myself to code I started writing Java in Notepad. Not Notepad++, just Notepad. And it was as painful as you'd expect, put me right off Java (most of my learning was in Python), and didn't really teach me much that I now use as a developer in a JVM shop.
- lawl 6y agoI also was working with java professionally for many years, and I find it completely unbearable to write java without an IDE. For other languages, e.g. go, which i currently like, I don't use an IDE because I don't feel like I need one. In my opinion IDEs are often just a crutch for bad languages and I can understand the sentiment in the article, but yeah, java.
- bernawil 6y agoJava is special since the whole compile/link/run loop is relatively slow and there's no REPL. In Nodejs or python you are expected to just run your code. Any error like a bad import/require statement you can correct quickly and re-run. Maybe even add/remove print statements while at it. And it's not just dynamic languages! You can have the same experience in Haskell.
- oftenwrong 6y agoThere is a REPL as of JDK 9: https://en.wikipedia.org/wiki/JShell https://en.wikipedia.org/wiki/JShell
- snuxoll 6y ago> And to this day I find junior devs struggle with the same things unless they have a maven/gradle project all set up for them. Personally I’m still shocked that learning the common build tools for whatever language is used for a CS course is not the standard. If you’re teaching Java you should be teaching Maven, if you’re teaching C++ you should be teaching CMake. Not to the “I can write my own plugins/macros level” necessarily but at least to “I can create a project that will build without my specific IDE or needing to recite compiler arcana”. Nobody in their right mind works without these things, and while knowledge isn’t going to directly transfer from one to the next you should at least have enough to know where to look in the documentation for “how do I specify dependencies”, “how do I tell it where to find my source”, etc. For a first year course where you aren’t pulling in the kitchen sink the IDE project format works well enough, but if you’re entering the workforce you should know damn well how to create a basic project in the standard tools of your language of choice.
- chii 6y ago> If you’re teaching Java you should be teaching Maven no you shouldn't, because the premise is invalid. A university student shouldn't be "learning java". They should be learning programming, and theory of computing (and algorithms etc), and perhaps use java as the language. None of this requires maven, build tools or any tool chains beyond some unit testing framework (and GUI framework if displays are necessary). Don't teach "industry standard tools" to a uni student learning CS. I would not expect a new graduate to know maven, or know the intricacies of the spring framework. That's something to be learnt on the job. I expect them to be capable enough to learn this on the job - given that they're well versed in the theoretical aspect of computer science. It's easy to explain maven's core by telling them that it's a directed graph of dependencies. A student that just learns the "industry standard tooling" should need a bootcamp, not uni degree.
- na85 6y ago>A university student shouldn't be "learning java". They should be learning programming, and theory of computing (and algorithms etc), and perhaps use java as the language. What is the real world difference between "learning java" and "learning programming, theory of computing (and algorithms etc), using java as the language"? Surely to learn all that shit (using java as the language) you at some point have to, you know, learn java?
- NoraCodes 6y ago> I'm all for folks learning these skills eventually, but in a first-year CS class I'd really rather students worry about the language and general concepts of writing software. This is a big part of why I recommend that another language should be used to teach introductory level courses. Java has too much additional complexity. That complexity has benefits in production, but not for first-year undergrads.
- jussij 6y ago> I still found dealing with matters of classpath and javac remarkably complicated. I started my programming career writing C and C++ using the cli and a text editor. Some years later I ended doing some Java and to me I found it quite easy as I could see similarities with things I had learned writing C and C++. I could see the classpath and jar files where roughly equivalent to the concept of libraries and libpath found in the C and C++ linker (only much easier to use) and the javac was roughly equivalent to the gcc or g++ command line compilers.