My Experience as a Remote Volunteer Software Engineer at Sustainable Education Foundation 🌍
Hello everyone,
This article shares my experience as a remote volunteer software engineer at the Sustainable Education Foundation (SEF) over the past six months. When I joined SEF, I had just started my second year as a Software Engineering undergraduate at the Open University of Sri Lanka. I had theoretical knowledge and had created a few applications using different technologies like Go, ReactJS, and NodeJS. As undergraduates, we study theoretical aspects of software engineering, but practical experience is essential to gain a deeper understanding of the subject.
About the Organization
You can learn more about SEF in the resources section at the end of this article.
Finding SEF and Getting Started 🔍
As an open-source enthusiast, I was looking for a project to contribute to. I found SEF because I had previously applied as a mentee for their ScholarX mentoring program. I explored their website, reviewed the people behind the project, and read their handbook to understand how to get involved as a volunteer. The handbook was well-maintained and provided all the necessary information for new volunteers. After a bit of research, I decided to get involved and cloned their ScholarX repository, which was under active development.
First Contributions 👨💻
My first GitHub pull request (PR) was a small fix in the ScholarX frontend repository's README file, which added instructions on setting up the frontend repo in a local environment. I identified the issue, opened a PR, and it was merged, ensuring that future newcomers wouldn't face the same problem.
My second contribution was particularly interesting for me. At that time, I was learning Docker and containerization. I decided to Dockerize the ScholarX backend codebase, which uses a PostgreSQL database. I opened a PR after Dockerizing it, and it was accepted. I was thrilled to start contributing as a software developer.
Second PR (opens in a new tab)
Progressing in My Role 🚀
My journey progressed from fixing minor issues to becoming a member of the main engineering team. I consistently joined weekly standup meetings and had the opportunity to share my thoughts with the team.
An exciting part of my journey was developing a new feature for sending bulk emails to mentors and mentees through the ScholarX platform. I took on this feature, even though I had no prior experience with production-level coding. I was learning the Go programming language at the time, and the team was okay with me developing the email-client API using Go. I successfully implemented the API, and it is working well. I also created a simple UI for it.
Email-Client-API (opens in a new tab)
Lessons Learned 🧠
Through this experience, I have learned significantly more compared to when I was just a Software Engineering undergraduate. Here are the key lessons and insights I gained:
-
Practical Experience in Open-Source Projects: Working with SEF has given me hands-on experience in contributing to open-source projects. This involved understanding the project's codebase, following coding standards, and collaborating with other contributors. It taught me the importance of writing clean, maintainable code and the value of community-driven development.
-
Communication with Teammates: Regularly participating in weekly standup meetings and discussions with the team helped me improve my communication skills. I learned how to articulate my ideas clearly, provide constructive feedback, and collaborate effectively with remote team members. This experience emphasized the importance of clear communication in a distributed team environment.
-
Coding Best Practices: Contributing to a professional codebase introduced me to best practices in software development, such as code reviews, version control, and continuous integration. I became familiar with tools and processes that ensure code quality and reliability, which are essential for production-level software development.
-
Problem-Solving and Debugging: Working on real-world projects presented me with various challenges that required innovative solutions. I learned how to approach complex problems, debug issues, and develop efficient solutions. This experience enhanced my problem-solving skills and boosted my confidence in tackling difficult tasks.
-
Learning New Technologies: During my time with SEF, I had the opportunity to learn and work with new technologies, such as Docker and Go. This experience broadened my technical skill set and demonstrated the importance of continuous learning and adaptability in the ever-evolving field of software engineering.
-
Project Management and Time Management: Balancing my responsibilities as a student and a volunteer software engineer taught me valuable project management and time management skills. I learned how to prioritize tasks, manage deadlines, and stay organized, which are crucial skills for any professional environment.
-
Understanding the Open-Source Community: Being part of the open-source community has been an enriching experience. I witnessed the collaborative spirit of open-source projects, where people from different backgrounds and skill levels come together to build something meaningful. It reinforced my belief in the power of collective effort and the impact of contributing to open-source initiatives.
Overall, this experience has been transformative, providing me with practical knowledge, professional skills, and a deeper understanding of the software engineering field. I am excited to continue this journey and look forward to the opportunities and challenges that lie ahead.
Tips for Aspiring Open-Source Contributors 💡
- Be Curious: Ask questions and never stop exploring.
- Research Extensively: Utilize the internet to learn and solve problems.
- Experiment and Seek Feedback: Try out different solutions, get feedback, and understand others' perspectives.
- Accept Challenges: Push yourself to take on new and difficult tasks.
- Keep an Open Mind: Be receptive to new ideas and approaches. Share Your Work: Discuss your projects and progress with friends and colleagues.
- Always Believe You Can Do It: Confidence is key to overcoming challenges and achieving your goals.
Conclusion 🌟
This is my experience so far, and I know the future holds even more opportunities for growth. Volunteering at SEF has been incredibly rewarding, allowing me to contribute to meaningful projects while growing as a software engineer. I look forward to sharing more in my next article and continuing this journey of learning and contributing.
Please check out the resources below if you're interested. See you in my next article.
Resources 📚
- Sustainable Education Foundation (opens in a new tab):Learn more about the foundation and its initiatives.
- Join with us (opens in a new tab): Read more about how to join with us.
- ScholarX Mentoring Program (opens in a new tab): Explore the ScholarX platform and its mission to provide premium mentoring assistance.
- GitHub Repository (opens in a new tab): Visit our GihHub repository.