Pro Yearly is on sale from $80 to $50! »

Why I Don't Use an IDE

Why I Don't Use an IDE

As developers we strive to maximize our productivity by using tools that streamline workflow and by automating as many things as possible. An Integrated Development Environment (IDE) is software that is intended to streamline a developer's workflow by handling setup of the development environment and providing an easy to use GUI. While IDEs make many things easy they come at a cost of flexibility, transparency, and even developer productivity. By using a set of individual tools instead of an IDE we can create an environment that is extremely customizable and allows for greater productivity than that of a traditional IDE. In this talk I'll talk about my decision to not use an IDE and how I came to use the set of tools that I do now. I also demo the setup I have and go over the basics of each tool I use.

9fa60df551b9e4282c0519bf173c2e04?s=128

Trevor Brown

June 29, 2016
Tweet

Transcript

  1. Why I Don't Use an IDE Trevor Brown

  2. Trevor Brown Sarasota, Fl JavaScript, Erlang, Elixir, Ruby Software Developer

    at Voalte @Stratus3D Github.com/Stratus3D admin@stratus3d.com
  3. What is an IDE? An integrated development environment (IDE) is

    a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a source code editor, build automation tools and a debugger. Most modern IDEs have intelligent code completion. – https://en.wikipedia.org/wiki/Integrated_development_environment
  4. Eclipse IDE

  5. Emacs

  6. Problems with IDEs • Often designed for a specific language

    or framework • Hard to find IDEs that provide good support for obscure languages • GUI is often a veil
  7. Advantages to Using an IDE • Easy to setup •

    Easy to learn • Some things automated out of the box
  8. Why No IDE?

  9. Why No IDE? • I don't normally use a debugger

    • Unit tests and type analysis instead • Constantly trying out new languages and frameworks • Regularly use Erlang, Elixir, Bash, Ruby, and JavaScript, so I need something that works with a lot of languages • IDEs are often harder to customize than individual tools • Often proprietary
  10. No IDE

  11. The Tools I Use • Vim • Zsh • tmux

    • asdf
  12. Gnome Terminal

  13. asdf

  14. What is a version manager? • Ensures the environment your

    project runs in has the right versions of it's dependencies available • May also handle building and installing the dependencies • Asdf is primarily focused on managing language versions • Asdf is intended to replace the language specific versions managers out there like...
  15. Existing Version Managers • Ruby's rvm, rbenv, ry and a

    dozen other version managers • Elixir's kiex and exenv • Erlang's evm, erln8 and kerl • Node.js's nvm and nvmw • ...
  16. asdf • Generic version manager • Created by Akash Manohar

    • MIT License • ~380 stars on GitHub • Support for each language comes in the form of a plugin • Plugins already exist for Elixir, Erlang, Go, Lua, Node.js, Python, Ruby, and Scala
  17. asdf is Simple • 100% Bash • Doesn't alter your

    path Adds one directory to your path • Doesn't affect any existing software • Doesn't replace the `cd` command • Plugins are just Git repositories
  18. How Does it Work? • Plugins for each language or

    dependency • Plugins handle downloading, building, and installation of available dependency versions • Asdf invokes Bash scripts contained in the plugins when needed • Asdf creates a shim for each executable found in the installed dependency
  19. Version 2 Version 1 How Does it Work? • Asdf

    creates shims for each executable found in the installed dependency • Shims invoke the correct version of the executable on the fly Binary Shell Binary Version 3 Binary Shim
  20. Similar Tools • Lots of similar tools out there. Most

    are more complex and don't offer any additional benefits • Nix is functional package manager that provides more guarantees about the environment your software runs in https://nixos.org/nix/
  21. The Tools I Use • Vim • Zsh • tmux

    • asdf
  22. Zsh

  23. Zsh • Advantages over Bash – Oh My Zsh –

    Better autocompletion – Plugins – Easier to customize the prompt • Similar to Bash • Custom aliases and scripts to make things even easier
  24. Vim

  25. Vim • Just a text editor • Different modes •

    Many open source plugins
  26. Vim Plugins • Vundle • CtrlP • NerdTree • Syntastic

    • vim-easytags • vim-gitgutter • Vim-pencil • Language and framework specific plugins
  27. Vim Tips • Do things the right way (disable the

    arrow keys) • Don't use too many plugins • Be careful copying from others' vimrc files • Write your macros and functions • Learn VimL • Do everything in vim
  28. tmux

  29. tmux • Tmux sessions • Sessions can contain multiple windows

    and panes • You can disconnect from a session and reconnect later • You can have multiple connections to a session • Tmuxinator automates setup
  30. Gnome Shell

  31. tmuxinator • Allows you to define “projects” • Projects define

    the windows and panes present in a tmux session • Projects define what should be run in each window and pane • Projects also allow you to specify “pre” commands to be run
  32. Use Dotfiles! • Configuration is everything when using tools like

    these • Use Git to manage your dotfiles – Makes syncing between machines easier – Makes sharing easy
  33. Tour

  34. Conclusion • Really happy with my workflow • Very performent

    • Had to read a lot of documentation, but learned a lot in the process • Took a lot of work • Not going to work for everyone • Could hinder me in the future?
  35. Advice • Learn one thing at a time • Setup

    a dotfile repository • Don't overload yourself • Don't copy the dotfiles of others • Look at the dotfiles of others to learn • If you need a command, tool, or plugin, it probably already exists. DuckDuckGo is your friend
  36. Trevor Brown @Stratus3D Github.com/Stratus3D admin@stratus3d.com https://github.com/srqsoftware/06-29- 2016_Why_I_Dont_Use_an_IDE