Loading...
Answers
MenuWhat learning path do I have to take to become a "full-stack" web developer?
Answers
If I was just starting out, I'd consider learning Meteor (https://www.meteor.com/). It's just entered version 1.0 and after working with it for a little less than a year I do have some issues with it but it still makes for a very solid framework that gets you up and running very fast. You would only need to learn Javascript, and you can slowly work your way towards nodejs from there (which Meteor is based on) if you want to, or you could get the basics down and focus on learning design if you prefer.
The tools and languages you use do not matter as much as your understanding of sound programming principles. I've programmed in a variety of languages and frameworks, and I could tell you that they're just tools that will help you get the job done, IF you use them properly.
If I was just starting out, here is what I would do:
1. Read and learn about Object-Oriented Programming (OOP). If you're going to build anything more than a few web pages, you'll need to know OOP. Checkout Deitel & Deitel books for a relevant title. These textbooks are just excellent.
2. Once you have mastered the above, research, choose a stack and stick to it. Unless you have very specific needs, all of them should get the job done. Learn that framework, and get really good at it.
3. Once you feel you have mastered your current skills, challenge yourself by trying to improve things even more. (e.g. better code commenting, version control...) If you want to succeed as a full stack web developer, you'll have to keep learning and pushing your boundaries. (Hint: You should also enjoy it)
I hope this helps.
"Full-stack" web developer does get thrown around. However I believe that is still has a pretty static definition.
My understanding is it is a "jack of all trades" scenario. Except by "jack" I mean ver knowledgable just not a master, and by "all trades" I mean the layers of of a full stack developer mentioned here:
http://www.laurencegellert.com/2012/08/what-is-a-full-stack-developer/
I would like to think that I am on my path to becoming a full stack developer. I believe this takes a long time. So I started by taking freelance work that enabled me to get my hands dirty. The more client need I answer the more I become familiar with all of these layers.
The only path I know to becoming a full stack developer is just start building things.
Want a starting point? Build an SPA that communicates with Wordpress for managing the state over the new WP JSON REST API, using Backbone.,js.
It's not something you want to achieve unless your goal is to be the technical cofounder of a startup. If you're the technical cofounder, *you* get to make whatever stack you want! You're the CTO. It's entirely up to you. Woohoo! Now you're the king of the mountain, but how are you going to make money? Technology is a means to an end. Nobody cares how the widget works. We only care about results. If you're caught up in the "programming for the sake of programming" mindset, get a PhD in Computer Science.
If you don't have a strong opinion about what stack to use, I think you're getting ahead of yourself. Maybe talk to your future cofounder about the market adoption of various technology. If you don't have a cofounder yet, maybe poke around Angel List and LinkedIn.
How hard will it be to hire people that know XYZ stack? Choosing unpopular technology will make it harder to scale the business. Assuming you're actually able to create something from scratch that works at all. I hear most computer science graduates can't create anything from scratch. Computer science programs crank out the employees that will work at your startup--after you cash out.
Ultimately, you need to be able to create something from nothing with your chosen language and do everything yourself--and have it all work flawlessly without weird bugs in the code causing intermittent problems. If you can't do that, you're probably barking up the wrong tree. You're only a full-stack developer out of necessity, because you can't afford to hire yet and you don't want to split more equity with a third person.
(As long as we're on the subject, I think an ideal cofounder for a full-stack dev would be someone that knows business law and marketing.)
After your imaginary startup starts growing, you'll want to hand the software over to a software architect, a dev-ops genius, a project manager, people to take it to the next level. Once it's time to hire, the business needs a completely different skillset that the full-stack technical cofounder doesn't have.
Working for any large company, they should have you doing specialized work. There can be only one CTO and it's probably not you. If it's a small company that can't afford to hire a sysadmin and a designer and a developer and a DBA, do you *really* want to do the job of four people?
"Full-stack" is more like a battle scar you get to talk about. Maybe it looks cool, but in retrospect it wasn't something you wanted.
The "full-stack" is a vague term, but in the context of web development I would define the following group of skills:
* HTML/CSS (the basics)
* JavaScript (extent may vary on the platform)
* A script-based programming language (one that allows you to think in procedures as well)
* An OOP language (or the flavor of the first language with all of the OOP paradigms in it)
* Database programming
* Design patterns
* MVC in particular - most frameworks out there are MVC-based
That would help you to program in most popular languages out there and be effective while working HTML5 paradigms, JavaScript libraries and frameworks, and incorporate them in all web-driven languages or platforms. Depending on the type of work there may be other sections, such as:
* Computer architectures - I don't believe you can be a senior backend engineer without understanding the actual hardware components responsible for everything
* Networks and server management - some good basics of hosting management skills
* Security - related to everything before, but it's another important topic for full-stack developers to always take into account
* Performance and scalability - writing a high-performance code is a skill that depends on your understanding of the server stack, the memory layer, CPU executions etc.
* DevOps paradigms - testing (all sorts of), continuous integration, tooling (version control, automated deployment, staging setup)
UI/UX/etc don't click with me when I hear "full-stack web developer" - that is more of a frontend developer/designer aspect, and is definitely not a requirement for full-stackers. It's always helpful to be able to wear more hats - design, UI/UX, marketing, soft skills could help you build a better product, lead your team or be a mediator between the team and the client, but it's hard to juggle with everything and the first group is easier to keep together in the same basket while improving your skills.
I have worked with many Indian companies as an HR and few of them used to be IT companies. I have hired many full stack developers, and what I have learned during this period of time is that full stack developer is a guy who knows everything. We hired full stack developers mainly because:
1. Full stack developer helps you to keep every part of the system running smoothly
2. Full stack developer can provide help to everyone in the team and greatly reduce the time and technical costs of team communication
3. If one person plays different roles, it saves your company's personnel, infrastructure, and operational cost
When I investigated their CVs, I found the following skill sets:
1. Front-end technology: Full stack developer should be master of essential front-end technologies like HTML5, CSS3, JavaScript. Knowledge of third-party libraries like jQuery, LESS, Angular and React JS is desirable
2. Development Languages: Full stack engineer should know at least one server-side programming languages like Java, Python, Ruby, .Net etc.
3. Database and cache: Knowledge of various DBMS technology is another important need of full stack developer. MySQL, MongoDB, Oracle, SQLServer are widely used for this purpose. Knowledge of caching mechanisms like varnish, Memcached, Redis is a plus.
4. Basic design ability: To become a successful full stack developer, the knowledge of designing is also recommended. Moreover, the person should know the principle of basic prototype design and UI /UX design.
5. Server: Exposure to handling Apache or nginx servers is desirable. A good background in Linux helps tremendously in administering servers.
6. Version control system (VCS): A version control system allows full stack developers to keep track of all the changes made in the codebase. The knowledge of Git helps full stack developers to understand how to get the latest code, update parts of the code, make changes in other developer's code without breaking things.
7. Working with API (REST & SOAP): Knowledge of web services or API is also important for full stack developers. Knowledge of creations and consumption of REST and SOAP services is desirable.
Many of the full-stack developers that I hired in my company as an HR also were proficient in software stack. Software stack is a collection of the programs which are used together to produce a specific result. It includes an operating system and its application. For example, a smartphone software stack includes OS along with the phone app, web browsers, and default applications. Notable among them are as follows:
1. LAMP stack: LAMP is a widely used model for web service stacks. Its name "LAMP" is an acronym of four open-source components.
1. L= Linux: An open source operating system
2. A= Apache: Widely used web server software
3. M= MySQL: Popular open source database
4. P=PHP: Server-side open source scripting language
These above-discussed components, supporting one another. Many popular websites and web applications run on LAMP stack, Example: Facebook.
2. MERN stack: MERN is a collection of JavaScript-based technologies:
1. M=MongoDB: Popular NoSQL database
2. E=Express: Light and portable web program framework
3. R=React: A javascript library for building user interfaces
4. N=Node.js: A server-side JavaScript run time
This stack currently in the huge demand as it is widely used to develop web applications.
3. MEAN stack: MEAN Stack Application Development is witnessing a growing trend in usage. MEAN is an abbreviation of:
1. M = MongoDB: nosql Database
2. E = Express: Easy to use light and portable web program framework
3. A = Angular.js: Robust framework for developing HTML5 and JavaScript- web programs
4. N = Node.is: a server-side JavaScript run time
These were all or some of the jobs that a full-stack developer did in Indian IT companies:
1. Translate user requirements into the overall architecture and implementation of new systems
2. Manage Project and coordinate with the Client
3. Write backend code in Ruby, Python, Java, PHP languages
4. Writing optimized front end code HTML and JavaScript
5. Understand, create, and debug database related queries
6. Create test code to validate the application against client requirement.
7. Monitor the performance of web applications & infrastructure
8. Troubleshooting web application with a fast and accurate a resolution
Besides if you do have any questions give me a call: https://clarity.fm/joy-brotonath
It's great that you're planning a comprehensive learning path to become a full-stack web developer. Your outlined plan looks solid, and you've covered key areas for both front-end and back-end development. Here's a breakdown and some suggestions:
Front-end Development:
HTML, CSS, JavaScript, and jQuery are essential foundations.
Learning Angular is a great choice, and considering your interest in UX/UI, exploring frontend frameworks like React could be beneficial.
Back-end Development:
Ruby on Rails (RoR) is an excellent choice for your back-end development. Understanding the MEEN stack (MongoDB, Ember, Express, Node) is an alternative, but given your interest in Ruby on Rails, it might be worth sticking to RoR.
JS Frameworks:
Expanding your knowledge in JS frameworks is a good idea. Consider exploring React or Vue.js in addition to Angular, as they are widely used in the industry.
UI/UX Design:
Your knowledge of Photoshop and Illustrator is a valuable asset. Learning UX/UI principles is a great step. Tools like UXpin and Sketchup are also useful. Consider adding tools like Figma or Adobe XD to your toolkit.
Regarding your learning path, it's not about replacing 1, 2, and 3 with the MEEN stack. It's more about choosing the stack that aligns with your goals and interests. If you're keen on Ruby on Rails, stick with it. However, exploring MEEN can broaden your understanding of different technologies.
For additional insights into web development, you might find this article interesting: https://www.cleveroad.com/blog/how-much-does-it-cost-to-hire-a-react-developer/. It discusses the cost aspects of hiring React developers, providing context into the demand for React in the industry.
Best of luck on your learning journey, and feel free to reach out if you have more questions!
Related Questions
-
Should I create a WordPress site or build a custom website?
Go for Wordpress initially. -- Custom website will delay your launch plans considering all factors. -- Wordpress can be used to meet your requirements from day 1. -- Once you have enough visitors and decided the revenue model + business objective plan for a customized website to be developed from scratch.BK
-
What 3 questions to pose to a developer, to gauge his expertise level?
If you're not technical yourself, then you might not be able to gauge the efficiency of a candidate's algorithms or critique her code. But there are still some higher-level, more behavioral things that a non-technical interviewer should be looking for in a strong development candidate: 1. What are some tech blogs that you follow? Explain an interesting article to me that you read from one of them. The software development world changes all the time. Best practices are constantly evolving and new libraries are regularly released which make developers more productive. If a candidate doesn't keep up with the latest software news, that might be a red flag that they're not curious or trying to improve themselves. Also, having them explain a technical concept to someone who's non-technical is a great way to gauge their communication skills. Do they seem like someone you could work with and understand easily? Do they care about pausing to make sure you understand, or do they just drone on with jargon? If you feel overwhelmed while they're explaining this answer, imagine how you'll feel when they're telling you why the product has bugs or isn't going to be done on schedule. 2. Tell me about a time you ran into a big roadblock with something you were building. How did you get past it? It's inevitable that a software developer will get tripped up or have to solve some Gordian Knot. Everyone has to bang their head against the wall from time to time. Maybe an API didn't have the data they needed or some function was running too slow and they weren't sure how to speed it up. You're looking to see how they are as a problem solver. Did they come up with a clever but hacky solution? Were they methodical or did they fly by the seat of their pants? Did they go back to the stakeholders and see if the feature's requirements were flexible? Did they work on it for hours and hours trying new things? Did they ask for help from colleagues or on the internet? No right or wrong answers here, but you want to get the sense that this isn't someone who throws up their hands when they hit some friction. 3. Tell me about your favorite project that you worked on. What work are you most proud of? By asking them about the project they're most proud of, you'll get to see what it is that they value most. Maybe one candidate is most proud of a side project they built, even if it wasn't that technically complex, while another candidate is proud of their esoteric PhD project or some specific algorithm they improved. Again, no right or wrong answers, it really depends what type of candidate you're looking for. But it lets you see into their mind a bit, and get at some of the aspects that can make someone a strong development candidate. If you want to talk more specifically about hiring for your team, I'd be happy to do a call!HB
-
How can I manage my developers' performance if I don't understand IT?
Whenever you assign them a task, break down the task into small chunks. Make the chunks as small as you can (within reason, and to the extent that your knowledge allows), and tell your devs that if any chunks seem large, that they should further break those chunks down into bite size pieces. For instance, for the overall task of making a new webpage, _you_ might break it down as follows: 1) Set up a database 2) Make a form that takes user email, name, and phone number and adds them to database 3) Have our site send an email to everyone above the age of 50 each week When your devs take a look at it, _they_ might further break down the third step into: A) Set up an email service B) Connect it to the client database C) Figure out how to query the database for certain users D) Have it send emails to users over 50 You can keep using Asana, or you could use something like Trello which might make more sense for a small company, and might be easier to understand and track by yourself. In Trello you'd set up 4 columns titled, "To Do", "Doing", "Ready for Review", "Approved" (or combine the last two into "Done") You might want to tell them to only have tasks in the "Doing" column if they/re actually sitting at their desk working on it. For instance: not to leave a task in "Doing" overnight after work. That way you can actually see what they're working on and how long it takes, but that might be overly micro-manager-y At the end of each day / week when you review the tasks completed, look for ones that took a longer time than average (since, on average, all the tasks should be broken down into sub-tasks of approximately the same difficulty). Ask them about those tasks and why they took longer to do. It may be because they neglected to further break it down into chunks as you had asked (in which case you ask them to do that next time), or it may be that some unexpected snag came up, or it may be a hard task that can't be further broken down. In any case, listen to their explanation and you should be able to tell if it sounds reasonable, and if it sounds fishy, google the problem they say they encountered. You'll be able to get a better feel of their work ethic and honesty by how they answer the question, without worrying as much about what their actual words are. Make sure that when you ask for more details about why a task took longer, you don't do it in a probing way. Make sure they understand that you're doing it for your own learning and to help predict and properly plan future timelines.LV
-
What are the key accomplishments for the first year of a startup?
A generalized question can only get a generalized answer. The most significant accomplishment is validating that the product you have built is a fit with your target market. This is demonstrated primarily by engagement (the people who sign-up or who previously visited, continue to return) and secondarily by growth, ideally based on word-of-mouth or viral growth but effectively converting paid traffic is a great second prize. Other significant accomplishments include: Not running out of money Recruiting and retaining great talent who believe in the founders' vision. Your loved ones not thinking you're as crazy as they thought you were a year ago. I'm happy to talk to you in a call to give you more specifics about what you want to set as your goals more specific to your startup.TW
-
Where to find quality graphic and web design leads?
If you are going to use Social Media Marketing. I would recommend you create a Pinterest wall of your work and back link them to your site. Try that.BK
the startups.com platform
Copyright © 2025 Startups.com. All rights reserved.