Starting Software Development — from a Noob to Professional | A Noob’s Story
To clarify, am still a Noob at it. But am professionally a Software Engineer now so wanted to share my journey of the same.
How it all began…
When I began back at my college, with all the bulk of content on Medium, YouTube and other sites, getting my head around all the technologies, finding a perfect guide which said where to begin was a distant dream. Like most of you, after a day of struggling around, I said NOPE !!!.
But as a person with low interpersonal, communication and interaction skills, it felt the safest job option. And with people around doing Competitive Programming and hackathons and doing freelance stuff, it jogs your curiosity more than enough to have a look at it yourself.
And though I loved programming, competitive programming or just practicing Hackerrank, Hackerearth, Leetcode was not something that interested me. Though I did them occasionally, solving a real world problem with a full fledged software (and also I wanted to earn money while doing so) was what interested me more. How a software is built, how encapsulation & polymorphism takes place in real life, how itself hackerrank was built — the questions kept going on. So if you are someone who finds Hackerrank & Leetcode boring, this post is just for you.
Note : This doesn't mean you should not refer to this sites. Practicing programming is really essential to SWE
There weren’t many people I knew at that time who were avid SWEs and who could guide where to start. As a result, I started assimilating every article I came across. Really backtracked my way to the beginning, started of with React Native (Understood nothing but at that time it was trending & Google showed the top results on it), then found out really needed to understand React to understand React Native. To understand react needed to understand JS. This started the journey. Once you start of with JS it will automatically introduce you to its co-conspirators — HTML & CSS.
HTML was a good experience….. nothing much rather than writing tags, isn’t it? (Reality hit hard 4 years after…)
And then came CSS…. and tbh this is how I felt….
And then came JavaScript…. now with a little bit easier to understand having killed its co-conspirators…. And well it was lovely ❤ .
You are facing a similar kind of situation like the above?
First Steps…..
Start off simple… ravage through this multiverse of data and find out how a software is built, produced, maintained. Just read, you don’t need to note or remember anything. They will come back at the right time (Just like you take in your syllabus all in one night before the exam and during it magically everything falls into answer sheets).
- Start of with HTML, CSS and JavaScript — Believe me not only in Web Development but this 3 will be building blocks of whatever you come across. And keep your programming skills honed (obviously for developing your software’s business logic). Remember there’s no software without a User-Interface. Even a simple website may not have a Backend service but will still be useful and attractive with a beautiful UI and of some use.
— Believe me a div will always flex - Use W3Schools — There’s not a better website to get started on HTML and CSS apart from this. The best part of this website is probably its try it yourself playground.
- Think of a small project to get started with. Not a notepad or to-do list, too many examples around to get you distracted. Something which is small and will take your research and dedication and not many examples around — will require your hard work and dedication. If nothing comes to your mind then take an example of a real world software making millions at that moment. For me it was BookMyShow. Obviously don’t aim at all the features the software has. Figure out one feature that you like most and try to replicate that. For me it was the seat selection feature. I will briefly describe what intrigued me most.
BookMyShow has many features — one among them is the seat selection feature. The most interesting part of it is, for a movie, there are hundreds of theatres with hundreds of different seat layouts that shows the movie. Think of it…
Some helpful resource to start with Frontend Development
Once you get a basic understanding of the above three, namely — HTML, CSS, JavaScript, you could try the below free of any cost. Or you could go with a Udemy of course. I tried the previous and could gladly say I haven’t spend 1 single buck towards learning any sort of skill.
- Once you get familiar with manipulating DOMs with JS, try out jQuery — Undeniably called the best JS Library with extensive use in softwares around the world. Have a look…
- Try out Bootstrap, CSS will look much easier to implement — This framework by twitter has probably the easiest learning curve. Creating responsive designs will now look much easier and your code will have less position absolutes and negative margins ……here…
- Always keep MDN docs handy. Like W3 schools, you would find very well fabricated learning materials with all details of browser support and in depth explanation of all core concepts and APIs.
- If you are starting with React, my favorite tutorial is that of Mosh’s React Beginner Tutorial . In 2 hrs, you should have a pretty clear understanding of how to start React. Also if you aren’t comfortable with ES6, before you start with React, take this crash course by Mosh itself. Should set you up perfectly for the React Tutorial.
- If you want to crack JS interviews and have in-depth understanding of JS, check out Akshay Saini’s Namaste JavaScript playlist. My only regret was not finding this playlist early in my days. I can bet, JS can be tricky sometimes but once you go through this, you would see the bigger JS picture and better debug your code.
- Keep a habit of learning techs through their dedicated docs. Most of us skip them and go in search of videos, but most widely used tech stacks have pretty well fabricated docs. A single place where you will find everything that package or API is capable of throughout.
- Experience plays a great role in your skillset. No matter how much you read, practice and do stuffs, you would never come across few things that experience brings — time constraint, team work, handling massive software, system designs, and my favorite, knowing when, what and how to handle a specific situation, be it on code or a product discussion.
So keep practicing, and keep experiencing…..
Backend Development
Developing backend services can be tricky at first. You’d have to setup your environment, IDEs and lots of stuff. Well that’s most of us think at first.
Here are a few things about it-
- Backend development is easy if you get your head straight as to what you wanna achieve.
- There are a lot of technologies and you might ask yourself which one to learn and start with — Node, Java, GO and many more…
- Node is the easier one to start with in my experience, goes well with React and JS based frontend, easier to setup, and fairly easy learning curve. If you want to build a college project or a freelance project full-stack, check out ExpressJS. Check out this playlist…
- Any frontend stack can go with any backend stack, so ultimately it depends on your Application which you wanna choose. Research a bit on your type of application and decide its best Architecture and tech stack
- MERN stack is a very used word nowadays and have been for quite sometime, but again Mongo in M can be replaced by SQL as S. So it again depends on what type of data you are expecting to deal with.
- Java based backends take much more time in setting up than Node based backends and also comes down to the fact that most java based applications uses IDEs for local setup.
Few Tips that might help
- Before starting with your backend code write, figure out your data — type of data, structured or unstructured. Figure out your ER diagram, optimize and setup your DB first. Take into account the best practices while designing your DB and modelling your data.
- A suggestion for data modelling — whatever application you make, consider the closest big software out there in the market similar to your idea. You could take reference from the ER of that application — there are lots of ER examples out there. A good data modelling could lay the foundation of your software being the next big thing.
- If you are considering to make Java as your backend tech stack, consider using IntelliJ as your preferred instead of Eclipse. IntelliJ is much faster and reliable than Eclipse and will be not responding less…
- If you are considering Java, you might well go with JSP and servlets to start off. But with React or any other JS based frameworks as your frontend, Spring Boot might be a better choice given that you have a sound understanding of Maven.
- If you are into Mobile Application Development — with each passing day, native applications are being backdated and hybrid applications are the trend. You can consider React Native or Flutter. Or you can build your mobile first website with React and inject your code into an android or IOS core with a inbuilt browser and JSBridge to interact with native elements( The latter is the trend nowadays with big products — check out Hybrid Mobile application suites and SDKs out there).
- If you have hardware constraints like I had (old & slow system), consider using cloud based solutions. Personally I have used Heroku and Firebase . But I prefer Heroku more as it gives much freedom on your application development as to support of custom tech stacks and is integrated with Git which makes it easy to use. Firebase on the other hand is a closed ecosystem with its own backend services and custom database-Firestore.
- When you are early in your days, keep some idea on distributed systems, microservices architecture and MVC pattern. This are some of the most commonly used terms that you would come across.
So……
If you are here that means you are interested in developing applications for a better world. The world of software engineering is huge and you can never learn everything. But once you have the big picture, whatever and whenever situation requires you, I bet you will be more than ready for it.
All the above links that I have shared are curated based on my personal preference which I used to help myself through this journey. Feel free to suggest and refer any other better content out there.
Well there will be times when you will want to break your keyboard and your head but again it comes down to your affinity and perseverance because both these two are very much required in this field.
Will be bringing forward some specific tech stacks related content soon… But until next time….
Sailing in this Sea of Software ….
Bye fellow Sailor….