Now organizations are looking for mostly full-stack developers and the expectation varies depending on the years of experience of the candidate. When I say expectation, I mean the technology stack as well as the depth of knowledge in them.
The best way of verifying whether you are up to speed with the market or not is to put your resume in the job portal and mention the notice period as 15 days or a month. And if you are getting calls, that means the tech stack you have is currently running in the market. Otherwise, you need to change it at some angle.
- Language: Python
- Framework : Django/ Flask/ Pyramid/ Bottle
- Database : MySQL/ PostgreSQL/ Oracle
- UI : HTLM, CSS, Bootstrap
These five fingers are needed to make the complete fist and some additional knowledge about Cloud(AWS/Azure/GCP) or Docker + Kubernetes will give you the force for a powerful punch. You can present yourself as either backend heavy or front-end heavy developer and questions will be asked based on that.
Level of Expertise:
For 0–2 Years:
- Python: Basic level of programming. You should be able to write code using loop, conditionals, list, tuple, dictionary, string functions, list comprehension.
- Framework: Architecture of framework, like MVT in Django, project folder structure, settings, migrations, basic ORM quires with filters like getting customer details with customer name starts with “XYZ”.
- Database: Though almost every framework provides ORM so that developers don’t have to learn SQL explicitly. But trust me, if you know SQL and DBMS concepts you will be able to write better ORM and design better-normalized tables. So basic SQL queries like finding the second best salary of an employee, Joins, Normalization concept, the ACID property should be enough for now. W3Schools will be a place where you should start.
- UI: Working with forms like Login workflow in Amazon or Flipkart, image sliders, tabs, navigation bar, dropdowns, radio buttons. You need to focus on Bootstrap as the market is all about the mobile-first approach. Hence you need to understand the grid concept of Bootstrap. For CSS you should be good with basics and some concepts like the difference between display: none & visibility: hidden, z-index, Position: relative/ absolute/ fixed, etc. W3Schools is the place to learn these things.
- Java Script: Understand what is DOM. How JS playing a role in frontend and manipulating HTML and sometimes CSS. Selectors, events, creating UI by iterating through JSON data, sorting and filtering the data by keywords, etc. If you are a backend heavy developer knowing vanilla JS or jQuery should be enough for the interview. But if you are a frontend heavy guy then you need to know at least one framework like React or Angular. Mostly with Python we use React. So knowing some concepts like component, reducers, store, actions would be enough.
And relax you are just a 2 years kid. You don’t need to be very very good at things. If you are, then it’s good for you, but it’s ok if you are not.
For 2- 4years:
After two years the concepts will be almost the same but the questions will not be as direct as for 2 years developers. For example
- Can you convert [1,2,3,4,5,6,7,8,9,10] → [4,8,12,16,20] using list comprehension ?
- Can you write me a function that will return a list whose elements are double of even elements of the input list?
Here the first question will be asked directly to 2 years of developer. But for 4 years people the second question will be asked and there you are expected to provide multiple solutions using list comprehension as well as (map + lambda) and please don’t start writing for loops, you may get rejected at that point.
Some extra features you need to know :
- Python: Deep copy & sallow copy, regex, exception handling, working with REST APIs, file systems, lambda, map, filters, reduce, decorators, module, and packages.
- Framework: For Django, class-based and function-based views, how request flows from the URL to DB and which are the files it goes through, how it gets processed, Django templates and static files, middleware. Basic concepts of Django Rest Framework like serialization, request & response, class-based views.
- Database: Stored procedures, triggers, indexing, database anomalies, and some basics of designing. Like, create a database for a college library, or hostel canteen.
- UI: You should be able to develop UI like amazon.com or Facebook where we have pop-ups, dynamic dropdowns, hover effects, likes and comments, charts, maps, etc. Good understanding of bootstrap and its classes.
- Java Script: Ajax, sync and async execution, promises, lazy loading, plugins like date picker, google maps, high charts, google charts, text autocomplete, etc. Hooks, component lifecycles, state management. If you know Redux then it will give you some edge.
For 4–5 years:
- Python: Class and object, iterators, collections, pickling, packages like OS, pandas, Numpy, pillow, beautiful soup
- Framework: Session management, Cookie handling, File uploading, application logging. If I have meshed up with my migrations then how should I debug and fix it. Django Rest Framework: Generic views, viewsets & routers, pagination, filtering, caching, throttling.
- Database: Tracing the time delay of queries/ joins/ stored procedures, debugging tools, migrating data from one DB to another.
- Frontend: Working with LESS/SASS. UX related ideas so that you can present more information with fewer page scrolls or clicks. Bootstrap 4 is needed as you might be working with a node-based application.
- Java Script: Session storage vs local storage vs cookie, Material design. You are expected to be very good at debugging. Coding experience in typescript is needed now these days.
Additional Stack: We normally focus on two sides of development, frontend, and backend. But now, as the way of web development have migrated from three-tier architecture to microservices and serverless computing, so once you hit 4th year you will be expected to know Docker and at least the basics of Kubernetes/ Docker Swarm.
If you don’t have prior experience then I would recommend Docker Tutorial for Beginners and suggest trying to build some Docker Images of your own. This tutorial will be enough. It’s a very easy concept to understand if you already worked in virtual environments in Python.
For Kubernetes, I would suggest Kubernetes Tutorial for Beginners. This tutorial will be enough. It’s ok if you don’t have hands-on but you should be able to understand the concepts like Pods, containers, ingress, configmaps, secrets, and how the container orchestration is happening.
Note: Don’t learn Docker and Kubernetes in one go. Give some time break between the two learning curves otherwise, you will get confused.
It’s ok if you are not very strong in Docker and Kubernetes but make sure you are very good at one side (front-end /backend) and at least above average at the other side to be selected in the interview.
More then 5 years:
- Python: Concepts like multi-threading and multiprocessing, socket programming, visualizations libraries like Plotly, bokeh. What are the new features that Python has introduced, like recently in 3.10 switch case was added.
- Framework: Should understand the difference between multiple frameworks and when to use which one. Working from scratch and setting up the DB and integrating with frontend, designing the API endpoints, deployment in any server inside the cloud, the configuration of WSGI, etc. Good knowledge in DRF and different ways of development like function-based views, class-based views, Generic views, and viewssets + routers. You need to understand each style and when you should use these ways for which business cases.
- Database: You should be able to do data modeling, storing data in a scalable way. Need to understand where you should use stored procedure and where you should use joins and be careful of over-engineering or breaking the DB into more tables than required.
- Frontend: Designing a wireframe with different pages and workflows. You need to understand the business requirement, UX rules, and end users’ feedback.
- Java Script: Need to be proficient in at least one framework and should have knowledge with others as well. You should be able to decide which framework to use for the project. For example, if you have a business application to develop which is very professional, simple in design and not very fancy like an e-commerce website then you can use jQuery or vanilla JS. You don’t need to use React/ Angular for this. It will be an wastage of efforts. If you have an application like Facebook where one image is being shown in different places at the same time like on the home page, profile page, shared posts in others profiles and we need to make the number of likes consistent across all the locations in this case state management will very help full. Because when you update the state the UI will be changed automatically. But if you use jQuery to achieve this you need to manipulate the UI in three places using DOM selectors by yourself.
Additional Stack: Once you hit 5th years of experience, you will be expected either to be able to float in Cloud OR good experience in Docker+ Kubernetes.
For Cloud either you can go for AWS or Azure or GCP. If you understand one cloud provider rest will be easy, so it doesn’t matter which one you choose to learn. But I would suggest, go with AWS as it is used by more than 30% of the market, and it’s easy to find solutions for issues as the community is huge. If you don’t have prior experience in the cloud you can go for a basic level certification like Solution Architect Associate in AWS and this will be enough to showcase your cloud knowledge.
If you are at a basic level in the cloud then make sure your Docker and Kubernetes skills are at least above-average level. So you can choose either Cloud or [Docker + Kubernetes] to be selected in the interview. Any one of the options needs to be full filled.
Note: It’s ok not to have certification for Kubernetes if you are a developer, but if you are trying to change your profile to Sys Admin/ DevOps Engineer then I think Kubernetes certification will add wings to your profile and for developers, any cloud certification (Ex: AWS Solution Architect) would be doing the same.
Apart from this some of the additional observation that I have which may help you in the interview to present you as a more mature developer.
- Evolution Python: We used to use Python mostly for scripting or big data processing. But the game changed when it entered the domain of Web Development. Till then Python was staying behind the picture but as now it has a face to show, it’s at the second position in the race just behind Java.
Every second is generating data and business needs applications that have rich UI, business intelligence, big data processing, analytics, AI, data lake, etc. So when we consider all these options Python becomes the go-to language in the current market.
- Django vs Flask: Django is a bigger framework than Flask and Flask is very lightweight and simple made for API development. You can develop any application using either of these. But you need to understand the proper usage. If your project needs to have a lot of modules and packages, wrappers and inheritance, but with a simple UI using JS or jQuery and API endpoints for external users then Django is the option for you. It has middleware where you can put application-level functionality like user authentication. Classed-based views that will help you achieve CRUD operation in 2 to 3 lines of code. Templates and Static files can be used for UI development. The moral of the story is for a complex project choose Django. But if you only need to develop API endpoints as microservices that will be consumed by your React app then Flask + SQL Alchemy(ORM) is the combination you should opt for. Flask also provides pluggable views which are like class-based views in Django. But it doesn’t provide any inbuilt classes like Generic class-based views which we can inherit and build REST API for a table in a single line of code. Another downside of the flask is, it doesn’t have a particular project folder structure. I mean when we set up Django, it creates a settings.py file for all the application settings, views.py for creating views, and many more. Flask doesn’t have any protocol like this. It just creates one file app.py and we need to run it.
In a way it is good as it provides flexibility to the developers to choose the structure as they like but when a new developer joins the team we need to give them a proper KT about the files and settings. But in the case of Django, it is self-explanatory.
- Bootstrap 4: If you observe Bootstrap 4 and its set of classes, it is trying to reduce the dependency of CSS. Like mr-4 which adds margin-right: 4px, text-lowercase which is a replacement of text-transform: lowercase, fw-bold which is a replacement of font-weight: bold. Like this, the classes are introduced in version 4.
So if you are good at Bootstrap 4 you will be using very little CSS. Your HTML code will be self-explanatory about the color, size, shape, and positions and as a developer you will not be switching between CSS, JS and HTML more often.
- Java Script is a chameleon: Working on server-side and database is very easy compared to working with JS and its frameworks. Java Script is the most dynamic domain of web development. From 2014 to 2021 Angular has upgraded from V2 to V12, which means 10 versions in 7 years. The code which is working right now may not work tomorrow because JS commands/ codes depend on the browser and its property. A browser needs to support the feature/ code/ command then only it works. That’s why sometimes we need to write different code blocks for different browsers. So it may happen that the code you have written today is working and you went to bed to sleep like a baby and while you are sleeping the browser’s company released a new version which has some updates and removals in its property. So tomorrow when you wake up and deploy your changes to the server it will break. This already happened to me. So you never know when JS will turn its back on you.
I hope this article helps you in your preparation and if you have some observations like this feel free to put in the comment so that I can also learn something from you.
Happy full stacking and All The Best …