Live data from Hacker News

What I would do differently if I was learning to program again

reddit.com

41–50 of 85 posts

Re: What I would do differently if I was learning to program again

#41

Earlier quoted context omitted.

I'd use Vim from day 1, instead of wasting time with several IDEs.

Why would anyone not want the power of an ide? Is it a Unix tough guy thing where there’s nothing that a GUI app does that you can’t do better in a terminal? Or is it that you’ve never really spent a lot of time in a professional ide so when you argue against it, it’s cause you don’t know?

I can't get the features of VIM in an IDE. I CAN get IDE features in VIM.

I get syntax highlighting, Automatic Checks, Navigation based on Language structures. I even can integrate my shell and debuggers into VIM, but I don't use do that. I use those usually just as a stand alone tool.

VIM and Emacs also have the absolute best git integration I have ever seen. Magit for emacs and Fugitive for Vim are absolutely fantastic. Certainly beats any IDE I have ever used.

I can't think of anything that I would like to have from any IDE.

MY vim is a much better tool for me then any of the IDEs that I have used in the last 10 Years. I started out with IDEs, because that is what my teachers and mentors used, but once I learned vim the IDEs just seem painfully slow and limited.

It is also not the case that I just don't know better. I certainly have used many IDEs in the past. For example I used Visual Studio (Not "VS Code", the proper enterprise VS) for 2 Years.

Re: What I would do differently if I was learning to program again

#42

Earlier quoted context omitted.

Why would anyone not want the power of an ide? Is it a Unix tough guy thing where there’s nothing that a GUI app does that you can’t do better in a terminal? Or is it that you’ve never really spent a lot of time in a professional ide so when you argue against it, it’s cause you don’t know?

All my opinion, of course. I learned Python much better because I did not use an IDE. I've written Java and C# using IDEs. I barely remember anything about their standard libraries. Python, in comparison, I know like the back of my hand. Thanks to writing Python in vim, I had to reference the docs, and eventually memorized them. Like vim itself, it made for a steeper learning curve, but the productivity gains in the…

You would remember even better if you had to write the code out by hand or use punch cards.

I've only ever written C# using an IDE but I know plenty of things about the standard library. Why wouldn't I? I've written a bunch.

Re: What I would do differently if I was learning to program again

#43
post #24

Earlier quoted context omitted.

> they don't actively engage with the material. Write notes, or code up short examples, or draw pictures, Do you lecture? I'm an intense scribbler of notes during lectures, but I don't (wouldn't) code up examples during a lecture, because it would get in the way of my listening. I guess I'm asking: what is your knowledge delivery system format? "Actively engaged" will take different forms depending on the delivery sy…

It varies. Several years ago it was lectures interspersed with exercises. Now we know a lot more about pedagogy we use many tricks: we live code, we get students to vote on questions, we have them work in teams and teach each other, etc. Live coding is a good time to code along. I agree that what actively engaged means will differ depending on student and context.

Interesting.

