How to Teach Students to Build Good Software as a Team
Our interviewee, Isaac Griswold-Steiner, is a changemaker whose passion for software development and leadership qualities, has allowed him to become President of Texas Tech's Software Development Club (SDC) and land internships at innovative technical companies such as Microsoft and National Instruments. With his advice, we are able to give you advice on how to teach students to build good software as a team.
Isaac is a software developer currently studying in Texas Tech, who learnt to code and found an interest in I&E while working for his startup in India. Although his startup eventually failed, he learned a lot about team designing,management and organizing that help him till date. His software experience includes machine learning, data science, and working with Linux kernel.
NEED AND GOAL
As President of Texas Tech's SDC, there aretwo main goals that Isaac focuses on:
- Making students more appealing to companies by working on projects outside of class
- Preparing students for the kinds of interviews they will face at big technology driven companies
While studying at Texas Tech, Isaac realized the education imparted to the students was not a representation of what is actually demanded in the industries. For instance, the very basis for software developing lies in source control which was taught as a part of syllabus during late years of education in college. Thus there is a difficulty in meeting the industrial standards, students aren't prepared and lack the skills required in an industry. Hence, with an aim to meet the industrial standards, he joined the existing Software Development Club of college. Different strategies like open ended contributions, structured layout for different teams in the club are applied with the ultimate aim of growing the passion of the students, create a student population which tries to seek information rather than stay contented with the redundant information fed to them in classes, and ultimately learns.
Isaac's club is divided into four (4) groups: Introduction to Python, Web App development, iOS development, and Machine Learning. If a club member is new to the Computer Science world, it is recommended that he or she start by joining the Introduction to Python course, and then work their way up to various groups.
Even with keeping these things in mind, the club tries to implement innovation, people pitch in their ideas in the beginning, or while brain storming, innovation or design thinking work is looked upon.This is something which their team is learning to focus on more.
When it comes from permission from your school to start a club or a team it really depends on the campus. Often school are very flexible and supportive of new groups on campus, specially with technology based groups. Every school will have a standard process to be recognized by the school. This can be a beneficial tool that can open up funding and spaces for your group both of which are needed when building solfware as a team. If your club isn't recognized or you feel that it would be better to not be run through the school, that's fine! Often change needs to happen outside of the campus administation and the need for a software building group may arise. However, if you do go through the normal channels make sure you get a good sponsor for your group, one that would provide the members with an understanding of what you're hoping to accomplish.
Isaac found that his support system was from his peers at Texas Tech, who kept him motivated to continue the club's legacy by being President. Although he had a strong support system, he began to see the SDC's retention rate decrease, and is now working to increase this rate for the future. There are two methods in which one can approach programming:
- Waterfall method - All planning happens upfront with minimal development
- Agile method - Development first, and plan as little as possible
He was able to identify that some of the club members became frustrated when the utilization of the waterfall method became utilized in their development teams' projects. In addition, it is important to add more social events for the club to have instead of being fully dedicated to their projects (development life and social life balance). Studying DOES NOT = being social!!!!
Often the cost of running a solfware building group isonly a couple boxes of pizza, because often college students won't go anywhere without food. This is only if everyone has a computer, often schools will have computer labs for people to use. However, if given real funding groups can invest their money into hardware to test out the software and intisce other student to join. However the cost to start and maintain a software building group is relativly cheap if everyone has access to a computer. Providing for some of the basic cost that may arise can come from making members pay low dues in doing so also making members committment to the group stronger.
When building a successful, collaborative organization, Isaac states that leaders must foster curious, failure accepting ideologies. He continuously enforces the idea that students have a duty to teach themselves using what's available online. Successful students must also engage in projects outside the classroom as long gone are the days where extracurricular activities are ranked less than classroom work. Students must also be willing to fail gracefully. Our current educational infrastructure pigeon holes students into believing that there is nothing worse than failure when that could not be less true. Failure leads to learning and personal growth which are imperative at keeping an organization fresh and growing.
To ensure the SDC runs succesfully, Isaac jokingly admits that it avoids true democracy. Instead, the leaders of the organization make sure that those who deserve promotion recieve it. This prevents the election of leaders who, while passionate about the SDC, lack the qualities needed to advance it. This idea is, however, dependent on the group containing good leaders. This is currently an issue with the SDC, forcing it to merge with another on-campus group. To remedy this, Isaac suggests exposing members to leadership on small scales and observing which students naturally step up.
Isaac has often faced resistance from faculty, ranging from a lack of support for the Software Development Club to outright refusal to impliment his ideas. He mentions that some faculty are more vehement in their opposition than others, and that while some professors are supportive, they are in the minority. Yet, he does not consider this as the actual resistance and considers it to be overcomed easily with a supportive and a hardworking team. What he considers as the actual resistance to learning is the provocation of the wrong ideas regarding computer science which can be misguiding. According to professors a tester in Software Development field is considered to be a bad engineer which is not at all true, since he might be perfectly happy commenting on the architecture of large systems instead of writing large chunks of code.
Texas Tech's Software Development Club is for EVERYONE who is a Texas Tech student. As mentioned in the Topic section, there are four separate project groups that a club member can join. It is recommended that everyone starts in a lower-level group such as "Intro to Python", and then progress to other projects in more advanced groups.
Motto: Low --> High
Using a tool, HackerRank, future/current software developers can be able to test their data structure and algorithmic skills. If club members have no idea what to do, they are provided support and instructed to download the proper tools and IDEs (Integrated Development Environments).
A typical club meeting starts by discussing announcements, encouraging students to attend and get involved with more technical events such as hackathons, and there is open discussion. Directly after, club members start dedicating their time to their projects.
Here's thelink to the steps that might help the students to decide how to proceed while creating a working in a team to create good software.