6 ms·
"it's better if they spent the time to use Vim/Emacs or just got going with Atom/VSCode/Sublime." It's better learning to use the tools they will need. Period.
by wernercd 10y ago
"it's better if they spent the time to use Vim/Emacs or just got going with Atom/VSCode/Sublime."
It's better learning to use the tools they will need. Period.
The problem is what tools will they need? The tools for Web Dev is different from iOS dev is different from game programming is different from... The tools available on Windows are different from the tools available on Linux... different form the tools on Macs...
I'm sorry, but "real programmers learn to use VIM and bad ones use IDEs" is BS.
Real programmers do what every craft does: Gets the best tools they can get their hands on and learns the in's and out's of them.
Which is why you keep going back to the best tools available. You'd be an idiot not to.
- 0xCMP 10y agoNever said that. A student should learn the way things actually work. They shouldn't get thrown in to an IDE so teachers don't need to explain the basics of a developer's workflow to them. However, after a period of getting used to things, they should DEFINITELY use an IDE as a tool to expand their understanding since eventually they'd use it to get actual work done. An editor is MUCH easier to learn the in's and out's of than a full-blown IDE. Start small. Force them to understand. And THEN introduce them to IDEs. Does this happen this way? Not Really. I started with Visual Studio. But I've taught friends this way and it really helps accelerate them past the usual bumps in the road when you're first learning.
- wernercd 10y agoLearning how things "actually" work is different than learning how to get things done. There is definitely room for learning how things work "under then hood". Aka algorithm work, creating your own bubble sort, creating your own blog, etc. Those skills get added to your list of tools. Understanding which sort is best for which application... which language... which paradigm. If you don't learn the different things, you become a programmer that uses a hammer for a solutions - because it's the only tool you know. Granted, I may have been a bit harsh - it's hard to do sarcasm, tone of voice, etc in text message. So take my post with a grain of salt :)
- vetinari 10y ago> Learning how things "actually" work is different than learning how to get things done. And that's how you get C++ programmers who don't know, what is a linker and what it does. Their IDE presents them a project organized in a tree and when then press "Build project" button, an exe is on the other end.
- wernercd 10y agoThat's an important point of learning C++... and one I would agree needs to be learned for that level/line of programming. Does a Web Developer or a LoB developer (which is mainly my pervue) - who is never going to go that deep - need to know linking and header files? That experience is vital for C/C++... but for PHP or Javascript? I've always meant to learn a little more of C/C++ and maybe even learn some Assembly - but in my years of work I've never personally NEEDED that knowledge to get paid. As a .Net/C# programmer, I've only touched those lower levels as an educational exercise or many years ago during entry level classes I've since long forgotten. All of my important work has been in two core places: SSMS (or a couple other database IDEs) and Visual Studio (2005 through "15"). I've never used the command line to build a project - although I know that exists. Does that make me a bad programmer? I don't think so. That would be a different answer if I was a C/C++ programmer.
- Symbiote 10y ago> I've never used the command line to build a project That means you probably couldn't, for example, write a small script that, for each of the last 10 commits, compiles the project and runs the tests -- to see where a bug was introduced.
- wernercd 10y agoWell, considering my last few jobs don't enforce tests that is a shortcoming of mine I'll admit too freely. My current job is a new batch of programmers (all at the company less than a year and me the newest) that introduced SVN, a dev environment, Nugets and a build system (Jenkins). Needless to say the code that we are working with involves more WTFs than you can shake a stick at and testing is down the list, unfortunately. I have no doubt I could figure that sort of system out but it would definitely be a challenge for me. There any good demo's of that sort of setup and learning how to navigate it?
- dagw 10y agoI really think it should be the other way around, at least in a computer science program. Start them in an as easy environment as possible where they can spend their time learning programming concepts and computer science rather than fighting archaic tools. Once they're comfortable with programming and understand the basic concepts, then you can step back and explain exactly how to set up a build environment and write a Makefile and all other workflow steps needed to get something that can actually run.
- Symbiote 10y agoHaving been a tutorial assistant for novice first year computer scientists: the text editor is the easy environment, assuming the lab computers have all been set up correctly with the necessary tools. The instructions given to students were to use something like gedit, and "javac" and "java". This rarely caused problems, but the students who tried to use Eclipse were more likely to get stuck operating it, or else distracted by it.
- Roboprog 10y agoOr, use an IDE and vim. (vim plugin) The vim plugin is a good extension. You get all the automated viewing / searching / generation (if need be), plus the "hands planted on the keyboard" few-key-strokes low level editing. E.g. - the "yank" (y) and "put" (p) command combos are nice for quickly rearranging a few small things - yank (N) word(s), yank (N) line(s), move a bit (N words/lines), put chunk in new place.
- laacz 10y agoActually, tools are not that different across platforms as long as you write code, use version control and so on. As per topic - if you chose any of JetBrains product as your IDE of choice, it's cross platform (linux/windows/osx). And everything else you need from web stack is cross platform. If it's not (looking at you, windows), you can always go for ubuntu on windows via WSL, which is somewhat flawed with a few annoying bugs, but it'll come around.