PHP
Article
By Bruno Skvorc

Being a Full Stack Developer

By Bruno Skvorc

This popular article has been updated in June 2017 to include modern technologies.


Jack of all trades

A full stack developer who can get from a prototype to full MVP (minimum viable product) is often considered a jack of all trades, master of none, and with good reason. To define the modern full stack developer, we first need to focus on what the full stack developer used to be.

Full Stack Developers Then

Long ago, circa 2000 (in Internet-time, 17 years is a very long time ago), a full stack developer was someone who could:

  • whip up a web page in some Adobe tools like Photoshop or Fireworks
  • turn this design into HTML, CSS, and hotspots on images (aw, remember those?)
  • write some basic PHP 4.0 scripts (no object oriented PHP was on the horizon back then) to handle the server-side of the logic
  • store all dynamic data into MySQL, maybe do a bit of optimizing
  • upload it all to a server via FTP and collect the paycheck

Note that we’re talking about PHP here – a full stack Flash or Coldfusion developer had a different (but only slightly different) workflow.

Those were simple times, life was good. One-man agencies were a dime a dozen, and people still had time to spend with their family after work.

What about now?

--ADVERTISEMENT--

What Does a Full Stack Developer Need to Know Now?

These days, we have horrors like these happening – how did it come to this?

App developer doesn't see his kids due to schedule

To succeed in a now-saturated market, we developers – who are often perfectionists – hesitate to delegate and often live by the “if you want something done right” motto. This forces us into a corner where we have to learn everything, so that being a full stack developer often ends up encompassing the following.

Server Admin / Devops

A developer must know how to do basic server management. This includes but is not limited to:

  • connecting to remote servers through the terminal, in non-GUI environments
  • basic shell scripting
  • managing users and groups on a server
  • managing server programs like Apache and Nginx for serving apps
  • managing firewalls and permissions
  • installing new software and updating the distribution

via GIPHY

Apart from these basics, a developer should know how to create good, healthy, isolated development environments, in either Docker or virtual machines like with Vagrant. If all of the above is something you’re unfamiliar with, we have an excellent book about it for sale here.

The developer should also be intimately familiar with version control systems in order to be able to reliably produce backups and shareable, collaborative collections of code, tracked for changes across time. No modern developer workflow is complete without version control these days. We have a fantastic video course about this for purchase here.

Cloud

Apart from actual managed or virtualized servers, a developer might need to know about the cloud – hosting on platforms like Heroku, Google Cloud, Azure, AWS, and others.

via GIPHY

There’s a fair bit to be said about platforms and tools that are more hype than immediately useful, but being familiar with the services everyone is talking about can come in handy in the long run – a client could demand a switch of providers any day now, and it pays to be ready. Luckily, we have the ultimate guide to deploying to all these cloud hosts.

Back End

On the back end, apart from knowing the language of choice – in our case PHP and its multitude of frameworks and CMSes – a developer needs to be familiar with:

  • web servers like Nginx and Apache which ties into Devops above
  • unfortunately, NodeJS for compiling JS, CSS, and other assets into statically hostable ones. Fortunately, there are ways to avoid NodeJS by using PHP.
  • tools like Composer for package and dependency management in PHP itself – no modern developer’s environment is complete without it
  • good API design, since most new websites today are API-based and merely talk to a detached front-end (more on that below).
  • search engines like ElasticSearch (introduction here) are really important for performance
  • cronjobs and background jobs with tools like Gearman or libraries like Crunz
  • knowing about caching with Varnish, Redis, and similar powerful tools that slice hosting costs into the single digits will often make or break a project

Database

The database is a separate section because apart from a good grasp of relational databases for data the schema of which won’t often change (like MySQL or PostgreSQL), a developer needs to know about noSQL databases like MongoDB, Redis, or Cassandra – not to mention graph databases like Neo4j.

Database illustration

What’s worse, these are all on the server, under the control of the developer. There’s also several remote solutions like the Mongo-like RestDB or the Google-owned Firebase, etc.

Front End

On the front end, there’s true chaos.

via GIPHY

For a comprehensive overview of what’s needed for a healthy front end workflow these days, please see this excellent post on the JavaScript channel, but as a TL;DR it includes the following:

  • NodeJS and NPM
  • Yarn
  • Preprocessors and transpilers (like Babel) for things like Typescript, ES6, LESS, SCSS, SaSS
  • Builders and task runners like Grunt and Gulp
  • Frameworks like VueJS, React, Angular
  • Module bundlers like Webpack, Browserify, Rollup

Design

In design, a developer needs to know how to sketch out a prototype of an application before converting it into a usable format like HTML and CSS. This can then be made interactive with some JS, back-ends can be simulated with fake JS endpoints, and only once this shell app is done and its user experience design and interface design are ready can true development begin. This in and of itself is a huge undertaking and warrants a special set of tools like:

  • Photoshop and/or Illustrator or an open source alternative like Gimp / Inkscape – find out all about this on the Design channel
  • a good, fast editor like Atom or Sublime Text (here are 10 ST plugins for the full stack dev)
  • pattern pickers like Subtlepatterns and color pickers that match colors to one another
  • grid systems for CSS
  • everything from the Front End section above for the JavaScript mocking
  • ways to deploy a prototype online for customers to see it and give you feedback – Ngrok is very useful for this

Logging

To effectively keep an eye on an app’s health, a developer will need to be able to track error and access logs and extract valuable information from them. They’ll need to be able to recognize and flag trends, as well as notice upticks in CPU or I/O usage in order to prevent downtime on time. This ties into Devops a little, but demands its own particular set of skills.

via GIPHY

We have an excellent post about the ELK stack that’ll get you as ready as you need to be for all your logging needs – it combines ElasticSearch for searching logs, Logstash for collecting them, and Kibana for a dashboard in which to show them into a fine stack for user-friendly monitoring. There are even hosted solutions that take care of this for you, like Logz.io.

Mobile

Finally, there’s mobile to consider. With webview on both iOS and Android becoming more and more performant, and the advent of PWAs (progressive web apps), native apps are losing their charm because of the complex process of developing them. A full stack developer thus has to be familiar with either PWAs, or go with something like React Native or a full on webview like NativeScript, Tabris, Cordova, Phonegap, or other implementation to get a good “client app” going for their API (see back end section above).

