The unabated demand for software developers has resulted in a slew of coding academies or ‘bootcamps’ popping up all over the US (and the trend is catching on in other parts of the world) promising to assist students in learning to code in a short period. Guided and self-learning online coding classes are also springing up to meet this gold rush.
There is programming syntax…
The approach appears to be, to directly introduce learners to programming languages to perform simple tasks and then on to building simple applications. The focus is on learning programming syntax with exposure to simple data structures and quickly applying those learnings to build applications.
And then, there is computer science theory…
Theoretical underpinnings of typical computer science education such as a theory of automata, compiler design, design of algorithms and advanced data structures are generally not covered in these bootcamps. Similarly, mathematical foundations of computing topics such as discrete mathematics, complexity theory, computability theory are sidestepped (some learners may have been exposed to few of these concepts in AP courses in high school).
This raises the question – “Are the learning units covered in these bootcamps sufficient to equip students to fulfill requirements of real world programming jobs?”
The answer is, it depends.
Technology has simplified some software development tasks. A number of technology trends have converged:
- Availability of cheap computing power and memory is more forgiving of inefficient code for some applications (although efficient code is still very critical for scalable cloud applications)
- Widespread availability of libraries, SDKs, frameworks and APIs has made application development more akin to building objects with Lego blocks – creative assembly of these building blocks is relatively easy and can yield very functional and powerful applications
- The revolution in cloud computing technologies such as containers, serverless computing, etc. has further simplified assembly of applications
These technology trends have abstracted away from the complexity of software development for many categories of applications and it may be more appropriate to call these tasks as software ‘assembly’. More and more tasks are being pushed into this category with the rapid development of enabling tools. The training received at short immersive coding bootcamps or even online classes may be adequate preparation for software ‘assembly’ type employment.
But, for higher order jobs such as those that involve building the software tools and building blocks used in end user application assembly or to launch performant and highly scalable cloud applications, having a formal understanding of mathematical underpinnings of computing and computer science theory becomes very much desirable.
So, one can assert that while bootcamps may be adequate for software assembly type application development, investment of time in developing the understanding of computer science theory and related mathematical concepts (that is typically acquired in a bachelors’ program) is still very much essential for weightier application development and remains a worthy endeavor.