If I had to work with a pair or a team, as an introvert, I would find myself subtly withdrawing from active participation. I like live-coding, and I like active-listening (the latter is absorbing, hoping to understand and the former is testing/verifying/correcting/practicing your understanding, but I like absorbing or total-immersion personal practice. Group exercises get in the way of that (for me - again - I'm probably weird).

So, (and I'm thinking about this as I type), I think that I am active, but in my own particular ways. Because I grew up in odd remote/rural circumstances, maybe these habits were habituated because I did not get socialized with normal folk well until my mid-to-late- teens. But, maybe it's genetic? I notice one of my two sons has the same tendencies, and he's lived in an urban/public environment his whole life.

What I'm pondering is (beyond the scope of your Scala classes), is whether there are ways to actively engage multiple "types" of people? I'm not just talking about what they call "visual learners" vs "audio learners" (which has largely been debunked?), but ... IDK. I'm trying to assemble a platform for programs that get people to/through their GED, as various states put work requirements on government benefit recipients, and a major hiring block is simply not having a high-school degree. I'd like to make everything as warm and fuzzy and low-friction for everyone as I can - but I don't know how - because (obviously) not everyone is me! :-)

Re: What I would do differently if I was learning to program again

#44

Earlier quoted context omitted.

Why would anyone not want the power of an ide? Is it a Unix tough guy thing where there’s nothing that a GUI app does that you can’t do better in a terminal? Or is it that you’ve never really spent a lot of time in a professional ide so when you argue against it, it’s cause you don’t know?

Probably this. IDE developers listen to users and they do build in those features that make vim better than Notepad. Same with grep and anything else command line excellent. I think it is best not to think one or the other but use both. iDEs work on Linux and have a terminal window built in. So that is how to do it, vim keyboard bindings too.

Vim keyboard bindings offer nowhere near the capabilities of a real Vim. They only offer the basics and never advanced vim features. Vim is so much more then just keybindings, it is more of a text manipulation language. There is only one exception to that and that is Emacs Evil mode.

The other way around is much more likely: Vim plugins offer all those IDE features and integrate them seamless into vim and its way of manipulating text.

Honestly, after learning and modifying vim for myself I found IDEs to be limited, bloated and slow.

Re: What I would do differently if I was learning to program again

#45

Earlier quoted context omitted.

I'd use Vim from day 1, instead of wasting time with several IDEs.

Why would anyone not want the power of an ide? Is it a Unix tough guy thing where there’s nothing that a GUI app does that you can’t do better in a terminal? Or is it that you’ve never really spent a lot of time in a professional ide so when you argue against it, it’s cause you don’t know?

I run Emacs, in GUI mode. If the language tool have a debugger and/or an interpreter, there is the IDE. In the rare case that there is not a ready made comint implementation for a language, it's easy to do. Completion, well M-/ is good enough. If I don't know a function's name, I need to read the manual to find it and to learn what it does anyways. If I need snippets, it's easy to define them, even without an Emacs minor mode for snippets. Every part of the system is extensible, every keybinding redefinable, and almost every functionality composable. And almost any programming language with more than ten users has an Emacs major mode already made for it. If I really want semantic completion or on-the-fly error reporting and linting (I don't use these out of preference), it's dead simple to integrate and enable.

Not only, but I can use the same thing to read my mail, maintain my agenda and create and edit documents.

With an IDE, I need another IDE for every language I use. Then I still need a text editor for editing text anyways. Each editor has it's unique method of customisation, and its conventions, its own keybindings, its own behaviour &c, and its own way to store customisations, which are hard to version control, if possible. And substantial customisation that requires custom code is either impossible or very hard to do.

Emacs is an IDE for Emacs Lisp. But it's so naturally extensible that it's become an application platform, basically. If all you do for all your career is to write in one language or two, then go with an IDE, I guess. But I'm glad I can use the same program to edit Perl, Python, Ruby, any sort of text, HTML, C, Assembly, Ada, Cobol, JavaScript, CoffeScript, Clojure, ClojureScript, Java, Kotlin, Scala, Haskel, and so on; and do way more with it than editing source code.

Re: What I would do differently if I was learning to program again

#46

I’d use an ide from day 1 instead of wasting time with vim. I seriously dramatically slowed down my advancement as a programmer because I didn’t use a full featured ide straight up. Now I only use vi to edit files in /etc

i've used a mix of ides and text editors over the years but i've committed entirely to emacs for the last 6 or 7. the value of having a tool that i can adapt to my needs and use anywhere for anything greatly outweighs any capricious ide conveniences.

Re: What I would do differently if I was learning to program again

#47
post #7

Earlier quoted context omitted.

I'd use Vim from day 1, instead of wasting time with several IDEs.

And I'd learn to use the tools that were most appropriate to the environment I was working in and not spend so much time 'optimizing' my own workflow for relatively small gains in productivity.

Except 11 out of 10 such tools come as a command line tool that has to be integrated to your IDE, often by someone else.

Re: What I would do differently if I was learning to program again

#48

Earlier quoted context omitted.

People are not sure what benefit is going to be provided to make up for the inferior text manipulation capabilities. I remember tab completion being a big thing. When I was a new programmer, I really wanted that stuff, for sure. But as I see it now, I find the cases where I don't remember the name of the function I want to call rarer, instead wondering about the undocumented things like "is this method thread-safe?",…

What inferior text manipulation capabilities?

I've always found basic text manipulation lacking in the GUI apps I've used. "Make this comment fit in 100 columns without losing paragraphs" "move the next line up to the end of this line" "go to line 647" "move the cursor to the beginning of this method" etc.

My knowledge dates from the "one keystroke to convert this to a JavaBean!" era, though. I'm guessing people don't do that anymore.

Re: What I would do differently if I was learning to program again

#49

Earlier quoted context omitted.

It's been a long time I haven't used Vim. I left it in favor of Evil+Emacs a few years ago. And I don't recommend it to every single person I see. The phrase "wasting time with Vim" was the thing that made me reply the way I did. Learning Vim properly has helped me every single step of my way.

So you don’t use vim as a programming environment/editor? So not actually disagreeing with me, just stirring?

Evil is a Vim implementation in Elisp, basically.

Re: What I would do differently if I was learning to program again

#50
post #33

Earlier quoted context omitted.

I spent a long time wrestling with trying to set up IDEs when I was learning. They were always a huge pain to set up, broke in confusing ways, and were generally far more effort than they were worth for the productivity gain (especially when I would try some other language/etc after a short period and go through it all again). Just using a text editor and the compiler was far easier to understand. I still find some a…

Try IntelliJ if you want something that works with a lot of languages and handles all of them really well.

Indeed, I use PyCharm as one of my IDEs. I may try CLion for embedded C/C++, but this is still restricted to ARM basically (and CLion supports CMake only, which is the least bad of the C/C++ build systems in common use, but still this is the kind of baggage that comes with an IDE which is not a problem with 'UNIX as IDE').
Post reply on HN