Is Being a Full Stack Developer Worth It?

So after all this, is it worth it?

First of all, it should be noted that very few full stack developers are this full stack – many focus on just most of these technologies and aspects, not all, simply because it’s not possible to pay good attention to them all.

Secondly, knowing at least a little bit of everything might not make you a master of a specific craft, that much is true, but it’ll make you capable of understanding what goes into a project and which ones of these technologies a project actually needs. This is a priceless skill when delegating, opening an agency, or just guiding an existing team back from a lost path onto a well defined road.

I might not be the “JavaScript rockstar”, “Elasticsearch ninja”, “MySQL guru”, “Devops maniac”, or “Mobile wrangler” you’d fawn over, but in my case, being full stack lets me spread my wings, test out different technologies, and offer alternative, uncommon solutions to my clients when freelancing. The money can come from all sides, and contracts I can take up range from server work to WP plugin development and everything in between because I’m moderately familiar with all those things (the former more than the latter, admittedly). For me, being full stack is definitely worth it and if I compare it with my Flash-only days, while I did enjoy the work more back then (no JavaScript!), the pay was lower and the projects harder to get.

How about you? Are you full stack or specialized? Whichever it is, do you feel like it’s worth it?

  • Nice article, it’s good to see an overview of what people are using to see if there’s any holes in my knowledge.
    I’d say though, it’s not so realistic to have a list of diverse tools a developer is going to really *know*. They should have a broad understanding of the kinds of technologies and tools *available* to them (with the costs/benefits of each, relative to different engineering choices), and the ability to quickly learn new things – while maintaining a very deep knowledge of the main tools they use each day. They should actively also learn new things as a matter of routine in their career.
    Personally I’ve probably only used half the stuff on this list, and there’s a good chance I’ll never be on a project involving some of the others. I think this is pretty common, and the list above is tilted a bit towards very large-scale projects. Equally others could list all kinds of standards, file formats, algorithms, and other tools that could also be critical on a range of web projects, and the list would just get way too long.

    • George Fekete

      Good point, I tried to keep it as generic as possible, in the context of web development.

  • bobby_r

    Might be worth mentioning Bootstrap as an alternative to learning CSS, JS and responsive design in depth.

    • George Fekete

      Bootstrap and other similar 3rd party code is out of the context in this case

      • Bassil Redman

        How so? I think it is very much in context. For many of these technologies there is a library that takes care of it, and most people know and use them. Just as you say we can use JQuery for DOM manipulation–as opposed to using raw javascript–we can also use bootstrap or something similar for responsive design.

        • George Fekete

          You’re right, but the idea of this article is to present back-end and front-end technologies such as PHP, HTML, CSS, JavaScript. Not to list the 3rd party code you could use.

          jQuery was mentioned, because pretty much everybody knows it, but you don’t have to know jQuery in order to write JavaScript and manipulate the DOM. You don’t have to know Bootstrap to do responsive design.

          But without knowing HTML, CSS you won’t be able to do front-end development.

          • Bassil Redman

            Ok. I think the article was a good compendium of the fundamental technologies for web development; however, I still believe 3rd party libraries are very important in practice–at least in my experience.

          • George Fekete

            Yes, of course they are, but the scope of this particular article is not to present 3rd party libraries.

            Look at it this way, you can’t learn to fly without knowing how to crawl and walk. This is the same thing with 3rd party libraries. You can’t learn programming in PHP just by using a PHP framework.

            If you don’t know the fundamentals of a programming language you’ll never be able to understand fully what a 3rd party library does and how you can use it effectively to make your life easier.

          • Sold on this.

          • I agree with this. Although I’ve played with PHP frameworks, it took me a while to realise that my struggles with understanding them, boiled down to my lack of understanding of PHP5. Much of my experience with PHP was with PHP4, for historical reasons.

            Learning object oriented principles, for Javascript as well as PHP, has become one of my biggest bugbears, even though I know it is a pretty essential requirement.

            Frameworks adopt a sales pitch of tempting you into thinking that you don’t need to know it, which I now know is a fallacy, without knowing the fundamentals.

  • mehdi lamaafar

    is good to now what going on around you but is mush better to specialize into one side like front-or- back/end

  • Aldo Ziflaj

    It is quite good being a full stack developer, but it is quite hard sometimes too, and it needs time. One person can’t know everything. The best thing is to try a bit of almost everything you can, but specialize in a field

    • George Fekete

      Yes, you pretty much summed it up, but what does trying a bit means exactly? I mean that one can learn about html, css, php, etc. but this is constantly evolving, and you need to keep up with it. So by this logic, you’ll constantly learning new things

    • Oziel Perez

      Agreed. I’m currently trying to learn every technology available for each aspect of being a full stack developer. I’m willing to go as far as learning how to build my own computer from scratch all the way to the other end of the spectrum, creating the content and digital media that will go on the website. I just have that passion for investigating new things. But yeah it takes time and there’s no way you can learn everything. I’ve been trying to do so for more than 2 years and I’m not even close. I have to balance work with family life and entertainment. Seeing that I’ve been complemented in my design skills, I shall focus on the front end aspect of web development and server-side scripting. Coding is where I thrive.

  • Vedran Brnjetić

    It’s like a general practitioner in medicine. He has knowledge and training in all areas of medicine, he’s heard of most medical problems and is able to help and point in the right direction. In an emergency he can do a lot more, even do a surgery if no one else can be around in time to make a difference, but… That can’t be his every day job. That’s not how it’s done. You don’t ask your doctor to do all the treatments you need. You can’t expect him to be anaesthesiologyst, assistant and a surgeon all at the same time.

    It’s useful to know all of those technologies to make the right decision about how to acomplish a certain feature. It’s useful to know how to make your colleague’s lives easier by following good practices so they get the data they need in a way they can use it most efficiently, but to expect from one man to deliver the whole product is too much.

    Full stack devs originate from startups where you have to get your hands dirty in all the fields if you want to succeed, but as soon as you’re able, you have to hire specialists if you want to have your product follow the highest security, efficiency and design standards, packed in a good, presentable but not bloated UI.

    • Well said

    • Phillip Hamilton

      Well said Vedran…

    • Taylor Ren

      Well said.

    • I wish everybody would think like you! :-)

    • Ryan Dennler

      Very nicely said! Agreed 100%

    • Well said!
      For me as a wannabe full stack developer and practicing MBA technopreneur, your points designate a roadmap. We are two partners and founders of the company, and expansion of our business requires us to upgrade to customized in-house developed solutions, because current opensource generic solutions won’t suffice. On the other hand, we’ve come to the conclusion that outsourcing a key competency of a technology services company is strategically wrong. I was wondering which way to go, go for the full stack or share the skills, for instance developing my web programming skills (I’ve done web design and CMS for years), and maybe my partner should go for mobile app development to supplement our needed skills. But then again, we were thinking of outsourcing the mobile bit since which is a peripheral to our web apps. Any thoughts?

      • Dale Leung

        Things you are likely to be spending an awful lot of time as an technopreneur are the mundane but essential things in business administration. The DYI approach has its merit and I believe that this approach would have a good chance of working based on a litmus test – when you or your partner code, does the process fill you guys with joy.

    • rlk

      Well said!..Completely agree..

    • Yeah, very true. One man cannot be a jack of all trades. Otherwise, specialists would be redundant.

      • Dmitry Makhnin

        They can and they do. It is expensive and often lose skills elsewhere. How good is a full stack developer if they can’t communicate properly for example. Many even manage to overcome that and actually be great at anything from building an operating system from making hardware architecture, writing BIOS ground up, writing filesystems, creating browsers and platforms that support scripting and markup. These people are rarely very well known, but they exist and there’s plenty of them.

        • Asuquo Ulo

          Yes, I found a lot of them in Israel. A fighter pilot in the IDF with CCIE Routing and switching, Linux admin, PHP, C++ , Java, Etc. and plays the Sax and Piano like a pro.

      • Kelly Carter

        “Jack” of all trades means you are a NON-specialist. You have some skill in “all trades” but are “master” of none.

        • Ivan Vdović

          Yes, but you can be a jack of all trades, and a specialist in one area.

          • George Fekete

            What are we? Just some really simple minded beings? Can’t we do more than one thing good? Can’t we master more than one thing? I don’t know where this “jack of all trades” bs came from, but it has to change.

          • Ivan Vdović

            Why?
            The fact that i can set up a virtualization cluster that hosts my entire company means we don’t have to hire a system architect, a system administrator, a network architect, a network administrator, a VoIP architect, a VoIP administrator.
            The fact that i can maintain our database and plan it’s structure from the ground up, means we don’t need a database architect and administrator.
            The fact that i can develop on top of all that means i can do my job as developer, while loosing an hour or two a day on that extra stuff.
            It also means that the company can work with 3 people and no maintenance costs, and it means i can earn double the paycheck i’d get on any of those jobs.
            Would a professional do this better? Probably. Would the company be better? Doubtful. We’d need 15 people instead of 3, and 10 of those would just stand around drinking coffee most of the time.
            Or we’d be paying 3-4 paychecks a month to some other company to maintain all that stuff. Not to mention that having me in a meeting with a client means i can comment on any of those things, so we don’t need a 10 man team who argue with each other about what the best way to do things is.
            Now, once we get from 3 people to 50, of course we’ll need people who specialise. And you know what my job will be then? It won’t be to specialise in one area. It will be to monitor and coordinate our entire IT department, because knowing something about everything means i can manage everything, since i can see and understand the big picture.
            Of course, knowing a bit about everything means i am not an expert in any of them. But i am good enough. And good enough is good enough 99% of the time.

          • Irfan Ahmed

            well said… totally agree.

          • Shiyas Cholamukhath

            well said. Completely agree with you.

          • Tim Furry

            Until, of course, something traumatic happens to you and you’re down for the count. Then your company is in trouble because nobody else knows the details. I do many of the same things you do (well, except for the virtualization stuff), but the knowledge gets transferred around between several people so there isn’t a silo. It’s like data backups…99% of the time, life is great because you don’t need them. That 1% of the time that a needed restore fails…well, that hurts.

          • Sisi T

            George Fekete, I admire your mind!

          • George Fekete

            Thanks :)

        • dandonche

          There have been plenty of polymaths throughout history. Leonardo Da Vinci is probably the most obvious example. You can master several fields, you just have to put in the work.

    • Perfect analogy. I’ll copy-paste this down for the next time I have to explain what kind of dev I am.

    • Ricardo M. Farah Jr

      Startup companies disagree that. :)

      I came from one……that is when i realized I was Full Stack there…..i mean at least i consider it.

      I was just Helpdesk, them my boss preferred me developing then hire another person for such task, he was the only developer and i was for User Support. Then he teached me the basics of stored procedures…..then MVC concept, then C#, then HTML, then I was creating my own FULL VIews and coordinating litle projects with users while he just stood as IT Coordinator and we hired someone else to do User Support.

      Only thing i found difficult to self learn was javascript, due the lack of auto corrector and syntax checker. Also the grammar difference and the “trow exceptions” were difficulty to get.

      Then things became very difficulty because variability wasn’t the problem….because if there is not other people for You to deal with it and talk about how the MVC should be integrated the work is less bureaucratic and You can handle the job fast, but deal with things my boss should be dealing like coordinate the support guy and infra-structure, together with system user support slowed the developing job.

      And of course, the company was not willing to hire another IT professional to unload, us because for the company, IT is a loss and not something good…unfortunately.

    • Agree!

  • louisa

    in short, a jack of all trades, eh? :)

  • Husain Ahmmed

    Thanks for this information.

  • As we move forward in future more and more people will go toward specialization. Also technology is changing so much that majority of the code can be done by some program. There are already so many pre developed packages available to use for free.

    Lets see.

  • Interesting article with a good overview of what a full stack web developer should know/do. I agree with the comment by @Chris Graham and I would like to add my two cents: for me it strictly depends on the project and on its size. Being a freelancer for small/medium projects I truly am a full stack web developer (except sometimes for the system admin part) while for large projects I prefer to split the various parts with skilled collegues and everybody will work on the side he/she is most comfortable with.

  • hot_rush

    i agreed with all technologies, but design and deep frontend knowledges – it seems a bit steep

    • George Fekete

      You just need practice, and lots of time :)

    • Design and deep frontend knowledges is part of being a “full-stack” developer. It’s why most can’t really consider themselves full stack, because design does fall into the dev stack.

  • Aurélien Panhaleux

    Interesting, didn’t know that “full-stack” term. I think every developers should be full-stack developers with one specialisation, just to understand what they’re involved to.
    I would also add haml preprocessor in the front end part.

    • Guest

      HAML, or any pre-processors, for that matter aren’t and shouldn’t be a requirement for development. It’s a luxury at best. But a requirement? Not even close.

  • Dante

    Basically “jack of all trades, master of none”…

    • George Fekete

      I beg to differ on this. You can still master each one of these techs if you really master the fundamentals.

      For example if you know OOP really good, then the rest it’s just syntax. If you know how to install packages in Linux, the rest is just configuration…

      • Mmm, sorry George, but I’ve got to disagree… while I’m a developer, I know my way around Linux very well (like using my own kernel level). Still, a few years ago, I met this guy in Costa Rica (Alvaro Mantilla): 100% Linux, nothing else. A 486 Linux configured by him was able to beat our brand new shiny Pentium III servers with ease. Since then, I know a specialist will and SHOULD be able to beat me as I am, as Dante said: a “jack of all trades”

    • Héctor Iván Patricio

      Jack of all trades, Master of Some.

      • Ziad Mannan

        I think that’s the best approach to take. Have a fundamental understanding/experience of all the different things but try and master at least one, ideally two or even three.To master them all is impossible, unless you decide that nothing else matters in life. But being master of none probably means that you’re a bit of a cowboy developer (no offence to cowboys, yee haa!)

      • Oziel Perez

        Agreed. I have found myself slowly becoming a Full Stack Developer. I started learning HTML and CSS just to build static sites and then of course I wanted to learn JS and Jquery for added functionality. Then I felt inclined to learn at least one language for server scripting and so I learned PHP and MySQL so I could use a database. After seeing that PHP was mostly for basic stuff, I decided to pick up Java, so I could get into mobile development and learn something that can handle full web applications, but I never progressed due to how complex it was, so then I picked up Python and that opened up the world of Flask, REST APIs, and it lead me to wanting to pick up AngularJS framework as well as other database technologies. So know I certainly know a lot of different things. But I realize I may be losing my touch in some areas, so I guess I must figure out which ones to master. To me it seems like I will stick to my roots, which are HTML, CSS, JS for the front end, and Python with MySQL for the back end. If I ever do get back to learning about mobile development, hopefully Java won’t be hard to pick back up.

    • Emem Sunday Umoh

      wrong

  • Philip C

    Most developers with enough intrigue will slowly head toward full-stack with out even knowing it. I think the only things I don’t get a lot of use in or neither will is Photoshop and design. I would like to know the basics though.

  • Holy Lord, until now, didn’t know I was full stack developer. :-)

    About the JavaScript part, Powerful and JavaScript doesn’t fit in the same line.

    • Maybe you don’t know JavaScript’s power that well.

      • like ?

        • Math.pow(9001,Infinity);
          =>Infinity

          OVER 9000 to the INFINITE POWER is INFINITE.

          • DanBangWTFRajib

            nice, I was expecting some Mutant Powers with long tails and Steel Ribs :D

    • Dude, if you give Javascript a chance (pure JS, not those pesky libraries / pseudo-frameworks), you’ll find it is amazing.

      • Bnny

        Correct! Pure JS rules. Everything is possible with native/pure JS. I agree libs and frameworks are noob as hell.

        • “libs and frameworks are noob as hell”
          Really? You can’t be serious.
          So things like Backbone, RequireJS, Ember, etc etc are noob? Tools like Grunt/Gulp, Bower, etc? Noob? Worthless?
          These tools were created to make our applications clean, organized and maintainable. If you claim that these are ‘noob’ and worthless, you should reconsider your career.

  • Florin Onciu

    Nice overview. Salutari :)

  • Paul Redmond

    I am what you would call a full stack developer and the latest tool I’ve learned is DevOps server automation. My programming skills provide a unique perspective when I work with Puppet or Chef, and I was able to provide a pretty rocking development setup too.

    What I struggle with as a full stack developer interviewing other full stack developers, is that often I get responses from candidates like:

    Q: “Have you used Backbone.js?”
    A: “I did a todo app and played with it over the weekend”

    This is a recurring theme throughout the interview…

    I am kind of struggling to not be THAT guy, because I feel like even if you are a full stack developer, you still need your bread-and-butter. I have tried to make that JavaScript and PHP. Other frontend practices are great, such as using preprocessors, etc, but I find that I can get by with the basics of frontend CSS/SCSS experience, and have a more lasting, valuable role as still trying to focus on a few core languages with the skills to mix it up anywhere in the stack.

    • syntechx

      I agree very much with you Paul Redmond. Although I have never really got to dip into newer tech’s like Node.JS and Backbone.JS as much as I do jQuery / CSS3/ HTML5 ( I have been learning so many new things that I can’t even imagine trying to learn PHP / MYSQL at the same time) Finding balance developing a front end and then working on the backend is no simple task and this is why Corporations have larger development teams at their disposal. In between learning all of that, learning about node.js / npm / bower / grunt / less, learning Swift and Obj-C at times it sucks. I feel like all I ever really do is practice. I do really need to finish books off one at a time though. I guess I want to do dev but lose confidence shortly because I feel I won’t be able to do it… Meh :|

  • Rijkaard Orismé

    Another good one George! Amazing article…

  • James

    I guess I am a ‘full stack’ developer. I’d actually rather focus on backend stuff and move away from frontend development but being the sole web developer at my company means I have to do it all. I find it almost impossible to keep up with the latest tools, frameworks and workflows across the board. I seem to spend most of my free time on sites like this trying to keep up!

  • Marc Druilhe

    Good article. I would add knowledge of some PHP frameworks such as Symfony, ZF or Laravel. CSS frameworks (Twitter bootstrap, Foundation) are useful to know too. At last, putting hands in CMS (Drupal, WordPress) seems also important.

  • Peter H.

    Thanx a lot for this article .. i think you define a word to many dev profiles. Not easy in a job itw to respond to “are you a front or back developer” question. If you are a “stack” developer, it’s not easy to explain it …

  • Thanks for writing this article. Maybe I’ve been in this game for too long, but reading it made me feel wholly inadequate. The fluid nature of web development means you are constantly trying to keep on top of things, not to feel left behind. I’m struggling to think of any other vocation that matches this volatility.

    A full stack developer – if not careful – can easily become a highly stressed one.

  • Ziad Mannan

    Great article! I think the term does get abused quite a bit but the list you’ve provided here is pretty heavy. I used to fancy myself as a bit of a full-stack developer but not according to this list :)

  • Clark

    So full stack developerare very much ssuitedfor maybe programs managers or team leader who can easily coordinate between specialise team mmember!

  • I did read the comments, on the “3rd party code” specifically… still, I think the server side, today, requires a framework, which sucks, but still is a requirement. I don’t know if someone out there is still working with raw php (pity… frameworks and all those side tasks are taking out the beauty of development)

  • HenriHelvetica

    Interesting piece. The challenge is the following: for expertise to happen, the hours must be there – name the profession. And as you become proficient in one language, then move to mastering another, you’re now taking hours away form the lang you fought to master. Repeat this over and over again with all the other languages/frameworks – you end up with what I thought was a brilliant summary: Jack of All Trades, Master of Some (maybe). I know trained devs who stepped away from coding to PM, and not a yr later, are not as limber as before coding.

    The days of web dev with just a few languages are long gone. Can you get things done with a few? Yes you can. But the name of this game now is also efficiency and speed. Frameworks and libraries are most efficiently used when you know both the technologies AND languages well. If not you end up like THAT guy who made a simple one pager and included the entire Bootstrap framework to make it.
    Do I think this is possible?? Of course I do. But it’s simply not going to happen over night. We’re talking about hours of practice and reading as there are new workflows discussed on blogs all the time – and you need to stay abreast.

    +

    My other concern is that, I wonder if Full Stackers are paid like they should be. That’s a lot of languages and If you’re doing this just so that you can get in somewhere – all good. Just make sure they pay well for all you know and have mastered.

    The general practitioner comparison is a good and simple one, but we’ve seen where a generalist might not produce the best diagnosis for an injury than a specialist – which brings us back to the hired gun theory – which is the one who can write the best and most efficient code for the project. But it all depends what you’re looking for.

    Would I want to be a Full Stacker? Of course. But I also would not be ashamed of not being one – but with a very good and FUNCTIONAL understanding of what I’m doing or was hired to do.

  • Nuno Arruda

    A few years ago I wanted to do everything like design, front-end, back-end, SEO etc because I was a web nerd and wanted to know all things web. I’ve failed because it was too much to keep up, I was just learning, learning, and learning and I was not doing anything with my new knowledge.

    Also every day a new tool/framework/library was coming out that could be the next thing. So the answer was to focus in a specific area, do something with what I’ve just learned and managed my time properly. So today I’m a Font-End/UI developer, I work 8 hours a day and in my spare time I try to learn something new and do something with it.

    The bottom line for me was If you want to be good at something you need to focus in something specific and don’t try to do everything.

    • craig

      I feel your pain! I did interactive media for 2 years because I wanted to do web/interactive stuff then I moved into multimedia technology because I wanted to do graphics, video, motion graphics. After Uni I decided I liked web stuff again but it had moved forward so I taught my self, HTML,CSS, Javascript. After seeing some stunning and cool UI, I thought to myself “that’s what i want to do” but then I felt like I needed to learn PHP for the back end. I tried PHP then fancied learning Python, I tried Python and decided I liked the look of Java/C++ for mobile. Now I’ve heard of Ruby, I fancy Ruby for back end web.Technology moves so fast that I’ve been going round in circles over the years.. I might have a little knowledge of everything but if i had stuck to one thing over all them years, I’d now be an expert making mega..

  • David Crisler

    Sorry, but even to be “comfortable” with all those technologies – plus the constant flow of new tools and frameworks – is unreasonable in one person’s lifetime unless you become a code monk with no other aspect to your life.

    • I used to agree with this until I met my old co-worker. The guy was brilliant as far as webdev goes. He taught himself JavaScript in 2 days… like, full expert JS dev. This isn’t amazing, because it’s a somewhat simple language, but he had advanced concepts down that I still try to get my head around after 2 years.
      Then the guy is fluent with PHP and any frameworks like Laravel, etc (he’ll learn a framework in a day). He’s a expert in security issues and attends tons of security-related conferences. And he’s a unix administrator.
      It’s insane – I’ve never met someone smarter and he can easily be considered a full-stack developer. I guess the only thing he doesn’t have is good design/ui skills (which is clearly important).

      • albanx

        Do not say bullshits please. One cannot become an expert in JS or in any php
        framework in two days, there is not the physical time to explore all functions of a language and learn the dev techniques of a framework. How did you understand that your co-worker was so
        expert? Even I can set a unix system up and working and set server
        configurations on unix machine but that does not mean I am an expert. Even I have done my university thesis in crypto and security in quantum cryto but actually I am not an expert in that. Even I can use kali linux for testing my web apps against any attack but I am not an expert in penetration testing.

        And the next thing: most of real developers are very very bad designers (never meet a good one). A developer mind is very different from a designer mind. Frameworks like Bootstrap or Foundations are developed for making easier life to developers in design.

        A full stack developer is someone that knows all processes, or at least had experience in most used programming languages , techniques and computer science areas. But that does not mean he is an expert in all of them, because you get an expert in something when you work for years on it, and not in 2 days.

        • Dale Leung

          well said. Being endowed with high IQ and ability to understand theories in super quick time is not the same as being experts because it’s a practice, just like any other professions.

        • Enrique Miranda

          I’m sorry, but It’s very possible to become an expert in such a time frame. Let me point out out NEO from the Matrix. There is a scene in the movie in which he straight up tells Morpheus, “I know Kung Fu”, and Morpheus asks NEO to show him his skills. It was very clear to me that NEO did know Kung Fu after absorbing the program for several hours.

          Say for example the coworker he’s talking about started off learning something like C, or C++, and later played with other languages like Perl, or played around with Microsoft software. Chances are he learned alot of techniques and noticed similarities of doing things between all languages. Learning new languages later like PHP and JavaScript becomes alot easier, all you really need to focus on is learning the main library functions, once you have an understanding of how the core works.

          If this does not make sense, my apologies, I been vaping it.

          • albanx

            No, you are wrong. You are talking about learn programming: example I am able to write the quick sort algorithm in C, C++, php, or javascript, but of course I am not able to write a system driver with C++, even I am expert of JS, or example the memory management in C is not the same as in JS, in C you use malloc, and in JS ? what about DOM management, event management, ajax requests, how can a c++ developer achieve this?
            People first learn to develop (college, university), then become experts in a matter (job experience, self learning, time) .

          • Rbo

            Not two days for sure.

          • Dylan

            Did you just…. cite…. a fictional movie?

        • Enrique Miranda

          I’m sorry, but It’s very possible to become an expert in such a time frame. Let me point out out NEO from the Matrix. There is a scene in the movie in which he straight up tells Morpheus, “I know Kung Fu”, and Morpheus asks NEO to show him his skills. It was very clear to me that NEO did know Kung Fu after absorbing the program for several hours.

          Say for example the coworker he’s talking about started off learning something like C, or C++, and later played with other languages like Perl, or played around with Microsoft software. Chances are he learned alot of techniques and noticed similarities of doing things between all languages. Learning new languages later like PHP and JavaScript becomes alot easier, all you really need to focus on is learning the main library functions, once you have an understanding of how the core works.

          If this does not make sense, my apologies, I been vaping it.

      • Jeff Jones

        complete nonsense

  • M S

    I’m curios, did you ever have Yahoos YUI, in the list of things all developers needs to use?
    If yes, when did you remove it?

    How about Google Wave?

    • ???
      How is YUI a necessary framework for development? Or Wave? Neither are essential.
      Plus, this article talks about languages needed, not frameworks and libraries.

      • M S

        I have read plenty of articles about how very very important it is for a developer to know YUI and Wave.
        I have no doubt that many of the things above will fall out of fashion just as fast.

        And since when is jquery a language?

        • YUI is far from essential. First of all, yui isn’t the only ui toolkit. You have jqueryui, kendoui, sencha, etc etc. And I guess this is opinionated, but I’ve used yui, jqueryui and kendo and yui it’s by far the worst of them.
          Is yui a helpful tool? Yes. A’s there’s other tools just like it that are as good or better. But in any case, it’s not required for developers to know. Not even close.

          As far as Google wave goes, I’m confused. Isn’t it shut down? It doesn’t exist anymore. And there are plenty of great tools out there that are perfect replacements. So, no, also not necessary to know wave.

          • M S

            Woosh…

          • Hahahah. Holy crap… you’re being sarcastic? That’s hysterical… well played.

  • Bnny

    I disagree alot.
    There is no way you can be a full-stack-developer, not even when you know all the codes of all languages.
    Some developers that know everything, might be still silly. You need very high creativity and very strong logical thinking.

    A full stack developer:
    You never need help and always fix innovative projects by your own. Your logical thinking must be so high, you can fix an entire flawless online multiplayer shooter game with native JavaScript and no use of canvas or anything.

    When you are a Noob developer:
    If you can’t deal any application or game without markup libs like jQuery or AngularJS.
    Also when you cannot fix a responsive mobile web application with group-chat feature.

  • Hi,
    I’m a full stack developer and I have +15y of experience as a freelancer.

    You don’t need to use ALL your skills at the SAME time, or on the SAME project.

    And for sure, you will rarely find yourself in a situation like that, where you need to use all these skills at same time.

    At least I speak for myself.

    Now, from a freelancer perspective this is the way I see it:
    – learn all you can
    – learn always
    – practice
    – practice
    – and practice

    As a freelancer you want (and need) to be following the market direction.
    You need to know as much as you can, and get expertise in what brings you money home.

    I don’t agree with some of the tools you mentioned above as “necessary”.

    At least for me – meaning – they don’t “pay me”.

    But if you like those tools (and they bring you money home, or make you a more productive professional),
    then, by all means, go ahead.
    But I agree with the overall concept where one needs to build and evolve on their IT knowledge to be
    a successful professional.

    Full-Stack or not, it really doesn’t matter.

    What matters is if you want to be a GOOD IT professional you should look back after a couple of years and:
    – know that you have acquired lots of experience and skills
    – read a lot of stuff an learned new skills
    – and yes, have built a nice IT book shelf with “stacks” of books like the picture above

    If you’re not doing that…. hmmm, then you seriously need to think what you are doing.

    The only drawback of being a “full-stack” developer for me, is that I’m always fighting with my wife
    in order to get more free shelf space available at home to store all the IT books I have.
    Not easy.
    :o)

    • Dale Leung

      can’t agree more. Well said.

  • Python! Django!!

  • CarmichaelReid

    I have the usual suspect books:Code Complete 2, Mythical Man Month, Pragmatic Programmer, etc, but what What else is there for good fullstackdev books? I’ve got an array of system admin books, but nothing on rackspace or anything he listed. Is there any you would recommend?

  • such a great article. thanks!

  • Colleen

    I”m actually looking to hire a Full Stack Software Engineer in The Raleigh/Durham area and trying to find a good place to find them as well as gather a true undestanding of what they really do. Thanks for all the insight.

  • Great article! As a freelance web developer the boundaries get blurrier still. Clients often expect us to know SEO, business strategy, social media marketing, email campaigning, graphic design, the works! Its so important for our success for us to come to understand our limitations and when to delegate.

  • Bassem

    Well Said But when it comes to real life today all companies are looking for a super hero to do everything and asks for years of experience in every subject you asked for, and in order to be that wanted full stack developer you need to be a monk specially that new technologies and languages requires you to learn 2 or 3 thing on the side to achieve your first goal and so on and on .. and Honestly if you are currently working for a company and learning new stuff that this company doesn’t really apply how you can get this experience in what you leaned. this is putting so much pressure on developers because the next day your knowledge is – – 1

  • Vijay Kanta

    The author has put in lot of effort to make us understand the genuine meaning. He didn’t say we have to learn everything. We have to be aware of these whilst being a specialist in one of the domains. Of course you always will find people who are pros in other domains that can help you in your endeavor. Just don’t try to do their work. It’s not recommended at all.

  • Dale Leung

    I feel you. To many clients and non-programmers, we are specialists. Within the programming community, a 1-man team is still a generalist. While is possible and many a time necessary to do a bit of everything. it is not feasible to be very good based on time limitations. Call it full stack or enlightenment, it is already assumed that a “new economy” coder needs to know how their work connects with the bigger picture. This is a baseline thing regardless of whether you’re on a “Rambo” mission or building apps as part of a larger team.

  • Dale Leung

    I second that.

  • Milos

    You only need a time to became full-stack developer.

    There are stable technologies which change at slower pace, and there are rapid technologies which change faster.

    If I learned shell scripting, unix permissions, networking 20 years ago, there is very little I need to learn in new versions. Similar with SQL, apache also, so generally speaking OS knowledge, programming principles (design patterns), xml, doesn’t change so much…

    But programming frameworks and API’s change rapidly. You cannot catch with knowing three or four frameworks very good, because you usually take one fw and spend few years in it developing various projects. On other side who care for being specialist in eg. Zend framework or Symfony for 7 years if you don’t know other things. I would be afraid to say to a new employer, I am specialist in Symfony, I exclusively worked in Symfony for the last ten years.

    The wisdom is to know what to learn from each of technologies.

  • samson

    Thanks for the information. Its really helpful

  • Devi

    can u plz tell anybody? to be a good full stack developer how long I have to try minimum?

  • Sahil Yadav

    its like jack on all trades but pack of none. huh lol.

  • I’m a full stack developer – learn on the fly and have been a sole developer of 16 or so full stack projects in the industry BUT couldn’t pass a test on a specific language but can develop and learn in real time just as fast and as well as someone who mastered just one or a few languages. Welcome to the Full Stack Developer 101.

    • JoeBl

      No you aren’t. Nobody is. It is just dumb recruiter purple squirrel lingo.

      • You’re jealous and bitter. I would be too if I were you.

        • JoeBl

          I don’t know how old you are but I am going to venture a guess you are very young. I have been developing software for a few decades now. I wrote my first code in the early 80s. Were you born yet? I’ve done it all so I am as “full stack” as it gets.

          “Full Stack” is just another term that comes and goes and has very little meaning and use. It didn’t appear until a few years back. Did something magically change in the craft of software development? No. It is just another business and recruiting trend that some folks thinks makes a difference that in the end makes little difference.

          • Cry me a River.

            There’s new terms and meanings everyday. Sorry you’re living in the past.

            You’re age means nothing. A teenager I Japan developed Ruby on Rails. I don’ give a sh*t when you were born or how long you’ve been coding – it means nothing to me except you’ll pass a bunch of courses in school – in the real world, developers who understand structures, algorithms and functions with some understanding of efficient code, can and will, develop in real time, in any stack and with great outcomes.

            Pull up your pants and shut up Or Get Used it. Some people are great at what you do and getting good grades in school perhaps and the others out perform people like yourself because they understand programming structures, algorithms, efficient code and understand the linguistics involved in High Level, Low Level and Mark-Up languages as well the coding styles and structures in each stack.

            You didn’t make it that far. Cry to someone else.

          • JoeBl

            nobody is crying. The clue phone is ringing and its for you. Yes. Terms come. Terms go. Some matter. Some don’t. I’m not “living in the past.” It’s called “experience.” It helps us know what to ignore. Now I can ignore you and the term “full stack.”

          • I know 14 year Olds who can develop in 3 stacks in most high level and mark-up languages.

      • No, I can and have programmed full stack industry projects in a number of high level, markup and backend types of SQL and XML.

        You’re a fucking dummy and can’t handle it. You got great grades I’m sure but are clearly limited.

        Go fuck yourself.

  • Rbo

    html / css / java taught me MVC … lol

  • J Man

    I guess I am a fully full stack, doing anything and everything between creating front and backend application in PHP, PYTHON, HTML5, CSS3, server admin, installing and configuring Cpanel and other control panels such as vesta,… Need me? $125$/Hr

  • Scott Mcleod

    One awesome way to be a full stack developer and blending with network engineering is to look at products like visual studio 2015 and Microsoft Azure. p.s. this is a MS service that you can still use linux OS and services on or even Amazon AWS that way you can still have complete flexibility with in a frame work and manage to get a lot of your needs met,

    My background a network engineer migrating into software development role it has been an up hill battle but i hope to get there one day. working with MVC5 and C# was a real eye opener on what you can do with elements like razer script which enables you to do some pretty cool things with C Sharp and HTML,

    Having said that I did start with C++ as my staring language so that could have help a little.

  • Tejas Kanitkar

    So a Full Stack developer is focused on PHP only ? can a .NET MVC knowing developer be called a FSD ?

    • This article get PHP as server side language as an example but of course it could be JSP, .NET, Python or whatever.
      Check the first row in Back-end section.

  • What could be my professional headline with full stack devleoper with senior post ?
    somewhere I am using Sr PHP Programmer, somewhere Im using Full stack developer.

  • Mevin_Drake

    It’s a programming language for Android
    and the rest of platforms in Google. Material Design is responsive,
    effective and colorful, focused in iconography, position and depth (3D
    effect). With this tool you can create a visual language that
    synthesizes classic principles of good design with the innovation and
    possibility of technology and science.
    Read more @ wwwdot clickittech dotcom/2016/04/how-to-take-advantage-of-material-design-as-a-developer/

  • uberfu

    I don’t know why people keep equating mobile apps with web development.

    They are not the same thing nor are they closely related. Mobile apps are no different than desktop software. Mobile devices are essentially scaled down handhled computers.

  • Leons

    I am an Android developer and I want to become a full stack developer, As of now I just know Android coding. So the following are my doubts

    1. Can Android be considered as front-end or do I still have to learn some web page development.
    2. What back-end language shall I choose, As machine learning is picking up, can I go for Python programming or JS as it will be easy to develop both front-end and back-end or Ruby on rails.

    • George Fekete

      1. You can write native and web apps for Android. See Cordova.

      2. A programming language is just a tool to get the job done, first try to analyze your problem and find a solution, then check out the tools available that will help you implement that solution. If your problem is M/L related, then Python is probably a good choice, if you want to develop web applications, then there are better tools for that.

    • Oziel Perez

      for web development, I would say learn some simple things in HTML, things like how to build tables, lists and similar things to display tabular data. If you really want to work with the design and front end, you will need CSS and JavaScript. CSS between Java and HTML isn’t too different, just some differences in how it’s written. Otherwise, leave the design work to the UI specialists. As for the back end, python is a very good choice because I can see the similarities between it and Java. Lastly you will need a database if you are handling data. Not sure what you’ve been using in Android; you could probably use the same database you’ve always used in Python, but as far as I know, Python supports mostly SQLite, MySQL, PostgreSQL, and Berkely

  • Justine Parer

    It might be a rare skill these days, but for children growing up learning code from a young age it will become more and more normal to have deep skills across multiple tech areas. Adults use code as a second-language and will always trip over here or there on syntax. The next generation, the ‘digital natives’, will be able to deploy code as a form of personal expression and have the experience of being able to focus on what they want to say, rather than struggling with how to say it.

  • SunShine

    OMG — this is what I’ve become because one led so naturally to needing to understand the other. Finally, I reached a point where I can read everything but realized I was never going to be the person who wrote a long page of code because there was insufficient time to become a master of one. But that’s OK. I know when to call someone else in to help and I know if what they are doing is good work. I can “talk” to them. I can explain what I want and I understand why not to go down a certain path. For smaller snippets of code, I’m DIY. To find a hiccup, I’m DIY. I also rely heavily on Googl’ng it. I’m glad I went down this path and I’m glad I now have a name for this skillset. I feel very official now. hee hee.

  • Brian Suharisman

    I am building a web based control panel, now i know what kind dev is i am.

  • Pavithira Manoharan

    Excellent article! Well-written and well-explained, now I know to equip myself to start a great career! Thanks a lot!

  • Deepen Dhulla

    Full-stack developer looks like jack-of-all in IT apps.
    it would be more great he/she understand business/domain part also more better for best overall delivery I believe.

  • khaledhasan

    Good post

  • what are you talking about!

    there are too much old techs!

  • This is a very interesting article. And the comments too, (135 comments at the time am commenting, I have read them all), totally insightful. I consider myself an upcoming ‘full stack developer’. If I may use that term. I have been a freelance developer for the past 1 and half years since I cleared my Computer Science Bachelors. Back in Campus I used to get my hands dirty with every language I thought could help me achieve something. I can say I know a bit of Java, PHP5, Javascript, HTML5, CSS, SQL(basically for handling MySQL). I can’t say I know all these languages because am not that of a genius, but I know what I need to get things done – and of course there’s Stack Overflow. I have developed an Android app which required access to a MySQL database, and even a website to go with it.(To achieve this, I needed practical knowledge of JAVA & XML(for the Android app), and PHP & MySQL(for the api), and of course HTML5, CSS3, and Javascript. Having knowledge of these languages can help you in understanding frameworks like Bootstrap, JQuery, Php-Slim – which I definitely used in the project.
    At present, it’s necessary to have knowledge of both back-end and front-end languages to know how different technologies integrate just as the article says. But specializing in one is very important, unless you don’t have any other life to live. Currently I don’t have any life to live, so I am improving my knowledge in both back-end and front-end languages, but I really plan to specialize in Python in future.

  • Shuvo

    Great

  • Remember when that role was called “webmaster”?

  • Cory Long

    Well, this article is not a list of things a full stack developer must know. This isn’t even a list of things full stack developers usually know. This is a list of things they could know. All you really need (and probably the most common set up) is a shared host, a php framework (or wordpress), jquery, twitter bootstrap, phpmyadmin, and a browser tab open to StackOverflow. Not saying this workflow is good or bad, just that it’s a better description of a basic full stack developer. The new technologies you mention are powerful, useful, and popular, but they’re hardly a requirement to build stuff. I don’t think it’s even been easier to build awesome stuff by yourself.

  • “…on webview like NativeScript…” As far as I understand NativeScript is as native as ReactNative, probably closer to native experience that RN. NS is not on a ‘WebView’ and shouldn’t be grouped with solutions such as PhoneGap, Cordova, Titanium…

  • Ouroborus Seven

    “unfortunately, NodeJS for compiling JS, CSS, and other assets into statically hostable ones. Fortunately, there are ways to avoid NodeJS by using PHP.”

    What? You seem to be implying that NodeJS is somehow deficient when compared to PHP is the case of compiling to static pages. Personally, I’d prefer to use Python but, if the path of least resistance is using NodeJS or PHP, I don’t see a problem with either of them.

  • The list of skills is pretty wide and it looks a bit frightening :-) but, by my personal opinion, it doesn’t consider that several skills are basically common skills to both Back-end and Front-end development like, for example: git, Vagrant/Docker, continuous integration, Angular/React (normally a JS framework is always mandatory for a Back-end developer as well), DB (MySql, Mongo or whatever since lot of Front-end developers can easily create storing data applications) and Cloud.
    So, basically, a developer (Back or Front) must have all of the skills mentioned above (excluding design ones) plus the specific ones mentioned in Front or Back sections according to his/her role.
    The very big problem is that is nearly impossible to have a VERY deep knowledge of all Back-end and Front-end topics and follow all of them in the same way.
    Moreover there is always a part of us which is pushing more in one direction instead of the other one.
    For example, I love to create accessible and usable applications like front-end developers do, but I love much more to be focused on Application architecture and the “behind the curtain” stuff :-)

Recommended
Sponsors
Get the latest in PHP, once a week, for free.