I read an article posted on the venerated, respected journal TechCrunch entitled "Coding Academies Are Nonsense". While I classify the assertions of the article as ignorant, myopic, and perhaps bitter, the main point that the author misses is that coding academies serve many purposes, beyond that of producing proficient software developers (although that is the main purpose).
Before you continue, I must point out that I am currently Lead Instructor for Nashville Software School [NSS], the first non-profit software school in the country. I see, daily, the difference it makes in people's lives when they go through the program. Yes, students are expected to get jobs when they graduate, and with a placement rate of 85% - 90% for NSS graduates, it hasn't been hard for them.
They are in demand, and we take great care in properly educating them to be proficient junior developers. Yes, full-fledged junior developers who know how to solve business problems with code.
- You learn to code, obviously.
- You learn how to plan a software project.
- You learn how to get acceptance criteria from your product owner.
- You learn how to test your code.
- You learn how to be a good teammate.
- You learn how to deal with changing requirements.
- You learn how to think like a software developer, which is far more important that the new languages you learn.
And yes, you come out with only 6 to 12 months experience in writing software, and I can tell from first-hand experience that it's enough. If you put in the effort, you graduate with the skills necessary to join a software development team and, more importantly, the skills to contribute immediately.
Is Common Core really a disaster?
And what does it have to do with coding academies?
To draw an analogy, I'd like to discuss Common Core, the horrible way that current curriculums were implemented, and what the main goal of those curricula are.
What I hear from a lot of parents in the last couple of years is, basically "Common Core is stupid because my kids are coming home with worksheets that I can't help them with. I learned 2 + 2 = 4, and they're being asked to explain why!" There are several things that cause this reaction.
- No community engagement to educate parents on the difference between Common Core and the curriculum. One is a set of standards, and the other is a method of teaching children to be prepared for a modern, technology oriented world.
- New curriculum, at least in my area, was not implemented with the community in mind. Parents were not informed of the new methods, and not a single resource is available online or in a book store about the new methods. When a child comes home with worksheets asking them to write four sentences explaining why the two toads who hopped onto the same lily pad as three other toads makes five toads, parents basically think, "What the he** is this?"
Much like the reaction of the original author of the TechCrunch, it is based off of emotions and, possibly, hearsay without any direct experience or data. Therefore, it comes from a position of fear.
I took the time to learn about the new methods, and I have to say that I'm a huge fan of them. They are teaching children from a very early age how to be creative problems solvers by trying multiple strategies to find the solution.
There's a reason that we want children to analyze a problem from multiple angles to find the best solution: because that's what you need to be able to do in a technology oriented society that is being driven almost completely by software. Even if you are not a software developer, software will affect your life and your job, so having skills that allow you to control the technology benefit society as a whole.
- Excel spreadsheets
- Report writing
- Data entry
- Understanding modern coding and tracking systems
- Starting your own company to modernize an industry
Being proficient at your job now requires a basic understanding of technology, and coming up with good solutions on how to build and implement technology requires more complex problem solving skills.
More than one path
- Quality assurance
- Product ownership
- Project manager
- Release manager
- Interactive designer
If you didn't develop these problem-solving strategies on your own - because all previous generations relied on memorization rather than comprehension - how can you get into one of those interesting and lucrative careers? You can't do it on your own, because the pace of the software industry moves far too fast for you to effectively learn it on your own time any more.
Back in my day, in the 1980's and 1990's, it was far easier to pick up on your own. There was only a handful of development languages in widespread use, and the cycles of innovation in those days were very slow.
Not any more.
In the current landscape, you need guidance. You need an experienced, veteran professional - with a commitment to helping you learn - to guide you through changing how you think, and keeping you on track with the technologies and concepts that are key to early success. Otherwise, it's far too easy to learn all the latest, hottest tools, and never gain a firm understanding of the fundamentals.
One of my favorite lines from the TechCrunch article is the following opinion.
"I see coding shrinking as a widespread profession."
With no data, or evidence, on your side, I suppose you can see anything. Software development will continue to explode in growth. According to the US Department of Labor's Bureau of Labor Statistics, the expectation is that in the next 10 years, growth will be 23%, outstripping the mean growth of 11% for all professions.
Talk to someone before you buy
My advice to anyone considering a career in a technology field is to reach out to a former student of a software school, or attend an info session and learn more about the process. Because if you do follow other, less educated, advice and simply try out coding all on your own, you will hit a wall. There is only so much an online course and videos can teach. You certainly won't find out if you have a passion for software development.
Software development is a team sport, not an individual one. Collaboration, shared goals, pair programming, code reviews, weekly pizza lunches, monthly foosball tournaments, and many other things. This is what modern software development is all about. Learning from, and relying upon, a team of people who enjoy building complex solutions for business problems with code.
That's what software schools are for. To learn face-to-face from industry experts, work with other students in a lively cooperative environment, learn together, make mistakes together, and succeed together.