Full Stack Developers, Unicorns, and Other Mythical Creatures

MaurĂ­cio Linhares / @mauriciojr / Technical Lead at Neat.com

Full stack developers...

... weren't special a couple years ago.

We were all full stack

Stacks

  • Linux
  • Apache
  • PHP, Python, Perl
  • JavaScript
  • MySQL
  • Linux
  • Nginx
  • Unicorn
  • Ruby
  • JavaScript
  • MySQL

We did everything!

JavaScript was still a baby

And MongoDB didn't exist

Life was much easier...

Was it, really?

Ok, some knowledge was transferable

SQL, database modelling, Linux management.

But from PHP to Ruby...

... there isn't much you can transfer.

What did really change?

JavaScript is not (only) jQuery anymore

Wait, the name wasn't jQuery??????

Relational databases are not the (only) default

But documentation and standarization for the new databases suck, so we undestand your complaints a bit.

You can't just FTP your website anymore

You don't really miss this, do you? Please say you don't.

You didn't really know everything back then

And you still don't have to know it all now.

Unless you're looking for a job, then you have to be Pikazard

Putting recruiting aside

What does it usualy mean to be a full stack developer now?

Generalist + Specialist

Full stack developers are both specialists and generalists

Really love building your #golang backend?

Awesome, but be ready to jump into the React front end as well!

Why?

Because it provides perspective

How do I know if the awesome API I've built is really awesome? Using it.

And causes pain

How do I know if my app is scalable? Signing up for the on-call schedule.

What are the pieces involved here?

  • Backend systems
  • Frontend systems
  • Mobile systems
  • Infrastructure provisioning and troubleshooting
  • Optimization and scaling
  • UX design

Learn all this?

Nope. But at least try.

Being great at everything is hard

It's not that you shouldn't try, you just don't have to beat yourself and burnout while trying.

Backend systems

  • Programming languages and/or platforms (JVM, CLR, OTP)
  • Queuing/background job systems
  • Database optimization
  • Caching solutions
  • Application and database scaling

Frontend systems

  • JavaScript (yeah, I mean it, learn the language)
  • One or more frontend frameworks
  • Frontend optimization
  • User experience design

Mobile systems

  • Many languages and SDKs (Java, Swift, Objective-C)
  • UI patterns in a given platform
  • Communication and state management
  • Cross-platform tooling (Unity, Xamarin, ReactNative...)

DevOps

  • Cloud environments (EC2, Google Cloud, Azure, DigitalOcean)
  • Configution management tools (Chef, Ansible, Puppet, SaltStack)
  • Server monitoring and management
  • Scale planning and cost evaluation

Deliberate practice is your friend

Forget about the 10k hours, 10k hours of lifting the same weight will never make you strong. If it doesn't hurt it's not worth it.

Switch

Teams, technology stacks, application, position, company, anything you can. 10 years of experience inside the same Rails app isn't really 10 years of experience, sorry.

The more you learn, the more you transfer

Know Scala? Getting into OCaml, Haskell or Rust is now easier.

Don't panic!

It takes time, you're not going to get experience with all this in a week.

Be the bridge

Connecting teams and building empathy

Being the glue that holds teams together is also the job of the full stack developer.

Layers and layers

Working through the different layers of the apps being built provides a better idea of what is being done and how the teams are accomplishing their goals.

It's just progress

If your job is to build applications, going full stack is the natural path for your career, no need to be afraid about it.

How did it happen for me?

Joined Neat.com 3 years ago, backend developer.

We needed more OPS

It wasn't much of a choice, really, either we joined the OPS team or our apps would take a long time to see the light of day.

No Chef experience

But it's Ruby, how hard could that be, right? đŸ’€

OPS team provided guidance and feedback

Having people directing you towards the goal is a huge win when switching paths (huge kudos to Travis Truman and Richard Henning)

Next!

App rewrite, moving from ASP.NET to Rails

App needed a fast and responsive UI, perfect for a single page app. Jumped into the backend and the ReactJS frontend to get the job done (Leo Rodrigues was the guide here).

Am I a full stack developer?

But that doesn't prevent me from doing it

Continuous learning should be your main takeaway here, it is the only way to make progress and evolve as a developer, no matter what your favorite tech is.

Questions?

Thanks!

MaurĂ­cio Linhares / @mauriciojr