One of the things I really enjoy to do is teaching and mentoring.
Besides the regular consulting and courses I do, I also teach Software Engineering at The Ruppin Academic Center and in this semester I also did a “Integrative Software Engineering Workshop”
The workshop objectives were:
1. Let the students experiment with a real software project
2. Provide the students an environment where they could learn new technology by themselves
3. Work on a team with a real software development process using SCRUM
The Learning Process
In the first two weeks of the course the students were divided into teams and each team chose a project they wish to build and analyze the desired functionality as User Stories.
Afterwards, in the next weeks the teams worked in sprints (2 weeks), each sprint had a sprint planning and retrospective.
Most of the students reached the workshop with very few tools in their arsenal – basic C# and basic Data Structures knowledge. They had to learn by themselves and make the decisions after investigating the different alternatives. the only limit was to stick with the C# since this is the language they know.
A week ago the teams finished their project and made their presentations – and I must say that I am very impressed.
Team 1 – Online Trading for Car and Apartments
This team project was a Windows 8.1 App that provided the user the ability to publish Ads that later could be searched and viewed by clients who wish to buy a used car or rent/buy an apartment
The client side of the app is Windows 8.1, XAML based.
The backend runs a WCF Services with DTOs (Data Transfer Objects) as the communication method – the DTOs were mapped to real domain classes using AutoMapper.
All the persistent data was stored Azure Table Storage.
All Uploaded files (images) were stored on Azure BLOBS.
Team 2 – IPublic
This team project was a social Windows Phone 8 that enables user to make everything that related to your night out at the pub centralized and easy.
The app allows you to :
1. Authenticate using your Facebook account
2. Search for pub based on GPS location or other criteria
3. Book a Table
4. See the menu and order drinks or food
5. Request a song from the local DJ
6. And More
The client side of the app is windows phone 8, XAML based.
Initially the team tried to work with Azure Mobile Services but had technical problems, so they eventually worked with ASP.NET Web API as their backend.
The data is stored in SQL Server and Entity Framework is used to work with it.
Team 3 – Lab Technicians Management System
This team already had a real customer when they came to the course. the customer was the owner of a local computer lab and requested a system that could help him manage his technician staff and the computers waiting for a fix.
The requirements from the system were:
1. Manage the the staff – Add/Remove/Update Technicians
2. Manage the jobs – Add/Remove/Update jobs
3. Distribute the jobs between the available technicians
4. Manage inventory
5. Enable the customer to see the hob status.
6. Reports and Salaries calculation (based on amount of jobs per time for each technician)
The team decided to make an ASP.NET project with SQL Server as the data store. they used NHibernate (mostly because one of them already had some experience with it).
This project is now in deployment phase in the customer site!!!
Team 4 – FamBook
This team idea was that sometimes Facebook is more than you want and when your family wants to interact with each other and load pictures and manage family events, another system will be preferred – so they created FamBook.
Their application is ASP.NET Web application that enables the head of the family open a Family account to which he can add family members. each member has its profile page with the family “Wall”. From there, the family member can see or add family events or watch the family albums. family members can post messages to each other and keep everything online.
Besides using ASP.NET they added client side scripting with JQuery and also included Google Maps components to handle locations related to events
These guys and girls learned all this in one semester (~4 months) and they did that all by themselves.
They were skeptic at the beginning and some of the almost gave up in the middle of the semester but eventually they all succeeded and saw what its like to make a software project.
my job was to direct them to right directions and make sure they follow the process – some of them were committed and some of them were less, but all of them made an effort.
I am very proud at what they did and very proud to see the long way they walked. They learned how to search for solutions, what make a good design and bad design, how to debug, how to use source control (sometimes over their flesh), how to integrate their work, how to manage their work and team, how to make code review and how test.
Most importantly they learned that if they wanted they can do it and the results speaks for themselves.