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
-
I have this social media idea,but no coding skills. How do I get someone to do the coding (cant afford to pay them) and not give away half of my idea?
Dilip was very kind in his response. My answer might be a bit on the "tough love" side. But that's for you to decide. My intention, just for the record, is to help you (and those like you) on your path to success. And that starts with having a viable philosophy about entrepreneurial-ism and business. And I'm going to answer this because I get asked some form / version of this question very frequently from newcomers to entrepreneurial-ism. The scenario goes something like this: "I have a great idea. It's amazing, I love it, and I just KNOW it's gonna make me a ton of money. But I have no money right now so I can't afford to (fill in the blank with things like "to build it / create it / market it / etc" or "to hire the required staff needed to work in my business to sell it / develop it / etc"). And I don't want to tell anyone about my great idea because I'm worried someone will steal it and make MY million / billion dollars. But I can't afford to legally protect it either... So how do I launch without the skills to personally create the product AND no money to hire anyone else to do that either??" The answer is ... You don't. Look - let's be honest. All you have is an idea. Big deal. Really. I'm not saying it's not a good idea. I'm not saying that if properly executed it couldn't make you a million / billion dollars... But an idea is NOT a business. Nor is it an asset. Until you do some (very important) initial work - like creating a business model, doing customer development, creating a MVP, etc - all you really have is a dream. Right now your choices are: 1. Find someone with the skills or the money to develop your idea and sell them on WHY they should invest in you. And yes, this will mean giving up either a portion of the "ownership" or of future income or equity. And the more risk they have to take - the more equity they will want (and quite frankly be entitled to). 2. Learn how to code and build it yourself. MANY entrepreneurs without financial resources are still resourceful. They develop the skills needed to create what they don't have the money to pay someone else to do. 3. Get some cash so you can pay someone to do the coding. You'll probably have to have some knowledge of coding to direct the architecture of your idea. So you will likely still have to become knowledgeable even if its not you personally doing the coding. (This is not meant to be a comprehensive list of options... And I'm sure some of the other experts here on Clarity have others to add - and I hope they do) To wrap up - Here's my final tip to you that I hope you "get"... It's FAR more valuable to have an idea that a very specific hungry crowd is clamoring for right now - One that THEY would love and pay you for right now - Maybe even one they'd pre-order because they just have to have it - Versus YOU being in love with your own idea. [Notice I didn't say "an idea that some as-of-yet-undetermined market would probably love"] I wish you the best of luck moving forward.DB
-
How do you manage a developer who's slow, especially when you have a small budget and you don't feel like you'll get things done in time?
Usually Programmers are only slow when they don't know how to solve a particular problem. So they will spend a lot of time researching and a lot of trial & errors to solve a problem. It is important that before you engage a programmer on a project, you break down the entire project into simple, easy to understand modules. Let him give you an estimate of how many hours he will require to complete each of the modules. Example: a typical site will have a login module, registration, My account, profile etc. So let him estimate how much he will require to do the login. You can go even detail here. (e.g. how much extra time if you were to implement Facebook/Twitter Login?). Once he start developing, track his progress closely and make sure he is following his given timeline. If he goes over his budgeted time on a module, talk with him and see what went wrong. It is often seen that they may be wasting their time on something very insignificant that you may have asked him to implement, but you can totally go by without it too. So by understanding what is taking longer time, you will be able to prioritise things better. You definitely need some tools to get this done. Google Spreadsheet or Excel works just fine. But if you don't mind spending a few bucks there are many agile project management tools that you might look into. Here is a list, google them all and sign up for trials: * AgileZen * Agile Bench * Assembla * AssiTrack * Blossom * Basecamp * Breeze * DoneDone * Eidos * Fogbugz * GreenHopper * Jugggla * Kanbanpad * Pivotal Tracker Or the reason why he is slow can be purely non-technical. Sometime your developer may don't share the same level of enthusiasm as you about the idea that you are working on. They often don't often see the "bigger picture" (since you don't share everything with them explicitly). If you can somehow get them excited about what he is a part of, it will work like a drug :) He will work day and night without questioning you. But you need to work equally as hard as him. The moment he sees that you are the boss and he is just the guy doing work for you -- his mentality will shift from being part of something to being the low paid developer. Ultimately its all about motivation and making him a part of your venture. After all he deserves it, if he is really playing a crucial role in the entire development.SK
-
How much should I charge to develop a WordPress site?
Take the # of hours it takes you to do it and charge $50/hour. That's the price. Eventually you can charge $100/hour but that will require a bigger customer. If the customer is small < $1M in gross sales per year - charge $50/hour If the customer id medium < $1-5M / sales - charge $75 Over $5M - charge $100 The challenge you'll face is clearly defining the expectations and handoff so that you're not stuck doing stuff that you can charge for and always getting interrupted from past customers.DM
-
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
the startups.com platform
Copyright © 2025 Startups.com. All rights reserved.