Best practice software development for student project team?

I read about the various forms and aspects of agile development, but they were all focused on the corporate environment. I am on a student project team at my university, and I would like to see if some flexible concepts can work in an environment other than "all work fully / partially."

We have our own project server with Subversion for version control and Sharepoint for documents, wikis, and action items.

Some problems

  • It is quite difficult to organize a weekly meeting, daily racks may not be feasible.
  • We are our own clients for the most part (we are part of the competition, but we cannot work closely with the organizers)
  • Not only programmers, but also members of the mechanical / electrical team.
  • Sharepoint action items do not have a better interface. Are there any extensions? Would it be advisable to switch to something else (for example, Trac) due to a single interface for everything that was not svn?
  • Delay. As students, the most natural thing to do is wait until the last minute.
  • We have our own space, but it is often easier to do work elsewhere, and there is no way to predict whether anyone else will be there, besides making explicit agreements.
  • Other classes (they still need to go through, so overall commitment to the team is limited).

Perhaps our team can benefit from more than simple methods, so all suggestions are welcome.

EDIT Thanks for all the great answers. I'm going to start asking my teammates how they feel about some of these ideas and see what they are buying. Should I associate them with this question? You can edit your answer or just leave a comment to answer this secondary question.

+4
source share
7 answers

If you ask me, you add too much overhead to your student project. Methodologies are usually used only in corporate environments because of the need to control and control human resources (control is not the right word, but I needed a stronger coordinate). In a group of students, there is absolutely no need to worry about anything like that. Adhering to the methodology, you only slow down the work.

You have identified your problems. Invite your peers to learn about them and talk about how to best deal with them. Use methodologies as a source of ideas, but do not bend them in your situation.

+2
source

I would not force your team to work with a complete, corporate environment, a flexible programming process, but I think that some level of Agile methodology can be valuable. In fact, I think that some of your “problems” will be somewhat mitigated by some of Agile’s ideas, but each of them will require a certain level of commitment.

For example, the question of daily meetings / weekly meetings.

This should not be a big thing (and, especially, in the case of a student project, I would say that it is better to make it smaller). Having a Trac site (which I would recommend for sharepoint if you are already using SVN) with one place (like a wiki page) to just keep track of rack information in one sentence can still be valuable without taking more than 1-2 minutes per day / person

If someone skips a day or two here and there, it doesn’t really matter, but if the team agrees to it, it can really help in the matter of delay (forcing people to simply say “I did nothing.” Does nothing ”, this it helps people, at least, think about your project, which, as a rule, reduces the amount of procrastination), and also allows people to work in different places, but still stay in touch.

It is also easy enough for non-programmers, and can help mechanical and electrical teams work together, and everyone is moving forward.

Be that as it may, I would try to keep it short and sweet - try to keep the load to a minimum, but I still think that this is a value in some of Agile's programming ideas, even in the student context.

+4
source

You can hold a weekly or two-week meeting that simulates daily. Start your meeting with three questions:

  • What have you been doing since we met?
  • What do you plan to do until next time?
  • Is there anything hindering your progress?

Please note that your partner who is not a programmer can also answer them. At the company I work for, we have a multidisciplinary team using scrum (programmer and artists), and it works well.

If you do not want your meeting to stand, at least do not go on comfortable sofas. This should make your meeting shorter, making people more attentive.

You should use this method to your advantage and minimize procrastination by adopting milestones. Create your to-do list (great, any other spreadsheet software is fine). Separate them in a milestone. When the time comes for consideration, sit with your team and look at your product as a client, perhaps your teacher will attract you.

Planning poker is fun and a good way to clarify what you should do and how you plan to do it. Inclusion of tasks in tasks will include people from all disciplines. But only people who can complete the task should evaluate it.

+1
source

IMO, SharePoint and agile systems do not mix well. Choose something that is more throws-up-there-there. I would go with something like Trac , which has excellent Subversion integration.

Sounds like communication, and procrastination is your biggest problem. If you do not give yourself enough time to do the work and do good testing, you will not have a good result. This is logical and really has nothing to do with how agile you are or not.

0
source

In your situation, not all of the Agile Manifesto Principles will be easy to apply. Perhaps you can apply some ideas that come from the principles, in particular:

  • short iterations, at the end of which you always have a “working” project, even if some of the desired functions are not yet implemented.
  • maximize the amount of work done, and not develop a grandiose framework that, as you hope, will cover all the needs of the project, start small and do what you need when you go.
  • If you have milestones during your project, think about a meeting (called retrospective) after each milestone just to look back and see how your process worked / did not work and how you could improve it.

On the software part, you can consider TDD and pair programming

0
source

I would say go with SCRUM. Skip the daily meetings and instead create a private forum and ask each participant to check it at least once a day. Try to make the sprinter's retrospective and scheduling appointments a "personal" event for drinks or coffee.

Everyone who does (and does) the SCRUM aspect is amazing when everyone gets used to it. The sprinter release concept also helps team members get embarrassed for too long and keeps the project real (“What can we do in two weeks” versus “I have this idea that I am going to start, and who knows when I can finish his" ).

Also, if your team has more than 8 people, skip SCRUM =)

Finally, if you have talent and someone from your team has the means (and desires), consider the TFS workgroup (I think it's free with academic MSDN). If you don’t have someone on your team that REALLY wants to take on this burden, skip this.

0
source

When I was in college, I taught several courses that encouraged the adoption and use of Agile practice. They were mostly a mess, and although I learned a lot from them, they were usually not what the professor expected from us to learn. I am currently engaged in professional development and love it, but here is what I would like to know when I was in school:

  • Getting things to your schedule is really, really hard, which makes daily racks more important, not less. If you cannot sit in the same room (very difficult), use Twitter or Yammer or just send an email.

  • The many benefits of Agile are that you get into the rhythm. This does not just mean weekly meetings; this means setting goals, commitment to items and weekly results. This is difficult to do in an academic context, but it should go to meet your problem of procrastination.

  • It’s hard to get used to mating; each has its own computer and development style. Try connecting a second keyboard / monitor / mouse to your existing laptops, if possible, or use screen sharing software and standardize the IDE. Pairing also really, really helps with procrastination, but trying to do it without good tools is a lot of trouble.

  • Do not skimp on unit testing, even if you think of it as a stupid, academic, one-time project. I did projects before I realized that I was too small to worry about testing, and he never came back or bit me on the ass.

  • Sharepoint can be a bit heavyweight. Believe it or not, we still do a lot of things on boards or with cards. You can be your own client, but this does not mean that you cannot have stories (discrete, evaluative functions, mainly) and goals. It is useful to be able to visualize this: these functions are planned, they are under development, they are ready for testing. If you want software recommendations, I can give them to you, but I recommend plain paper for a great planning process.

0
source

All Articles