To see the mentor side, refer to previous post: Context Generation.
Having been born more than yesterday, I found that hire-ability boils down to 3 things: experience, connections, and attitude. This implicit schema is as obvious as breathing. Where the gap is, in a lot of cases, are the specific steps: how to get experience when one needs experience to get experience, how to be minded to when one is a nobody, and most relevant-ly, what kind of person is seen as having the potential to do software development?
The order of importance of this trifecta shifts as one climbs the ladder, but for entry level positions it goes like this: personality, connections, experience. In the absence of connection (social verification) and experience (meritocratic verification), there is not a lot to assess on except for one’s character as a person, thus in the beginning, personality counts as a bigger proportion of one’s perceived potential.
As such, a person with potential for software engineering, for me, is the one who cultivates patience, persistence, and consideration.
Patience, to deal with obscure error sources and bugs and the problem of non-specifications. Persistence, to keep at it — again and again, until you arrive at the causes and solutions, of which there will be many. Consideration, because as much as software tries to detach itself from the messiness of humanity, it is still a construct made by human hands, built to solve fundamentally human problems. As such, consider its inherited flaws and biases at all times while appreciating its wonder.
Over and over, as one goes forward and beyond, because tech that grows for the sake of propagating itself is not unlike cancer; a considerate, compassionate tech, made for the betterment of humankind is an infinitely better alternative — an infinitely better world to look forward to, if more people like that were to help build and shape tech.
Moving On
“Which programming language to pick up” is a common question, but is the wrong one to ask. It is easy to ask because it is the most concrete course of action. It is the wrong thing to worry about, because effective upskilling is not about fussing over whether to start building with Lego or Duplo. In a pinch, jelly blocks, too, can be used to build something.
“What project to build” is also the wrong one to fuss about, because learning to build something is not a problem of whether build a bird or a platypus or a spaceship; it is about picking up a brick set and start building. In lieu of knowing someone who works in IT, your second best bet is to pick up a course — any course, and start building — be it a personal website, APIs, an iOS mockup, blockchain, machine crystal balling, et cetera.
(It was no accident that I started my software development journey in the frontend space. Frontend was — and is — a good start, if only by the virtue that it’s the most visible part of web development. That makes it quicker to show results — thus the quickest path to creating a portfolio and start knocking down doors1)
The syntax may be different, and not all specialisations have interchangeable concepts, but good programming practises, which at its heart is about being very, very organised and very, very precise to the point of pedantry, are universal, that one might as well call it “technobabble-flavoured ways to make stuff do stuff for you efficiently and effectively”.
Since teaching and learning is all about meeting in the middle, let us now discuss how we can all become better students, which at its heart is a blend of potential — a huge topic on its own — and motivation.
Motivation is just as important, and what it’s not, is passion.
“Follow Your Passion”
What is passion? Something overrated. Passion is found after a certain amount of exploration, after acquiring some amount of context where one can decide whether to try something else, or to make it “your thing”. To start something new is a gamble on the unknown, and to find something one is passionate about is best done in the spirit of exploration: look for copper, but rejoice, should one find gold.
Rather than passion, count on your motivation at the beginning. The desperation to avert pain and the desire to acquire pleasure are not unlike each other, if only a matter of the spectrum of human desire. Perhaps even more on preventing pain due to our loss-aversion tendencies, as was in my case.
Motivation alone won’t carry one through to mastery, but a strong motivation should suffice to get to a comfortable level where one knows whether to continue or pivot yet again. Be it career envy, desire for work flexibility, oddly specific deportation prevention strategy, or a plethora of other motives, each as valid as the next.
In any and all endeavours one must first do the work, but accept that the result may not stack up to one’s expectations. What’s more important is that one endeavours to fail upwards.
Do First then Think, and other tenets to live by
In the beginning, I thought I had to understand everything to become a software engineer, but then I had to pay rent and to somehow remain legally migrated.
Stumbling into the habit of do-something-anything, in the absence of a pathway to proper traineeship, I did a lot of developments without knowing why, how or what the best ways are, and in the process, found that none of those matter in the grand scheme of things. Only taking action does — one to three at a time. No need to waste time optimising your code, just make sure that it first compiles. Then you can improve it, bit by bit. It is much easier to build on something rather than a lot of nothing.
Your starting points may differ, but knowing one’s current context always helps in minding the gap and finding creative ways to bridge it.
Learning something new, something not adjacent to your current context is to do first, then think. 60% of it is about preparation, the last 40% being the leap of faith to learn as you fly. A lot of consulting is not unlike flying while building the plane, to tell you the truth; as are a lot of good and exciting things in life, if one wishes to constantly push — to expand one’s context, in order to live an interesting life.
Having a mentor is nice. It is having a local guide to get you on the surest path to the best restaurants with the best views. If not: pick yourself up, pick up a map if there is one, and start exploring.
Without context, there is no point of reference from which one can relate back to. But by taking that first action, we create something memorable to observe as a point of reference, and what better ways to remember than doing? That the act of doing something new requires one’s full attention, something we all arguably can do more in order to remember how we truly lived.
To overcome resistance is to not waste any mental faculty to it. It is not “just worry less”, it is “why worry?”
If one can solve it, there’s no need to worry. And if one cannot solve it, then the time is better spent on hedging the bet: putting into words what can go wrong, and how one can handle it. More likely than not, your current problem was something someone had overcome in tens or hundreds of years ago, made accessible with the magic of the internet. Learn to use it well.
It is possible to learn anything, but as of the time of writing it is still impossible to live forever. If one wants to see and go far, one must find the shoulders of giants to stand on.
To welcome the things one doesn’t know, that one wasn’t aware of before is a source of comfort. Not knowing what one doesn’t know is the true risk; if one knows it, one can hedge against it most of the time. The unknown is an opportunity to expand one’s context; and truthfully, good, well-adjusted people don’t look down on you for not knowing and trying hard to. These are the companies one should keep at all times.
Becoming comfortable with the unknowns, knowing ways to define and unveil the unknowns… These are the keys to progression, which works well for both incremental learning — all the way from associate to lead developer — as it does for serendipitous breakthroughs of the modern polymath. Above all, in everything you do, have courage.
Coming next: Before ready. Sometimes it’s worth doing things before you’re ready, especially if you are risk averse.
Coming next: Failing upwards. Strategies on maximising your long-term wins by budgeting for failure, aka winning the one-person marathon of life.
Coming next: Instinct. The mythical property of an “outstanding” person.
Learning how to learn. The life-changing course that changed how I approach things — that everything is learn-able, if only one knows how to learn.
Just because frontend is easy to grasp, doesn’t mean it’s easy to do. Compared to backend, there’s a lot more things to juggle, and valuation of work quality is more scattered; more on this in the upcoming posts.