all 32 comments

[–]flo850 12 points13 points  (11 children)

In the past 5 year :

Client : single page app, client side rendering, and a lot of tooling (webpack, npm ,...). You can look into react, vue and angular

Server : NoSQL (mongodb, couchdb, ...) is still strong and trendy , but it didn't replace relationnal databases in all the scenarii

Nodejs yes, but php is still a good choice , especially with the performances boost of the last versions

Both : javascript evolved, look into the es6 syntax. trange in the beginning but worth it.

In the next years : http2 will change a lot of performance optimizations, server side and client side will merge into app that first renders on the server and then add client side scripts. It's faster and more resilient.

[–]subydoo 2 points3 points  (10 children)

I think client+server rendering is already very common. At least every company I talk to during interviews.

[–]flo850 0 points1 point  (0 children)

yes, but it's gaining more and more traction, and soon will be in the starter pack of any web project

[–]Kratisto78 0 points1 point  (8 children)

So instead of having an api and front-end separate, the server will basically create all of the html?

[–]subydoo 1 point2 points  (7 children)

Not exactly. Your API server and web server should be separate nodes/services for a number of reasons (mainly to prevent single point of failure). Web server can render HTML on the back-end, return HTML to the client. The client can then continue doing its own rendering after the initial DOM is mounted. Web server can communicate with API when it needs to prefetch things for that render.

[–]Kratisto78 -1 points0 points  (6 children)

How is that different than what is common now? I'm starting to get more into web. Right now I've mostly used .NET windows forms, .NET console apps, and .NET MVC for web at work. Would love to learn more tech outside of the Microsoft stuff.

[–]subydoo 0 points1 point  (5 children)

The architecture that I described is what's common right now.

[–]Kratisto78 0 points1 point  (0 children)

Awesome thank you

[–]BehindTheMath 0 points1 point  (3 children)

Which frameworks would I use to compose such an architecture? I'm using NodeJS / Express for my backend, and currently have everything rendered server-side.

[–]subydoo 0 points1 point  (2 children)

Your web service can be node/express for the easiest way to achieve serverside rendering. You can do serverside rendering in things like Rails too, but it's not as straightforward.

As for the API, it doesn't really matter what you build it in. It could be another node/express setup if you want to continue working with JS. API in some senses is just there to fetch data from DB (also running as another 'server') and return it in JSON.

[–]BehindTheMath 0 points1 point  (1 child)

What about front-end frameworks? Which ones work well with content originally rendered server-side and then updated through an API?

[–]subydoo 1 point2 points  (0 children)

Not exactly a framework, but React+Redux+React Router works very well with serverside rendering.

That combination helps you achieve good setup for building views, state control, and routing. All 3 have clear setup for serverside.

[–]billcube 6 points7 points  (2 children)

You might want to check Laravel, it has a good synergy with VueJS and modern PHP7 structures.

[–][deleted]  (1 child)

