One step for student, one giant leap for developer.
Open source is one of my favorite parts of software development. The idea of people from all over the world, banding together to solve common problems really inspires me. It empowers developers and contributors to do good in a virtual sense. Being able to communicate in a distributed and asynchronous fashion with a community of like minded individuals with the same or more experience than you makes you feel less alone when solving problems. This on top of the feel good moments from helping others with programming issues, or fixing a bug is intrinsically rewarding on its own. Paired with having a living resume of your contributions on GitHub for potential employers, open source software development is a one of the most important pillars of software.
I spoke briefly about GitHub earlier and the concept of having a living resume for potential employers to see. Although that is a nice addon feature, it is not GitHubs sole purpose. GitHub was born out of necessity for configuration management and version control. At one point in time, developers needed to track errors and specific software configurations by hand, which made it difficult when working with others. Working with others with different coding styles and backgrounds also made it difficult to blend group code together. Configuration management helps us track and identify all system configuration and version control helps us manage different versions of a software. Git enables decentralized development and GitHub helps us manage our code repository and host our code. The power of configuration management and version control is in full display for big code bases like the VSCode Project. For this repository, there are over 1700 contributors, 635 branches or versions of the code, and over 5000 issues they are solving and or have solved.
Functional programming was one of the first things I was introduced to in the beginning of my engineering education. We learned how to use the C programming language. While I am grateful for that experience and it has allowed me to pick up other languages easier, I thought to myself, “Man, I can’t imagine creating a whole website in this language”. It was necessary to learn how to create and use functions. To be able to manipulate data a in a specific form into multiple other forms, but using C just always seemed a bit excessive at times. That’s why I’m glad there’s JavaScript. The best part about a functional language like JavaScript is that it doesn’t always force you to think like C. The fundamental constructs required are given to you allowing functions to be used as data, be passed to other functions, and have functions be return values of other functions.
Integrated Development Environments (IDE) are a wonderful tool for editing code. They can be used to identify languages, understand syntax, perform integrated compilation, debug, and many other add-on features. For this semester, we learned intellij idea, which felt like a breath of fresh air. I was spoiled with autocorrects, error detection, and refactoring which made writing code so much more efficient. I could have multiple tabs open at once and even perform CLI commands in the built-in terminal. Anyone who isn’t using an IDE is missing out.
What a journey this has been. While I reach the end of my formal education in undergraduate computer engineering, I begin a new one in software development. I now have the know-how and the fortitude(somewhat) to pick an open source project to assist in. I can write legible code utilizing useful development environments. I can help other developers and get help solving problems. I can navigate through simple coding frameworks and collaborate with a team using agile team management. I am looking forward to failing, learning, and immersing myself in the digital world.