Being a full-stack developer: A guide to your responsibilities — Part 1
Hello everyone, as it seems, this is my first attempt to put my experience to words. I have been a full-stack developer for most part of my career. Even now, that young guy who started more than 12 years ago, keeps coming back.
In all of those 12 years I have learned a lot while working with small companies. Companies in their initial phase — Startups (as we call them now). They (startups) were always present, but we have given them an identity since past few years (especially in India). While working with startups, I learned a lot about what is important for them and what is important for customer/consumers/users. This conflict of interest (between business & consumer) has always been present and is still a part of the industry.
What is a full-stack developer?
Full-stack developer is someone who knows about each layer of the web technology. A full-stack developer needs to have working knowledge about the following:
- Server/Hosting Environment
- Data Modeling/Database Design
- Business Logic Implementation
- API/MVC pattern
- User Interface
- User Experience
- Complete understanding about needs of business and the customers.
Being a developer is not easy. You begin as an intern & with no idea about how the things you have learned is gonna help you earn money or even help others. Even if you get hired as an intern, you still have no idea how your knowledge fits into the view. If you are at this stage, trust me, this will decide your future. Spend some time here, have patience. All the knowledge from everyone around you will make start making sense around 4th month of your joining.
At this stage it is important to know what is what. Like:
- What is a database?
- How do you connect it?
- What is a compiler?
- Server-side vs client-side?
- How do browsers behave?
- How does web server behaves?
- How do these(previous 2) communicate?
These basics are important and will set the foundation for your future. Once you have a clear idea about how this all would work, you might feel powerful with all the knowledge you have gained. But you need to hold your thoughts right there. It is time to say hello to a programming language. Choosing a programming language may seem a simple task but it is not. In 2008, there was a boom for PHP. Multiple frameworks were emerging from everywhere. Everyone wanted to be a PHP developer.
When the industry is prepared for a specific language, there is not much choice left for you to learn to get a good job. You will end-up learning/working[on] the same popular language. Obviously, you don’t want to sell towels in rainy season when a buyer is actually looking for an umbrella. One can always argue, either of them is useful or both of them are. One keeps you dry & the other is used for drying. The opposite example could be of selling an umbrella at a swimming pool.
The point is, you will end up learning something popular at that period of your fresher career. There are various factors to influence your decision. It can be your workspace, friends, some random blog or may be a celebrity developer you like to follow. I have been a huge fan Elliot Haughing. He was one star developer for me & I did learn CodeIgniter through his screen-casts. If you go to YouTube today and search for a code topic or a framework lesson. You will be overwhelmed with all results and multiple people teaching same thing.
What you should learn?
To become a full-stack developer you should not try to master everything. Master one, but learn other aspects well enough to implement it. Today if you are a a full-stack developer, you are required to learn the following:
- A server side language(Php, Python, Node, Go & many more)
- One SQL and one NoSQL Database(MySQL, Mongo, Elasticsearch & more)
- A server/hosting container module
- A front-end framework
- Adaptable UI with smaller devices
- Ability to create/modify hosting environment
This might be a bit overwhelming for a beginner. But if you have it in you, you will get there.
How to learn?
The best way to start is to read & watch later. Read about the concepts/syntax via book or online documentation. Then you can shift to watching videos for the same. This would help you learn and visualize the concepts. You can directly land to videos but then you would learn the style of the tutor teaching you. Make learning your routine. Learning is a long, never ending process and necessary for you evolution as a developer. Always keep you eyes & ears open.
“Style? What Style?”
Your style of code. Everyone has his style of code. Everyone is different. Some keep ‘vendor’ folder outside the project root directory, some like to keep it in. Some like to call JS libraries via CDN, some call the local files. You would need to learn & implement your own style. Yes, your style can be a complete copy, a derivative of any existing styles or a combination of multiple styles. Your style would keep changing as you learn new things. Stick to your style and keep updating it.
While doing everything you should also spare some time for your hobbies. Parent a dog or a cat, gardening, handy crafts, helping at an old-age home or anything else. Try doing what you did in your childhood when you had spare time. Keep that child alive in yourself. That child will show you the way.
Why a child? Child is not corrupt like we are. A child is not bound by formalities and social boundaries. It will always speak and do what is necessary.
Retreat or not
If at any stage, you speak to yourself with words like, “this is not for me”, “what am I doing here”, “why do I feel stuck”. Well you are stuck with two scenarios:
- This is actually not for you.
- You have stopped learning new stuff.
If first is the case, “RETREAT!!”. Don’t waste any more time there. Spend some time away from work and dig into yourself. Evaluate yourself and find what you like to do. But be careful everything takes time.
If you fall in the second category, well you clearly know what to do. Either you have been doing same thing over & over again in same sequence or you have not learned anything new. Well solution is to learn. Learn more and implement it in your existing loop of work. Find that child in you again. Try putting fun to your process and learn more.
Hope you like this and it helps you as well. Please leave your opinions/praises in comments. Be in touch for part 2.