News for hackers. Stuff that matters.
Re:How we ended up with microservices by ianpurton on Thursday September 10, 2015 @01:12AM (#10196233)
I've never been convinced about splitting developers into front and back end.

I see no reason why a decent developer can't build the front and the back end for each piece of new functionality. This removes all the communication issues.

Re:How we ended up with microservices by benjaminwootton on Thursday September 10, 2015 @02:20AM (#10196366)
Maybe on a small line of business app.

On a big, widely used consumer facing app however, front end developers really come into their own.

They have cross browser, cross device responsive design issues to contend with. Accessibility and graceful degredation. Performant JavaScript. They also need design skills.

Very few people have deep skills in back end and front end.

Re:How we ended up with microservices by crdoconnor on Thursday September 10, 2015 @02:25AM (#10196379)
I've seen plenty of projects with separate front end and back end developers fuck up because the front end developers try to solve "back end problems" on the front end and vice versa.

This is the cause of an awful lot of technical debt, and "big, widely used consumer facing app" is the natural habitat of large technical debts.

Re:How we ended up with microservices by arethuza on Thursday September 10, 2015 @07:28AM (#10197372)
I vividly remember a case where a really simple page in a system had become incredibly slow - on asking what had changed I was told "all we did was add a count of the number of users".

Turns out the back end (they were micro-services - even though the term hadn't been invented at that point) didn't have a call for "total number of users" so the front end code (this was server side HTML generation - 10+ years ago) was getting a list of every user in the system and iterating over all of them in chunks and counting.

Re:How we ended up with microservices by bliti on Thursday September 10, 2015 @08:49AM (#10197691)
Probably some last minute feature that was forced with a same day deadline. If I had a dollar for each of those I'd be able to retire.
Re:How we ended up with microservices by madeofpalk on Thursday September 10, 2015 @05:31AM (#10197003)
I've seen projects where a 'back end dev' has written CSS or other FE stuff and done a terrible job of it - just bad code.

CSS and the DOM has it's own set of quirks and bits of required knowledge that good FE devs will all know quite well.

Re:How we ended up with microservices by gclaramunt on Thursday September 10, 2015 @07:44AM (#10197440)
That's a communication issue, in our project, we sit our back end devs side to side the front dev ends. "Information must flow".
Re:How we ended up with microservices by lighthawk on Thursday September 10, 2015 @10:38AM (#10198281)
> I've seen plenty of projects with separate front end and back end developers fuck up because the front end developers try to solve "back end problems" on the front end and vice versa.

I totally agree, but even if you have a front-end and back-end communicating well, sometimes the front-end developers throw too much over the wall to the back-end, like when the front-end "thinks it is more intuitive if the request looked like this" instead of something else that would be just as easy to create and would be much less work on the back-end. And I'm sure the opposite is true as well with back-end putting too much work on the front-end.

And, in the argument against a single full-stack developer being the solution to this problem, I've seen extremely talented full-stack developers create some terrible user interfaces, and some who created great user interfaces that would struggle to create adequately performant server-side services to back them.

Re:How we ended up with microservices by biokoda on Thursday September 10, 2015 @07:17AM (#10197338)
No matter how you do it you can shoot yourself in the foot.
Re:How we ended up with microservices by richardw on Thursday September 10, 2015 @11:15AM (#10198543)
I don't think that means we must end specialisation and lose all the benefits it brings. Rather: specialise and communicate better.
Re:How we ended up with microservices by jacques_chester on Thursday September 10, 2015 @07:00AM (#10197285)
> Very few people have deep skills in back end and front end.

At Labs we practice pair programming with frequent (ideall daily) rotation, so skills tend to diffuse and stories tend to get looked at by people with different backgrounds.

Re:How we ended up with microservices by morgante on Thursday September 10, 2015 @05:01AM (#10196899)
> They also need design skills.

I disagree with this and am tired of the coupling between front-end development and design.

Especially on large apps, dedicated designers do the designer. Front-end developers implement.

Re:How we ended up with microservices by madeofpalk on Thursday September 10, 2015 @05:29AM (#10196998)
The inverse of this is when there's a glaring error in a design (we all write bugs - this is just a design bug) and the front end dev implements that in the final product. Of course, other processes (QA, Design QA, etc) has to fail for this to go through to production...

I don't think we need FE Devs who are full on designers, but FE devs who are design 'aware' are, in my experience, much better.

Re:How we ended up with microservices by morgante on Thursday September 10, 2015 @08:32AM (#10197628)
Yes, I think they should be able to tell when a design is off, but that's different from design skills.

Developers need as much a design ability as designers need engineering ability.

Re:How we ended up with microservices by JustSomeNobody on Thursday September 10, 2015 @07:50AM (#10197472)
If only every company actually hired real designers...
Re:How we ended up with microservices by mattmanser on Thursday September 10, 2015 @04:06AM (#10196704)
Performant javascript is exactly what front end devs can't do.

Mono linguistic programmers don't tend to be very good, front end devs are almost by definition mono linguistic developers.

Re:How we ended up with microservices by davedx on Thursday September 10, 2015 @07:44AM (#10197443)
Hi, front end developer here.

Started with C++, then moved to PHP, looked at Ruby, picked up JavaScript, built some ASP.NET apps in C#, did some Unity programming, wrote a bunch of stuff in Java, then finally moved to full time JavaScript programming.

Why the hell do you think a front end dev is "by definition" mono linguistic? It makes no sense.

Re:How we ended up with microservices by jdbernard on Thursday September 10, 2015 @11:16AM (#10198549)
Because once upon a time that was true, at least in many people's experience.
Re:How we ended up with microservices by rifung on Thursday September 10, 2015 @04:18AM (#10196746)
So you're telling me you think that someone who works in javascript, poured hours and hours into it, and has to understand the ins and outs of browsers is going to write worse performing javascript than someone who mainly works with other languages?

That doesn't sound right to me.

Re:How we ended up with microservices by mattmanser on Thursday September 10, 2015 @04:26AM (#10196774)
Yes, they don't know anything about development because they only know one language and they're spending loads of time doing non-engineering, i.e. HTML, CSS and dealing with browser inconsistencies. This is not revolutionary speak, it's been long known that mono-linguists tend to really suck at making things run fast, regardless of their dedication to using that one language.

No-one in their right mind ever called flash developers genius coders, in fact they were (generally rightfully) regarded more as designers than developers and yet that's exactly the same niche front-end devs occupy today.

I've seen it more than once now, massive load of javascript built around the 'recommended' design patterns that as soon as you turn back into simple functions and throw a few if statements into to stop them initializing every page load, boom, massive page load gain.

You can be an expert on hoisting and this and ES6 and still suck at engineering, in fact I've seen it more than once in multiple languages, guys who knew entire language specs and yet couldn't code their way out of a paper bag.

There are 4 types of front end dev:

1. Designer who can throw together a few scripts

2. Inexperienced developer/designer

3. Developer who happens to have moved to javascript with basic design skills

4. Unicorn who's great at design and development

Everyone thinks they're 3 & 4s, in reality 95% of front end developers are 1 & 2s.

Half the things that get posted here that have dedicated front end devs are juddering, slow, scroll jacking monstrosities. Don't try and tell me that's not the present state of the front-end development, because we all know the reality is there's very few, actually good, front-end developers out there.

Re:How we ended up with microservices by madeofpalk on Thursday September 10, 2015 @05:36AM (#10197022)
What you just said applies to every type of developer.

You're always going to have a bell curve of skill for every profession, not just devs or a specific subset of devs.

Re:How we ended up with microservices by TurboHaskal on Thursday September 10, 2015 @09:05AM (#10197759)
I have to agree.

You can get a back-end developer to do front-end. He might lack the experience to deal with some gotchas or browser compatibility but it's nothing that can't be solved with a simple Google search.

A front-end developer doing back-end, on the other hand, might not work as well.

In my experience they often fail to come up with anything remotely modular on their own, write maintainable code, understand the design concepts of more "advanced" frameworks like Angular or doing anything different than copy-pasting some jQuery snippet they found on yahoo answers.

It's not that JavaScript forces you to write spaghetti code, it's just that until very recently it was mostly written by clueless morons that didn't know any better.

How can you write your front-end in something like Reagent if most of your staff get micro-strokes when being asked to type {{ }} instead of <%= %> in your new template system or go la la la can't hear you when you mention the merits of CSS preprocessors?

Fortunately this is all changing as the result of front-end these days getting more "mentally stimulating" thus capturing the interest of back-end developers (the ones that more often than not happen to have degrees).

disclaimer: anecdotal evidence etc

Re:How we ended up with microservices by ken47 on Thursday September 10, 2015 @01:57PM (#10199513)
Would you be willing to share the companies at which you've worked with these front-end developers?

As a simple counter-example, Google requires all "front-end" developers to pass through the same algorithms interviews as backend developers.

Re:How we ended up with microservices by bendev_test on Thursday September 10, 2015 @04:45AM (#10196844)
And let me guess: You are the unicorn?
Re:How we ended up with microservices by onion2k on Thursday September 10, 2015 @03:48AM (#10196635)
I've never been convinced about splitting developers into front and back end.

There isn't any 'one true way' to do it. If a project is best built with a front end team and a back end team, then that's the best way to do it. If a project is best built with a team that does everything, that's the best way for that project.

Mind you, I would add that "This removes all the communication issues." is completely wrong. Having one person write the code for both sides compounds the communication issues, because it means no one other than that developer knows anything about the system. If communication is a problem then resolve that problem as soon as possible by writing good API documentation and sharing knowledge among the team, because if you don't you'll end up with an unmaintainable mess of code that's eventually sunk by the weight of technical debt.

Re:How we ended up with microservices by mdpopescu on Thursday September 10, 2015 @04:54AM (#10196874)
I'm a very good back-end developer. I hate front-end fiddly bits. I can do it, I just hate it. (If you live for seven levels of LESS code, more power to you.)
Re:How we ended up with microservices by vellum on Thursday September 10, 2015 @05:00AM (#10196891)
> I hate front-end fiddly bits.

Yes. A lot of back-end devs would rather chew glass than debug for four browsers, plus mobile devices.

Re:How we ended up with microservices by crdoconnor on Thursday September 10, 2015 @05:06AM (#10196915)
It is usually more susceptible to bugs than the back end. The combination of a lack of control over the environment your code runs in and javascript's weak typing give it that extra dose of fun.
Re:How we ended up with microservices by sangnoir on Thursday September 10, 2015 @06:15AM (#10197142)
In the same vein as your comment, I might as well say back end development sucks because the default MySQL datastore quietly drops strings longer than the field[1].

These days front-end =/= Javascript[2] by a long shot (maybe yours is, but blame the person who made that decision for your project).

1. I don't know if that's still true. If it is, then I'm glad I no longer have to deal with MySQL.

2. GWT had strong-typing since forever. Not that I'm endorsing it, but it's still front end. I do recommend TypeScript

Re:How we ended up with microservices by DCoder on Thursday September 10, 2015 @09:59AM (#10198027)
> the default MySQL datastore quietly drops strings longer than the field [...] I don't know if that's still true. If it is, then I'm glad I no longer have to deal with MySQL.

That's still true, as I recall. To avoid this nonsense, you need to change the sql_mode - either globally in the server config, or only within your session by issuing an SQL query.

Documentation: https://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmod...

Re:How we ended up with microservices by aiiane on Thursday September 10, 2015 @02:15AM (#10196350)
The same reason why often the servers themselves are structured to have separate frontends and backends - because they encompass different problem spaces, and specialization provides efficiency.
Re:How we ended up with microservices by erikpukinskis on Thursday September 10, 2015 @02:43AM (#10196423)
"Specialization provides efficiency" is definitely not a general purpose truth. Specialization can just as easily cause inefficiency.
Re:How we ended up with microservices by rimantas on Thursday September 10, 2015 @03:31AM (#10196577)
Specialization provides loads of communication (or lack of it) between those specialist. Alas, every time the team I was on was doing some soul-searching it came up that the main problem was communication. Don't underestimate the effect of communication overhead and the cost of miscommunication.
Re:How we ended up with microservices by radicalbyte on Thursday September 10, 2015 @03:55AM (#10196662)
First: it's all about reducing latency. Split the work, implement in parallel then you'll ship in "half" the time.

Second: Good developers are hard to find. Backend requires both good CS background (algorithms, security) as well as development skills. Frontend requires some feeling for design and can tolerate poor development skills.

Re:How we ended up with microservices by eyko on Thursday September 10, 2015 @06:30AM (#10197194)
> Frontend requires some feeling for design and can tolerate poor development skills.

It seems you're assuming front end developers are usually designers with some coding skills, or developers with some design skills, and neither is the case. A fairly complex app will most definitely have designers and developers in their front end team.

I think the main reason for the separation is domain knowledge. You may have a lot of experience designing real time APIs, but no experience with web technologies. I've worked with a lot of good developers that still don't get HTTP status codes or the basic principles of REST APIs, but they're good developers nevertheless. And perhaps that's why the role of the full stack developer has become now more popular.

Re:How we ended up with microservices by radicalbyte on Thursday September 10, 2015 @01:15PM (#10199282)
We're talking about web developers, so what I'm saying is broadly true.

Native development - and cutting edge web-based development - is a different beast. You start needing knowledge of threading, messaging, various architectural patterns etc.

I'm actually recruiting for such a developer now - someone who wants to be top specialized front-end developer. They're just extremely hard to find (if you're interested in working on a complex SPA and are in, or want to move to NL, drop me a line! You don't need to speak dutch!).

You're right about domain knowledge: there is just too much that you need to know to be able to be an effective "full stack" developer for anything approaching a complex system.

Re:How we ended up with microservices by gkoberger on Thursday September 10, 2015 @04:03AM (#10196696)
First: Read the Mythical Man Month

Second: Don't insult front-end developers. I do both back and front, and I find front-end to require much more skill. Nobody notices if a backend feels slightly off, but it's very obvious when an interaction was built by someone who isn't a great front-end programmer. Both sides are necessary and difficult in their own way; they just require different skillsets.

Re:How we ended up with microservices by madeofpalk on Thursday September 10, 2015 @05:38AM (#10197034)
> First: Read the Mythical Man Month

Actually, that refers to adding more resources to _an already late project_. It explicitly mentions that starting out with more resources can speed up development.

In saying that, 9 women can't make a baby in one month.

Re:How we ended up with microservices by radicalbyte on Thursday September 10, 2015 @01:18PM (#10199303)
> First: Read the Mythical Man Month

I have, it's a brilliant book. Helped me greatly during my career. However it's about scaling an already broken (and late) project in a very naive way.

Luckily we've learnt a lot since then - and it turns out that decomposing the problem into 4-6 person chucks and optimizing for minimum dependencies is a good strategy to close-to-linear scalability :)

Re:How we ended up with microservices by dllthomas on Thursday September 10, 2015 @01:24PM (#10199348)
"However it's about scaling an already broken (and late) project in a very naive way."

If that's all you remember of it, you really need to reread it (and I find myself mildly skeptical that you did in the first place - although it could very well be that it's been long enough you thought those ideas were elsewhere). The title - and Brooks' Law - is about that, but the book covers a whole lot more. Including discussions of approaches to decomposing problems into <10 person chunks and optimizing for minimum dependencies.

Re:How we ended up with microservices by StavrosK on Thursday September 10, 2015 @05:20AM (#10196958)
> Nobody notices if a backend feels slightly off

Oh you'll notice it in three months, when you have to write that new feature.

Re:How we ended up with microservices by gkoberger on Thursday September 10, 2015 @05:23AM (#10196978)
I was talking about end users, although having to rewrite bad code is true for both front- and back-end.
Re:How we ended up with microservices by tragic on Thursday September 10, 2015 @03:32AM (#10196581)
It depends what you mean by front end, really. If you're working on a single page app type thing, I see no reason why the engineering shouldn't be done by the same people. Design, however, is a different matter. It's a whole other specialism, and while I'm sure there are people who are competent at both, my anecdatabase doesn't have many on file.
Re:How we ended up with microservices by colund on Thursday September 10, 2015 @09:54AM (#10197991)
Martin Fowler discusses this in https://news.ycombinator.com/item?id=10197977
Re:How we ended up with microservices by rifung on Thursday September 10, 2015 @04:10AM (#10196720)
It's possible a developer COULD do both, if they had the experience/training to do both. On the other hand it seems like there are many people who not only know how to do one or the other but actually only want to do one or the other. Of course there are other people who want to do both, in which case I think they usually apply to "full stacK" positions.
Re:How we ended up with microservices by ken47 on Thursday September 10, 2015 @01:40PM (#10199420)
The theory has its roots here: https://en.wikipedia.org/wiki/Production_line https://en.wikipedia.org/wiki/Division_of_labour

Whether backend vs frontend is the right "seam" for division of labor depends entirely on the complexity of the systems at play, as opposed to some arbitrary generalization of all backends and frontends as you seem to be making here.

Re:How we ended up with microservices by hoka on Thursday September 10, 2015 @01:37AM (#10196282)
one possible issue is that the site will be like a chimera, as everyone has slightly different styles of doing UI work and interaction code.
Re:How we ended up with microservices by jdbernard on Thursday September 10, 2015 @11:20AM (#10198581)
I agree, but as hard as it is to find decent developers in general, it is even harder to find decent developers who have enough experience in both sides to be able to work in both environments effectively. Too often you have "full-stack" devs who are really just back-end guys writing JavaScript like Java, or vice-versa.
Re:How we ended up with microservices by kzhahou on Thursday September 10, 2015 @01:04PM (#10199221)
For e certain class of problem, yes. But as complexity and ambition increases in the UI and backend logic, the necessary skillsets will quickly diverge.