Last Australian summer (December – February 2015), we launched the Australian Software Factory (ASF) with a small number of dedicated students who participated in the ASF for earning work experience towards their degree program. All of them were enrolled in the Bachelor of Engineering in Software, BE (Software) degree program at the University of Adelaide, Australia. The students successfully completed their internship in the ASF while working on 3 very interesting projects with one project was having clients based in Ireland. The ASF was mainly supervised by my colleagues, Dr. Padraig O’leary, who played a pivotal role in making the implementation of ASF a reality by volunteering to provide projects for the first offerings of the ASF and supervise over the summer break. We were glad that the ASF was able to provide the participants with the value they were expecting in terms of hands on training and knowledge about working on real projects using state-of-the-art software development methods and technologies. Now we are assessing the viability of running the ASF again. Our students participants are the most important source of feedback and input about the value of the ASF and feedback for improvements. We are glad and satisfied with the feedback we have received. I would like to share some of the comments from a few students through these pages to encourage other institutes to take similar initiatives.
Richards says, “The program allows students to be completely hands on in creating software, which I think would be less common when undertaking work experience at an established company. Having the program take place before students enter fourth year gives them a taste of what to expect, and allows them to familiarize themselves with aspects of software engineering (working in teams, development methodologies, etc.) before taking on fourth year projects. For myself, I learned a few different technologies such as bootstrap, ruby on rails, git, and heroku. The ASF provided me with the foundation for expanding my knowledge in these technologies if it is ever required. I think working with a client is quite beneficial in providing students with experience in unfamiliar situations. (e.g. developing software for a client who does not have a programming background, and overcoming the obstacles that are introduced).”
LinSheng says, “The Australian Software Factory gave me an very good chance to learn how to use Grails, how to present product to customer and it also provide me a suitable place for practicing Agile process during the summer such as daily meeting. However, due to insufficient permission to install some software for doing new projects on school machines, we have to bring our own device to school everyday which is inconvenience. Some of our laptops were not providing enough computing power to support various projects and also the more powerful our laptops are, the heavier they will be. Therefore I think it will be nice that if those school machines could have sufficient software installed for those students who may be interested in joining ASF for the coming year.”
Marc shared, “I applied the Agile Scrum methodology on two projects as part of a team. We gained practical experience with Scrum by learning it at our own pace, then working closely together to organise our scrum meetings, define and priorities user stories etc. Another ASF team was learning and using Scrum at the same time as us, so we are able to learn about Scrum from each other. We also had small discussions/presentations with the other team to learn about different software engineering techniques (eg. continuous integration). The first project was an Android app to collect data from health related devices (eg. pedometer) which could be viewed on the Android app or a web application. We demonstrated the final product to the client over Skype at the end of our last Sprint. The second project was a web application for people in an organisation to manage their documents (eg. fire safety policy). People in the organisation can share documents to be reviewed and approved by others, and view the changes made to documents.”
Marc suggested the improvements in these words, “We had to set up a development environment on our own computers/Android devices because we couldn’t install things on the uni computers. Some programs ran slowly on my laptop and we were lucky to have our own Android devices to test our Android app. We had good experience with Scrum, but we didn’t use many techniques like continuous integration, pair programming etc. Also, both groups of students used Scrum but we didn’t explore other options. Maybe one group could use Scrum and continuous integration while another group uses something slightly different: XP and pair programming. Then groups can compare their experiences and learn a bit about the other group’s techniques. The Connected Health project had a demonstration over Skype at the end, which was good experience for showing a product to a client. However, we didn’t have sprint review meetings to demonstrate a prototype for the end of each sprint, which would have been good practice.”
David reported, “As one of the participants of the Australian Software Factory, I have had the opportunity to develop Ruby on Rail applications in an industry environment. From this opportunity, I have gained practical experience in developing software using test driven development, pair programming and continuous integration. The methodology used to develop the software was Scrum which involved having 1 daily and 4 weekly meetings. These experiences have not only made me a better programmer but an effective team member as well. If you have an interest in developing web applications whilst using industry methods of developing quality code, the Australian Software Factory will be a good experience.”
Francis was of the view, “- It was a good way to experience the Scrum Agile process. You get to work your week fully according to your sprint plan, without outside commitments like University. – Padraig’s small research tasks and presentations were a nice way to: i) change the pace from working only on the project for a week ii) practice sharing knowledge to the team- A suggestion I would consider would be to make the project brief be a bit more constrained than how it was given to us. A bit more direction would helped our progress in the early stages. We had both control of the project details AND our Scrum planning, so estimation wasn’t particularly easy. The freedom is much appreciated, but I would’ve like a bit more direction than what we had. – If I were to give a message to future participants, it would be that they use the opportunity and set up correct Scrum practices. It’s not every day that you have a length of time suitable enough to try it for yourself in a test environment like the ASF.”
Fathi reported his experiences in these words, “From my experiences, the factory has wonderfully increase my teamwork skills and taught me how to work professionally as a software engineer in a team based on Scrum methodology. It gives the students advantage to have an environment where it is suitable to apply Scrum the same way the industry have done it. This includes daily meetings, planning meetings and etc (namely the 5 meetings of scrum). Also, the environment enables thorough discussion as the people has more time to work on the project (rather than as a student who has a lot of things on their plate at the same time). Furthermore, there are small events of having to research individually about topics that may help your understanding and may also improve your work on the project, which needs to be presented to the people of the workshop too. Some suggestions of improvement would be a more frequent supervisor monitor, as this would help in concentration and thus speeds up the development process.”