Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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.

Trevor Brown

June 29, 2016
Tweet

More Decks by Trevor Brown

Other Decks in Programming

Transcript

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

    View Slide

  2. Trevor Brown
    Sarasota, Fl
    JavaScript, Erlang, Elixir, Ruby
    Software Developer at Voalte
    @Stratus3D
    Github.com/Stratus3D
    [email protected]

    View Slide

  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

    View Slide

  4. Eclipse IDE

    View Slide

  5. Emacs

    View Slide

  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

    View Slide

  7. Advantages to Using
    an IDE

    Easy to setup

    Easy to learn

    Some things automated out of the box

    View Slide

  8. Why No IDE?

    View Slide

  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

    View Slide

  10. No IDE

    View Slide

  11. The Tools I Use

    Vim

    Zsh

    tmux

    asdf

    View Slide

  12. Gnome Terminal

    View Slide

  13. asdf

    View Slide

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

    View Slide

  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

    ...

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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/

    View Slide

  21. The Tools I Use

    Vim

    Zsh

    tmux

    asdf

    View Slide

  22. Zsh

    View Slide

  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

    View Slide

  24. Vim

    View Slide

  25. Vim

    Just a text editor

    Different modes

    Many open source plugins

    View Slide

  26. Vim Plugins

    Vundle

    CtrlP

    NerdTree

    Syntastic

    vim-easytags

    vim-gitgutter

    Vim-pencil

    Language and framework specific plugins

    View Slide

  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

    View Slide

  28. tmux

    View Slide

  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

    View Slide

  30. Gnome Shell

    View Slide

  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

    View Slide

  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

    View Slide

  33. Tour

    View Slide

  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?

    View Slide

  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

    View Slide

  36. Trevor Brown
    @Stratus3D
    Github.com/Stratus3D
    [email protected]
    https://github.com/srqsoftware/06-29-
    2016_Why_I_Dont_Use_an_IDE

    View Slide