1 year of Projects’ Development: A Developer's perspective👨‍💻

cyber-venom003
IIITians Network
Published in
9 min readJun 2, 2021

“Failures are the best coaches, because they teach you where not to lack.”

Introduction👼

Howdy Fellas😇!! I’m back with my another blog after a long time. Before starting, lemme give the first-time readers a brief intro of mine.

Myself Tejas Agrawal👦 (alias: cyber-venom003), a pre-final year undergraduate student at the Indian Institute of Information Technology, Allahabad🏫, an open-source enthusiast, and technology explorer of all time.

As the title suggests, I wanna share my experience of one year of my college life with you people. The thing special about this year is, that I was completely indulged in exploring the world of information technology by learning new frameworks, making some cool projects, and contributing to open-source software also.

How it all started

My development journey started in December 2019, my first vacation after my introduction to college. Some of you might know that my college is famous for its competitive programming culture after the legendary Humblefool. In my first semester, I was introduced to competitive programming by my college seniors. I found it interesting, I did it for almost 1.5 months, but then, I got carried away in the fun and enjoyment of college life xD.

Due to this break into my competitive programming journey, I never started it again due to lost interest in it. And just like most of the other college students, I got stuck in the following dilemma:

So, as I said, I love to explore new things, I chose the path of development. In December 2019, I started with Native Frontend Web Development(HTML, CSS, JavaScript). I found it much more interesting than competitive programming because, I can see my code taking the effect in real life(web browser, precisely). Besides this, I also started learning one of the famous version control tools Git, and source code management platform GitHub, and I found both of them as one of the most interesting things in this virtual world. Git and GitHub were just like magic for me because they enabled me with the following:

  1. Sharing my projects to other people so that they can see and run them on their systems.
  2. Collaborative working feature with other developers which gradually introduced into the World of Open Source.

Sticking on the path of development🚧

So, after getting started on the path of development, I was learning things at a quite good pace and then, I got an opportunity to participate in OpenCode IIITA: A month-long program starting in January for students to start their journey in the world of open source.

As I became quite proficient with Frontend web development by learning them in vacations, I learned further to contribute to open source projects by claiming issues and making pull requests.

My first Pull Requests during OpenCode’20

I also got fascinated by knowing about GitHub Contribution Count, which gives that lovely green dots on your GitHub profile🤩. Those green dots motivated me to remain on the path of development.

Exploring new things🤠

So, as I was motivated to stay on this path, I explored new things, like development frameworks, open-source student programs, and pretty other stuff of the same kind.

I also came to know about GSoC (Google Summer of Code): an international annual program in which Google awards stipends to students who successfully complete a free and open-source software development project during the summer.

After getting to know the perks of GSoC from my seniors who were selected for this, I was very much motivated to learn in order to get selected for GSoC’21.

After learning Frontend web development, I learned Backend web development, which fascinated me much more than frontend. Because the backend is one that is purely based on business logic. I learned Backend by using Express.js as a web framework and MongoDB as a database.

After learning this, I moved to mobile application development. I started to learn Flutter: A cross-platform mobile development framework by Google. I made my first Android App “Cook Blog”: A blogging application for foodies and cooks to share their recipes, using Flutter.

Some snapshots of Cook Blog

Contributing to Open Source👨‍💻

After learning plenty amount of skills, I contributed to many open source projects, mostly in form of Pull Requests, but also in form of issues and code reviews. I majorly contributed during HacktoberFest by Digital Ocean and Script Winter of Code by Script Foundation.

My Pull Requests during Script Winter of Code

I learned a lot by contributing to open source. I got to know how these frameworks and all work in real life(production environment, precisely). I learned how to deliver a better UX and how UI/UX affects the user engagement of the platform. I learned about bug hunting in a codebase of an open-source project. I learned about code writing conventions, best code development practices.

Lastly, I learned how to read large documentations of some frameworks and how to search for the solutions on StackOverflow xD.

Encountering Failures🥺

Just like a riveted part of everyone’s journey, failures were also destined to happen with me also.

Failure #1:

Not getting selected for MLH Fellowship Spring’21

The MLH Fellowship is an internship alternative for software engineers, with a focus on Open Source projects. Instead of working on a project for just one company, students contribute to Open Source projects that are used by companies around the world.

I applied for the MLH Fellowship Spring’21 batch. My application got shortlisted in the first round. I also cleared by behavioral round also. In a technical round, I was answering the questions of my interviewer very confidently. I left no stone unturned from my side. But there was something else destined for me:

Failure #2:

Not getting selected for GSoC’21

