I'm not trying to be the sad old guy who's still slinging COBOL...
November 21, 2019 4:58 AM   Subscribe

WebDevelopmentFilter: what are the up-and-coming frameworks, platforms, technology stacks, etc. for building CMS sites and similar web apps in 2019? I need to hit the "eject" button on my PHP/LAMP career.

I've been a PHP/LAMP developer since 2000, currently specializing in Laravel. But it's really starting to feel like a dead end, career-wise – so I'd like to make the leap to a more modern web development stack.

I do want to stick with the web – meaning, sites and web apps that a human being interacts with in a browser. Not back-end stuff like machine learning, big data, DevOps, etc. I know it's not fashionable, but I'm quite content building conventional sites/apps with CRUD backends in an MVC framework.

So: what are today's up-and-coming platforms for this kind of thing?

I know that Python is big, and that Django is the big Python framework/CMS – but I don't think I've ever seen a Django job in the wild.

Ruby and Rails seem to be on the wane (and, again, I've seen few Rails jobs, at least recently).

Maybe the market for developing CMS sites and CRUD web apps is simply dwindling overall? (Or has settled on WordPress and the like as a low-cost, good-enough solution for general purposes?)

Basically: I enjoy working on the more modern end of PHP, such as Laravel. But there aren't many PHP jobs like that – 95% of them involve WordPress or (even worse) Drupal, which are chasms of despair. I don't see that situation improving anytime soon, so I'm looking for the exit route.

I've really enjoyed working with Angular in the past – and I've thought about specializing in front-end development.

tl;dr: What tech stack can I learn that (1) isn't a career dead-end, and (2) will allow me to continue working on the kind of projects that I enjoy?

Bonus question: what's the path from "learning a new tech stack in my spare time", to "getting a job working with that tech stack"? Most companies, obviously, want proven work experience. Maybe I'll just have to take a more entry-level position, and work my way up.
posted by escape from the potato planet to Computers & Internet (15 answers total) 18 users marked this as a favorite
 
"Maybe the market for developing CMS sites and CRUD web apps is simply dwindling overall? (Or has settled on WordPress and the like as a low-cost, good-enough solution for general purposes?)"

The market is definitely strong. A lot of this work goes to consulting companies. Don't sell yourself short and look at entry level - look at job postings for a company like Thoughtworks, for example. They don't list specific technologies, they want demonstrable experience in OO and TDD. You should be able to demonstrate your competency in those kinds of things in your current stack.

Get a small React project in your portfolio. You want a sample project where a JS frontend (the view) is consuming APIs from a backend that's got skinny controllers, well designed models, tests, etc. The tech stack is not AS important as being able to sell yourself as a generalist, who tests, who writes clean code, who can learn new things who also has 20 years of experience.
posted by ProtoStar at 5:14 AM on November 21, 2019 [6 favorites]


Sounds like you have a pretty good handle on the market. The fun advanced side of PHP is shrinking, with development either going into the WordPress and Drupal camps or drying up to go to cloud based software as service. This is happening in a lot of the middle tier regardless of language. Those places that had a couple of programmers around to make custom software are finding that cloud solutions can do much of the problems they worked on.

If you liked working in Angular, I really see the market for client side frameworks growing. If you are looking to learn new skills in small scale backend, it looks like serverless and the API everywhere world is primed for growth. Leaning AWS lambda would be a good first step.
posted by advicepig at 6:55 AM on November 21, 2019


I think learning JS and then React is probably the move here. That's clearly where the momentum is in web dev. I would work through the CodeAcademy JS & React courses, check out Egghead for instructional JS videos (and info about the ecosystem around JS - I think knowing that is almost as valuable as actually knowing the language), start following the JS Weekly newsletter to start to dip a toe into the community, and then build a few projects like ProtoStar recommended and start looking for jobs. You're lucky, in that it sounds like you don't absolutely need to bail right now, so you can afford to be picky. Maybe work with a recruiter; they can sometimes help get you through that initial dumb filter.

Regarding your bonus question, I also agree that you don't need to start at entry level. I'm way more junior than you in the industry, but the pitch I made when I was jumping from Ruby to Python was "These languages are more alike than different. The syntax changes; the concepts and best practices mostly don't. I can pick up syntax quickly, but I already know the stuff that really matters." Obviously that wouldn't work if you were moving into something like C, but the gaggle of duck-typed OO languages that drive most web development are all pretty similar.
posted by protocoach at 8:37 AM on November 21, 2019 [4 favorites]


Response by poster: Good answers so far; thanks.

I think I have probably been selling myself short, to some degree. I know that I can learn new things – and I know that it's fairly common for companies to hire developers who don't necessarily know all of the technologies required for the role, with the understanding that there will be an onboarding period while they acquire those skills. But, I've been reluctant to go after those positions – it feels weird and intimidating. I guess I feel like I have to learn the tech first, and then go after the jobs.

Maybe I just need to get over that.
posted by escape from the potato planet at 8:43 AM on November 21, 2019


JS/React is what I use at work, and it's an enjoyable space to be in; it's definitely got some huge momentum behind it. It's also been maturing well as an ecosystem — there have been some changes over the past few years (ES6, hooks) that have improved React and JS greatly. I don't know much about PHP, but I agree with protocoach that languages (with a few outlying exceptions) tend to be more similar than different, so working your way through some tutorials should be smooth.
posted by wanderingmind at 8:51 AM on November 21, 2019 [1 favorite]


Agreed that JS/React is probably the horse to bet on here. If you're specifically interested in CMS-driven sites, I'd also check out Gatsby, which is a static site generator that uses React. There's a idea that's growing in popularity right now called the JAMstack, in which you basically keep your server as much as possible on other people's computers and just focus on the Javascript, Api, and Markup (that's the JAM) to make your site.
posted by Ragged Richard at 9:27 AM on November 21, 2019 [1 favorite]


