Programming, the craft of creating functional and efficient software, is often seen as a discipline steeped in academia.
The traditional route was enrolling into college and completing a degree in computer science.
So you've found my blog and have been thinking about learning to code. Heck you may even want to pursue a career in it.
However, the thought of dedicating three or four extensive years, investing a huge sum of money to earn a computer science degree, isn't especially appealing. I get it.
So, in this ever-evolving world of technology, the question arises - can you really become a good programmer without attending college?
Firstly, What's The Case For Going To College?
This path, often considered the cornerstone of education, has its unique set of advantages. It's important we cover these and make any decision weighing up all options.
Building A Solid Foundation
Unlike bootcamps and self-learning paths that typically focus on specific languages or frameworks, a college degree provides a comprehensive understanding of computer science principles.
From data structures and algorithms to computer architecture and operating systems, knowing these will make for a well-rounded software engineer.
In addition, a good degree will include lots of robust maths and science, which can help develop critical thinking and problem-solving skills.
This comprehensive approach grants students to understand not just how to code, but why certain coding practices and methodologies are effective.
Probably the most valuable aspects of attending college is the networking opportunities it provides.
You'll be surrounded by like-minded individuals who are also passionate about software engineering. This opens up opportunities for collaboration, mentorship, and friendships that can last a lifetime.
Furthermore, colleges often have strong ties with local industries and alumni networks, providing students with internship opportunities and job placements upon graduation. The long term relationships you cultivate in college can open doors to opportunities that can otherwise be difficult to access through self-learning or bootcamps.
Learning Beyond Coding
While coding skills are undeniably essential in software engineering, they are just one piece of the puzzle.
A college education offers exposure to a wide range of subjects outside of pure computer science, including those in the humanities and social sciences.
One module I took during my Computer Science degree was "Ethics For the Information Age", packed with philosophical arguments for building critical-safe software and even whistle blowing. You're typically able to choose one or two interdisciplinary modules per semester.
These disciplines can certainly enhance soft skills such as communication, teamwork, critical thinking, and empathy, which are valuable in any professional setting.
Moreover, college provides opportunities to build leadership skills through clubs, sports, and other extracurricular activities.
These experiences can prove invaluable when leading a project team or managing client relationships in your future career.
Accreditation and Recognition
While it's true that many tech companies are now open to hiring candidates without a degree, having a bachelor's degree in computer science or a related field can still be advantageous. It acts as sort of a stamp of approval, demonstrating that you've gone through a rigorous curriculum and have the necessary skills and knowledge to succeed in the role.
Additionally, if you ever decide to switch careers or pursue further education, a degree will be universally recognized, while a bootcamp certificate or a portfolio built through self-learning may not always hold the same weight. (But keep reading..)
Some of the DownSides of going College
A Mighty Price Tag
Let's address the elephant in the room: the cost of a college degree.
Tuition fees have skyrocketed over the years, with student loan debt in the United States surpassing $1.7 trillion in 2021. A four-year college education, especially in prestigious institutions, can come with a hefty price tag, often leaving students burdened with debt for decades.
On the other hand, bootcamps and self-learning platforms provide a more affordable alternative, offering skill training at a fraction of the cost. This can be particularly enticing for an industry like software engineering, where practical skills often outweigh the name of the institution on your degree.
The Time Factor
Time is another significant consideration. A traditional degree typically takes four years to complete - that's four years of your life on hold, with limited time for real-world work experience.
By contrast, coding bootcamps can be completed in several weeks to a few months, and self-learning can happen at your own pace, leaving room for gaining hands-on experience or even starting your career much sooner.
Uni is Full of Distractions
College life, while rich and varied, can be filled with distractions that make you stray from your career objectives.
From sports to social events to extracurricular activities, these can easily consume a lot of your time and energy.
While these experiences contribute to personal growth and are undoubtedly enjoyable, they detract from the focus and dedication required to master complex software engineering concepts and skills.
You'd be surprised to know how many folks I know, that scrapped the barrel, graduated, and can barely string together a simple code statement.
So, take a hard look at yourself and consider whether that's the ideal learning environment for you.
Lack of Practical Skills
While a college degree offers a broad education and theoretical knowledge, it still may not provide the specific, practical skills that are immediately applicable in the real world. Theoretical knowledge, while important, will not prepare you for the practical challenges of working as a software engineer.
On the other hand, bootcamps and other self-learning courses tend to focus more on practical, hands-on skills. They often mimic real-world projects and scenarios, thereby equipping students with the skills that are immediately useful in the job market.
One Size Does Not Fit All
Traditional colleges often adopt a one-size-fits-all approach to education, with standardized curricula that may not cater to individual learning styles and interests. With technology evolving at a rapid pace, the curriculum you start with in your freshman year may be outdated by the time you graduate!
This was absolutely the case for me. My degree focused on principles, which in itself, is no bad thing, except that some of the technologies used to illustrate these principles were cutting edge.. 20 years ago - around the time the professor left the industry to teach. Coincidence? 🤔
Who Needs a Dorm Room? Alternatives to University
There's a whole universe of coding education outside the walls of a college, and these alternatives, often provide quicker routes to becoming software engineers.
That's because coding has changed, from being a niche, elusive skill to a commonplace activity, finding its way into homes, educational institutions, as well as your local cafe, globally.
I believe that learning to code has never been more within reach.
Here are some of uni-alternative options that'll help you reach your goals:
Coding bootcamps are like the Usain Bolt of coding education – they're all about speed and intensity.
Bootcamps typically last for between 12 to 24 weeks, and are designed to transform you from a novice into a job-ready programmer.
The best part about coding bootcamps? They're practical. Very practical. You'll be coding from day one, working on real projects, and developing a portfolio you can show off to potential employers.
Just bear in mind that the focus on practical, job-ready skills can often come at the expense of a broader or more theoretical understanding of computer science. This can limit your understanding of fundamental concepts, disadvantaging you when trying to solve more complex problems or when applying for more advanced roles.
Additionally, while bootcamps are typically cheaper than a four-year degree, they can still be quite expensive, often costing several thousand dollars. So make sure to crunch the numbers when weighing up your options.
One additional point of consideration is that the intense pace of learning can be overwhelming for some individuals, particularly for those without any prior coding experience. It's really important that you're sure the pace is a good fit for you.
The rise of the internet has led to an explosion of learning resources.
Countless online platforms now serve up coding courses designed specifically for beginners.
From engaging blog posts, informative YouTube tutorials, and immersive game-based apps, there exists a wealth of accessible, often complimentary, avenues to learn coding at your individual pace.
These educational offerings span a diverse range of programming languages and topics, catering to a broad spectrum of interests and competencies. Whether you're a novice eager to explore the realm of programming or an experienced developer seeking to expand your skillset or stay abreast of the latest trends, there's something for everyone.
Coding Meet Ups
For those who thrive in a more communal learning environment, exploring coding meetups in your local area can be an enriching experience.
These gatherings not only offer a platform to connect with like-minded coding aficionados but also present a unique opportunity that broaden your learning horizons.
Coding meetups, frequently organized by passionate coders and tech communities, host individuals with diverse skill levels - from beginners taking their first steps in programming to experienced developers refining their craft. This diversity creates a vibrant ecosystem, ripe for knowledge exchange and collaborative learning.
I've found www.Meetup.com a great place to find tech meet ups in my local area.
Finally, don't underestimate the power of good ol' books.
Yes, in our digital world, books might seem a bit old school, but they can provide a deep dive into specific areas of coding.
For coding especially, there's a plethora of renowned books that serve as excellent resources for beginners and experienced developers alike.
Here are some of the books that really helped me on my own journey. Each has its treasured home on my book shelve.
"Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold: This book is a classic introduction to how computers work at a fundamental level. It's a fantastic starting point for anyone interested in coding, providing a solid foundation before diving into specific languages.
"Head First Java" by Kathy Sierra and Bert Bates: An engaging and interactive introduction to Java, one of the most widely used programming languages. The book uses a unique approach, incorporating puzzles, strong visuals, and a conversational writing style to help readers understand complex concepts.
"Python Crash Course" by Eric Matthes: This is a fast-paced, comprehensive introduction to Python, one of the most beginner-friendly programming languages. The book includes hands-on projects that help you learn by doing, and covers various applications of Python.
"Clean Code: A Handbook of Agile Software Craftsmanship" by Robert C. Martin: While not a beginner's book, "Clean Code" is a must-read for anyone serious about professional software development. It provides principles and best practices for writing code that is easy to read, maintain, and enhance.
"Cracking the Coding Interview" by Gayle Laakmann McDowell: This book is a comprehensive guide to acing technical interviews, featuring 189 programming interview questions and solutions, strategies for tackling algorithm questions, and a primer on computer science concepts.
These books, each in their unique way, have played a pivotal role in shaping my understanding of coding and software development.
What I think..
I don't hide the fact I attended University, although, my first degree was totally different.
My undergraduate degree is in European Studies and Modern Languages, a multidisciplinary field where I studied modules in everything from History to Politics and a bunch of languages (the human kind).
Upon graduating, I landed a job in the language translation industry.
However, I still had a penchant for academia and yearned a return to the intellectual dance of formulating arguments, as well as the quiet satisfaction of penning down essay.
That was the fuel that propelled me to take the road less traveled - balancing a demanding day job with the rigorous pursuit of a part-time Masters degree in Computer Science.
Funding my education was a journey in itself. I chose to steer clear of student loans, opting instead to fund my degree with the earnings from my day job in translation.
This decision meant giving up a considerable portion of my personal time, trading leisure for late-night study sessions and weekend assignments.
The sacrifice was substantial, but it was a choice that resonated with my circumstances and aspirations at the time.
I was still living at home with my parents and didn't yet have a lot of responsibilities.
That doesn't mean the journey was a walk in the park. Far from it!
After full days at work, my evenings were spent huddled in the quiet corners of the local library, my mind laser focused on the lines of textbooks and lecture notes. It was a grueling routine, a test of perseverance and endurance.
Despite the challenges, my academic endeavor was not without its rewards.
Earning an accredited degree opened doors to a vibrant international career, taking me from the picturesque landscapes of Switzerland and the charming boulevards of France. These countries value academic diplomas and I have found my academic commitment rewarded tenfold.
Beyond the professional opportunities, my university journey gifted me a network of inspiring individuals—classmates, professors, and industry contacts.
Although, I have to add, many of these advantages are also offered through Bootcamps.
These connections, forged in the crucible of shared academic pursuits, continue to be a valuable part of my personal and professional life.
Looking back, I realize that my journey was unique, crafted by my personal circumstances at the time.
The path was strewn with sacrifices, challenges, and countless late-night study sessions, but it was a path that was right for me.
There is no one-size-fits-all approach to learning coding or building a career in technology. Your path might differ, shaped by your own unique circumstances, aspirations, and learning style.
The key is to understand yourself, evaluate your options, and choose the path that resonates with you. Because in life, there's more than one way to write a successful script.
Still Can't Decide?
Before committing to a degree, my honest advice is to take some time to explore coding in your own time.
There are numerous online resources, including free coding courses, that can give you a taste of what studying computer science entails. This initial exploration can help you decide if you enjoy coding and if you're ready to commit to a full degree.
Remember, deciding to pursue a college degree is a personal decision, shaped by your unique circumstances, aspirations, and learning style. The key is to make an informed decision, understand the benefits and challenges of each path.
Whether you choose to pursue a college degree in computer science, a coding bootcamp, or self-learning, each path holds its own opportunities for growth and success.
Seek Advice and Mentorship
I'd also suggest seeking the advice of professionals in the field, from degree holders to those who have taken different educational paths.
Reach out to them on LinkedIn, and inquire about their experiences, benefits, and challenges. Their insights can provide valuable perspectives to guide your decision.
You may sometimes feel a lone wolf in this game, but doesn't mean you shouldn't soak up as much advice as possible.
Often the best advice is advice you don't need to pay for, if it comes from a genuine place and from someone who has gone through the sames things as you.
When I first started to learn code, I had a lot of doubts, particularly at the beginning when I just couldn't get my around even the basics.
I was about to give up.
One day, I was mindlessly scrolling my way through the usual torrent of humble braggers and inspirational quoters on LinkedIn, when my eyes were suddenly drawn to an inspiring post shared by a successful software engineer.
His post provided tips for those learning to code, and compared to other posts, it had a real genuine feel about it.
I mustered up the courage to reach out to this individual, who seemed to have accomplished what I was merely dreaming about. Armed with an array of uncertainties and questions about my career path, I sent a message to this stranger, hoping for a response yet expecting silence.
To my amazement, he replied! His message buzzed with understanding and empathy. He wasn't dismissive of my doubts, but rather he identified them as manifestations of 'imposter syndrome'. He explained that it's a common phenomenon, especially among individuals in high-pressure jobs, where one persistently doubts their accomplishments and fears being exposed as a "fraud". He himself had been through the same, he admitted, painting the picture of a journey that was equally fraught with challenges, making his success all the more relatable.
Our conversation left me with a new sense of optimism.
Mentors have aided me ever since, having come in the form of friends, colleagues, and people I encounter both online and off.
For this reason, I've also set up a discord group where friendly faces can exchange advice.
Find someone who inspires you and try to get in touch with that person. If you know they've had to come through a similar experience as you, what have you got to lose?
Here's the deal
Here's a revelation: I didn't learn to code at college, rather, I familiarized myself with programming at the University.
That's because whether you are at a university of following bootcamp or evening course, what you need to know is that becoming a decent programmer depends on you. Your teacher or instructor is not going to make it happen for you.
Becoming a good programmer on your own also means working with others and knowing where to seek out knowledge.
When it comes to coding, independent learning never ends, you'll need to be on top of new concepts and approaches throughout your career.
What you've got to consider is the starting point that works for you.