PHP
Article

Being a Full Stack Developer

By George Fekete

full stack developer

The barrier of entering the web development industry as a web developer is still low, but it’s getting increasingly complex.

The dynamic nature of the whole industry makes requirements shift often to the most popular and “next best thing” tools and programming languages.

Gone are the days when only one programming language or a very specific process was required from a developer. Nowadays programmers must know a range of technologies across multiple platforms in order to do good work.

Versioning. A slightly sarcastic daily email for discerning web people. Sign up today!

What does a full-stack developer mean?

The term full-stack means developers who are comfortable working with both back-end and front-end technologies.

To be more specific, it means that the developer can work with databases, PHP, HTML, CSS, JavaScript and everything in between, also, venturing as far as converting Photoshop designs to front-end code.

A full-stack developer doesn’t need to master all of the areas and technologies he needs to work it, because that just makes it nearly impossible, he just needs to be comfortable working with those technologies, and that’s a lot too.

What full-stack meant in 2000 and what it means now?

full-stack

2000 was a long time ago, in that year PHP 4.0 was released. Yes, 4.0. Back then, a good web developer knew a little HTML, CSS and some procedural PHP, because proper OOP didn’t even exist until version 5.0.

The LAMP (Linux – Apache – MySQL – Perl/PHP) stack was all the rage in those years, with little or no alternative. In the early 2000s if somebody used version control they were considered either technological heretics or wizards. Today it’s unheard of and laughed at, not using one.

So, let’s try to break down and categorize the main technology stacks that are required from a full-stack developer today:

System administration:

  1. Linux and basic shell scripting
  2. Cloud computing: Amazon, Rackspace, etc.
  3. Background processing: Gearman, Redis
  4. Search: Elasticsearch, Sphinx, Solr
  5. Caching: Varnish, Memcached, APC / OpCache
  6. Monitoring: Nagios

Linux powering most of the Internet, it’s a de-facto operating system in web development (not to dismiss .NET). In addition, a full-stack developer should know how cloud hosting works, Amazon / Rackspace or other providers and its APIs.

Search is an integral part of most websites – a developer should know how to set up and use search servers such as Sphinx or Elasticsearch.

Caching is also important, Varnish, reverse proxy, Memcached and opcode caching. He needs to know what each of these is and how to use it.

Web development tools:

  1. Version control: Git, Mercurial, SVN
  2. Virtualization: VirtualBox, Vagrant, Docker

Today, it’s unnaceptable not to use version control, even if you’re a solo developer.

With virtualisation tools, having separated development environments on a per project basis is really nice to have, and easy to set up with VirtualBox and Vagrant at least.

If you want to work with Vagrant you also need to know the basic syntax of Ruby and shell scripts as well.

Back-end tech:

  1. Web servers: Apache, Nginx
  2. Programming language: PHP, NodeJS, Ruby
  3. Database: MySQL, MongoDB, Cassandra, Redis, SQL / JSON in general

Apache and Nginx are the norm for web development. A full-stack developer should know how to set up these applications and serve the contents of his website.

PHP is what needs to be mastered on a high level, NodeJS, Ruby is nice to know as well.

In addition to web server and programming languages, database management is also a requirement for a full-stack developer which in itself is another beast.

Relational (such as MySQL, PostgreSQL) vs non-relational databases (like MongoDB, Redis or Cassandra) are differences the full-stack developer needs to know, along with knowing the syntax of XML / JSON.

Front-end tech:

  1. HTML / HTML5: Semantic web
  2. CSS / CSS3: LESS, SASS, Media Queries
  3. JavaScript: jQuery, AngularJS, Knockout, etc.
  4. Compatibility quirks across browsers
  5. Responsive design
  6. AJAX, JSON, XML, WebSocket

Here comes the fun part. If you want to present your website, you’d better know these and all their quirks.

JavaScript was a joke in the early days, grown into one of the most popular and powerful languages today. New methodologies and frameworks are popping up each day, MVC, MVVM, MVP, Angular, Knockout, Ember, etc.

Alongside HTML, CSS, Javascript, a full-stack developer should also know about responsive design and how to work with media queries and CSS preprocessors like LESS and SASS.

One should also know how to communicate with the back-end via AJAX or WebSockets.

Design:

  1. Converting website design into front-end code
  2. UI
  3. UX

In addition to front-end technologies, a full-stack developer also understands what is possible and what not to create with the constraints of HTML / CSS / Javascript and convert the design (Photoshop/Illustrator files) accordingly.

With many of the mentioned technologies a developer can get away with not knowing to code or use, such as Ruby or specific JavaScript libraries, but all these are interconnected in one way or another.

