JDJ Editorial Board member Yakov Fain writes: One of my resolutions this year is to start teaching part-time Java-related classes in some college. That's why I started browsing the computer science course lists that are being offered this year. While graduate-level programs offer many interesting courses, the situation is different in the undergrad world.
Some schools keep teaching how to multiply matrices in Ada or work with algebraic expressions in Prolog. Half of the courses are preparing professionals who will be operating on another planet. Information systems programs look a little more down to earth. Meanwhile, many college graduates are having a hard time finding their first jobs because many entry-level programmers jobs are being outsourced overseas, and it'll stay this way as long as it makes financial sense for businesses. Unfortunately, student loans have not been outsourced...
A catch-22 situation with experience makes things even worse: we can't hire you because you don't have the industry experience. How can I get this experience if no one hires me? Some people try to find volunteer programming work to get a foot in the IT door. Some graduates join open source projects, and some job applicants just lie on their résumés.
I have a plan: instead of outsourcing projects to developing countries, businesses should offer them to the local colleges. I'm not talking about simple pilot or proof-of-concept projects; I mean the real ones. This plan requires commitment and the cooperation of academia and businesses. These are some thoughts that come to mind:
Colleges have to include more classes on software engineering and modern technologies in the undergraduate programs. Here are some of the candidates: Application Servers, Service-Oriented Architecture, Design and Development of J2EE Applications, Applying Design Patterns, Data Modeling, Business Intelligence, and UML.
Colleges form teams of programmers starting from the students' junior year. Faculty members lead these teams. Information about these teams (résumés, previous projects, GPAs) has to be published on the Internet and be publicly available, and businesses need to publish their project descriptions so student teams can bid on these projects.
Colleges make their labs, networks, and support personnel available for the teams. If needed, businesses can lease additional hardware to the college for the duration of the project.
Most of the students study Java programming during their freshman and sophomore years. Many Java components are available for free or through open source licenses: IDE, version control systems, project build tools, bug reporting systems, application servers, etc. Businesses will purchase any additional required software for a fraction of the cost using heavily discounted academic prices.
Business managers pick and interview teams for their projects based on the college reputation, available skill sets, location, and other criteria.
Business lawyers prepare a contract with a selected team that defines the obligations of each party, deliverables, cost of development, and potential penalties.
The turnover rate is usually high on the projects that are outsourced to developing countries, which won't be the case with student teams. On the other hand, there is a risk of not having developers during midterms and final exams. However, since the exam schedules are known in advance, the "freeze time" can be planned accordingly.
Most of the business managers dealing with developers from other countries complain that cultural differences are a huge problem. Guess what? This won't be a problem if you outsource the project to students who live in the same country and speak your language.
Even though students will get a minimum salary for this work, they should also earn academic credits and get graded while working on such projects.
The funny (or sad) part is that the students themselves are already outsourcing their college assignments. There are Web sites where you can hire a coder for any assignment in various programming languages. No job is too small. People from around the world can bid on these projects, and since the offered prices go as low as $20 USD, it's clear that only programmers from the developing countries like India or Russia would be interested in these jobs. Academic outsourcing may be even more damaging than the industrial outsourcing, because rich students can improve their grades and earn their degrees without having a good knowledge of the required subjects. Spending more time working as teams in the labs under the supervision of a faculty member or business manager will help minimize academic cheating.
There is one more secret key to the success of commercial projects developed by students: pizza! Each day the client company can send a couple of pies (half plain and half pepperoni) to the labs where the students work. They are going to work for food...and experience. It's a win-win situation for everybody.
About Yakov Fain Yakov Fain is a managing principal of Farata Systems, consulting, training and product company. He has authored several Java books, dozens of technical articles. SYS-CON Books released his latest co-authored book , "Rich Internet Applications with Adobe Flex and Java: Secrets of the Masters" in Spring 2007. Sun Microsystems has nominated and awarded Yakov with the title Java Champion. He leads the Princeton Java Users Group. Yakov teaches Java and Flex 2 part time at New York University. He is an Adobe Certified Flex Instructor and an Editor-in-Chief of Flex Developers Journal.
Ken Collins wrote: Yakov,
Yakov: Thank you for the
feedback. Everything you
say makes perfect sense
in times when there are
plenty of jobs
for college graduates.
But think about this: 4
years
ago they've entred
colleges and selected CS
major.
What do they have
this year after
graduation? 100K
worth of student loans
and no entry level jobs.
Ken: Why should students
pay $25k/year to work for
$10/hour (or free) for
major corporations?
Students should study and
companies should hire
actual employees. The
only time most people
will ever get face time
with a PHD in their field
is when they're in
school. They should use
it wisely instead of
dinking around with the
kind of gruntwork that
can be successfully
farmed out to someone
with no experience.
I graduated in '94, so I
know what it's like to
come out in an industry
dow...
Yakov wrote: Ken,
Thank you for the
feedback. Everything you
say makes
perfect sense in times
when there are plenty of
jobs
for college
graduates. But think
about this: 4 years
ago they've entered
colleges and selected CS
major.
What do they have
this year after
graduation? 100K
worth of student loans
and no entry level jobs.
At
the same time people
in India spend 3-4 months
learning some hot Java
technologies (without
bothering
with CS
degrees) and they beat up
well educated US
graduates hands down. You
are saying that you
should
have taken a Unix
class instead of having
summer jobs?
Sure...as long as you had
the money to pay for this
course. You do not like
managing students? What
about
managing a group of
young developers in
Bangalore
when success of
your project (and your
career depend)
on them?
Well, this article is my
at...
Ken Collins wrote: I read
your article in the
February edition of JDJ,
and I can't agree
less.
I worked while I was a
student both full-time as
a summer intern and
part-time during the
regular semester. I also
worked managing a team of
students at an off-campus
start-up a few years
after graduating. Both
experiences were awful.
The first drove me out of
computer science for
nearly four years because
I wasn't ready for the
monotony of cubicle
work. The latter was
nightmarish because it
was nearly impossible to
organize a team of
students, all of whom had
different schedules,
widely
differing coding
abilities, and different
levels of maturity.
When I was in college, I
would have benefitted
greatly from smaller
class sizes and an early
introduction to unix
tools, not more work
hours. I spent way too
much time making small
change working ...
Shiva wrote: This is a
very interesting line of
thought though I'm not
sure if this will work.
Bulk of the outsourcing
is done on maintenance
and enhancement projects
and not fresh
from-the-scratch
development projects. A
maintenance & enhancement
project will never draw
attention from any
students for the sheer
lack of creativity and a
need for knowledge in the
vertical.
It is best to start off
with pilot projects and
rapid prototyping
requirements and based on
this experience further
outsourcing to
universities can be
undertaken. Just a
thought!
Insourcing wrote: ### (
have a plan: instead of
outsourcing projects to
developing countries,
businesses should offer
them to the local
colleges ###
Go, Yakov!! This is a
fine proposal. Thank you
JDJ.
Kevin Shockey wrote: I'm
currently in charge of a
project very similar to
what was proposed in this
article. The SNAP
Development Center
employs computer science
and engineering students
from the Interamerican
University of Puerto
Rico. Our objectives are
to improve the quality
and quantity of the
graduates from these
programs.
Our project, however, was
funded by the Puerto Rico
government. Briefly we
have created an open
source project to develop
and market a completely
oepn source relacement
for the Sun JDK. The SNAP
Platform also integrates
popular open source
development tools such as
Eclipse, Tomcat, and
SwingWT.
We are a year into the
project and results have
been mixed. Although we
found a few students up
to the challenge, in
general there is a big
difference working with
students and working with
a full-time so...
balaji wrote: This
article misses mentioning
some important things:
1. Programs to multiply
matrices are a very
important concept to
grasp. While I learned
the concept in my 11th,
there are many so-called
s/w programmers who don't
get the concept of nested
loops.
2. Colleges absolutely
must not introduce more
courses in "software
engineering and modern
technologies in the
undergraduate programs".
Let us face it, most
software is not really
engineered. In my 10-year
career I have been
involved in only 2 such
highly engineered
projects. The rest have
been built ad-hoc. And as
for modern technologies,
to pick up .Net or some
such flash in the pan in
the pan is not a big
deal. To pick up
fundamental programming
concepts is much more
difficult.
3. The problem with
software development is
not really development.
It is suppo...
pv wrote: I totally
disagree. Colleges and
Corporations are totally
different culture wise.
Students in colleges work
on Assignments for a
better grade. Employees
in corporations work for
better pay and
promotions. I am fine
with Govenrnment and
Government agencies
outsourcing their work
to universities as they
are using publicly funded
University resources to
do public work. Instead
Companies can set up
small student divisions
for which they hire
students who are still
enrolled in the colleges
and can assign them small
projects and pay them
reasonably. Last but no
the least do not take
away the Fun out of
collge life!
Rick Proctor wrote: I
agree. A quick scan of
local colleges finds few
undergrad courses in
Java. I would love to
have eager young college
students working on some
of my projects. It seems
that US colleges have
been slow to embrace
Java. It's unfortunate.
From my own experience
writing Java articles, I
get a lot more commments
and questions from
overseas developers than
US developers.
Ramón Jiménez wrote: A
comment regarding
education. In my
understanding, computer
science programs are just
fine if they are teaching
students to multiply
matrices in Ada or to
solve algebraic problems
in Prolog. Where else is
a CS major expected to
even know these
technologies? The problem
is not to re-formulate CS
curricula, it's to create
new programs. The BS in
Software Engineering
being offered by some
universities recently is
IMHO a correct step in
that direction. We don't
need as many CS majors
anymore, but we still
need some!
Keith Blizard wrote:
First I think the article
brings up a great point
in our IT industry -
ensuring that the
students coming out of
college are properly
trained for the industry
that they will be leading
in the future. Having
the ability to set up
intern programs would not
only strengthen the
corporation by promoting
itself for future hires,
but also enable students
the ability to understand
how technology really is
used in businesses today.
On the other hand, with
the some of the comments
- I TOTALLY disagree that
it is more important to
learn different
technologies/syntax for
students to be effective.
For anyone who has
developed for a long
period of time, you need
to learn a language ONCE
thoroughly, and then
picking up another one is
just a matter of learning
the syntax. It is MUCH
more important that you
can de...
Natan Cox wrote: First I
must say I'm not against
real world experience.
But... one of my courses
at university was about
the next best thing:
CORBA, any body still
using it?
SOA and all the latest
fads still need to prove
themselves. Let the
students learn the real
stuff: design, relational
theory etc. Who cares
whether this is done
using ADA, Eiffel or one
of the cooler languages
at the moment, lets say
Java or Python?
It is more important you
learn lots of languages
(even Prolog or Lisp),
get to know them, learn
what is good about them.
Nobody has ever become a
worse programmer from
learning one extra
language.
'Useless theory' gives
you a frame of reference,
even if you never use it
after you graduate.
I work with a lot of
young programmers, they
had more 'real world'
experience when they
graduted. But they also
l...
Ruben Reusser wrote: The
University of Applied
Scienes Biel/Switzerland
takes a simmilar approach
( http://www.hti.bfh.ch/i
ndex.php?id=1&L=2 ). The
bscs program is a four
year program, 2 years
classes, then one year
mandatory internship and
then again 1 year of
classes. The program is
geared towards providing
the students the needed
knowledge for the
internship within the
first two years and then
refining the knowledge in
the last year with
additional subjects such
as prolog, parallel
computing, advanced
computer graphics, etc
Charles Neville wrote:
I'm a retired CS
professor, so I have some
practical experience with
this sort of thing.
Yakov Fain has put his
finger on an important
problem: How to give
students real-world
experience to enhance
their educations and
build their resumes. But
there are some problems
with his suggestions.
I'm going to tell you how
some colleges and
universities deal with
these by using
INTERNSHIPS, WORK STUDY,
or LIMITED development
projects from industry:
Problem 1. Pizza is good,
but it is not pay!
Students and supervising
faculty will work for
little or no pay under
his proposal. This is
normally called
exploitation or slave
labor.
Solutions to Problem 1:
(a) Carefully limit the
scope of the project to
what can reasonably done
for academic credit in a
class. This is one
reason for the prevalence
of pil...
I took the advice of a
friend of mine and
steered clear of the
'normal' movie theaters
and went a little out of
the way to go to a DLP
movie theater. The
experience of comparing a
regular movie theater to
a DLP movie theater is
like comparing standard
def analog TV with a
1080i HDTV si
From Application
Virtualization to Xen, a
round-up of the
virtualization themes &
topics being discussed in
NYC June 23-24, 2008 by
the world-class speaker
faculty at the 3rd
International
Virtualization Conference
& Expo being held by
SYS-CON Events in The
Roosevelt Hotel, in
midtown
Verizon Wireless is
snubbing Google's
Linux-based Android
initiative to go with the
LiMo Foundation's mobile
Linux spec for its next
wave of mobile phones
expected next year. Along
with Verizon, Mozilla
signed up - giving the
consortium its first
major open source ISV -
and a key one f
Adaptec unveiled a new
family of entry-level
Unified Serial RAID
controllers. The new
low-profile Series 2 RAID
controllers, built on the
same Adaptec dual core
RAID-on-Chip (ROC)
architecture used in its
successful Series 5 RAID
controllers, provide
significant performance
enhancement
Sun's mule train has
finally pulled into
Indiana after three years
on the road. Indiana is
the Linux-friendly
Fedora-like OpenSolaris
project meant to move the
Solaris-shy Linux
community off Linux and
on to Solaris tempted by
Solaris widgetry like the
highly scalable,
rollback-easy, 1
Curl announced it has
released the availability
of an Ubuntu Installer
for the Curl Rich
Internet Application
(RIA) platform. Curl is a
Rich Internet Application
platform that competes
with Adobe AIR/Flex,
Silverlight, and Ajax.
Curl has been shipping
with Linux support for
RedHat 9, S
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice: