
Ask HN: What's the most productive development environment you've used? - piinbinary
And what do you attribute that environment&#x27;s productivity to?
======
icey
For me it's either been emacs with a lisp (SBCL or Clojure), or C# with Visual
Studio. In both cases the reasons were similar -- deep editor integration with
the language. Having an editor that understands how the language works and is
structured makes refactoring and navigation much simpler, and makes it faster
for me to author code.

That being said, most of the major editors are pretty great today. There's
great support for all the top 10 languages in multiple editors, so if you want
to write Go in VS Code, or Elixir in Atom, or Python in vim, you're probably
going to have a good time (or at least the editor will do quite a lot for
you). It's a great time to be a software developer!

~~~
Zak
Something that makes a big difference to me with Emacs and a Lisp relative to
other languages and editors is that everything works by communicating to a
running process.

Need to look up function args or a docstring? It doesn't have a separate thing
that statically analyzes the code. It _asks the running process_. Want to see
what an updated function outputs? It can _use the state of the running
process_. Trying out some other change? It doesn't have to reload anything,
lose or persist state, etc... it just updates the running process and you go
from there. Want that running process to be on a remote server? An Android
device? A page running in a web browser? Your powerful desktop while you work
from a small laptop while lying in your hammock? No problem.

I don't understand why this hasn't caught on to the same degree with other
languages. Most of them have REPLs and introspection tools, so they _could_
behave this way.

