Live data from Hacker News

Ask HN: Which tools have made you a much better programmer?

news.ycombinator.com

211–220 of 519 posts

Re: Ask HN: Which tools have made you a much better programmer?

#211

Choice of editor is subject to taste, but I find VI/Vim keybindings and modal editing an absolute must-have for productivity.

I agree. When first learning Vim the learning curve is very steep for what feels like basically advanced cursor moving but with more experience it becomes a very powerful text editor. Last week another I had a 10,000 line file that was the output of a bash command with two columns and each column was in quotes. I needed to remove the first column and the quotes around the second column. There are many ways to do it b…

For those non-viers out there, the analogous option in non-modal editors like, say, sublime, would be `select all => split into lines` or `column selection`.

Re: Ask HN: Which tools have made you a much better programmer?

#213
post #22

- GNU/Linux + i3wm; complete control over my programming environment. - bash + GNU coreutils; seriously, take the time to be able to write helpful bash scripts which can run basically anywhere. - git; use it even when you're not pushing to a remote. Add helpful aliases for everyday commands. Build a good mental model of commits and branches to help you through tough merges. ( my ~/.gitconfig: https://gist.github.com/…

Re: i3wm I installed it a couple years ago, went whole hog, down the rabbit hole, but realized a couple of things. 1. I rarely ever use anything more than a simple L/R split. 2. When I do use something more complex, it's almost always in the terminal, in which case why not use tmux? These days I'm back to using gnome because ubuntu switched to it over unity (which had a weird multitouch bug that drove me crazy). What…

I depart from that L/R split pretty regularly, especially when coding. I frequently have a single large window taking up half of my screen, and several smaller windows stacked vertically on the other half. The big window is usually the editor, but sometimes the browser if doing web development, or possibly a pdf or something like that. The little windows might be the editor, or a browser, or general command line work, or the stdout of a server or other daemon that I'm working with.

I sometimes do move to more of a tmux split workflow, especially if I'm working on remote machines, but it's just much nicer to have the same keyboard commands for all of my windows.

Re: Ask HN: Which tools have made you a much better programmer?

#215
post #26

The Jetbrains suite. Lightens the cognitive load, makes it easier to refactor and keep code tidy. All of which allow me build better software. For almost everything else e.g. git, learning how to use the command line instead of a UI is the best way for me to learn how the tooling works.

I'm dependent on Jetbrains IDE for most of my work. It really shines in showing the user best practices and recommendations. A lot of the programming concepts are same across languages and this IDE helps you find the right function/method with its suggestions. And at least for java it'll suggest you variable names, it'll suggest you if a loop can be converted to a stream, it can generate templates for unit tests, it can tell you if a variable might be null, etc. There are a ton of small small features that all add up to a great experience. 10/10 would recommend for a new programmer.

Re: Ask HN: Which tools have made you a much better programmer?

#217
post #5

- Version control - Unit testing - Leak detectors (for languages like C/C++) - Race detectors - Auto-formatting (eslint, gofmt) - A solid editor (prev: vim, now: vscode) - One-step deployment scripts/automation (even for small projects) I have not found a lot of value in debuggers, outside of after-the-fact debugging (e.g., core files.) I much prefer printf-style debugging.

Would you go into details about the one step deployment?

Re: Ask HN: Which tools have made you a much better programmer?

#218
post #22

- GNU/Linux + i3wm; complete control over my programming environment. - bash + GNU coreutils; seriously, take the time to be able to write helpful bash scripts which can run basically anywhere. - git; use it even when you're not pushing to a remote. Add helpful aliases for everyday commands. Build a good mental model of commits and branches to help you through tough merges. ( my ~/.gitconfig: https://gist.github.com/…

Re: i3wm I installed it a couple years ago, went whole hog, down the rabbit hole, but realized a couple of things. 1. I rarely ever use anything more than a simple L/R split. 2. When I do use something more complex, it's almost always in the terminal, in which case why not use tmux? These days I'm back to using gnome because ubuntu switched to it over unity (which had a weird multitouch bug that drove me crazy). What…

I've got a portrait monitor connected to a laptop, so I end up splitting the monitor's pane vertically.

I treat each workspace as dedicated for a specific purpose - Dev, Browsing, Chat, etc. That gives me quick mnemonics to hop to each space: MOD+1, MOD+2, MOD+3, ...

Within my Dev workspace, I use a tabbed pane for top-level organization: browsers (stacked), IDE, terminal, Emacs (magit + org), etc. This keeps my focus on that space when doing dev, and away from the laptop monitor, which is only occasionally useful as a reference.

I'll occasionally stack a terminal beneath my IDE if the current task requires it, e.g. to test a deployment or a project task.

Re: Ask HN: Which tools have made you a much better programmer?

#219

Putting this in my hosts file helped me maintain my focus. 127.0.0.1 news.ycombinator.com 127.0.0.1 reddit.com 127.0.0.1 facebook.com

I've been using the Leechblock extension on Firefox. It lets you set browsing quotas per website. It has been good for reducing time wasting habits.

Re: Ask HN: Which tools have made you a much better programmer?

#220
post #26

The Jetbrains suite. Lightens the cognitive load, makes it easier to refactor and keep code tidy. All of which allow me build better software. For almost everything else e.g. git, learning how to use the command line instead of a UI is the best way for me to learn how the tooling works.

Interesting that you prefer both extremes of UI design.

Jetbrains UI that shows available options or pops them in real time.

And command line UI; requires reading the docs to learn options, but can be powerful and chained with other commands via pipes, ez automating UI interactions into scripts, etc.

Post reply on HN