1 Interview your team
Interview potential team members
When you interview for Software Engineering positions, you should consider that the interview is a learning opportunity for both you and the company. The company is not only interviewing you to decided whether they feel that you will be a good fit for their team, but you are also learning about the company and position in order to decide if you feel that it is a good fit as well. It’s never too early to start practicing your interviewing skills, including in the classroom. If a professor provides the opportunity to choose your own team members, take this as an opportunity to interview your team members.
Let’s start with common mistakes:
- Don’t select team members just because they are sitting next to you.
- Don’t necessarily select your friends as team members without getting to know your other classmates.
- Don’t select students with incompatible schedules and assume that you will be able to complete the project without meeting.
Now let’s consider possible interview questions:
- When are you available to meet outside of class?
- While we all have to contribute to every task on our project, do you have a particular strength or interest in taking the lead for project management, design, coding, testing, or documentation tasks?
- Tell me about your work style. Do you tend to start projects early or wait until the last minute? Considering your schedule, how many hours do you think that you will have each week for this project? Do you prefer to work in mornings, afternoons, evenings, or on certain days?
- Are there specific languages or technologies that you have experience with and advocate using for the project? Are you flexible if we use something different?
- How confident are you when it comes to learning new languages and technologies for a project? Do you find it fun to learn new things like this?
- If a team member is struggling to complete a task such as coding, would you have the time to help them and what would you do?
- Do you work on any software development projects outside of the classroom? If so, please tell me more about this.
- Is there a chance that you will drop the course?
- Please share experiences of good group experiences that you enjoyed.
- Please share any experiences of bad group experience that you hope to avoid happening again.
- Share sample group project wins.
- Sample group project nightmares.
Identify strengths and weaknesses
Once you select your team, identify the strengths and weaknesses of your team. First consider the interests of your team members and write your names in the respective columns based on your preferences. After you complete this table, discuss everyone’s preferences and converge on assignments that make everyone happy.
Task |
Top preference |
Not my top preference, but happy to help |
I’d prefer for someone else to take the lead on this role |
Project Management Lead |
|
|
|
Requirements Lead |
|
|
|
Design Lead |
|
|
|
Implementation Lead for front end |
|
|
|
Implementation Lead for back end |
|
|
|
Configuration Management Lead |
|
|
|
Testing Lead |
|
|
|
Documentation Lead |
|
|
|
Demo and presentation Lead |
|
|
|
System Administrator Lead |
|
|
|
Other:
|
|
|
|
In addition to identifying the lead roles for team members, identify the languages and technologies that you are considering with pros/cons of each with respect to the project. For instance, C is probably not a good choice for a project to create an online store. On the other hand, perhaps using the Android SDK is a good option for the specific project and no one has experience with it, but everyone is excited to learn more.
Language/Technology |
Pros |
Cons |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Once you’ve listed all of your ideas, distribute the top choices for team members to explore before your next meeting. Ideally, every team member should explore every option, but if time is prohibitive, assign at least two team members to explore the top three options. Each team member should explore books, videos, tutorials, and a small sample project to create a summary of the pros/cons for the respective approach.
Language/Technology |
Assigned to: |
|
|
|
|
|
|
|
|
|
|
|
|
After each team member explores the options, you should meet and make an executive decision on the path forward. Once you decide, you should plan to meet to work on tutorials together so that everyone is immersed into the languages and technologies that you will use on your project. You may pursue these tutorials individually to some degree, but you should also meet as a team to help each other to quickly gain experience and confidence together.
Create a weekly meeting schedule
A one semester project provides approximately 16 weeks for a team to create a project, but keep in mind that this includes everything from forming teams in the first week to giving demos and presentations in the last week or two. Your professor will probably provide guidance on the schedule with due dates for different deliverables throughout the semester. In this section, we focus on the weekly meeting schedule for students since regardless of the variations that occur in different sections of courses with different professors, you’ll still want to maintain a standard weekly meeting schedule to help your team members to succeed.
Exchange contact information with each other, depending on your preferred way to maintain contact. Please don’t feel obligated to share every options below, but share the ones that team members are comfortable sharing. Some possibilities are listed below.
Team member |
|
Phone |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
It’s also helpful to chat online. List the platform(s) that you will use and an ID for each member to connect.
Team member |
ID for platform: |
ID for platform: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tools to connect
Technology is constantly changing. There are many great tools to for software engineers. Explore using the following tools. Each team member should set up an account and connect as a team. However, as we mentioned, technology is constantly changing, so if you want to substitute a different tool, you are very welcome to do so. The tools below are our recommendations but discuss them with your team and let us know if you prefer other tools.
- Github – This tool is used by millions or developers for configuration management. Visit their website, create accounts, and give it a try here: http://github.com
- Slack – This popular tool is great for team communication. Visit their website, create accounts, and give it a try here: https://slack.com
- Trello – This tool is a great way for teams to assign and track tasks. Visit their website, create accounts and give it a try here: https://trello.com
Which tools will you use this semester and why?
Teams should meet at least twice each week outside of class, but preferable more often. Teams should strive to make each team member as productive as possible. This includes sharing both positive contributions and challenges. Use the following template to review each others progress at least once each week.
Weekly log
Name: ________________________________________
Tasks that I accomplished this past week:
Tasks that I plan to accomplish this week:
Issues that may interfere with my success this week:
Take the time to discuss each team member’s progress, goals, and issues that may interfere with their success. Remember that each team member has a finite amount of time to work on the group project. You want to optimize the productivity of each member’s time that they put into the project. For instance, if a team member is stuck on a task that takes several hours for them to figure out and another team member could have helped to solve their problem in just a few minutes, that is an overall loss to your team. Everyone on the team should strive to make each person as productive as possible. Consider the following scenarios for discussion.
- Team member A has never worked with a database before. They are struggling to figure out how to connect to the database, but are embarrassed to admit this to team members. Instead, they spend 10+ hours trying to figure it out to eventually learn that they needed to use a VPN when trying to connect to the database when they work from home. What could the team have done to prefer this team member from wasting so much time?
- Team member B is not confident at coding. They wanted to take the lead on documentation in order to avoid coding. However, the instructor was very clear that everyone needs to contribute to the code and and that this will be monitored by the configuration management tool and the code checked in. How should the team address this issue that Team member B wants to try to get by without coding?
- Team member C has a busy schedule and continuously misses internal team deadlines. They work full time and take courses, so they suggest that other team members do more work. What should the team do?
- Team member D is regularly late or misses group meetings. What should the team do?
- Team member E does not contribute anything to the project for an entire week. There are only 10 weeks in the semester, so this is equivalent to 10% of the semester. Some team members realize that a lot may be accomplished in a week and are unhappy about their unprofessionalism. What should the team do?
- Team member F is the only team member who is not familiar with the programming language and environment that the team chose. Since they have less experience, they think that they should do less work. This is not fair to the rest of the team. What should the team do?