Home/Blog/Get Inspired/What they don't teach you in school about becoming a software dev
Home/Blog/Get Inspired/What they don't teach you in school about becoming a software dev

What they don't teach you in school about becoming a software dev

Junaid Akhtar
Aug 27, 2024
7 min read

Here's a life lesson that a lot of recent CS grads miss: Just because you're done with school doesn't mean your education is over. In fact, as you embark on your new career as a professional software developer, you can still expect to be learning every day.

Today, let's talk about everything they don’t teach you in school about becoming a professional developer, starting with the philosophy of learning and progress. Among other essential life lessons, we'll discuss the importance of long-term thinking vs. short-term thinking — and why it will pay off to to think of your software development career as a business.

Let's dive in!

Advice 1: Abandon short-termism and adopt long-term thinking#

Let's zoom out for a moment. We are not the first civilization on the planet, and if there's one lesson we can take from history, it's that what often makes sense in the short term does not always lead to progress in the long term.

Author Ronald Wright has made a strong case for taking a leaf from the 10,000 years of civilizational experiments to think of progress correctly. He tells the story of the Easter Islands, where by the time Western explorers arrived, they found a desolate, nearly-abandoned island. But while the few remaining inhabitants had hardly anything to eat, the rows of massive, intricately carved stone statues on such an abandoned site left everyone thinking. They were there to honor their ancestors. The largest statues were built after the collapse of this once-thriving civilization.

Easter Island: Statues where once was life
Easter Island: Statues where once was life

Wright describes the progress made by early humans on Easter Island in A Short History of Progress:

“We might think that in such a limited place, where, from the height of Terevaka, islanders could survey their whole world at a glance, steps would have been taken to halt the cutting, to protect the saplings, to replant. We might think that as trees became scarce, the erection of statues would have been curtailed, and timber reserved for essential purposes... But that is not what happened. The people who felled the last tree could see it was the last, could know with complete certainty that there would never be another. And they felled it anyway.”

Would the shiny, big toys and technological statues of our time and the short-term promise they hold for our progress also cause us to overlook the potential of long-term consequences? Are we also another Easter Island in the making? Wright’s final advice for us makes a lot of sense:

“The reform that is needed is not anti-capitalist, anti-American, or even deep environmentalist; it is simply the transition from short-term to long-term thinking. From recklessness and excess to moderation and precautionary principle.”

Message for software developers#

Focus on quality over speed: Prioritize writing clean, maintainable code rather than rushing to meet deadlines. This means considering the long-term impact of your work on the project’s scalability, performance, and future developers who will maintain the code.

Adopt sustainable practices: Instead of quickly adopting the latest trends or technologies without fully understanding their implications, evaluate how they will affect the project and team in the long run. This might include choosing more stable and well-supported technologies over the latest fads.

Advice 2: Not seeing the forest for the trees#

Now and then, there comes an inspiring teacher, and blessed are those who get to have them as mentors. Richard Buckland from the computer science department at UNSW is one such mentor. He makes a conscious effort to go out of the way for his students so they can see the bigger picture, see both the forest and the trees. Here’s some advice for budding software engineers you wish your teachers would have managed to teach you. He does this with a twist of his sense of humor:

One: As I promised at the start, every student has caught up by this point in our course. But what I didn’t tell you at the start of the course is that there’s no resting point. Keep challenging yourself. In the future, if you come across a boring assignment in some course and think it is so easy for you, do it left-handed!

Two: We’ve learned a few problem-solving techniques; for humans, the top-down approach guarantees the solution more than the bottom-up approach. You can keep going from the top view, dividing the problem into more manageable smaller problems until you know how to solve the smaller problem, but as soon as you’ve solved the smaller problem, you know how this feeds and fits into the larger solution to the actual problem. The bottom-up approach does not come with such beautiful guarantees.

Three: When it comes to solutions and software, do not leave the whole thing for testing it all at the very end. Engineers are obsessive about testing to see if their building works—each step along the way and at the very end. Imagine building a big bridge across the river bank, not testing the bridge in its parts, and just testing it all until you’ve assembled the whole thing up, put it in place, and opened it up for traffic. Bad idea.

Four: This course was not about learning C but how programming languages work. Learn skills, not facts. Imagine learning how the steam engine operates and not knowing anything about how engines work. As soon as they decide to replace your steam engine with diesel engines, you’re out of work because you don’t know how the engines, in principle, work.

Advice 3: Improve your skill set each year#

In the world of computer programmers, Steve Yegge is a celebrity of sorts and an advocate of productivity and software culture. He communicates his thoughts through Stevey’s Drunken Blog Rants. He left Google to join a small-scale startup, stating that the giant company had become too conservative and was no longer innovative.

Steve Yegge
Steve Yegge

In one of his famous blogs that takes us on a tour of programming languageshttps://sites.google.com/site/steveyegge2/tour-de-babel, he manages to dish out a golden nugget of advice that has less to do with programming languages and absolutely everything to do with programmers:

“Languages need hype to survive; I just wish people didn’t have to be blinded by it. I drank the OOP Kool-Aid, I regurgitated the hype myself. When I started at Amazon, I could recite for you all the incantations, psalms, and voodoo chants that I’d learned, all in lieu of intelligence or experience, the ones that told me Multiple Inheritance is Evil 'cuz Everyone Says So, and Operator Overloading Is Evil, and so on. I even vaguely sort of knew why, but not really. Since then I’ve come to realize that it’s not MI (multiple inheritance) that sucks, it’s developers who suck. I sucked, and I still do, although hopefully less every year.

Nobody is perfect, and nobody can achieve perfection in one go. The best software developers realize this and keep aiming to get better each year.

Advice 4: The right mindset to transform your coding career#

Travis Media is a self-taught programmer and a successful software developer. His advice is to stop looking at ourselves as mere employees and rather treat our software career as a business:

Your career is a business. The skills that you develop belong to you. You don’t belong to your employer. Instead, they invest in your services. Like any business, your responsibility is to improve your product, that your customers will keep believing in.

This shift of perspective from you as an employee to your employer as your customer will bring in the autonomy needed for a long-term determinant of a successful software career.

Coding skill vs. career success at Educative#

Unlike many online platforms and bootcamps that focus primarily on teaching coding through a bottom-up approach, Educative is specifically designed to take you from your first line of code to preparing you for your job interview:

Learn to Code: Become a Python Software Engineer

Cover
Learn to Code: Become a Software Engineer

Launch a developer career with the skills you learn in a bootcamp or university. Confidently progress from your first line of code to your first day on the job with our structured lessons packed with interactive quizzes, projects, and playgrounds.

105hrs
Beginner
64 Challenges
66 Quizzes

Good luck with your career journey — and remember to enjoy the learning!


  

Free Resources