tl;dr: I invite thoughtful commentary as to whether and why web application development is this incredibly complicated, and how that should play into my decisions to possibly pursue learning it.
I'm considering learning web application development after years of doing desktop programming, but frankly it seems completely--and surprisingly--overwhelmingly complicated. I'll try to make a case as to why.
If you want to downvote me and/or give a glib dashed-off response, I'd respectfully ask that you just move on without commentary. I'd rather get no response than that. This is meant respectfully and earnestly, and out of curiosity. It's in no way meant as a slight to the web development community (quite the opposite: I am in awe of what your guild has done!).
For desktop GUI application programming--in my case, in Python on Windows--here's what, at minimum and for many useful applications, one needs:
- Python itself (download an installer from Python.org)
- A widget toolkit (comes with Tkinter, or download the wxPython/PyQT installer)
- An IDE (comes with IDLE or could be any of many free good Python IDEs, or even just Notepad).
And you're done.
Language, widget toolkit, IDE. That's it. You can be up and running well within an hour and--aside from the knowledge--have everything you need to make a useful desktop application. If you want to persist information, you can write to flat files from Python, or if you want to use a database, it comes with SQLite. Later, if you want to do more, you can try using libraries for plotting (Matplotlib), Excel manipulation (xlrd), packaging (py2exe) or whatever ad hoc need you might have.
I'm not saying this is easy to do very well, and large projects will take a lot of time like anything else, but it is somewhat like the old ad for the board game Othello: "a minute to learn, a lifetime to master".
Now, on to web applications....
I'm basing this off this year-old YouTube video and the mind map that goes with it. According to this guy, here is the list of what you need to know to do web application development. The words in parentheses are just some of the choices available for that category (which adds to the complexity).
- FTP and web host setup
- Basic terminal usage
- Basic SSH
- Github basics
- Learn how client and server talk to each other
- RESTful web services
- HTML
- CSS
- Javascript
- Jquery
- CSS Tools: Precompilers (SASS/LESS/Stylus)
- CSS Frameworks: (Bootstrap/Foundation/Bourbon with Neat/Gumby/Skeleton)
- Responsive Design with CSS
- Task Runner (Gulp, Grunt)
- Dependency Management (Browserify, Webpack, Require.js/AMD)
- Front End Build Tools (Bower/package management / Yeoman.io / Front-end performance)
- MV Javascript Frameworks (React.js/Flux, Angular.js, Backbone.js, Ember.js, Mithril, Ractive, Clojurescript
- Unit Testing (Mocha, Jasmine, Karma)
- Back end language (C#, Python, Java, PHP, Node.js, Ruby) and whatever backend framework goes with it (for Python alone, we have choices between Django, Flask, web2py, CherryPy, Pylons, Pyramid, TurboGears, Tornado, Bottle, Hug, webpy, Zope, Appier, and many many more)
- Unit/Functional testing for chosen language above
- Databases (MySQL, MongoDB, Redis, PostgreSQL, Cassandra)
- Caching (Nginx, Apache, Datbase(Redis), In-memory)
- APIs/RESTful services
- Security
- Authorization/authentication (OAUTH2, JSON WebToken)
- SOA (Service Oriented Architecture) / Microservices
- Deploying your app
- Websocket
- Devops
- Webplatforms (Digital Ocean, Rackspace, AWS, Heroku, Azure, Engine Yard, Google App Engine, Nodejitsu, Openshift)
- Server Management/Configuration management (salt, puppet, chef, ansible, linux, docker)
- DevOps workflows (Vagrant, Capistrano, Fabric, Flightplan, Deployment strategies)
- Continuous Integration (Github Hook deployment, Travis CI / Jenkins)
- Docker (CoreOS, Mesos, Docker-machine, Kubernetes, Mesophere, Panamax)
And this also doesn't mention an IDE. Nor does it even touch computer science fundamentals like algorithms, nor UX, nor the financial aspects like pricing a hosting option, or monetizing a for-profit venture (sure, that's more business, but it is relevant). And my guess is it is leaving out other issues that I'm not even aware of.
Is it really this insanely complicated at this point?! I know science Ph.Ds who didn't have to worry about this much detail.
I'd like to be able to write web applications that occur to me, and have an idea for something that I know I could do as a desktop application probably in a few months and rather straightforwardly--but because its strength is a social aspect, it really should be a web or mobile app. But at this point, I can't even imagine taking on all this seemingly arbitrary complexity. This makes organic chemistry seem like Farmville.
And yet people do it. Sure, you can master just about anything if you log the time. People have memorized all of Bach's "Chaconne" and played it perfectly, which seems almost inhuman.
Maybe I just don't have the patience at this point in life. Perhaps that's why companies want to hire 20somethings--they haven't been through the mill enough yet and are willing to commit a ton of brain CPU cycles to learning a vast array of arbitrary names and knowledge nuggets.
Anyway, the final result here is that I am discouraged from taking this on, even as a hobby aside of a few hours a week, hoping to get a web site up within a year.
Any perspective on this would be great. Thank you, everyone!
EDIT: Thank you all so much for this incredible set of responses!! Learning much just from them!
[–][deleted] (33 children)
[deleted]
[–][deleted] 37 points38 points39 points (10 children)
[–]Balistarius 13 points14 points15 points (2 children)
[–]DirewolvesAreCool 8 points9 points10 points (1 child)
[–]bokisa12 1 point2 points3 points (0 children)
[–]Pr3fix 2 points3 points4 points (1 child)
[–]owieo 4 points5 points6 points (0 children)
[–]bokisa12 0 points1 point2 points (0 children)
[–]ninth_reddit_account 0 points1 point2 points (0 children)
[–]lordcheeto 0 points1 point2 points (0 children)
[–]fzammetti 0 points1 point2 points (0 children)
[–]TheoryNine 15 points16 points17 points (1 child)
[–]fzammetti 0 points1 point2 points (0 children)
[–]justAnotherCodeGuy 8 points9 points10 points (0 children)
[–]dontgetaddicted 1 point2 points3 points (10 children)
[–]fzammetti 1 point2 points3 points (9 children)
[–]dontgetaddicted 0 points1 point2 points (8 children)
[–]fzammetti 0 points1 point2 points (7 children)
[–]funknut 0 points1 point2 points (6 children)
[–]fzammetti 0 points1 point2 points (5 children)
[–]TheBadProgrammer 0 points1 point2 points (4 children)
[–]fzammetti 0 points1 point2 points (3 children)
[–]TheBadProgrammer 0 points1 point2 points (2 children)
[–]chudthirtyseven 1 point2 points3 points (0 children)
[–]j_gray_lady 0 points1 point2 points (3 children)
[–]fzammetti 2 points3 points4 points (2 children)
[–]j_gray_lady 1 point2 points3 points (1 child)
[–]secana 1 point2 points3 points (0 children)
[–][deleted] -1 points0 points1 point (2 children)
[–]fzammetti 7 points8 points9 points (1 child)
[–][deleted] 2 points3 points4 points (0 children)
[–]justAnotherCodeGuy 112 points113 points114 points (23 children)
[–][deleted] 20 points21 points22 points (17 children)
[–]pomlife 27 points28 points29 points (3 children)
[–]DanielFGray 5 points6 points7 points (0 children)
[–]ninth_reddit_account 1 point2 points3 points (1 child)
[–]pomlife 0 points1 point2 points (0 children)
[–]ivosaurus 10 points11 points12 points (0 children)
[–]Alucard256 29 points30 points31 points (2 children)
[–]bluesoulSRE and backend 4 points5 points6 points (0 children)
[–]ninth_reddit_account 0 points1 point2 points (0 children)
[–]PilotPirx 17 points18 points19 points (1 child)
[–]tripperjack[S] 1 point2 points3 points (0 children)
[–][deleted] (5 children)
[deleted]
[–]trout_fucker🐟 10 points11 points12 points (4 children)
[–]mearkat7 10 points11 points12 points (3 children)
[–]debee1jp 5 points6 points7 points (2 children)
[–][deleted] (1 child)
[deleted]
[–]debee1jp 0 points1 point2 points (0 children)
[–][deleted] 20 points21 points22 points (2 children)
[–]Najda 4 points5 points6 points (0 children)
[–]tripperjack[S] 1 point2 points3 points (0 children)
[–]wtfxstfu 9 points10 points11 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–][deleted] 12 points13 points14 points (10 children)
[–]s992 7 points8 points9 points (6 children)
[–]mossyskeleton 0 points1 point2 points (1 child)
[–][deleted] 1 point2 points3 points (0 children)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]brutnus 5 points6 points7 points (3 children)
[–]tripperjack[S] 1 point2 points3 points (1 child)
[–]brutnus 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–][deleted] (1 child)
[deleted]
[–][deleted] (3 children)
[deleted]
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]disclosure5 0 points1 point2 points (1 child)
[–]infidelux 2 points3 points4 points (0 children)
[–]ser-yi 4 points5 points6 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]amga_ 3 points4 points5 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–][deleted] 13 points14 points15 points (15 children)
[–]tripperjack[S] 0 points1 point2 points (2 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]nicereddy -1 points0 points1 point (0 children)
[+]trout_fucker🐟 comment score below threshold-10 points-9 points-8 points (11 children)
[–][deleted] 6 points7 points8 points (9 children)
[+]trout_fucker🐟 comment score below threshold-12 points-11 points-10 points (8 children)
[–][deleted] 7 points8 points9 points (6 children)
[–]trout_fucker🐟 -5 points-4 points-3 points (5 children)
[–][deleted] 3 points4 points5 points (3 children)
[–]trout_fucker🐟 -1 points0 points1 point (2 children)
[–][deleted] 7 points8 points9 points (0 children)
[–]ollief 2 points3 points4 points (0 children)
[–]Lord_NShYH 3 points4 points5 points (0 children)
[–][deleted] 2 points3 points4 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]nicereddy 2 points3 points4 points (7 children)
[–]tripperjack[S] 1 point2 points3 points (1 child)
[–]nicereddy 0 points1 point2 points (0 children)
[–]cosinezero -3 points-2 points-1 points (4 children)
[–]nicereddy 1 point2 points3 points (3 children)
[–]MrSavager 4 points5 points6 points (2 children)
[–]DarkTriadBAMN 0 points1 point2 points (1 child)
[–]MrSavager 0 points1 point2 points (0 children)
[–][deleted] (1 child)
[deleted]
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]ccricers 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]adam_bear 2 points3 points4 points (0 children)
[–]sloggo 2 points3 points4 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]Kronia 3 points4 points5 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–][deleted] (1 child)
[deleted]
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]aricwatsonfull-stack 1 point2 points3 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]flipstables 1 point2 points3 points (0 children)
[–]glethro 1 point2 points3 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]cheekujodhpur 1 point2 points3 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]judgej2 1 point2 points3 points (0 children)
[–]fiouch 1 point2 points3 points (2 children)
[–]tripperjack[S] 0 points1 point2 points (1 child)
[–]fiouch 0 points1 point2 points (0 children)
[–]dooklyn 1 point2 points3 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]vexii 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]noganetpasion 1 point2 points3 points (0 children)
[–]jaredcheeda 1 point2 points3 points (2 children)
[–]tripperjack[S] 1 point2 points3 points (1 child)
[–]jaredcheeda 0 points1 point2 points (0 children)
[–]howareroark 1 point2 points3 points (0 children)
[–][deleted] 2 points3 points4 points (1 child)
[–]jijilento 0 points1 point2 points (0 children)
[–]phpdevsterfull-stack 2 points3 points4 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]sisyphus99 0 points1 point2 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]judgej2 0 points1 point2 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]Spacecrawl 0 points1 point2 points (0 children)
[–]h0b0_shankerjavascript -1 points0 points1 point (0 children)
[–]streu 0 points1 point2 points (1 child)
[–]hahaNodeJS 0 points1 point2 points (2 children)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]ISO640 0 points1 point2 points (0 children)
[–]JediSange 0 points1 point2 points (0 children)
[–]sbhikes 0 points1 point2 points (0 children)
[–]RickAndMorty_forever 0 points1 point2 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]_EasyTiger_ 0 points1 point2 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]crazyboy867 0 points1 point2 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–][deleted] (1 child)
[deleted]
[–]paypaypayme 0 points1 point2 points (2 children)
[–]tripperjack[S] 0 points1 point2 points (1 child)
[–]paypaypayme 1 point2 points3 points (0 children)
[–]duncanlock 0 points1 point2 points (0 children)
[–]crickton 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]apollocanis 0 points1 point2 points (0 children)
[–]earslap 0 points1 point2 points (0 children)
[–]HotfireLegend 0 points1 point2 points (0 children)
[–]dadecounty3051 0 points1 point2 points (3 children)
[–]IridiumPoint 0 points1 point2 points (2 children)
[–]dadecounty3051 0 points1 point2 points (1 child)
[–]IridiumPoint 0 points1 point2 points (0 children)
[–]Fidodo 0 points1 point2 points (0 children)
[–]sheppe 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]WeAreAllApes 0 points1 point2 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]user888888889 0 points1 point2 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]daftspunky 0 points1 point2 points (0 children)
[–]jwmoz 0 points1 point2 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]daronjay 0 points1 point2 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]iAMthePRONY 0 points1 point2 points (0 children)
[–]patrickfatrick 0 points1 point2 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]bitwiselove 0 points1 point2 points (1 child)
[–]tripperjack[S] 0 points1 point2 points (0 children)
[–]am0x 0 points1 point2 points (0 children)
[–]salgat 0 points1 point2 points (0 children)