Coming from a software engineer, the title of this article is rather uncalled for. That's the thing—I am not an engineer. Well, at least that's not what my diploma says. I've been programming since childhood and was extremely lucky to see my bedroom hobby evolve into professional employment about half a decade ago. All that without reading a single programming book or completing an online course (which isn't bragging, it's rather sad, really). And, of course, without having a respective degree. Thinking about it now, I'd rather not have an engineering education, and I'm going to tell you why.
First of all, I have nothing against education in general and engineering degrees in particular. Official education, although variable in affordability and quality, is a great chance to expand one's knowledge in a subject of their interest and an unmatched way to connect with hundreds of like-minded folks. It used to be a requirement to land a job in IT but I'm happy to see the trend of degreeless offers from the industry giants like Google and Microsoft.
The world is slowly coming to realize that a diploma is a receipt for education, but by no means a guarantee of time or effort invested.
People studying something they aren't excited about are the people I fear the most. I've witnessed hundreds of students ignoring lectures, paying off exams, and looking for each and every opportunity not to study. Nothing unusual, right? Students are students and this kind of behavior is more than common and (sadly) accepted everywhere. Only the people I saw indulging in such behavior were medical students—surgeons, pediatricians, dentists—people you trust with your life. Seeing this made me realize how important it is to love what you do, and how no amount of education can spark an interest where there is none.
Of course, there are exceptions to the rules. I did, and still do, have an interest in medicine, and that was the main reason I've studied to be a doctor. I do believe people may enjoy multiple things in life, and me becoming a software engineer is living proof of that. I have plenty of interest in engineering, yet I still wouldn't want to study it in school. No, not because it may be expensive or may not bring enough practical value for its worth. I wouldn't want to have an engineering degree because it would rid me of the feeling of discovery.
I won't deny that coming from a non-technical background is challenging.
Extremely challenging. From people looking down on you for lacking a colorful paper saying you're as smart as them, to the sheer lack of knowledge in various domains—there were numerous times when I thought that having a relevant education might've helped. I'm sure it would've helped, but it'd mask the problem, not solve it.
Okay, what about that "discovery" this random human from the internet mentioned? To explain to you what I mean by that I need to tell you about one particular lunch I had.
Back in the early days of my open-source
countless unpaid weekend hours to make the world a better place endeavors, I met one of my colleagues for a lunch. He is a rather unordinary person and one of the smartest engineers I know. I'd often bring up some struggles I had with my projects both to learn to ask questions and to, hopefully, get some help. I remember that time well because I was having trouble with one of the libraries I'd been writing.
"I struggle with orchestrating multiple dependent asynchronous events," I said.
"Good. Tell me about it," replied my colleague.
For the next fifteen minutes, I'd tried my best to explain the context and the issue, and it appeared that I succeeded. Now to bring some more context to you, I'm not a fan of one-way conversations, so whenever I ask for help, I try to mention at least a few things I've tried, and suggest my hypothesis as to why they failed. And thus I went through each approach I took that hadn't been successful.
Suddenly, my colleague stopped me and said: "You've just described CQRS."
"CQ-what-what, excuse me?" I asked, blinking like a donkey.
"Command Query Responsibility Segregation—CQRS. That's what you've just said," he reassured me. "That's something you can try to tackle your problem."
He described CQRS to me, projecting the concept on my very use case, and then it struck me. I was describing that very pattern, although in my limited and extremely abstract vocabulary, all along. Something people may have studied or read in books came to me as a logical approach to the problem. Sure, had I known this, I wouldn't have had the issue to begin with, but then I'd have missed an incredible discovery moment, which I still remember long years after.
Coming to a realization of certain concepts within your natural learning curve is the most wonderful thing about learning that no book or lecture can teach.
I've tried implementing that new shiny abbreviation and, needless to say, I've enjoyed the entire routine, mainly because I felt like I've come to the solution myself. It's the personal achievements like this that stick in your mind the best. The result matters, I can't argue with that, but it's the path that led us to that result that advances our understanding.
You may be thinking I've just got a certain inclination or a habit of mind, and that's why some concepts click for me. That cannot be farther from the truth. I'm a linguistic sponge to the core of my bones and catch on grammatic intricacies tenfold faster than on the most basic mathematic laws and rules. I don't even see software engineering as mathematics, objectively lacking in profound understanding, but keeping my thinking process clear, almost child-like, nonetheless.
We, humans, are incredibly proficient at justifying our lack of will. There is no such lie in the world that we wouldn't tell ourselves just not to admit that we've given up. Nobody likes to admit their flaws, I get it. Yet how would you improve without acknowledging you need an improvement first?
In conclusion, I want to encourage you to learn, and, before all, learn how to learn. Let the lack of a degree not stop you. Let the complexity not scare you. Come to conclusions, make mistakes, have fun. You've got this.
And remember: when you hit a wall, don't focus on the shortest most efficient way around it. Focus on trying to understand the nature of the wall and why it's there, in the first place.