If you use just a couple services, good. Now imagine self-hosting all of these:
- version control
- bug tracker
- invoicing app
- document sharing
- project management
- file server
- mail server
- static server
- ruby/node server
- php / wordpress blog
Just off the top of my head. That will cost you a lot of time and head-banging.
I do at least some of this with the server in my basement.
* version control - git and gitweb - I mirror all my repos to github for discoverability though
* invoicing - I've done this with text files to track hours and PDFs for invoices (via LibreOffice) - low tech but simple enough
* document sharing - my home dir on my server (weak, I know, but simple)
* file server - see above
* mail server - postfix, amavis, and spamassassin aren't too hard to set up
* static server - apache or nginx are trivial to set up
* ruby/node - well, I mostly serve Perl stuff, but same deal using Starman - this isn't too hard either
* wordpress - yep, installed this too
Things I don't host myself:
* bug tracker - I mostly use rt.cpan.org and github
* project management - I use Hiveminder
Now if I had to learn all this from scratch it would indeed be a lot of time and head-banging, but I've learned about this stuff over many years of using Linux and hosting my own stuff. And they're all useful skills to know as a developer.
I think any developer who's working on web apps should understand at least the basics of how web and mail servers work. Even if you outsource this stuff to a CDN and something like Sendgrid you should know the tradeoffs involved instead of just picking the outsourcing because you can't set it up yourself.
a home made home server with amahi / tonido / own cloud would take care of a few. Add pancakeapp for invoicing, bugify for bug tracking. The mail thing still a problem.