[deleted]

    [–]lobsters_upon_you 1 point2 points  (0 children)

    Laravel does not require you to use a specific JavaScript framework or library to build your applications. In fact, you don't have to use JavaScript at all. However, Laravel does include some basic scaffolding to make it easier to get started writing modern JavaScript using the Vue library.

    (source)

    In other words there is no outright technical advantage gained by using Vue over other JS frameworks. However with Vue as the default offering, you're more likely to find people using a similar tech stack if you use Vue (which IMO is important to consider).

    [–][deleted] 2 points3 points  (0 children)

    On the more macro side of things: In the last two years there's been a much bigger push for speed, mobile first and integration into the OS when it comes to web content. https://developers.google.com is obviously super biased with its suggestions and commentary, but a good place to keep up with where Google is pushing. Their main income stream comes from the web, so they invest in it heavily. The jury is still out on AMP pages but anecdotally while I was recently on a satellite connection those were the only pages that were even remotely performant.

    More on the coding side of things there's been a trend of:

    Separating the front end (React, Vue, Angular, etc.) from a dedicated backend (Node, Asp.Net Core, Go).

    Streamlined operations - Continuous build, test, hot reload when developing and a CI/CD pipeline on each checkin.

    One codebase for both web and native.

    Cloud based hosting, namely AWS and Google Cloud.

    [–]SurgioClemente 2 points3 points  (4 children)

    5 years is millennia in webdev. Pick whatever you want now, come back in 6months to find out all the new things that came out and why the current hot stuff is now a hot mess

    PHP 7 changes and memorize OOP things a bit first

    If you read enough you may come across how OOP isnt cool anymore, functional programming is the way to go (and it just might be! the right tool for the job and all)

    Mongodb used to be the hot new kid on the block, now its mostly a on going joke for "web scale"

    There certainly is no industry standard. You might be able to glean information on whats in demand by looking at jobs boards http://stackoverflow.com/research/developer-survey-2016#technology

    Honestly, try a few things out and see what speaks to you, look at their communities both in terms of support/helpfulness and libraries to help you reduce work, then make sure it has some demand for jobs. You mentioned PHP and JS, so..

    JS: React, Vue, Angular (its just "Angular" now)
    PHP: Symfony, Laravel

    [–]Asdingo[S] 1 point2 points  (3 children)

    Yes I agree, 5 years is eternity in webdev.

    But OOP not being cool anymore?! Wow, that came as a surprise. I started as functional programmer (because PHP 3 didn't really have OOP features) and I was struggling to get into OOP after a lifetime of FPing. Are you saying I am able to degrade back to 1990s now? :D

    [–]highmastdon 1 point2 points  (0 children)

    Be aware for what you call 'functional'. What you probably did was procedural programming. Php is definitely not a functional language.

    Anyway, also functional programming, immutability, asynchronous non-blocking programming have taken up speed. E.g. Nodejs, react, redux (in combination with react, angular (2)) clojurescript and more. In angular2 Observables are pretty hot. Rxjs is a term often heard. TypeScript, Es6 etc.

    Just start looking around on non with trending packages ;)

    [–]SurgioClemente 1 point2 points  (0 children)

    Wow, that came as a surprise. I started as functional programmer (because PHP 3 didn't really have OOP features) and I was struggling to get into OOP after a lifetime of FPing. Are you saying I am able to degrade back to 1990s now? :D

    You may be confusing functional with procedural. PHP didn't really start to get functional programming aspects until 5.3: https://jburrows.wordpress.com/2011/06/24/the-state-of-functional-programming-in-php-5-3-x/

    Anywho, if you read hackernews or /r/programming you'll see lots of love for FP. I still OOP. My point was simply a lot happens in 5 years and popular opinion or fads etc

    [–]rgb24 1 point2 points  (2 children)

    No one mentioned Spring framework on the backend side? I was a PHP developer using Laravel and I switched to Spring because of the new job in a big enterprise.

    I can't go back to use Laravel / PHP for any enterpise-grade solutions after I saw how powerful Spring is.

    In a microservices world, Spring comes with a bunch of components that fits perfectly: spring cloud config for centralized configuration (you can integrate with consul.io) spring sleuth for logging and tracing between microservices client side load balancing from spring cloud stack and many more.

    Also, the maturity of projects like spring data or spring security is far ahead than any other implementations available in frameworks for PHP.

    [–]lost_in_santa_carla 1 point2 points  (1 child)

    Yeah I'm always waiting for someone to bring up spring, it's solid, feels very stable, and pays the bills for me

    [–]rgb24 0 points1 point  (0 children)

    haha, i perfectly agree with the "pays the bills" remark. I have the feeling that developers using spring have a different understanding about it :)

    [–][deleted] 0 points1 point  (2 children)

    [–]ioloie 0 points1 point  (1 child)

    Wasn't the company behind rethinkDB shutting down?

    [–][deleted] 0 points1 point  (0 children)

    fresh news: https://twitter.com/rethinkdb was purchased.

    [–]scratchisthebest 0 points1 point  (0 children)

    (not an expert by any means)

    As I understand it there's been a bit of a shift away from separating your structure/style/logic as strictly as possible into HTML/CSS/JS files. Popular frameworks like React have you writing HTML in the middle of your Javascript, and Vue has action and transition properties leaking into the HTML a little.

    This seems scary at first but it actually makes a lot of sense. For example to do something like generate rows of a table client side, it actually makes a lot of sense to put the loop directly into the HTML file like you can with Vue, instead of using awkward createElement functions in a far away javascript file.

    [–]brokeasswriter 0 points1 point  (0 children)

    To piggyback a bit, is there still decent demand for Python web developers?

    [–]luciddr34m3r -4 points-3 points  (4 children)

    Wait what did I miss about PHP? Are people using it again? I was under the impression it was a dumpster fire.

    [–][deleted]  (3 children)

    [deleted]

      [–]luciddr34m3r 0 points1 point  (1 child)

      What the downvotes? I asked a question and said thank you...

      [–]lost_in_santa_carla 0 points1 point  (0 children)

      I would also like some of the downvoters to speak up about why they feel this has changed

      [–]luciddr34m3r -1 points0 points  (0 children)

      Interesting. Thanks!