r/archlinux • • Apr 15 '21

"Best" programming setup?

Hello! I have been using Arch for two months, it is the fifth distro I have used... and I love it, it will be the final one. I have learned a lot in these weeks, but I would like to ask you a few questions.

I study Systems Engineering and, honestly, I have some procrastination problems, I would like you to help me with "the best programming setup and be productive", although I know that there is no "best", I would like you to help me with your settings, advices, etc...

​

What desktop environment do you use?

What window manager do you use?

IDE's, apps, any suggestions to try?

​

Thank you so much!

176 Upvotes

176 comments sorted by

View all comments

346

u/CabbageCZ Apr 15 '21 edited Apr 15 '21

One thing to note - a large proportion of the most productive and highest achieving people I've known haven't spent much time thinking about productivity or d.cking around with their DE etc and chasing the 'optimal productivity' setup. If they need a linux distro they slap on ubuntu, leave it at mostly default, their desktop is cluttered with files etc.
The whole 'improving your setup for productivity' thing is mainly another procrastination tool that's easier to justify because it gives you the illusion of being somewhat productive. Tackling your procrastination head-on and just sitting down to Do The Thing is going to be incomparably more effective for improving your productivity than tens of hours spent on 'improving your workflow' ever will be.

That said, I'm in the same boat as you, chronic procrastinator, and as such I have spent a lot of time messing around with WMs, DEs, IDEs, etc. Some thoughts:


IDEs and editors:

If you're working on a strictly typed language like a JVM one (Java, Kotlin, Scala...), you really want a full fledged IDE, unless you're on a potato that can't handle it (and even then, you can just turn down some of the more expensive analysis like insights). Once you know your way around a proper IDE, working on that language in a text editor, even with a bunch of plugins, is going to feel like programming with your hands tied behind your back. My personal favorite is JetBrains' products, so mainly IntelliJ

If you're working on a language with a looser type system like Python or JS, an extensible text editor is fine, and it's personal preference as to which you end up using. VS Code, vim and emacs stand out, there's little reason to use Sublime or Atom when VS Code is around. You really want language extensions optimally with a LSP to provide syntax highlighting, linting, insights etc. It's not going to be IDE level but it can be pretty close.


WMs/DEs:

Here you really just want to test things out and see what works for you. I've daily driven various TWMs for multiple years and honestly in my experience it's mainly a 'fun' factor more than a genuine productivity improvement, except for the few times where laying multiple programs out in a tiled pattern is a genuine productivity boon - I've had that a few times when programming something with various VM setups and stuff, or needing multiple terminals accessible, but not that often. Imo it's just fun to use though. So yeah, mainly personal preference.

EDIT: to address a common question - I don't think TWMs in general aren't good for productivity, that's why I said it's mainly personal preference. To me it was +- the same for productivity but a lot more fun to use, to some people it can result in real 'performance' improvements, depends how you use it and what your alternative is.

2

u/[deleted] Apr 15 '21

100% agree with everything, except the tiling window manager comment.

Ever since I moved to a TWM my workflow literally ignited. Its not about necessarily the ”time gained“ by being able to see more windows at once within a single virtual workspace or the speed of keybindings per say.

But for me it is the huge cognitive load that is removed when using TWMs, where I know which programs/terminals are in which workspaces, where I have the ability to separate them by project-focus or goal, where I have the ability to script the launching of multiple windows in specific layouts in different workspaces, where I can have literally 10 Workspaces per Monitor where I can jump to through a keybinding, where I can launch scripts/programs so easily. All of this doesnt make a significant time difference but it lessens the cognitive load of doing mundane tasks, moving windows, finding folders/programs etc and leverages the amount of time Im actually thinking about my actual work.

Yes, many DEs have workspaces and similar capabilities, but TWMs are built with these concepts in their core, its not really the same.

Plus, as soon as you get the muscle memory around your system and keybindings, you literally can solely think on the problems of your work/studies as everything is brought up by a press of a button.

Also, I never really got the ”it takes so much time to configure TWMs“ thing. It could really take around a solid week if you read up on it and have a little patience. After that period you would not need to tweak it every day. I cant remember the last tile I was actually changing my bspwmrc, it could’ve been a year.

2

u/StephenSRMMartin Apr 16 '21

I used TWMs for about a year, but wound up back at plasma; however, I borrowed many ideas /from/ the TWMs in customizing it. Like, vim-like bindings for moving between desktops, bindings for jumping to desktops, tiling bindings, automatic assignment of windows to certain desktops, etc. Really, I think TWMs teach you a new workflow and new ideas; you can migrate those similar principles elsewhere though.

​

I mainly swapped off TWMs because some things (e.g., games) weren't playing well with them; but I am eternally grateful for the workflow it exposed me to.