Welcome to the Software Engineering Club! Here, you’ll learn some of the ropes of software development and the various techniques and practices that are essential to having a smooth and successful experience in the field. Below are the club’s 10 tenets that all software engineers should inform themselves of and adhere to so they may best succeed in their personal and career endeavors.
1) Agile project management is key!
2) Take advantage of functional programming!
3) Know the ins-and-outs of your development environment!
4) Follow coding standards! (See also: “Feng Shui Programming”)
5) Stick to following design patterns! (See also: Rules of Creation)
6) Don’t be afraid to use open source software!
7) Explore different kinds of user interface frameworks!
8) Configuration management is important, too!
9) Quality assurance is a must!
10) Always consider the ethics of what you make!
Whether on your own or among a sea of team members, follow these tenets and you’ll be sure to find your own success in the world of software development!
Some of the above tenets have been selected for further elaboration below —or already have a related write-up talking about them! Click on the links to read more about them, or skip to the jump if it’s there! (More sections to be added over time.)
Our number 1 is all about the importance of agile project management in software development. With a growing project scope or adding members to your team, there are so many moving parts to any project. Thus, it is critical that your project has a structure to it that allows yourself and others to keep track of what needs to be done, what is actively being worked on and where, and what has already been completed. This is where agile project management comes in - for example, in the club leader’s Manoa Rainbow Cards project, the team employed the use of a GitHub project board to keep track of the various tasks that needed to be done for the team’s web application.
Pictured: Milestone 3 project board for the Manoa Rainbow Cards project.
By the milestone's completion, as many as 30 tasks were completed by the team!
This project board offered a high level of transparency on each task’s status, allowed for communicating what each task or issue needed for implementation, and made it overall simple to create and design tasks for the team to work on, thereby making it easy to build the project in pieces. This type of agile project management is conventionally known as issue-driven project management (IDPM).
When approached in this way, a project becomes much easier to iterate on and see an overview of it, which helps lead developers to what needs to be worked on next at any given point of the project’s development. Perhaps a task requires more support to implement its features, or causes unintended behavior in other areas of the project - with a system like a project board in place, complete with details and comments on each issue to track their progress, it becomes much easier to target and resolve these issues as they arise, and it is just as easy to create new issue tickets about them for the team to see, simultaneously documenting the needed features, changes and/or fixes. This aspect of this style of workflow is what puts the “agile” in agile project management, and it is why it such a key concept to understand and employ on your journey in software and beyond. When you have a system that lets anyone contribute to the project’s goals in a way that is transparent and easy to understand, you have a strategy that is flexible and ready to take on any challenge that comes its way!
It is often said that the greatest challenge of software development is knowing where to start. That’s why open source software is awesome - when you start with a whole website template or, say, an entire game engine, it gives you an incredible jumping-off point to start your project and chase your dreams! Not everything has to be started or engineered from scratch, and open source software is a great way to get a head start on your goals. It even doubles as great way to learn from others’ code and see how they’ve already solved problems that you might be facing in your own project.
For instance, a JavaScript-based framework that was frequently used in your club leader’s software engineering course was Meteor, which was also combined with the React framework. To accommodate our development stack, this template was supplied so we could get started on our web application-based projects and assessments quickly and efficiently:
This template proved to be an excellent resource that let us jump right into developing or web applications without having to go through all the tedium of setting up a website each time, and helped to share the message that you don’t have to reinvent the wheel every time you want to make a project - chances are, there is an open source project that you can build off of as a base! As long as you build an understanding of how the project is engineered, you can turn it into anything you want. Even the club leader’s Manoa Rainbow Cards trading card game app was based off of the above template!
And if you’re feeling generous, you can even contribute back to the project you’re using, or even start your own open source project for others to use! Overall, open source software is a great way to get started in any software engineering task, and it even has the potential for you to get engaged with the communities that hosted the helpful code.
Whether you are a newly minted member of the software engineering club or a lone seasoned wolf returning to the software pack, do your best to always keep the club’s tenets in mind! It’s a surefire way to keep yourself organized and informed, while even making it easier to work with others along the way.