TechCrunch introduces a post by Elad Gil on building a mobile development team with, "As the Web goes mobile, every Web company needs to build mobile products." Good. We're on that. Our company, Handshake Media, Incorporated, continues to expand its mobile app development services. Building mobile products, however, requires mobile product developers.
With Handshake's headquarters in the same town as Virginia Tech, I had a novel idea. Our company could hire a computer science major to program mobile applications for us! Oops. According to Eugene Wallingford at the University of Northern Iowa, I'm one of many "eager entrepreneurs" who contact a university's computer science department with a great idea who "just needing a programmer."
Oops again. Dr. Osman Balci, Professor of Computer Science at Virginia Tech, opened my eyes to my limited view of programming by pointing out the difference between a software programmer and a software engineer. That laid the groundwork for this point from Elad Gil in the aforementioned TechCrunch post to broaden my vision to focus on "hiring great engineers and having them pick up the programming language and platform."
Excerpts of the vista-expanding emails from Osman Balci follow, shared with permission:
I deliberately did not call the course "iOS Programming" although about 80% of it is programming. I called it "iOS Software Engineering." I always emphasize the fact that we (those in Computer Science) are "Solution Providers"; we solve problems by engineering software. I advise my students, "Never introduce yourself as a Programmer; always introduce yourself as a Solution Provider."
In the Software Engineering Life Cycle diagram I have developed and use in my teaching, you see that Programming is just one of the seven major processes we execute to develop a software-based solution to a problem. Everything starts with Problem Formulation. "You have an idea" means "You have identified a problem, the solution of which would be needed by many people." For example, Problem: People cannot easily socialize with old friends. Solution: Develop a software-based solution such as Facebook.
The biggest public misconception is that "computer science = programming." Very wrong, as is explained in the Software Engineering Life Cycle below.
When I studied Dr. Balci's diagram, I was able to recognize elements of our process in developing the Handshake(TM) App and She Chooses(TM). But if I were to diagram our process, I would have to arrange a still life photograph on the floor of my office, a spill of printed emails, Word docs, and photos of my whiteboard. I look forward to developing our next project with Dr. Balci's system in mind.
Given a greater understanding of mobile app development in the context of software programming vs. software engineering, I'm still pondering what steps my company might take into this new vista. But I like the choices I see.