Skip to content

Instantly share code, notes, and snippets.

@meetmangukiya
Last active September 6, 2023 06:14
Show Gist options
  • Save meetmangukiya/391558e43346ec32848f44a5f41aac2d to your computer and use it in GitHub Desktop.
Save meetmangukiya/391558e43346ec32848f44a5f41aac2d to your computer and use it in GitHub Desktop.

I get a lot of questions from relatives, friends, family regarding asking to guide them, their children on how to go forward with a career in software development. This is my attempt at sharing what I did that they could use as reference or to take inspiration from.

Getting Started -- beginnning programming, open source and GSoC

I started my B.Tech. in IT in 2016 at a tier-3(not IIT, NIT, IIIT, etc.) college and with that I had always had the clarity that I am on my own and I need to figure my own way out and not rely much on the college or anyone to guide me through it. Prior to 2016 I had only done some basic level C/C++ coding in my Computer Science vocational course in 11th and 12th.

I got started with python as my first language when my college started, browsing and searching online resources, learning through blog posts, official documentation, books. I have usually strayed and inclined to more reading material than videos. But it varies from person to person and you need to figure out what works for you. There are numerous free resources on the internet to teach you programming.

After gaining some basic working knowledge of programming, I started to look for beginner friendly open source projects to contribute to. I found coala and made my first PR to the project. Coala was a good project with many people to guide beginner programmers and newcomers to the project and they also had many issues labeled good first issue, difficulty/newcomer and the likes. Many projects on github nowadays can be found that flag many beginner friendly issues with such labels. Github's hacktoberfest is one such event promoting and helping people get through their first open source contributions. I stuck with coala community for a year or two thereafter, taking on more and more complex issues as I got more familiar with the codebase, asking questions, hanging around in the community chat.

I had also discovered the Google summer of code(GSoC) program around that time and coala also used to participate as an org. So I decided to put up my proposal and apply for it in the 2017 summer of code. I did get accepted and went on to contribute and develop the project over the 3 months of summer for the coala community.

Open source contributions is a really good way to develop various important skills as a developer:

  1. You are required to contribute to and understand existing code rather than writing everything from scratch. This teaches you how to read and how to not read(do not need to read the whole thing) and how to navigate relevant part of the codebase depending on what you are trying to do. Reading also helps you discover coding practices, patterns, etc. used in a given repo, language, etc.
  2. Get familiar and accustomed to setting up your own dev env for each project, getting used to reading documentation and READMEs.
  3. Get familiar with git and github, project speicific commit and codestyle guidelines, general git flow.

I continued with open source project contributions, exploring more and more projects, languages, frameworks, technologies since and was a quite active opensourcerer for some time. I mentored a GSoC project in 2018 as well. I worked with gitmate.io at the time on their project as a freelance dev after doing the GSoC project. A couple internships at college too.

Freelancing

I then started freelancing on upwork and had my first job in December 2018. Getting the first few jobs as a new freelancer on the platform is usually the most difficult especially as a new programmer with not much experience and projects to show for. I made my profile and mostly linked and cited my open source work as projects and experiences. My first few projects were small projects like:

  1. Doing a python homework assigment of someone
  2. Writing a python API client library for a project
  3. More simple small projects needing API interactions, scripts, bots, scraping, etc.

Landing the first few projects was mostly about being excited for work and taking any and every project that I might find interesting in the slightest even if I had any experience regarding the project or not. I was happy to learn on the job and explore and google my way out of it. They also didn't pay well and you might need to underprice your proposals to land a few projects and build credibility. Of course I was a student and didn't have much experience and had to take small projects as a result to build credibility. Getting into freelancing as an experienced dev would be a different game and probably less hoops.

As a freelancer you need to be independent and good at finding solutions and figuring out problems with the help of internet, stackoverflow, reading documentations, etc. And back in the day we didn't have ChatGPT. Today getting started with ChatGPT at your help and aid is even more accessible.

I did spend a lot of time exploring a lot of things including:

  1. Backend dev using python, node, js/ts
  2. Frontend dev with react, plain html/js
  3. Mobile app development with react-native, native android projects in java(kotlin wasn't a thing until much later)
  4. CI/CD with gitlab CI, github CI, circle CI, etc. from all the open source projects I used to contribute to.
  5. Devops with docker, docker-compose, CI integrations
  6. Consuming APIs for automation, scripts, crypto trading bots
  7. Reverse engineering APIs using network tools, mitmproxy(for mobile app api reverse engineering), reading through obfuscated JS codes trying to make sense of it, etc.

This helped me get a lot of base level knowledge across the stack that also helps with talking to clients about projects and taking on variety of projects. Eventually you will settle on something more specialized and to your liking. But as a newbie and a student I'd say try things out and figure out what you like.

There a lot of places to look for freelance work:

  1. Upwork
  2. arc.dev - know people who are actively getting projects from here
  3. toptal - if you make it through the tests and shortlisting it is probably a good place to start landing clients for longer term project engagements
  4. ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment