As someone who has been in the technology field for a long time, I am frequently asked by parents, on behalf of their school-aged children who have shown an interest in some form of software engineering, what programming language or environment I thought their child should study first to be successful in their field later on.
The fields of computer science and engineering are getting broader and moving faster each day. They truly do follow the old adage, “use the right tool for the right job.” Is she interested in gaming? Graphics? Animation? Social networking? Mobile applications and devices like cell phones or tablets? Operating systems or compilers? Web programming? Good ol’ fashioned application development? Each of these have an assortment of different languages, tools and programming approaches that are slightly different. No one will be able to master them all. Many successful engineers combine their passion for technology with another field such as biology, chemistry, mathematics or medicine.
Another question that must be asked is what resources would the child have available? Do they have access to a Windows PC? Mac? Linux? Do they have access to the internet on a regular basis for tutorials and reference materials? Do they have someone who could help mentor them and troubleshoot issues when times get tough? Do they have a friend with similar interests that could help them work through debugging their code? Is there any budget for investments in hardware or software to help them along?
In a nutshell, what companies are looking for today is someone who is creative, can think on their feet, learns quickly and can solve complex problems. Entry level software engineers are often given the task of supporting software that is “already out there”. To do so often requires enormous amounts of patience and really good debugging skills. Honing these skills early is extremely important and will impact how quickly career advances will occur.
One recommendation that I have made is to check out a project put together by Carnegie Mellon University called Alice. Alice is educational software that teaches students to program using an interactive 3D environment. This environment lets the student learn about variables, loops, recursion and many other basic programming principles from an object-oriented perspective. It is based loosely on the Java programming language. Alice runs on Windows, Mac and Linux platforms and is available for free online. According to the website, over 2700 schools are officially using Alice. Many reference materials and tutorials are also available on the web site.
Once the concepts of object-oriented programming have been mastered, students can quickly and easily learn other languages since most of the underlying concepts are very much the same.