~~~
xxxdarrenxxx
[http://brackets.io/](http://brackets.io/) has a live view for basic html and
css.

There's a package for the nodejs ecosystem called "nodemon"
[https://github.com/remy/nodemon](https://github.com/remy/nodemon)

That restarts the webserver on filechanges automatically.

The former is very basic and I don't really use it, but nodemon is quite
nifty.

~~~
Zak
Reload-on-change is a relatively common feature. While a lot of modern web
programming frameworks and libraries don't rely heavily on in-memory state,
this is very much a different experience from having your editor constantly
communicating with a live process.

------
T-A
Delphi 3.0 (it went downhill after that). You could slap together a GUI
quickly in the form editor, wire it up to your code (i.e. fill out the auto-
generated event handlers) and compile in seconds (on a 1990s PC!).

There was a large selection of add-on GUI widgets and non-visual components,
free and commercial, you could make your own and you could even modify the
core Visual Component Library (the source was included).

If you needed to talk to other applications via COM, or directly to the OS, or
load C/C++ libraries, it was easy. And you could do all that in one integrated
IDE, instead of having to learn and orchestrate a jumbled mess of different
tools.

It also didn't hurt that by targeting Windows only back then, you had
something like 90% of the potential market covered.

It was bliss while it lasted.

~~~
chadcmulligan
I still use Delphi XE10 regularly, and it still is the most productive
environment imho, (though object pascal is showing its age).

Second choice - Swift and Appcode, Swift is the most productive language I
have used so far - all the static type checking but also it feels like a
dynamically typed language.

------
bhouston
For c# visual studio .NET in 2012 (I really haven't used it since) with its
refactoring tools was pretty quick and its compilation system with integrated
error checking in the text editor. It was really productive.

When I switched over to JavaScript I miss that a lot. Of course JavaScript
just doesn't lean itself that well to automatic refactoring and the build
process is significantly more complex too, so you only get local syntax
checking usually in the editor.

And then eventually VS.NET got auto-help where it would should you
documentation in a side window if you typed in a function or hovered over one.
That was nice when using APIs you were not familiar with.

You could actually find all references/usages and be sure it was actually
correct. I could click on an include and it would actually open the file no
matter what and if it was referencing a DLL/Assembly it would immediate give
me a decompile/documentation link.

The downside of the visual studio approach was the lack of text-based
configuration. I spend hours adjusting settings in project files. (This was
addressed via CMake when dealing with C++ but I do not think there was an
equivalent for C# that I was aware of that the time.)

------
sologoub
Vim + tmux + NERDTree + a bunch of other plugins to handle code completion,
gutters, etc.

Add a 34-inch ultrawide monitor (Dell has been best with color accuracy for
me) to the mix and a nice keyboard, makes all the difference in the world!

~~~
frfl
Would you mind sharing what plugins your using? I've tried combining and
setting up yourcompleteme, ale and one or two others I can't recall, but it
never work as flawlessly as say vs code or pycharm in terms of completion,
suggestions and quick doc viewing. Are you using vim or neovim?

~~~
nerdwaller
I use neovim with deoplete as the completion engine and all the plugins to
deoplete required for my work (python, JavaScript, Go). There’s a number of
other useful plugins, but that alone get me pretty close to IDE level
completion.

------
mamcx
Visual FoxPro. By a long mile.

I never need to install a package system, use VM, install a database engine or
anything like that.

Maybe the most was download some components from some site (I remenber was a
large forum back them).

Integrate REPL, form builder, report builder, rdbms, database builder, query
builder, menu builder...

\-----

Second best was Delphi 3/7.

~~~
rcdmd
What do you use now?

~~~
mamcx
Now is a mix. Python, Swift, .NET/F#, Postgres, Sql Server, Firebird,
etc......

------
Alir3z4
Python with PyCharm, especially when working with Django. It has a great
understanding of whole toolkit and knows what to do and how to help you go
faster.

From integrated testing, database source viewer up to working with remote
interpreters, basically everything is included to make you focus on work
without leaving the IDE.

The same goes when doing JavaScript, I'll go straight to WebStorm.

Need to mention my go to OS is ArchLinux with the latest KDE on top of it. If
I have to use Windows, then I'll fire up an Arch Linux VM and live with a SSH
session.

------
thdxr
Arch Linux, i3, vscode with vim bindings, Firefox with Vimium.

Optimized for not using your mouse. It's not so much about literally saving
you time since typing is only small portion of your day, but being able to
express yourself with less effort goes a long way in keeping you from feeling
mentally drained

~~~
vanous
Is there a simple way in vscode to pass selection of text to external tool
like sort or python script, like vim can do? I tried but didn't find anything
simple...

------
coldcode
Turbo Pascal in 1983-84. The first IDE is ever saw, compiler, linker, editor
and debugger ran in memory on a PC/XT with 640K RAM. I still have the
impression today that it could build faster than I could think, but of course
the expectation of software was much less than today.

~~~
chadcmulligan
This always gets me shaking my head - things that turbo pascal is smaller than
[http://prog21.dadgum.com/116.html](http://prog21.dadgum.com/116.html). Turbo
pascal was a marvel of its time

------
orta
TypeScript, VSCode, Relay, GraphQL, Jest, React/React Native - a lot of
modular tools which combine into a really safe and fast development
environment for web/iOS.

Feedback is close to instant, tools are all open for improvements and the
people running these projects are accessible.

------
nknealk
DataGrip by Jetbrains

I have yet to encounter a better SQL IDE. In particular, it has fantastic auto
complete and it has drivers for pretty much every database under the sun right
out of the box.

~~~
noir_lord
Agreed, also the DB tooling in the jet rain IDEs basically is datagrip it just
use a different UI, the underlying layer is near identical, enough that I have
IntelliJ ‘projects’ that just open a DB connection.

------
ivm
Unity3d: you can run a game in it and adjust everything live, including
scripts. Also I've yet to see a UI framework as flexible as UGUI that is based
on Unity's ECS architecture.

------
amelius
Terminal + vim + window manager that supports multiple workspaces.

~~~
vkareh
This. I use non-composited Marco as my wm and several terminals and gvim
instances.

Switching workspaces and windows is super fast, and have vim configured with
shortcuts to switch between buffers.

------
stunt
I'm using macOS at work and Linux at home. (quite disappointed about macOS
ecosystem and performance..)

I don't install any service on my machine and just run everything using
Docker. (You can actually even run games using Docker (plz don't try it on
macOS. Linux? Sure!)

I use VIM keybindings in all text-editors and IDEs that I’m using.

For desktop/window management, I use Xmonad (a tiling window manager). Which
means I can organize all the open window(s), move them around, resize them,
manage multiple workspace, and screens, all using keyboard.

For terminal, I’m using fish-shell which is very powerful and highly
customizable and friendly shell with a lot of aliases and functions to keep me
productive. and also use Tmux only when needed.

I use Vimium extension in Firefox (it is also available for Chrome) which
allow me to use VIM keybindings in browser including navigation, selecting
text, clicking on links, and some extra macros to do even more and all of that
with VIM keybindings that I use everywhere.

And finally, I have my dotfiles on Github which means I can setup my work
environment on any machine in 5minutes.

I use VScode, Intellija, and VIM (SublimeText way less than before because of
VSCode) And it depends on what project I have to work with.

Mostly because it is easier for instance to enable VIM keybindings in VSCode
when I'm writing JS/Typescript comparing to setting up VIM and achieving same
level of productivity. So I choose to stick to VIM keybindings and not VIM
itself most of the time.

------
rurban
Visual Lisp: Elegant and simple language, great graphical debugger with
stepper (as in Visual Basic), great compiler, safe.

No other Lisp or other IDE's come close, but I never worked on a lisp machine,
which should have about the same features. I never warmed up to Smalltalk
enough to use it productively.

Visual Basic had a macro recorder feature (my lisp didn't have this, only
emacs) and a similarily great IDE, but their language ecosystem is just
horrible. You can easily write a fast and safe multithreaded server, but using
their libraries just sucks. .NET got that better, but still not comparable.

PHP Komodo was great, but still. It was PHP. Horrible libraries.

Emacs+magit+c-mode+flycheck... or Visual C++ for my usual work is fine, but
also very limited compared to better integrated systems. Haven't setup LSP yet
though. This should improve things by a wide margin.

I also had a nice MultiEdit Pro integration with all my tools and docs, which
was better than my current Emacs setup. But that was decades ago, on DOS.

Graphical development env's like Matlab Controldesk Simulink was nice, but not
really productive. You constantly click in and out of nested blocks, connect
dots and follow long lines, which is similar to counting parens manually with
lisp. It sucks.

------
segmondy
Unix Systems. Linux, BSDs, Sun/Solaris

------
reitanqild
-2011 eclipse (Java): seriosly good auto completion without the warts of vb. Code navigation and keyboard support were also top notch.

-2011 - 2017 netbeans (Java and PHP): more stable and feature rich than eclipse. Still excellent code navigation and refactoring like eclipse.

-2017 - VS Code (Angular and. Typescript, occasionally Java): fast, lightweight and still does most of the things I need. Improving every month. Extendable to edit any mainstream language it seems.

Things I have left behind after spending serious time with it:

\- Sublime (was a paying customer but VS Code us now so much better I won't
pay for another release)

\- IntelliJ (has had both personal and company license but after a few months
I fell back to eclipse/Netbeans)

\- Visual Studio. (I like C#, find it better than Java but the IDE just
doesn't cut it for someone who has been spoiled with Java tooling.)

------
humbleMouse
Spring boot/maven/intelli j baby!! Everything is set up just to work. No funny
business, nothing complicated, just an endlessly extensible easy environment.
Intelli j has plugins for everything. The darkula theme is easy on the eyes
too.

------
rom16384
Visual Basic Classic. It had an intuitive GUI builder, and database access
built-in. This combined with a very good IDE and included documentation made
for a very fast and effective development environment.

------
Senkwich
For work, I have a Mac with chunkwm as the tiling manager to give it nearly an
i3 feel. It's surprising how far tiling has come on that platform.

Linux I'm using XMonad, although I'll most likely switch to i3 next time I
tweak my dev setup.

I use neovim for most of my work, although I need to switch to atom with
nuclide on occasion to debug code. I have bindings like the recommendation
from the tmux navigator that enables me to move between panes with Ctrl+hjkl.
Variety of other plugins for hack, python, JavaScript, Java, etc.

------
slipwalker
Perl development with Visual SlickEdit on linux, by 2006-2007.

i attribute to the fact that the language is extremely expressive, full of
ready-to-use CPAN modules and VSE was/is compiled natively to the Operating
System, from a nicely written codebase. So the IDE was actually helping me,
instead of keeping me frustrated waiting _many seconds_ for each context menu
( cof, eclipse, cof ). But it lacked ( by then ) on plugins for many other
tasks on many other languages.

------
PerfectElement
For me it used to be Visual Studio + ReSharper, but last month I switched to
Rider and it's been amazing. It's like VS + ReSharper without the performance
issues.

~~~
naikrovek
I think I'm about the only person left that doesn't like IntelliJ software. I
can't even stand resharper. And their Java tooling, which everyone else loves
more than their own children, sucks more than anything else of theirs.

I just don't get it.

------
noir_lord
IntelliJ I swear by (and occasionally at) it.

Having decent quality tooling across python, phi, JavaScript, typescript, SQL
and Java as well as all the database featured for MySQL and Postgres is a huge
win for me.

There are probably better tools for each domain but not as heavily integrated
or consistent.

It’s a resource hog but I don’t care, it’s so good I’d spec an extra 8Gb of
RAM if it needed it (it’s not that bad tbh in a world with electron at least).

------
monocasa
I really like vscode with it's built-in terminal right now. It's a good
balance for me of a nice modern IDE (intellisense, lint, fmt on save, etc.)
and a classic Unix shell that I've been using for 20 years. Ctrl+click on grep
-n results (or anything that looks like a relative path of the current open
folder) opens the file/line in the editor.

------
fractalwrench
IntelliJ. It has some great keyboard shortcuts for refactoring code, allows
searching by symbol names, and has a wide selection of plugins. Surprisingly
it's quite a consistent experience when editing across different languages,
such as Java/Objective-C, which leads to less mental overhead with the tools
(at least in my experience)

------
ocdtrekkie
Visual Studio 6, when you could drag and drop your UI, double click elements
to code what they do, and all of the generated code was human readable. I'm
not sure we'll ever get a development environment designed to put together
software that quickly again with all of our modern expectations for design,
mobile friendliness, etc.

~~~
stuartd
Well, you can still do that in Visual Studio 2017 with Windows Forms. Remember
when when they tried to do the same with Web Forms? What a disaster. I suspect
this may have been the reason they moved to declarative UI like WPF but I
personally don't buy that approach. Then again, I work on conversational
interfaces now where there literally is no UI at all except a textbox and a
send button..

~~~
naikrovek
The drag & drop web stuff they had worked fine if you didn't need anything
that it couldn't provide.

~~~
stuartd
Yeah like 'basic web functionality'. Unless you're happy with a full page
refresh every time you click literally anything, And please don't suggest the
UpdatePanel as a solution..

------
zimablue
VBA first and in second place jupyter.

Everything I've ever been employed to do has pretty much been throwing data
around, there's no substitute for being able to iterate and view dataframes
interactively.

I've used Visual Studio/pycharm for my coding coding but if I had to choose
between no IDE and no data-repl I'd go no IDE every time.

------
superasn
I'd have to say PhpStorm. It makes web dev really super easy. I used to hate
IDEs but now I love it so much that I use it for writing one off scripts too.
Also laragon with Laravel is just amazing.

Laragon makes it super easy to configure the environment (out of the box
support for wamp, git, node, ngrok, you name it..)

------
rcarmo
\- Vim + the right ser of plugins. IDEs are nice and I appreciate IntelliSense
in VSCode, but too much automation can be a problem when you really need to
understand how you’re piecing together things,

------
scarejunba
IntelliJ with IdeaVim and some key remapping. Deep language awareness and
integration. With IdeaVim, world class text manipulation. I feed it large RAM,
about 12 gigs.

------
jiri
Turbo Pascal was great.

------
aportnoy
tmux + NeoVim for Python development. Switched from regular Vim after
discovered NeoVim has much better Python support and a smarter terminal.

~~~
yeswecatan
Can you expand on this a bit? I've been writing Python in vim using some
plugins-- mainly jedi-vim, YouCompleteMe, ctrlp, and SimpylFold. What does
NeoVim do better?

------
Insanity
It's hard to really measure productivity. For most things I'll use tmux + vim.
For Java I'll use IntelliJ with the VIM plugin

------
tomxor
i3wm + sakura + Atom ... that later is a love hate situation, amazingly
extensible and customisable, performance is stupidly slow, lots of memory
leaks in plugins, but the plugins are too damn useful - One day someone will
make a fast open source replacement, or I will invest in vim.

------
131hn
notepad2 gives me the highest ratio betwen my code and the environment around.
I tried all others, but i keep coming back here (since always).

As a platform, WSL is a huge productivity boost for me

Also nodejs replace now 10+ y of custom created php helpers (as api wrappers
mostly)

------
jdougan
Various virtual image based Smalltalk systems. VisualWorks, Squeak, Pharo,
etc.

------
dmmalam
VB6

~~~
rom16384
I agree. VB6, Delphi and similar development environments are unmatched at
quickly creating desktop applications. Is there anything similar to create web
apps?

------
CardenB
TMux + vim + YCM at google where everything was set up properly

------
johnnyOnTheSpot
Lispworks.

------
stephenwithav
tmux + emacs + emacsclient.

Keyboard shortcuts and extensibility are the keys to success.

------
itpragmatik
PowerBuilder - by Sybase

------
lupinglade
Xcode and Swift.

------
Agnosco
Rstudio.

------
mahdix
vim + bash

------
berns
For those mentioning tools from the 80's and 90's: It cannot be ignored the
tremendous impact on productivity that the creation of Git and Mercurial have
had.