Not explicitly what you asked - but don’t assume the old COBOL slingers are sad. Their employment opportunities are declining but very much still there; will probably die off only when they do. Occasional , well remunerated gigs is a perfect match for a programmer near or beyond standard retirement age. This is not to say that this will be a model that suits you - but don’t discount the long term demand for people who know LAMP as well as maybe something else.
posted by rongorongo at 11:16 AM on November 21, 2019 [4 favorites]


I also came here to recommend Javascript and React. My advice is to grind your way through an hour of FreeCodeCamp's learning paths every single day - I'm actually super confident it won't take long, so go for it. I'm not surpised you feel resistance, but consider your experience you have in PHP already - it'll be so much easier to learn a second language - the most work you'll have to do is in understanding the differences in syntax, finding methods that are analogous to the ones you already use, and discovering the wide variety of tooling that the Javascript ecosystem uses. Sheer daily exposure will breed familiarity, though.

React can be a little heady to wrap your brain around, but once you get it, you realize how elegant it is in making performant and highly-interactive data-driven sites. I'm still getting my best practices down, but I'm highly confident it's an enjoyable specialty you can absolutely make a living in. After getting what React's about, I think Gatsby gives a great example of where highly-optimized full-stack Javascript sites are headed - and since Gatsby can tightly couple with Wordpress and Drupal (which you're already intimate with), it's a great crossover point to leverage existing experience. Gatsby uses a headless approach, utilizing exposed Wordpress or Drupal post data via JSON APIs, which then automatically get funneled into a query-able GraphQL server.

Maybe you could create a portolio site in Gatsby, and then alongside it, create and feature a few little full-stack Javascript projects (like a to-do app, a sign-in app, maybe a Reddit clone - or anything that features interactive or searchable front-ends to existing free APIs, like maybe Foursquare, OMDB, or Skyscanner). In your GitHub, demonstrate some basic method calls on arrays, objects, and strings, and be familiar with higher order functions like reduce, map, and filter. You should definitely feature your PHP projects too! You could even use a Gatsby portfolio starter repo, then modify it until it truly becomes your own.
posted by a good beginning at 1:30 PM on November 21, 2019


I used to do a lot of PHP and years back started on Django and have really liked it. While React is very popular I think Django would be a simpler step for you given it’s a similar position in the stack to Laravel. It might be simpler to pick up python and Django, rather than JavaScript and React.

One option to consider is Django with Django Rest Framework which is popular for creating APIs... as used by front-end stuff like React.

(Not trying to convince you Django is better, just offering a different option. I also sometimes feel a bit old fashioned, sticking with a back-end that generates static front-end HTML with just a dash of JS, rather than a whizzy modern single-page-app style. But at this point in my life I’m sticking with what I know works for what I need!)
posted by fabius at 1:56 PM on November 21, 2019


Response by poster: I should note that I've done quite a bit of JavaScript (and TypeScript, via Angular 2+). I skimmed the official React tutorial this evening, and it all looks very straightforward. I'll be taking a deeper dive.
posted by escape from the potato planet at 3:13 PM on November 21, 2019 [1 favorite]


I think you should combine your studies of new front end frameworks with ramping up on AWS. AWS has very easy to use services for pretty much everything. You may not want to focus on DevOps, but if you deploy your Hello World apps to AWS and use things like Lambda and API Gateway, and the AWS database and storage options , you’ll make yourself very marketable. If a developer today has been at a job for 7 years, they probably aren’t strong in AWS but are being asked to migrate their apps to AWS. Strong programmers who understand the value of the cloud are worth their weight in gold. Bonus if you use something like CloudFormation or Terraform to generate any servers or other resources instead of doing it manually. I started programming in the 1990s and deploying stuff to AWS is a breeze and fun to boot.
posted by freecellwizard at 4:16 PM on November 21, 2019 [1 favorite]


Hey, besides angular/react check out Vue. It's often paired with Laravel. It's also very fun to learn and use.
posted by pyro979 at 5:16 PM on November 21, 2019 [1 favorite]


If you'd like to try some friendly functional programming take a look at Elixir and its web framework Phoenix - similar framework concepts to Rails and Django, but very fast and concurrent and reliable.
posted by BinaryApe at 4:42 AM on November 22, 2019


Sorry to post again but I was thinking about your question overnight and thinking about why I chose python + Django when I was looking to move from PHP and realised there were some reasons that weren't related to employability or popularity, so they might be worth considering too:

1. At the time Django and Ruby on Rails seemed like the choices (React et al weren't around). In looking a bit at both options I decided python was more "me" than Ruby was. I liked the stricter formatting requirements and the lack of "magic" in where variables etc can come from. So although RonR was, at the time, more popular this swayed me towards Django - I thought I'd be happier working with it.

2. Documentation - the official Django documentation was, and is, really good. A couple of years later I had to do some RonR for work and found the docs for that (at the time) were nowhere near as good.

3. Stewardship - I'm not sure I realised at the time but I've really liked how the Django project is managed. From what it decides to include as new features (versus what's left to third-parties) to how updates, deprecations and Long Term Support releases are handled. It feels very dependable, with few unwelcome surprises, and fairly simple upgrade paths.

4. Community - I'm not really involved but the community around python and Django seems generally nice and welcoming.

Just some other things that might be worth considering when looking at what to move too. And thanks for making me think about this. Good luck!
posted by fabius at 5:41 AM on November 22, 2019


I have a friend who took a couple years to get some Python certs and then got hired at Hulu. They still use Python for a bunch of their database functions, but their web stuff is all React and Node.js.

Lots and lots of political CMS sites are still built with Ruby stacks (ActBlue, NationBuilder), though many are transitioning to React.
posted by klangklangston at 4:00 PM on November 26, 2019 [1 favorite]


« Older Laptop for Plex server & streaming - UK Black...   |   Refresh my Firefox extensions so they'll play... Newer »
This thread is closed to new comments.