I'm writing this small post for myself to document my workflow and tooling (tl;dr: I'm not using Haskell and emacs and don't program i486 in assembly, so don't expect anything special here).
virtualenv and pip are my loyal companions. Every good Django project I know use them and I type
virtualenv env && source env/bin/activate && pip install -r requirements.txt out of sheer habit.
Combined with nodeenv it is also extremely convenient for node.js development:
pip install nodeenv && nodeenv nenv && source nenv/bin/activate is the best way to have an isolated node.js instance.
I tried many Git GUIs and found GitKraken to be a good fit. It's currently in beta stage and there are some glitches, but overall it looks awesome. SourceTree is also very good, but I try to use tools that are open source and cross-platform to ensure platform independence (so no to Tower and Sequel Pro).
Most of the time I'm just running a django or flask server using
python manage.py runserver (yes, flask has a manager, too) and
ember s for the frontend part so I don't really need a build system for development. I'm currently trying out Gitlab CI to replace TeamCity (great software, but I want to use open source projects) to do automatic deployments after the testing stage so I don't have to type
ember build and migrate the database anymore. — I will post an article about it if my setup is ready.
git is my tool of choice for version control (you can even use svn with it). Pushing before everybody else is a very relieving feeling because you don't have to merge it (ignore the fact that everybody should use their own feature branch). Aside from that it is obvious why someone would want to use a version control system — I heard things like it is like a time machine. But I would git commit --amend that
git blame is the most powerful instrument in professional software engineering. Without the blaming a git command, you would never know who wrote that big fat spaghetti code function playing god and which programmer you should penalize (2 days without internet learning fundamentals, of course). Definitely a must-have.
I like nginx a lot (apache too) — they are fast, easy to configure and flexible. nginx is my personal favourite because of its syntax, but they both have their advantages. The templates from cipherli.st are a great start to protect a webserver, but you should also be aware of the BREACH attack and deactivate gzip/compression for your backend API (breachattack.com describes some mitigations).
I use MySQL in production and SQLite for fun, but I want to try out PostgreSQL in the future (although a bug was found lately). MongoDB or CouchDB for node.js and NoSQL - there are some blog posts explaining the differences between those two with the CAP theorem.
So this is my tooling. Pretty basic and nothing esoteric, but works like a charm.