For example if you want to set up Vagrant you need to know Ruby’s syntax, as simplified as it is or if you want to manipulate DOM elements, jQuery is a good to know technology.

mobile tech

One other category that deserves mentioning is mobile technologies. It’s a very dynamic industry and closely related to web development:

  1. iOS
  2. Android
  3. Hybrid: PhoneGap, Appcelerator

One of the biggest disparities today is between web and mobile development, but the gap is rapidly closing.

A full-stack developer should know about these technologies as well.

Is it better to be a full-stack developer?

Being a full-stack developer means to have an open mind towards new technologies, having your hands dirty in each one and to have an understanding of how a web application gets done from a concept to design to the finished product.

The idea of a “full-stack developer” isn’t about being fluent in every possible technology there is, because specialization exists for a reason. It’s more about having an understanding in each of the areas above, to communicate intelligently between team members and to be a good asset if the situation needs it.

The full-stack developer will have an increasingly important role in the web development of the future, especially when development methods such as DevOps are becoming an essential part of software development companies, where the line between code developers and administrators who are responsible for code deployment and setup is getting thinner each day.

More:

Free Guide:

7 Habits of Successful CTOs

"What makes a great CTO?" Engineering skills? Business savvy? An innate tendency to channel a mythical creature (ahem, unicorn)? All of the above? Discover the top traits of the most successful CTOs in this free guide.

  • http://ocportal.com/ Chris Graham

    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.

          • http://w3guy.com Agbonghama Collins

            Sold on this.

          • http://www.sassquad.com/ Steve Scott

            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.

    • http://www.bitfalls.com/ Bruno Skvorc

      Well said

    • Phillip Hamilton

      Well said Vedran…

    • Taylor Ren

      Well said.

    • http://www.aptugo.com Aptugo

      I wish everybody would think like you! :-)

    • Ryan Dennler

      Very nicely said! Agreed 100%

    • http://www.musavis.com Mohammad Musavi

      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.

        • http://www.musavis.com Mohammad Musavi

          Thanks

    • rlk

      Well said!..Completely agree..

    • http://google.com/+Nkansahrexford Nkansah Rexford

      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.

          • Sisi T

            George Fekete, I admire your mind!

          • George Fekete

            Thanks :)

    • http://will2power.com/ Martin Jul Hammer

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

  • louisa

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

  • Husain Ahmmed

    Thanks for this information.

  • http://www.internetgeeks.org/ Internet Geeks

    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.

  • http://www.musings.it/ Federica

    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 :)

    • https://twitter.com/dmathisen36 dmathisen

      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…

      • http://www.aptugo.com Aptugo

        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!)

  • 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.

  • http://rajibpaudyal.com/ Rajib Paudyal

    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.

    • http://www.poetro.hu/ Poetro

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

      • http://rajibpaudyal.com/ Rajib Paudyal

        like ?

        • http://ocportal.com/ Chris Graham

          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

    • http://www.aptugo.com Aptugo

      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.

        • https://twitter.com/dmathisen36 dmathisen

          “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 …

  • http://www.sassquad.com/ Steve Scott

    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!

  • http://www.aptugo.com Aptugo

    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.

    • http://www.ManishMotwani.com Manish Motwani

      Agree with you.

  • 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.

    • https://twitter.com/dmathisen36 dmathisen

      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) .

          • http://Robmcelvenny.com 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?

    • https://twitter.com/dmathisen36 dmathisen

      ???
      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?

        • https://twitter.com/dmathisen36 dmathisen

          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…

          • https://twitter.com/dmathisen36 dmathisen

            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.

  • http://pt.linkedin.com/in/ricardoquintas/ Ricardo Quintas

    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.

  • http://www.halfnibble.com Josh Wedekind

    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?

  • http://www.seoyoochan.com/ Yoochan Seo

    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.

  • http://thiagodebastos.com/ Thiago de Bastos

    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.

  • http://clickstreamconsulting-public.sharepoint.com Randeep Dosanjh

    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.

      • http://www.therandeepdosanjhgroup.com Randeep Dosanjh

        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.

          • http://www.therandeepdosanjhgroup.com Randeep Dosanjh

            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.”

          • http://www.therandeepdosanjhgroup.com Randeep Dosanjh

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

      • http://clickstreamconsulting-public.sharepoint.com Randeep Dosanjh

        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.

  • http://Robmcelvenny.com 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 ?

  • http://shyammakwana.me Shyam Makwana

    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.

  • 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

Recommended
Sponsors
Because We Like You
Free Ebooks!

Grab SitePoint's top 10 web dev and design ebooks, completely free!

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