Just an anecdote, but IDE code formatting has only caused more problems than it solved here.
-snip-
But on a new project, or one where the team has been disciplined about using automatic and consistent formatting? Sure, I agree. Legacy code sucks.
That sucks. It's a great tool for teaching students what their code SHOULD look like, but for the reasons you mentioned that's why you never rely on it and you should just automatically be writing consistent, documented code.
As for code formatting, well...that's the IDEs job ^^ But seriously, I wonder if it'd help or hurt a students understanding to give them something like Resharper or IntelliJ. I find the code suggestions help standardise the programming style in the language but I'm not sure if people who weren't programming for a few years before being introduced to them would use them as a crutch or not.
Maybe! I really like IntelliJ, and it is a crutch, but the point of a crutch is to help you walk until you're ready to run. You can't learn to code unless you write code and anything that helps you write code that works is going to make learning easier and more fun.
---
The problem with using IntelliJ, or any new technology for that matterThe teachers, especially in community college, are often old and don't always have the same need to learn new technologies as developers do, which is why some of mine make an effort to bring in their former students who have much more recent and relevant experience, and the deans try to have a population of young adjuncts. A teacher also has to be really really good at using any software they assign so they can help students who might be using it for the first time. At any rate, a teacher has a lot of things to weigh and consider when adding extra tech to their curriculum beyond just the extra workload for themselves and students.
For the people I work with, this is often their very first experience with programming, period. So students already have a lot to get to grips with when it comes to syntax and a bucketload of other new terminology. The IDE is glossed over almost completely in favor of focusing on how to understand conditionals, loops, and data structures (arrays are up there when it comes to the things people struggle with the most and it's the number one reason I have to go to a white board and start drawing). We teach them the barest of the bare minimum about the IDE and they still forget the important stuff, like how to set breakpoints and use the debugger, which the debugger is probably the NUMBER ONE thing I find myself explaining to students.
The other thing is that deploying a technology is a challenge. There are sometimes compatibility or performance issues with the hardware on campus machines. You also have to consider that anything you give access to in labs also might not be accessible from off-campus for homework, which means you need to teach people how to install it at home and/or get it on the remote access tool, which if the school is providing remote access has it's whole own bureaucratic and technical requirements for what can and can't be provided remotely. If students can only write code in lab time it puts a serious constraint on how you structure your course and what you can assign.
All of these costs in effort, time, and maybe money have to be outweighed by the benefit. Is it really worth it to introduce this software for Java I students? Having been in a course where the teacher was
only familiar with writing code in a text editor and running his code in the console, fuck yeah it is. (The code for his assignments has been reused for ages and he uses deprecated functions. By far the worst teacher I've ever had but for reasons other than just his minimalist programming techniques.)