Academia and the private sector have been taking notice of the large demand for a workforce that knows how to write code; offering online courses, weekend workshops, and revamping their on-campus curriculums.
With applications and websites becoming larger, more complex, and mobile device friendly, knowing how to write code has never been more important. But is that enough, or even the right focus?
Don't get me wrong, I am all for people to learn this skill. In fact, I'm very passionate about furthering inclusivity and transparency around this industry. While many things are "open", there is still a mystery layer.
That layer is what I'm going to focus on here. That layer is comprised of soft and hard skills that are required to actually write code in the real world.
So if it's not about "Learn to Code", what is it about?
In my years as a developer, I've touched many different languages. HAML, SASS, LESS, CSS, HTML, JS, Ruby, Java, XML, JSON, PHP, ASP, Python, C#, and the list goes on. Some of these languages, I've had to work with more than others, but the point is that I've had to work in all of these languages at some point. Why? I approach development as a problem-solver. Not as a syntax master.
When I'm solving a front end code problem, my stream of consciousness often sounds something like this:
How does this thingy get populated to the front end? And this text over here changes when this doo-hickey gets changed, why is that?
I'm not saying that learning the vocabulary is not important. It definitely is! However, it's not as important as being able to understand how things work and are able to apply problem-solving skills. The vocabulary and syntax familiarity will come with more practice. I promise!
The point is: I don't know the syntax of all those languages I mentioned. <sarcasm>Shocking, I know. </sarcasm> I do, however, love a challenge, and the internal reward of solving them. Also, you'll notice that I was asking questions. That's really important.
It's not always easy to ask questions. To some degree, there is always a fear of coming across as a "noob", or worse: "an idiot."
I can't count the amount of times in the beginning of my developer career when I would ask a question, and the recipient would get annoyed with me. This made me apprehensive about asking any further questions, which led to a lot of wasted time and energy!
This fear would result in wasting a ton of time trying to figure out something that could have been answered quickly.
After spending years facing this fear, I finally developed enough practice to stop letting it get in my way. In fact, the more questions I asked, the more I learned (It's great how that works, isn't it?)
I'm not saying asking questions is easy. There is a set of skills that go into asking questions.
- Be aware of timing and be empathetic of their workflow so as not to disrupt them
- Know when to be self-sufficient and when to ask questions. "Timebox" solving the problem before asking someone else if you feel it is something you can figure out on your own.
- Pay attention to how you communicate with your team. Some people prefer direct, concise communication; while others prefer a more conversational approach.
- Know the right person to ask. Pay attention to the type of responsibilities held by each member of your team or office. This takes time, but if you have an org chart, learn it!
You might be thinking this is in the realm of "overthinking" especially for something as important as asking questions. There is no "right" way to ask questions. However, I do think that is value in being mindful of your team. If you allow empathy drive your approach, your team will appreciate it and your efforts will pay dividends.
"Learning to code" is only one small piece of the puzzle
I take issue with the notion that coding is the path to becoming a higher-value contributor to an agency, or as a solo-entrepreneur.
To be fair, "Learn-to-Code" curriculums have come a long way. However, I still don't think there is quite enough focus on the value of learning how everything works.
I think it's dishonest for private sector businesses to make it seem like coding is the main value proposition that will "lead you to an awesome job in no time!"
When "simple" isn't "simple"
Let's say you want to learn how to build websites. Most paths will start you with learning how to write HTML and CSS.
You learn all the building blocks that make up a "valid" HTML page. That's great and all, but once a student learns what goes into making it a "live" thing on the internet, eyes typically gloss over.
Why the blank stares? Outside of the coding part, these skills (mostly) are required to build the most basic website.
- DNS Management
- Deployment Methods
- Version Control
- Local Server Configuration
- Task Runners
- Command Line
- Markup Preprocessors
I acknowledge that these type of skills are taught somewhere down the road in these curriculums (whether they are taught in the correct order is up for debate.)
Accept that you can't learn everything
The fact is, nobody can know them all front-to-back perfectly. Each technology has enough depth to be a life-long discipline. So I would argue that it's more important to be adaptable and generally know how things work than to be hyper-focused on memorizing the syntax. Naturally, there will be a set of disciplines that will interest you, which will lead to learning the syntax.
While I have my concerns about the industry and how some businesses lure potential students, I think the movement to educate our workforce with the skills needed to contribute to our workforce is very important.
As of now, there's nothing to stop businesses from luring students (customers) with a rosey narrative about how code is the answer to your career woes and that it's "easy."
Traditional academia isn't designed to keep up with this space, so it's up to us to continue to educate, inform, and paint and accurate picture of what the industry is like and how to be successful within it.
I think people deserve to know what they are getting into before they invest a ton of money, time, and energy.
I've found that there are many truly great places to learn about various coding languages. The UI and UX of these tools are awesome, and most of them are free! Most of these learning platforms use gamification to enhance the learning experience, which makes the whole experience more fun!
To name a few:
When you're faced with clever marketing that promises that "code will land you an awesome job," it's OK to be excited about it. Know that learning to code is one of many skills required to succeed and that even the things that are "simple" have many layers.