Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: What's the most productive development environment you've used?
51 points by piinbinary on June 9, 2018 | hide | past | favorite | 68 comments
And what do you attribute that environment's productivity to?


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!


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.


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

That restarts the webserver on filechanges automatically.

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


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.


I got a chance to program a planning / operations research solution using Clojure back in 2011. It was my first encounter with a lisp language. For the first 1-2 months I felt like my brain was being rewired. After that, other (imperative) languages looked like shadows.

At first I used Counterclockwise as my IDE, but eventually switched to Emacs. I still use CCW to step debug something because it has a visual debugger, but it's rare.

I used to curse at Clojure libraries out there because they had no documentation. Then I looked at the library itself and saw it was written in 25 lines of code... Documentation would just make things harder. No other language has this power with this simplicity.

Sadly people can't handle the parenthesis. It's a canard. Move the open paren one word to the left and use prefix notation and you stop seeing them entirely. Give it a go!


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.


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.


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.)


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!


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?


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.


Away from computer right now, but off the top of my head:

Youcompleteme (works great for me, but I think I had to tinker with it) NERDTree NERDcommenter Gitgutter pdb (experimenting with it)

Probably forgetting something.


What kind of work do you do with that setup if you don't mind me asking?


This is mostly for personal tinkering - typically Django and some APIs, or data stuff.

I’m a product guy by trade. Currently, focusing on data-related products and functionality, but have done SaaS, telco, etc.

For work I recently had to write some QA tools to extract data from BigQuery and verify that the payload is correct. Vim and google’s bq cli made it a lot easier than I expected.


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.


I used VFP for 10 years, from the insanely buggy original 3.0 release to the final "Sedna" edition. I miss the Command Window occasionally, but nothing else. Visual Studio at the time was something of a car crash, but it is a solid IDE now. And I never really used the 'builders', probably a) because they were so buggy in the original release and b) because I like to do things myself so I know what's going on.


What do you use now?


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


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.


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


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...


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.


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


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.


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.


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.


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.


Terminal + vim + window manager that supports multiple workspaces.


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.


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.


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.


Unix Systems. Linux, BSDs, Sun/Solaris


-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.)


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.


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.


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.


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.


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.


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.


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).


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.


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)


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.


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..


Yeah, I've done a good amount of VS2017, but WinForms is far from recommended these days, and I think VS6 was the height of easy, quick application development. I don't think anyone's come close to making something similar that holds up as well.

Someday I'll learn WPF.


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


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..


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.


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..)


- 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,


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.


Turbo Pascal was great.


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


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?


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


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.


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)


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


VB6


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


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


Lispworks.


tmux + emacs + emacsclient.

Keyboard shortcuts and extensibility are the keys to success.


PowerBuilder - by Sybase


Xcode and Swift.


Rstudio.


vim + bash


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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: