Software Process
Something I have been struggling to understand is why some developers dislike courses that attempt to teach the software process. Apparently these are considered a “waste of time”. I would like to take a moment to give you reasons as to why this is important learning material.
Working together
I have reached the end of my time at university and while I have learned so many things, the most important of these is how to work with others to build software. There are a number of courses that teach the basics of languages such as C, Java, Python, JavaScript and other web languages like PHP. I feel like I have come out with a good knowledge of each, but it is important to remember that these languages are really just the tools we use to make great things.
Languages are the tools for building great things.
Courses with a focus on teaching these tools are very important but, for the longest time at university I was wondering how people effectively work together to actually get stuff done.
Collaborative process
I have been learning a lot about how to collaborate effectively through several courses at University. The biggest improvement to my learning was picking up git and getting started with Github. Git is the defacto “let’s work together” piece of software that everyone knows and loves, but there are more people need to start using early on.
Using tools
I found myself working in a pretty standard manner for each group project in my final year. We would always setup Slack, Trello and a GitHub repository and use all of these to work together.
Trello really is invaluable for working together. Github recently introduced their own project slash Trello board like tracking system and it’s amazing. Trello works in a similar way where you can create small tickets that you assign to people, similar to github issues. Being able to look over these tickets is great for tracking your team. Slack is also an incredibly beneficial chat tool to use.
Agile processes
There are a few courses at university that attempt to teach Agile and the concepts of Scrum. After doing courses like CSSE3002, the software process, and DECO3800/3801, final year design and build, I can safely say I am familiar with Agile. They even put marks towards using your Trello board consistently to operate in this manner.
An interesting thing that I learned this semester was how effective it is to work in short sprints to complete tasks. Setting short periods of time to achieve goals results in goals that are much more reasonable and more likely to be completed. It also gives you a chance to finish a piece of content and get feedback from your client right away.
By developing software in this manner you can get this valuable feedback consistently and most effectively communicate your progress to your client.
Agile feedback
I was asked by one of my lecturers towards the end of this semester for feedback on the use of agile for in courses. While I feel that setting goals for to achieve agile usage is very useful, there is always the risk that it won’t be taken seriously enough.
If this was a workplace and people had spent a long time trying to get a job here, the process would be taken a lot more seriously, small checkpoints and sprints would be adhered to. However, I’m still happy to have had the learning experience.
Finally
Throughout this semester I have had a lot of chances to work with others to accomplish much larger tasks than I would be able to on my own. I firmly believe that these tools and processes have been the reason my group projects have gone so well.