Full Stack Developer

Developer’s specialization

The idea of developer’s specialization, the role in the team, the challenges and choosing your way. One can have broad knowledge in many disciplines, but with time the amount of information is increasing rapidly, staying up-to date with everything is impossible and not even needed, as a happy & successful engineer everyone picks some are where he likes to continue to study. But what if your position or desire is different, if one wants to prototype/develop/maintain complicated systems, or the company role expects really wide range of day-to-day tasks, it’s also a specialization, with different names

SolutionsArchitect/SA (abstract high-level knowledge) SoftwareArchitect/SA (detailed) ApplicationArchitect & DevOps (agile means deploy and maintain your code yourself) very detailed knowledge of tech stack FrontEnd (UI/JS/Design/UX) BackEnd (Servers/Scalability/Ops)

This post was inspired by article (why it sucks to be Full Stack Developer):

I would agree with original post and would like to add some to it, whie translating to english.

Definition

Article defines “FullStack Developer” as a role where one obtains experience and knowledge of building the Application from the ground, that would ofc. include code, testing, infrastructure, architecture, scaling, setup, some marketing and seo, and much more.

Ideally a single FullStack developer could create an App by himself (hello Startups), then go all the way to production and scaling. Those are often “founders” in fresh startups, people who know how to implement an abstract idea into a working Application (and Business, if successful). They have at least 5+ years of experience, and usually 10+ years and may not be super up to date with latest trends.

You as a FullStack developer: Cons

  1. In each specific technology one is weaker than a specialist, but has an overview of strong/weak sides of technology
  2. Study/Progress is slow, as one is heavily busy with many technologies at the same time, much time is needed ±10 years to progress
  3. Heavy multitasking and often inability to concentrate fully on a specific task
  4. Its hard to replace FullStack developer as he bears so much responsibility, his presense is often required in critical situations, but abused for solving generic issues.
  5. Due to broad knowledge, the most difficult tasks, including optimizing/refactoring old code that new/other employees doesnt know.
  6. Lack of knowledge of specific details of exact libraries/SDKs that are often requred to apply for different vacancy.
  7. No time to track changes in latest tech. stack (latest frameworks, databases) especially if not used on day-to-day basis
  8. Code is correct, properly commented and packaged, but not always an optimal solution/algorithm is selected on a specific platform.
  9. Need to keep manuals/cheat-sheets/references nearby (hopefully becomes easy when using proper IDE)
  10. New trendy/hipster technologies are often very well paid for, only because of marketing hype, while FullStack developer keeps with well proven designs and concepts, which keeps him from growing in salary.

You as a FullStack developer: (Not) Finding a (new) job

  1. Often called for a role just because its part of his stack, because FullStack devs have alot of broad expertice in different areas.
  2. Again, matches agains many HR keywords/searches, gets emails/contacted with random offers (non personalized).
  3. It’s hard/unusual for HR to see so many technologies, and often becomes a reason for reject/mistrust during hiring.
  4. Hard to find a fitting position because the role is often unique combination of tech. stack & experience.

You as a FullStack developer: Pros

  1. You can choose your own way, having alot of expertice in different technologies, one has more options to choose from.
  2. Job can be more interesting when working from different perspective, rather than having very specific tasks only.
  3. It’s natural to grow into TeamLead/SoftwareArchitect or even CTO/founder.
  4. Debugging could become interesting, when solving hardly reproducible issues involving different techologies.
  5. Job is interesting (unless heavily overloaded), discovering new techniques/designs every day/week.
  6. No more holywars about “the best” language or technology, as they become only a tools to create whetever you like.

Literature

  1. Microservices on AWS. Matthias Jung, Solutions Architect Julien Simon, Evangelist, 2016
  2. Building Event-Driven Serverless Applications. Danilo Poccia, Technical Evengelist, 2016
  3. Stackoverflow Developer Survey Results. 2016
  4. Marketing Technology Landscape Supergraphic (2016)
  5. GEHALTSÜBERSICHT FÜR 2015 Wie viel Ihr Chef Ihnen mehr zahlen sollte
  6. 2016 Berlin Salary Report
  7. PHP Sux
  8. Amazon software engineer interview
  9. Inside Amazon: Wrestling Big Ideas in a Bruising Workplace 1
  10. Inside Amazon: Wrestling Big Ideas in a Bruising Workplace 2
  11. Speeding Up the web with PHP7 by Rasmus Lerdorf @rasmus
  12. Button Thinking versus consistent IT-product http://dilbert.com/strip/2009-03-21