As a front end developer trained in California, I notice things about the software developed in the Triangle that others might not. For example, the user interfaces designed and developed here—especially for web and mobile—often lack the polish of those developed in Silicon Valley, New England and Austin. Software here, regardless of the application, tends to be geared toward the enterprise, making apps that are meant for the consumer more text heavy, inanimate and difficult to learn.
While this is understandable—the backbone of this region's software business is still firmly in enterprise applications—even big data companies with a major web or mobile presence realize they need to meet the interface needs of a generation accustomed to smartphones and tablets. As a region fighting to become recognized as a top place to start a company in this nation, we risk falling behind if we don't adopt this new way of thinking.
And one of our biggest challenges, I've found, is changing the status quo at our local universities.
As a developer and entrepreneur dedicated to a modern way of developing and designing software, finding the necessary talent to help me achieve my goals has proven very difficult here. So I recently researched and compared the curricula at this region's colleges and universities, and then weighed it against schools in Silicon Valley. I wanted to know exactly how our graduates stack up against some of the nation's leaders in churning out entrepreneurial computer scientists.
I was shocked at some of my findings. Here's a summation:
If a student chose to go to Wake Technical Community College for four years and earn two associate's degrees, one in computer science and another in web technologies, he would:
*Be required to take more than double the amount of programming classes than any North Carolina university bachelor's degree would require.
*Have access to more than double the number of classes on mobile programming than North Carolina State University, the University of North Carolina at Chapel Hill and Duke University offer, combined.
*Have access to 10 more web development courses than NC State, UNC Chapel Hill and Duke offer, combined.
*Spend approximately $25,000 less in tuition than NC State and UNC Chapel Hill, and $175,000 less than Duke.
So what is being taught?
While NC State, UNC Chapel Hill and Duke's computer science departments have introductory web and mobile classes that teach the basics of those mediums, none of them have anywhere near the in depth study of web and mobile development that Wake Tech does.
Of course, technical knowledge isn't the only job requirement of a software engineer in the modern workforce.
I spoke with Carlo Tomasi, chair of Duke University's computer science department. As he puts it, "Leaving comparisons aside, we offer a very lean set of five required core computer science courses to satisfy our graduation requirements. This gives students an opportunity to design a curriculum flexibly, and to take advantage of the unique interdisciplinary environment at Duke."
Triangle universities also offer their computer science students stronger research and internship opportunities than community colleges. North Carolina State University has longstanding partnerships with IBM and SAS. Duke has the C-SURF (Computer Science Undergraduate Research Fellows) program, which pairs students with computer science research programs headed by faculty and graduate students.
But soft skills and 'out of the gate' job opportunities aside, the disparity between the amount of web and mobile classes offered at Wake Tech versus local four-year universities is surprising—especially with so much of today's software business centered on those two mediums.
For example, Wake Tech is the only local college to offer a class on WordPress, the online publishing platform that powers roughly one in five websites in existence. NC State still has a class on Fortran, which hasn't been used as a contemporary programming language in over 20 years.
NC State and UNC Chapel Hill professors contacted for this story did not respond before publication.
The West Coast difference
When you compare the curriculum of NC State—widely considered one of the top computer science schools in the Southeast—with Stanford University, which is considered an incubator for Silicon Valley startup talent, a whole different disparity is evident.
Not too different from NC State, the Stanford computer science department offers three classes on mobile and six on web development and similar core programming instruction. But a major difference in curricula is in the number of classes offered on non-technical subjects geared specifically towards computer science students.
There's ethics of computers and software, and three classes on the business of software. 'Teaching Computer Science' is a full credit course at Stanford. San Francisco State also requires computer science students to complete an ethics of software class. While these business and ethics classes don't give students any more knowledge about web and mobile development, they teach many of the soft skills that are required of engineers working in teams at web and mobile companies, where they are less likely to be quarantined in an engineering department.
One can argue that our region's "traditional" computer science programs give students the proper theoretical understanding of software development, which can then be transferred into any platform. While this is technically correct, in practice the languages and platforms taught in these programs are are often those used by the schools' major corporate donors and top recruiters. For example, IBM is a major sponsor of NC State, and recruits a large amount of talent from there. IBM software is primarily built in Java running on Linux platforms—the core language and operating system taught at the college.
Many the Triangle's web-based businesses, including Bronto, ChannelAdvisor and WedPics, were founded by former employees of large software firms. Some of these businesses use the core technologies taught at Triangle universities and colleges to run their platforms.
Meanwhile, the vast majority of startups on the West Coast are using the latest web technologies—Ruby on Rails, Node.js, and Python (which UNC Chapel Hill uses for their introductory programming course). And there's a growing number of new startups here in the Triangle embracing those technologies too. These are the platforms that will power the web for the next decade, and I believe we should be training college students to use them.
Demand for talent is high, and growing
It's a sellers' market for engineers with those Silicon Valley skillsets, and Triangle companies—both large and small—are having a hard time meeting their web developer quota. It's not uncommon to hear of high-paying, front-end web developer positions (the engineers who develop website user interfaces) going unfilled for months on end.
This puts our area's startups at a constant disadvantage. When the largest, local companies are hurting for web talent, burgeoning companies are flat out starving. The result is that a large portion of Triangle web startups are forced to hire part-timers and freelancers to design and build their platforms—something that would make a California startup a laughingstock.
This problem would be nonexistent if we had more qualified web and mobile developers in our area.
But even though the programs are successful in training entry-level web developers, they aren't meeting a need for mid- to senior-level talent and they aren't geared toward college students. Only in college or on-the-job can more sophisticated development skills be acquired.
I believe the next step in the Triangle's mission to become a major national player in software development is for our universities to learn from our community college and offer focused programs or degrees on web and mobile development.
And in the short term, perhaps hiring managers should stop looking for bachelor's degrees in computer science and start accepting associate's degrees in web technologies.