Projects, Databases, and Fun!
How and where to start making fun and substantial projects.
Hi!😃
I’d recommend reading my previous blog on DataStructures and Algorithms before moving onto this one. It’s imperative to have a good hold of DSA before you venture into a project. This is part-2 of the 3-part series of coding interview preparation.
Now that we have covered DSA, let’s jump right in!
What Do You Want To Build?
It’s important to have an idea of what you want to build. It is necessary to weigh in the pros and cons (if any) of what you will end up learning, and how much time you will be investing. It is also important to ask yourself how helpful will it be to learn and use the technology you choose for the Industry and self.
The general choice is between:
- Web Dev
- Mobile Dev
- Desktop Dev
What are the different parts of a project?
A project will always have the following:
- A Front-end (Your UI, UX, and whatever the user sees and interacts with.)
- A Back-end (Your business logic, the background details of how your project deals with inputs, outputs, and calculations.)
- A Database (Where you will preferably store and fetch data for efficient use as necessary.)
These work in tandem and are all equally important. The roles can be split between people; someone who knows all of these and can implement them by themselves is called a full-stack developer.
You should know at least one stack by yourself.
But wait… what is a stack? Keep reading.
Choosing A Stack
A stack is a collection of technologies that are used together to make one whole project.
Some popular stacks include:
- MERN and MEAN — MondoDB, Express.Js, React.Js/Angular.js, Node.Js
- Python Stacks — Using Django/Flask/Python API(for ML) in the backend.
- LAMP — Linux, Apache, MySQL, PHP (The most popular stack albeit more than a decade ago)
- Android Dev — Kotlin, React Native, Flutter
- IOS Dev — Swift, React Native, Flutter
- Desktop Apps — UWP(Windows 10), WPF (Windows), Electron, JavaFX and Swing, Qt (C++), Tkinter (Python).
- Extra — Machine Learning(Deploy models inside apps), Cloud (AWS, Azure, Gcloud), Blockchain (DApps and smart contracts).
Everything is Good, But what’s Popular?
These are some popular technologies that you can play with while you are in college; later on, you will polish and grow your stack depending on your needs and your employer’s stacks.
Web Dev:
The most popular technology use case as you will have your entire network asking you to build them a website. It’s a very vital freelancing technology tool as well. Desktop apps going out of fashion are switching to web apps except for tools, business apps, and games.
- MEAN/MERN — Node.js is gaining popularity in the web development area, JavaScript gaining popularity, it has been adopted by quite a few enterprises and works in all major developments.
- Python stack — Python deals more with BackEnd and templating in the FrontEnd for sending variables to the frontend. Django is a BackEnd framework used to build scalable systems on a python backend; Flask which was released later is easy to prototype in, doesn’t have rigid rules and it’s my personal stack that I use to deploy my ML models in. With this, you can add FrontEnd and FrontEnd frameworks. It is adopted by a few enterprises.
- LAMP — LAMP is still popular with senior coders and sometimes still used in certain service-based companies, it’s good for the knowledge I’d say, to understand the nuances of what all led to web dev in the modern world.
Mobile App Dev:
Mobile apps are, as the name suggests for mobile devices, the app development arena is quite saturated, but based on need, use-case, and innovation, you can build a successful app.
- Android Dev — Java was popular when mobile apps came along, it has been taken over by Kotlin which is also recommended by Google (30 days of Kotlin).
- iOS Dev — Swift is a language developed by Apple for apps that work on IOS. You can build apps on Xcode and use Cocoa-Touch as your framework if you desire.
- Cross-Platform Dev — React Native and Flutter are cross-platform technologies that work on both Android and IOS. Flutter is still growing with the community; React-native is a relevant skill that is employed in a few establishments.
Desktop Apps:
Desktop Apps are popular either as tools for businesses or specific apps for development. eg — Visual Studio Code is built on the Electron framework.
- .NET developers work with UWP and WPF for Microsoft Specific apps. App development has largely shifted to the Internet and Mobile Apps, but some apps such as tools will continue to be built on Desktops for the time being.
- For Apple apps aimed at the Mac, Cocoa is used as its framework and the language is swift (Cocoa-Touch are for all touch-based devices {predominantly mobile devices}).
Java Stacks
There needs to be a note on Java because of how long it has been in the industry. Very reliable and also very diverse, Java finds its way in almost all domains due to its rich ecosystem. It is still used as the backend of many legacy systems so it is definitely worth knowing at least the basics of the language and if you like, you can implement it through App development and more, depending on your choice. Hadoop, which is used in big data os built using Java; Machine Learning has found its way into java libraries and has found blockchain implementations as well. It is an old language but it has been updated as well, which is why it’s still used in backends of big companies.
The Extras
Ah, the fun bits and buzzwords that make us all giddy ie- ML/Ai, The Cloud, and Blockchain.
These are technologies that can be wired into almost all applications on a needs be necessary basics (and if the language has supporting libraries). We will talk briefly about them and why they are so helpful.
- ML/Ai
When a developer thinks of ML, he is reminded of everyone chanting Andrew NG. He is a fantastic teacher when it comes to ML and abstracts away from the Math as it is generally handled in the code. As long as you know the intuition of the underlying math, you will be on the right path to being an ML developer.
Machine learning is popular in Python, as Python is easy to learn and apply as a programming language. ML is easy through python because of the libraries. - Cloud
Cloud technologies focus on doing away with local computing power and pushing all tasks to services that can not only manage it better but will also be economically more viable as the service will manage the costs and specific computing power for you. This also helps in automating pipelines called the CI/CD pipelines. They help deploy apps. AWS is very popular among enterprises followed by G-cloud and Azure. - Blockchain
Blockchain-based development is relatively new. It has its application in building apps about security, transfer of funds and resources, etc. Because of it being a new technology there is a multitude of applications with many not even being necessary. What decides a good application can be charted out through a few flow charts which you will come across when you will learn them yourself.
Alright so we know what exists, but what can we actually build?
Example Project ideas:
There are plenty of online resources to build apps, the best, being youtube. It makes sense to first review someone building an app (from scratch, not some 5-minute copy-paste bonanza. The resource should teach you how and why they are building a particular module.)
These will help build some skills in the technology that you choose. Knowing ML currently is quite helpful and hence if you have time, you can attempt some basic Machine learning and Deep learning projects, but it is definitely not compulsory.
- Basic
1. Blog
2. A Todo List Web app/App
3. Web Crawling/Scraping
4. E-commerce mobile/web app ( only add-delete products; add to cart)
5. Face detection ML model + UI - Advanced
1. PathFinder/Visualizer (Dijkstra’s Algorithm, A* algorithm)
2. E-commerce mobile/web app (payment gateway, order tracking, etc.)
3. Sentiment Analysis ML Model
Git (Version control system)
A version control system lets you keep track of current and past versions of your project. It also lets you collaborate on the same project where each coder has a different module to finish and it can all be merged during the code reviews. It is important to learn Git and a very important skill to get used to, so I will recommend learning the basics and implementing them while making your projects.
Resources
It won’t be feasible to add all resources for all these technologies, what I would recommend, is that you search online for “best resource to learn <technology>” and pick whatever seems appropriate. You can always start through good youtube tutorials eg — freecodecamp, and more to build your projects.
Concluding
Projects are the fun part of coding, the day I completed building my first real-world Web App was when I had a thought “I can build what I want from thin air, I’M GOD”. Every coder who is passionate about coding must’ve felt this at some point and it is what drives you in your career.
Project Development has development life cycles, good coding practices, deployments, and more that you will learn better when you join the industry. It is not necessary to know of this beforehand, and it’s best learned on the job during training.
Something important that you should keep in mind is that you will be working in teams. More than individual technical skills, you are required to be really good at communication and also have a good hold on your soft skills. Communication and soft skills are all tested by your recruiters throughout your interview rounds.
For this very reason, the next blog talks about that! So let’s head over there :)
Do not hesitate to contact me with doubts.
You can reach me through LinkedIn or by mail.
shreyansh.chheda@gmail.com
If you found this insightful do share it, send in some applause👏.
Thank You!