Most of the stories you read about people that leave stagnate jobs or industries to become career software developers are success stories. You read about ex-teachers turned Data-Scientists, accountants turned Full-Stack Web Developers, and former marketers that are now iOS pros.
But what about all the people you don’t read about?
The tens of thousands of people that set out with high hopes to become software developers and fail. You don’t hear about them because their stories of going into debt, struggling to achieve mastery, and ultimately failing to move into their sought after profession are, well, kind of depressing.
Having heard a number of these stories personally, and grappling with the transition of becoming a software developer myself, a few clear reasons emerge as the root of failure. Unfortunately, these reasons are not always visible to the untrained eye and may blindside you on your journey to become a successful software developer.
Let’s expose them.
Reason #1 – A Fixed Mindset Causes You to Give Up
Author and researcher Carol Dweck is getting a lot of notoriety for popping the hood on an attribute we all admire, but probably struggle to define – grit.
She explains how a fixed mindset person acknowledges that he or she can learn new skills, but doesn’t believe that intelligence or character can be changed significantly. As a result, a fixed mind-setter gets hung up on the fallacy of innate ability – it’s who people are that make them successful developers instead of what they do.
When the coding challenges get really tough, it’s easy for a fixed mindset person to throw up their hands and quit, invariably citing that they are not “cut out” to be a software developer like some people, when really they just don’t have the mindset to fight for it.
Reason #2 – The Hapless Search for the Perfect Learning Resource
When people used to “learn to code” they bought one book, maybe two, on Java or PHP and went through them. Now with the proliferation of languages & frameworks, combined with the amount of varied online resources to learn them, these options are unlimited.
This paradox of choice can lead you to learn a little bit of Ruby, then decide MeteorJS is really what it’s all about, before moving onto a program that’ll supposedly make you an iOS developer in three months.
You see what I mean?
Skipping around, dipping a toe in every language/framework, and doing half the tutorial track on various resources is akin to learning a little Spanish, German, and Japanese. You might end up being able to say “hi” in each language, but you won’t get close to speaking fluently in any of them.
Reason #3 – You Don’t Have A Project, and That Leads to Shallow Learning
There are tutorials, sample projects to build, and bootcamps that teach the concepts of programming and how to build things. That’s great, but strictly learning from those types of resources can often lead to shallow learning that doesn’t stick.
There is a difference between following along and figuring out. When you follow along with tutorials they can illustrate concepts and demonstrate steps within the scope of that tutorial, but they don’t teach you how to figure things out when the scope is undefined.
Tutorial learning quickly fades because you are not drawing on it to solve complex-ambiguous problems, thus reinforcing and tying it all together. A project (that you feel you must bring to the world no matter what) forces you into the real role of a software developer that has to figure out how to get things to work without handholding.
Reason #4 – You Think Short-term Instead of Long-term
We humans are notoriously bad long-term planners. We bemoan the thought of having to learn something for six months, or heaven forbid a year, even though that time invested may yield dividends for the next 20 years.
Most bootcamps are not three months because that’s the amount of time it takes to learn to code, they are three months because they have to appeal to consumers’ foolish desire for instant gratification.
Most people don’t know what kind of thinking underpins their decision making, and when learning to code and becoming a software developer is unconsciously subject to short-term thinking, it will be swiftly cast aside once the going gets tough.
Reason #5 – You Have Bad Study Habits
Blocking out large chunks of time to study when nobody is forcing you to do so, and you aren’t getting paid, is tough. Even when you can get past that obstacle, what’s to say you are making effective use of that study time anyway.
Would-be software developers fail because initial enthusiasm is not enough to carry them through the day-to-day grind of becoming a developer, and even if you can keep on the grind, it must be more intelligent than blunt-force effort.
The would-be developer on a path to failure is one that just does the minimum of putting in the time.
The successful aspiring developer rewrites his or her notes into long-form explanations, uses spaced-repetition techniques, builds their own projects, and the like.
There are plenty of things that can stifle you on your path to becoming a software developer, and often they are states of mind that can be difficult to recognize because they are internal and part of you. But you should remember you are the only one who is responsible for your life and success.
It is not difficult to start developing your skills. Just define what results you’d like to get, find appropriate resources, try to be enrolled in a real project, plan ahead, and finally organize your learning process.
Remember that “Fear, uncertainty, and discomfort are your compasses toward growth,” so if you have those feelings, keep running straight at them.