As I introduced you to GSoC in the above sections, you can get the idea that I was going to apply for it. I applied for GSoC’21 at Palisadoes Foundation. Again, from my side, I left no stone unturned. I contributed to the organization through some pull requests and issues, I regularly reviewed the codebase which was constantly changing due to pull requests of fellow developers aiming for that organization. I made a very elaborated proposal for integrating the chat feature in their existing Flutter application. But again, I faced failure:

Overwhelmed with sadness, a natural human emotion that triggers after some subsequent failures, I asked organization mentor if there were any unnoticed shortcomings from my side. My mentor from that organization gave me an elaborated review, which just made me calm down.

Conversation between me and my mentor at Palisadoes Foundation

Priceless learnings from this 1 year of journey😇

So, as I said I learned many things in context of development as well as life during this 1 year of the journey, I would like to share them with you readers.

  1. Always try to integrate your project with some source control manager like Git and keep them on some Git hosting platform like GitHub or GitLab. Always make a good README.md file and add a License to your project. This would help you in showcasing your project source code during interviews.
  2. Make a habit of writing automated tests for your application. Try to use those tests before every commit. This method will prove very productive during the entire project development because you won’t have to hassle with manual testing. For Node.js projects, you can use mocha.js or jest.js. For python based projects, you can use PyTest.
  3. For the frontend part of applications, always try to make a state-of-art UI/UX. UI/UX, in a layman terms, can be said as “Look and Feel” of the entire application. An application with a bad UI/UX is equivalent to an application offering bad performance. If you are not a UI/UX designer, you can try to take inspirations from Dribbble and Behance.
  4. For backend part of applications, always “containerize” or “dockerize” them, so that other developers can clone it and run on their platform independently without any missing dependencies. Containerization can be done also for complex frontend applications which are built on some framework.
  5. Always try to learn some basics of DevOps so that you can deploy your projects in a production environment (real-world environment, i.e. real live servers) so that people can actually use it and you can showcase it somewhere.
  6. Never afraid of any type of errors. Always remember that you won’t be the first one to encounter it, so try to search it on google and find the relevant StackOverflow answer or Github Comment thread for it.
  7. Always refer to documentations if you are stuck somewhere. Documentations also help in the removal of deprecation warnings and errors.
  8. Try to come out of failure depression as soon as possible. It is a normal human nature that we feel low after a failure, when we work hard for an opportunity. Remember the quote said by Napoleon Hill:

“Every failure brings with it the seed of an equivalent success.”

9. Don’t afraid of getting feedback from your interviewer or mentor after getting rejected for an opportunity. Getting feedback will make to aware of your lacking and shortcoming. Feedbacks enable to you improve upon yourself and come back stronger than before.

What I missed in this 1 year😓

The major missing I feel in this 1 year of the journey was the knowledge of basic Data Structures and Algorithms. As I said, I left out from Competitive Programming due to loss of interest, I never tried to revive that interest after getting into development. Due to the result, I missed out on the knowledge of basic optimization techniques that can be proved useful in development also.

Application of the concepts, that are learned in competitive programming can be proven useful when we try to improve the performance of a project. So, it took me a very long time for learning the performance improvement of a project.

My say in Competitive Programming vs Development🧐

Competitive Programming is equally important just like Development. Development enables you to learn how things work in the real world in form of projects and platforms, similarly, Competitive Programming helps you to develop skills for finding efficient solutions to some complex problems.

If you are uninterested in competitive programming just because you think that CP questions would not be there in real-world projects, then lemme clear this misunderstanding, that CP questions help a lot in real-world project development also. The skills that you learn while doing CP questions(like, solving an O(n²) time problem in O(n) time) would help you a lot in improving the performance of your project.

My say would be, that both are equally important. So you should choose any one according to your interest but should also try to build up interest in other also. CP should be much considered as a habit rather than a task. Make a good habit of giving CP contests(like CodeForces weekly contests and CodeChef monthly contests) try to solve contest problems in given time constraints. Check editorials of questions after the contest to learn from your mistakes. All this will help you to build up your problem solving skills which would reflect in your project performance.

Continuing the Journey🎉

The journey is going on!!! Currently, I’m working on Project COMET, an ecosystem comprising of different platforms for connecting, collaborating and competiting with developers around the world. With the learnings I’ve acquired in this journey till now, I’m also learning Competitive Programming and Data Structures and Algorithms to strengthen my logic thinking ability and to learn optimization techniques. Also, I’m always eager to learn new things, hence seeking for learning new skills also.🎉🎉

--

--