I want to be a full-stack web developer in half a year, and I came up with a plan. What is...

Quora Feeds

Active Member
Michael Gautier

Classic definitions: A programmer does one thing. A developer does the whole thing. A true developer is full stack by default.

A developer is concerned with the SDLC. Software Development Life Cycle. That cycle has 6 parts. Requirements, Design, Code, Test, Deployment, and Maintenance. You are good when you can do each part well.
  1. Requirements = What is the overall business problem we are trying to solve?
  2. Design = What does the solution look like?
  3. Code = Build it or revise it.
  4. Test = Make sure it solves the problem and not introduce problems.
  5. Deploy = Put it where people can get it, run it, and use it when they need to.
  6. Maintain = New ideas about the solution. Go back to step 1.
You cannot do SDLC or what is now called Full Stack without context. Software does not emerge without purpose. Learning development is different than learning programming. Development is a broader skill that is part technical and part mapping out a solution in the context of an environment (social, business, industry, department level, enterprise, etc). Your first step in learning will require a sample project.

A great sample project is 3 page product search. The question is, how do I show someone the product they want to see? Page 1 is a search box. Page 2 is the list of results from the search. Page 3 is the detail page. This is in many development text books. Your challenge is to go through the classic 6-step process. Why are you building it? What will the total solution look like on paper? Creating the solution, testing it, and moving it from the place where you built it to somewhere others can try it out and give feedback. Maintain it by keeping the solution fresh to changing circumstances.

The mindset just outlined goes hand-in-hand with using technologies in a full stack way. There is a 3-part harmony in the conventional design of computer systems. Classically called the 3-tier architecture you have data, application processing, and presentation. Other names exist for those, I am being extremely general. Full stack means you understand this relationship. You do from the question, but there is one problem.

Over doing the concept. It is as simple as where is the data going to be; how is that data going to be shown; and what is the process in between that will glue it all together? It is the difference between practical and relevant to the business customer versus distant from the core concepts and distant from the true goal which is to solve problems in an effective way.

Step 1. Learn SQL, data structures, and information architecture. Data is the foundation for the whole effort.

Data begins with organization. Structuring information in a complete and efficient way. You do not want to study a database, that comes later. You want to study SQL, data structures, and information architecture. Those are the things that make your use of databases more productive. There is much more to learn but how to query data, organize it, and represent the business as data are the skills you can apply to all databases whether they are files or relational data management systems.

Step 2. Learn Go, procedural programming, functional decomposition so you can just code. Code Complete is a book with great information about this.

You have to take that data and process it in a form that will make its way to the presentation. You will get data in from the presentation and adapt it for input into the persistent data area. In the beginning, do not make it more complicated than that. Data in and data out. Algorithms will not help you yet. You will learn that later. The starting point is the right programming method. The baseline paradigm for most languages is procedural programming. That starts with functional decomposition. Understand functional decomposition, how to map things you need to do into functions and you will have the most fundamental knowledge that applies to most programming languages. You can add objects, components, and complexity analysis later but first you need to code direct and to the point. Learning Go will get you there faster.

Step 3. Learn raw JavaScript, HTML, CSS, and AJAX. Use those functional decomposition skills on the client to quickly get data on the screen and back into the database.

Learn what HTML markup is, what HTML forms are, and how to use CSS to make the appearance nice on the eyes. Dan Cederholm has some of the best info on doing the appearance part in a straightforward way. With JavaScript you are learning the logic of validating a form, sending/receiving AJAX requests, and revising the HTML through a Document Object Model. You will spend a lot of time here.

That is full stack.

With the core fundamentals in hand, your next step is to build on them. That is when you introduce the other things on your list. Technology wise, most things are going to fit in this model. Knowledge of specific technologies can go way up and way down in value, but the fundamental concepts equip you to apply whatever comes along in a way that connects with your audience.

Time: If you focus, have the right learning materials, you can learn this process in about a month or two. You have to start it and stick with it. Be patient but steady. You are learning to understand the basic process for most of software development.

You will be proficient and productive by 6-months. Know that most people do not become really good until about 5 years of quality experience. In less than a year you will be hired. Regardless of time spent, once you have the basic process down cold keep pushing to advance further.

Never forget your goal is to deliver value.

Know the customer's problem (even if that customer is you); design the solution, build it and get it to working fashion as soon as possible. The sooner they have it, the sooner you can get it into the right shape. The reason you are a continuous learner is so you grow into the type of person who delivers quality more naturally. It comes with time and cannot be forced. Do not be ashamed of writing code that is not a pristine example. Plan and act on the plan to improve while you stay focused on delivering with what you know. The same mindset you had in learning the process in the beginning that brought you this far.

Advancement: By whatever route you go, make sure to continually build your skills, practice the process, and acquire education to broaden your capacity. Doing so allows you to deliver more value in a better way. Raise your communication skills. Put people first. You master the process the more you practice it.

You are always running towards your future. Take the time to explore many other topics in computers. People such as Shriram Krishnamurthi and Thomas Cormen and others have great insights to share in their published work. Just keep learning for its own sake because you are creating unique value within yourself that will be reflected in the work you do.

Computers, A Propositional Construct

See Questions On Quora

Continue reading...
 
Similar threads
Thread starter Title Forum Replies Date
B Study Buddy full-day virtual study buddy needed Study Buddy 0

Similar threads

Top