Building and Managing
Student Developer Teams
Clinton Staley
1. Essential Elements What
is a Student Developer Team?
a. Hire the
Best
Student ability and maturity vary by as much as a
factor of 20. Student developer teams use only the top 5-10% .
b. Hire for
Year Round Work
Even an experienced professional finds it hard to
contribute to a software project if s/hes only on the team for 3 months.
Student developer teams work all year, fulltime in summer, part time during
school.
c. Manage Them
Differently
Student developers enthusiasm and talent (assuming
you choose well) are at least as good as the average working professionals.
Their experience and schedule flexibility are not. This presents unusual
management challenges requiring special methods and outlook.
d. Take the
Teams Seriously
Student developer teams do serious work. This makes
the investment worthwhile, and energizes the students.
2. Advantages Why would you
want a Student Developer Team?
a.
Cost-effective Labor
Student hourly wages in SLO run $15-$20/hr, with no
benefits. Hour for hour, a properly managed student developer team is 50-100%
as as effective as a team of experienced developers. (The range depends on the
type of software.)
b. Access to
the Best Grads
A student developer team is a gold star means of
hiring top graduates. After a student has put in several thousand hours of work
for you, you know them well, and they are already fully engaged in your
projects. And if youve hired well and managed them well, theyll want to stay
with you here in beautiful SLO.
3. Challenges What are the
Problems with Student Developer Teams?
a. Rigid
Schedule
A fulltime developer, at least on a short term
basis, can be called upon for long workweeks. Students, during the academic
year, cannot. Also, students cannot be on call 24/7, e.g. for tech support,
since classes and academic assignments preclude this.
b. Higher
Turnover
The biggest loss of student developers is not to
other companies, but to academics. Perhaps one in three students finds that
they cannot maintain a part time working schedule and school simultaneously.
These folks usually leave after one or two quarters. (Others, however, thrive
on the challenge and will work for several years while in school.)
4. Practical Advice How to
Implement Student Developer Teams
a. How to Hire
the Best
Run programming contests or similar technical
presentations where you can directly evaluate student programming and problem
solving.
Develop good relationships with exceptionally
demanding professors, who focus heavily on software development in their
classes and thus can identify students with promise at such work.
Solicit recommendations from students already on
staff, but take these with a grain of salt. Students are inclined to recommend
buddies, or acquaintances who ask for a recommendation; theyre not as selective
as you would be. Vet student recommendations carefully.
Maintain very high standards. Dont settle for
second-best; let the size of the team be dictated by the number you hire, not
vice versa.
b. How to Hire
for Year Round Work
The trick is to get the right balance between
academic and professional work. You want to soak up all their WOW playing time
without taking way from their studies :).
A good schedule is fulltime for summer, winter
break, and spring break (generally 16 weeks) and 16 hrs/week, scheduled around
classes, during the academic quarters. This gives a yearly effort of 1100
hours, or a little over halftime on average.
c. How to
Manage them Properly
Choose people who believe younger professionals can
accomplish great things who do not see them as just kids.
Maintain a strict code review process and keep
design and analysis under control of fulltimers, aided by exceptional members
of the student developer team. This is not, by the way, because the students
are poor designers. They often have very sophisticated design skills, but lack
the experience to keep things simple.
Plan on a student/fulltimer ratio of 2 or 3 to 1
within the student developer team.
d. How to Take
the Teams Seriously
Give them responsibility for projects that contribute
importantly to the bottom line. Bet-the-company projects are not a good choice
(unless youre a shoestring startup relying almost wholly on student labor :)).
Instead, pick projects that might be just break-even with standard labor, and
which are valuable but not essential to company survival. Projects with a long
term future are also important remember, youre planning to hire these bright
kids as fulltimers when they graduate.
Use the same formal employee review process for the
student developer teams as you do for fulltimers.
Most importantly, maintain a corporate culture that
takes younger developers seriously. Put fulltimers in charge who believe in the
idea. Use the same formal employee review process for the student developer
teams as you do for fulltimers. Treat the students as real employees, not
interns.
e. How to
Manage Rigid Schedules
Rigidity of schedule is one of the two significant
challenges with student developer teams. Several things help ameliorate this.
First, dont use students for first-line tech support
or first-line client interactions if you need 24/7 availability. They make
excellent second-line support when theyre on deck, and its good experience for
them, but they arent always there.
Arrange schedules by asking students for seriously
blocked times (classes, important religious obligations, etc.) Ask them to
accept any part time schedule that respects these blocked times. Pick schedules
that overlap well with other team members. Try for at least 4 hours per working
session; shorter sessions tend to get chopped up by overhead. Insist on
promptness. A fulltimer can come in 30 min late with no harm if s/he is going
to pull an 8-10 hour day anyway. A student with a tight 4-hour time slot
cannot.
Insist on the 16 hr/week minimum during school This
is a carefully arrived-at balance from years of experience, and gives enough
time for good students to do their school work and still contribute to a team.
If you let students chisel it down, youll soon have people working 12 hrs/week
or less, which is not effective. And, offer incentives to those willing to work
20 hrs/week or more. This need not be monetary; it may be just the opportunity
to work on an especially interesting project at their current wage.
Arrange a summertime pay scale that is higher than
the yearly scale, to compete with internship offers from the likes of Google
(who are offering $30/hr up to $38/hr). But do this in the form of a bonus,
since you dont need to raise rates throughout the year. Base the bonus on number
of hours worked during the summer, heavily backloaded to encourage a full
summers participation. Offer overtime if you like, to help compete with out of
town offers (most internships in Silicon Valley are salaried, not hourly).
f. How to
Manage Turnover
You will inevitably find some students needing a
quarter off for difficult classes. There are several ways to manage this.
Arrange a leave policy that brings the student back
in the quickest time. For instance, you might allow a leave of 6 weeks, unpaid,
once per year, so that a student can take the last six weeks of a tough quarter
off. This gets you at least the first five weeks of the quarter, and leaves
them the time they *really* need to get studies done. (No one does a whole lot
of academic work in the first half of a quarter anyway :))
Set up an efficient, well-documented training plan.
Its cost-effective to spend 100-200 hours of an existing fulltimers time to
train a new fulltimer who might work 6,000 hours before quitting. But a student
may only average 1000 hours before quitting (some quit after a quarter or two;
others stay for years). With a well-organized and documented training plan, one
can bring a new student developer sup to speed using only 60 hours of their
student-peers time, plus 10-20 hours of fulltimer time.
5. Local Success Stories
a
Vizolutions/ATA
Successfully used student developer teams to write
software for downhole oil equipment, and presently has a software staff with
numerous strong Cal Poly grads.
b.
Terran/Autodesk
Used student software teams to develop multimedia
software in late 90s and early 2000s.
Student team was kept across two acquisitions and major layoffs in fulltime
staff.
c.
CreateSpace/Amazon
Developed startup site almost entirely with student
labor. Continues to use student software teams to develop commercial websites
and production control software. Has gained over a dozen fulltimers as grads
from the student developer teams.