Live data from Hacker News

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

news.ycombinator.com

451–460 of 519 posts

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

#451

Earlier quoted context omitted.

> Vim; modal editing and vi-like navigation can blow open your mind. Explore the existing plugins to accomplish everything you want to be able to do. It's all there. The reason I end up ditching Vim after a few weeks every time I try it (4 serious attempts now) and go back to IntelliJ (which I’ve used for two decades) is that I never found a solution to the following trivial issue: Imagine you have a large Java codeb…

I am about as hardcore a vim user as they get and I would never edit Java without an IDE. That being said the first thing I do after installing IntelliJ is open the plugin settings and install IdeaVim.

Im the same, s/vim/emacs/, though I'm also very comfortable in Vim.

I use Emacs for a tonne of stuff, and basically any other language I use. But for Java, with its deeply hierarchical codebases and general verbosity, there's just no sane way to manage that complexity smoothly without a good IDE.

(One could argue that if a language necessitates an IDE to work with it, then that's a failure of the language's DX. But thats an entirely separate discussion.)

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

#452

- git. Not just commit/push/pull on a single branch - but getting really good at using git is a game-changer. - vim. I started off in linux sysadmin land before pivoting into more regular software engineering work, so I was very good as basic vi(m) stuff because it's ubiquitous in linux/unix servers. However I've learned its just as valuable as a full-blown IDE/dev environment if you're willing to invest in learning…

Regarding understanding unix history.

I actually think that knowing the history of whatever you're working with, is good and really valuable.

If you don't know the history, you don't know how things came to be and why things are the way they are. This applies to language, code, product, organization, tools, etc.

You can treat things like a blackbox and use them. They'll work for a while but every time you see something that doesn't work, you'll spend time and more time trying to figure things out. Do/Learn things once.

Ask questions. Sit with people that know. Ask smart questions - http://catb.org/~esr/faqs/smart-questions.html

I've been using git for years. But I decided to really dig into it to find out how things work. These are good links and there are actually many more good ones about git internals out there.

- https://git-scm.com/book/en/v2 - https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protoco... - https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Po...

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

#453
Pen & paper.

It helps me getting away from the drive to 'just give it a shot' and forces me to work so much more structured.

I still love to doodle with a pen and different color markers and it allows me to have it permanently in view on my desk with the option to add boxes and arrows as required.

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

#454
post #332

TabNine: https://www.tabnine.com/blog/deep (the code are GIFs which I had to click to play) This thing is fucking magic. It's ML autocomplete, with help from 'traditional' autocomplete methods that use static analysis. Instead of just completing one token at a time like traditional completers, it can do entire sentences or multiple lines of code in one go, and is freakishly accurate. And since it parses language it h…

I love TabNine but had to stop using it because each instance can use 3GB of memory... Way too much for an autocomplete extension https://github.com/codota/TabNine/issues/43

It's only too much if you need that memory for something else though. If it manages to be responsive with that memory and you only have 1 ide open, I don't think 3gb should be a problem on a modern system.

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

#455

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

Yhea this is nice but this simply does not work on all websites. The edge between working and browsing the web can be very thin on some websites. For Facebook it is easy just block it completely but reddit and youtube are difficult so what I do is that I use a plugin called stayfocused it allows you to set a amount of time (for me 30 min) that you are allowed per day to be on the websites you listed. On my second bro…

Why is reddit hard to block? I put that in my hosts from time to time and it works fine.

The real problem is how incredibly hard it is to set edit the hosts file on mobile. At least without using a VPN app or something.

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

#456
post #321
post #74

Writing the overall design in plain English before writing the implementation. Not super detailed, but the main data structures and invariants and mechanisms that will make the implementation working. Then start the implementation refining such document as I discover new things.

This, most of all. Substitute native language if not English; the important thing is that the project be defined and developed in both a human language and a computer language, so that mismatches can be identified and resolved. * Start by describing what you are trying to do. * Specifically. * Not 'build a web business to enable users to achieve their potential', not 'create another library for X but simpler' but *sp…

Have any samples/examples you can share?

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

#457

Any profiler. As a development tool: You can default to writing the majority of your code dumb, terse[1], and straightforward, even if you know there's a clever algorithm you might be able to use, because that way is easier to debug. Computers are fast and N is usually smaller than you think, and when you apply the profiler you'll find out that that the biggest performance problem isn't the thing you were going to op…

By layers, do you mean interfaces and abstract layers?

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

#458
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/…

I upvoted the parent and want to emphasize vim key bindings. This is not necessarily vim the editor, it's your editor of choice in vim mode. Learning to use vim is like learning to touch type: it's initially a pain, but it's hard to ever go back once you've mastered the basics. If you haven't learned to touch type (it happens, I didn't learn until I was 22), then first learn that, then learn vim. FYI: Remap your caps…

> FYI: Remap your capslock key to escape to use Vim more effectively.

That's more one way of doing things rather than a "FYI". Eg I switched capslock with ctrl. There are many ways to exit insert mode, I prefer:

  inoremap jk 
  inoremap kj 

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

#459
post #13

That would easily be using an integrated REPL. The more integrated it is (with your IDE/editor) the better the experience and productivity boost. And the difference is quite large. When you are working with a language that has first class REPL support you start to - 'get' why Emacs exists - become faster at writing code in general - write much more experimental and open - become more motivated in testing smaller assu…

My main responsibility is developing and maintaining a microservice written in Java. However, one thing I've found invaluable over the years is developing operational tools to support my deployed code, in a language with a built in REPL. At different times, I have used Clojure and Jython for this (high level way to call my Java libraries, or to invoke APIs over the network), and most recently Ruby (has been easy to d…

Yes, this is extremely useful, thank you for sharing.

I also often use the REPL as a "tool" rather than just a editor feature.

For example this week I'm working on a data integration. This is a very specific one-time task, so there is currently no need to write accessible production code. I can just use the REPL to do the "ETL" and leave the code as-is.

There is merit in keeping it and find functionality to extract, abstractions/compositions in the future, but the point is that the integrated (Clojure) REPL itself is already sufficient, powerful and very ergonomic tool.

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

#460

Any profiler. As a development tool: You can default to writing the majority of your code dumb, terse[1], and straightforward, even if you know there's a clever algorithm you might be able to use, because that way is easier to debug. Computers are fast and N is usually smaller than you think, and when you apply the profiler you'll find out that that the biggest performance problem isn't the thing you were going to op…

By layers, do you mean interfaces and abstract layers?

Yes.

Some abstractions are good, but I've seen many projects where an abstraction layer or interface is added that does the exact same thing as the code behind it. Or even more often, there will be one or two specific functions in the layer that does actual work, but it would've been fine to just write a helper function for that and not wrap everything else. It's actually pretty rare that whatever needs to be abstracted covers an entire conceptual area to the point where thinking of it as a "layer" makes sense.

Post reply on HN