DEV Community

George Katsanos
George Katsanos

Posted on

Generalist vs Specialist Developers: Theory and practice

Like every other Senior developer out there, I am quite often approached by companies looking for Web Developers to join their teams. When the message and project look interesting, I sometimes engage in a first general discussion either by phone or if the company is located physically close, in person.

There were always vague or badly written job descriptions in our field; Back where I come from, Greece, traditional software companies were notorious for looking developer profiles who could do everything from Databases to backend, frontend, system administration, and in very "exotic" language combinations (PHP, Java, .NET - in one profile). Companies were trying to save money by hiring one person, a generalist, to do everything. That naturally led to chaos and produced throwaway code no one was able to maintain or support (especially when the one man army developer would decide to move to a new project)

During the past months, and partially because of the prevalence of JavaScript in both ends of the development spectrum, I've noticed a growing popularity for "Full Stack" profiles. I had discussions with companies looking for a "Frontend Developer" who is:

  1. an expert (!) in iOS (Objective-C, Swift) and Android (Java) development and has years of experience in Native (!) application development
  2. familiar with Python Ruby or Go
  3. naturally an expert in frontend Frameworks

Where I come from, that's definitely not a "Frontend Developer".

I've observed developers around my network with very solid mathematical problem-solving skills, who come from a pure backend background and have jumped in the JavaScript train. They can code Node.JS based applications and APIs with ease but even if they claim they're "full stack", they really neglect a lot of the skills and tools needed to master the Frontend part of the job.

To me, a (Senior) Frontend Developer sits somewhere between Product, UI, UX and backend, and by collecting feedback orchestrates the final product result. He is someone who's familiar with things like device and browser quirks, accessibility, SEO, and who ultimately has an eye for design, or possible UX issues all this while keeping it with the very fast paced frontend ecosystem and its' tools and libraries - which is a full time job on its own.

Do you think Frontend Development is moving to a phase that implementation of web interfaces for the browser is going to be only secondary to things like Node.JS, mastery of docker and microservices, and mobile development?

What is your opinion on profiles that claim they can do everything, and would you work for a company that expects you to do everything?

Oldest comments (5)

Collapse
 
theodesp profile image
Theofanis Despoudis

I've never seen an expert in both front-end and back-end. They are usually good in one part but not on the other. However, the more years you have on your back the easier it gets.

Collapse
 
ben profile image
Ben Halpern

Do you think Frontend Development is moving to a phase that implementation of web interfaces for the browser is going to be only secondary to things like Node.JS, mastery of docker and microservices, and mobile development?

There's a popular school of thought that believes the exact opposite!

See Netlify's 30 million dollar raise and associated vision

Look into this JAMstack concept

This is perhaps orthogonal to the discussion but felt like picking at that statement to throw another wrench.

Collapse
 
rhymes profile image
rhymes

Do you think Frontend Development is moving to a phase that implementation of web interfaces for the browser is going to be only secondary to things like Node.JS, mastery of docker and microservices, and mobile development?

I think the opposite.

Frontend development is becoming harder (partly because of the tooling) due to the fact that we're asking developers to master frontend programming for reactive applications and not more static websites with some sprinkle of JS.

I genuinely think stuff like RxJS or Redux/Vuex to be more complicated than most CRUD web apps they are sitting on top of :D

In some situations you could also mostly do away with backend and use a collection of services (see Firebase or AppSync), so what remains in that case is a strong knowledgeable frontend developer paired with a designer.

Frontend developers are not going anywhere, as some point also those companies will realize that (or lose business and/or customers).

Even if you think you're a generalist you're still a specialist that knows one thing better than the others :-) How can you be great at 3 different domains (frontend web, backend web and mobile) and have a life outside that room at the same time :D ?

Collapse
 
katsanos_george profile image
George Katsanos • Edited

I guess part of the answer to "How can you be great at 3 different domains (frontend web, backend web and mobile) and have a life outside that room at the same time :D ?" is embedded in the question :) There's plenty of developers for example in the ecosystem where I live who pretty much have no life other than their work.

Collapse
 
rhymes profile image
rhymes • Edited

There's plenty of developers for example in the ecosystem where I live who pretty much have no life other than their work.

That's the thing. It all comes down to choice. I'm 100% sure that I would know more as a software developer if I were to have no other interests or have no social life.

BUT

Would I be a better or more effective software developer? That I don't know and I would probably argue that maybe not. Yeah, I might finally learn everything about Kubernetes and Rust and this and that instead of postponing but... then? Do I get life points?

I think that sometime we forget that in order to be more effective professionals we need to fulfill all aspects of the person that contains such professional. I think there's value in total committment but we're not robots, there's a lot of value in being a functional human being with social connections that has an appreciation (and maybe not absolute mastery) of their job. If I were in the life saving business I would probably have a different opinion, but I'm not.

I have done the total committment thing. I was miserable, in a non english speaking foreign country (and english is not my first language, bonus points for me :D) and my only interactions for the first few months were with colleagues I saw too much because of the insane hours and the owners of the stores around the office. I badly needed people to talk something other than Ruby on Rails to. This doesn't mean it wouldn't work for other people, I'm talking about me. I made a choice after working for early stage startups that led me to me being a freelancer and being ok with the fact that I'll never know everything about everything.

Looking back I wouldn't do it again. We think we're different from people that have other types of jobs but that ain't true.

I'm still yet to see an old person on their death bed saying "I wish I memorized the entire Kubernetes manual by memory instead of spending time with my friends when I got the chance".

(ps. you can do both for a while, but that breaks my story telling so we won't consider that :P)