When I first made my transition from front-end development into back-end development in ~2002, I had two things to learn:
- a server-side language
- how to talk to a database (SQL)
on top of my knowledge of HTML, CSS and JavaScript. With these five basic things, I was able to build some useful stuff.
I’m working on a web app now and it recently struck me how much more complicated things have become. I’m following what I consider to be modern development best practices and that means that I’m dealing with the following concepts and technologies:
- a server-side language
- how to talk to a database (SQL)
- HTML
- CSS
- JavaScript
- The concept of a virtual machine
- Vagrant with a pre-built image (Laravel Homestead)
- SSH
- Version control (Git)
- A branching/merging process (Git Flow)
- Gulp
- Node.js (for running Gulp)
- Homebrew
- /etc/hosts file (or Dnsmasq)
- CSS pre-processors (Bootstrap was already using Less, I am using Sass)
- CSS concatenation
- JavaScript concatenation
- Image sprites
- A server-side framework (Laravel)
- Framework-specific command line utilities for creating template files, running pre-load optimizations, database commands, etc.
- ORM
- Security (SQL injection, XSS, CSRF, etc.)
- Templating syntax (Laravel uses one called Blade)
- A client-side framework (jQuery, Bootstrap, Angular, etc.)
- JSON
- PHP Composer
- PHP Packages
- Database migrations (database schema defined in code)
- Database seeding
- Faker (for creating dummy data)
- Unit testing
Unused in my project thus far, but other things you’ll need to know sooner rather than later:
- Memcached (or other key/value caches)
- Capistrano (or another deployment process)
- CDNs
I’m guessing I’ve forgotten another dozen or so things that you all will remind me about in the comments… point being, this stuff has gotten more complicated and difficult to get one’s head around. Lots of abstractions, optimizations, etc.
I was recently asked to chime in on a “what programming language should a new developer learn?” round-up. The resulting article is a bit of a mess as you have relatively unstructured comments from 83 developers to slog through. Further, many of them have huge biases towards frameworks they created, etc. Regardless, I was interested to see that I wasn’t the only one to challenge the question and push the importance of motivation and the project goal over a technology choice.
We need to remember that we’ve created this chaos bit by bit. When we are teaching, we need to provide a path that allows people to master one brick at a time. Pretty soon, they have enough bricks that they can build more layers on top of them.
Nailed it. https://t.co/oUZt2fa2kq
Yeah :\ At least the basics for site (not app) development can be simpler than needing all the best practices listed https://t.co/sjhapnl2Px
mimimi –> http://t.co/AphaqF3ZXr
We’ve Made Web Development Complicated – http://t.co/RxAzEpl7VD
@ericlbarnes #truth
@ericlbarnes @ianlandsman We also made aircraft design complicated. It was simple in 1910. http://t.co/c1lDmFD4Hm #itmightbeworthit
@ericlbarnes I was talking to my coworker about this the other day. Today’s you need to be a jack of all trades.
@ericlbarnes @ianlandsman exactly why so many people ask “where do I start?”. You ask a web dev question and it only provides more questions
another web developer weighs in on the growing complexity of web development: http://t.co/lOutKwgxhm
@sogrady I generally feel that way too, but a good 1/3 of that list were part of the deal in 2002.
@n01s3: true, but then the list could also be longer by the same amount
@sogrady indeed.
@sogrady @alexkingorg: There’s an argument to be made that new languages become popular because nobody’s had the time to complexify them yet
[…] http://alexking.org/[...]-complicated […]
I’ve thought this for a while. http://t.co/kpp3mY248n
Completely agree. We are part of a transitional generation of web developers that feel compelled to research and investigate how each tool works, and I bet younger generations are accustomed to trusting the tools in the box without caring who made them or for what exact purpose.
I don’t really care what a hammer is made out of or where it came from, so long as it can smash things flat enough. Someone probably cares more than I do, and I know people who care less, but I’m fluent enough with the tool where I never doubt it’s purpose. But most of the tools you listed are young, and we are not, so until we use them to smash a few objects, that feeling of owning too many tools will not go away.
“You nailed it!”
We’ve Made Web Development Complicated http://t.co/DYmuAe2atL The entry barrier to web app development is huge. Let’s simplify the stack.
“When we are teaching, we need to provide a path that allows people to master one brick at a time.” http://t.co/cMEVdGxyry
With current trends you’d also have to add Docker on the list, since it’s not really a VM and doesn’t try to be, and it’s usage is fairly high and on the rise.
And let’s not forget having some automated backups of the production server. Ours has one nightly backup of the database, which is automatically downloaded a few hours after it’s done and another automatic backup of static images uploaded by the users. After looking into several solutions, they were all too complicated and unreliable, so I instead wrote about 15 lines total of BASH scripts on both ends and have git handle the it. We don’t have to worry about file diffs, since files are only ever added, never modified or deleted.
DevOps is a whole different category.
20+ years in this field and the only constant that I have faced is that we, as a “profession” constantly work as hard as we can to make our jobs more difficult.
Good tools let non-experts produce expert output. We need much much better tools.
Lots of ways to skin a cat.
Reddit/p: We’ve Made Web Development Complicated http://t.co/JYLZv5ElK8
We’ve Made Web Development Complicated http://t.co/YgEjcZ07An #webdev #development #web
We’ve Made Web Development Complicated http://t.co/m0arakjtgr
Yes, yes! “When we are teaching, we need to provide a path that allows people to master one brick at a time.” http://t.co/w5Idu6dw1i
I feel sorry for newcomers, it must be completely overwhelming.
The long list of #webdev techs we have to master today.
http://t.co/gsLEJq0cxH
[Shared] We’ve Made Web Development Complicated http://t.co/rTC4zlfzPZ
“We’ve made Web Development Complicated” http://t.co/CpyJDlIZ1R
Yes, totally, too complicated I say
@mronge bah. You can still get by with older stuff. It just that we no longer want what older stuff makes. Web does more now, so needs more.
Impressive list of tech needed for web dev: http://t.co/v0esEVB3VP. @heroku takes a lot of this pain away
Have We Made #WebDevelopment Complicated http://t.co/3xwc84DLKx http://t.co/CGK7pSEVNh via @alexkingorg
Thought provoking article about software development in general on the web http://t.co/027OUSJrdd
We’ve Made Web Development Complicated https://t.co/5d540QoQuc Thanks @alexkingorg
This.
http://t.co/v7FISD55AD
Word. We’ve Made Web Development Complicated: http://t.co/Ulp5GvgZ0O #webdev
Yep. “We’ve Made Web Development Complicated” http://t.co/aIJq1pIUmm
Le web, c’est compliqué. (C’est pour ça qu’il y a des formations et des pro). http://t.co/Y3n1ew1f4s
#truestory We’ve Made Web Development Complicated http://t.co/fcs1UqSfA5
I had exactly the same felling, just a year ago I had my simple ORM, my own simple CMS, my simple include libs (strings, mails, database, auth, etc)
And a friend of my told me to use Laravel, and was impressed with the ORM and the libs included (sorry now name packages or whatever they decided to invent to name things that allready exists before).
So now I’ve to say that my development speed whent down because of fighting with… Ops something whent wrong or error in line 140394 or Carbon date not in correct format, etc…. In one side is good all this new stuff but one the other hand you have to be reading documentation almost for every step you do and you find yourself fixing problems that you had allready overcome year ago.
Programming paradoxes!!!
Exactly. Web development has become overly complicated when it doesn’t need to be. But no one will hire me anymore, so what do I know?
this guy @alexkingorg captured what I’ve been complaining about. Configurators for configurators. git gulp grunt https://t.co/aOgiiynrL1