Skip to content

Routes into Software Development

Published: at 08:00 AM (23 min read)

There are arguably more routes to becoming a software developer now than I remember being available when I was younger. It’s great to see access to this career being much broader than it was. I think a lot of the more practical and functional routes are great to see versus going to an educational institution being the main route in. So fair warning, this is a long blog post but I hope you find it useful.

Table of contents

Open Table of contents

Routes into Software Development

In this blog I’ll go over the various routes available to aspiring software developers, it’s mainly UK focused but there are equivalents to a lot of these routes in other countries too. I’ll be adding in some typical strengths and weaknesses to be aware of from my professional experience based on my years spent interviewing, hiring and the number of apprenticeship and graduate cohorts I’ve worked with, mentored and coached successfully.

Formal Education

Historically more formal routes into software development or software engineering roles were focused on institutional education and learning. There are still plenty of job descriptions out there that specify a requirement for a University Degree in Computer Science; for those of you who find that this isn’t the right path for you don’t worry, this requirement on Job Descriptions is almost a defacto addition but doesn’t always mean it is the deciding factor in whether you get an interview or not.

Expanding on the traditional university degree path into software development, it’s essential to highlight that this approach offers a comprehensive understanding of computer science fundamentals, algorithms, data structures, software design, and development methodologies. Universities in the UK offer a range of undergraduate and postgraduate courses tailored to budding software developers. Below, we delve into the specifics of what this path entails, including references to notable university courses.

Theoretical and Practical Knowledge

A university degree in computer science or related fields like software engineering, information technology, or computer engineering combines theoretical knowledge with practical skills. You will learn about the mathematical foundations of computing, such as logic, discrete mathematics, and calculus, which are crucial for understanding algorithms and complexity.

Practical modules often cover programming in various languages (e.g., Python, Java, C++), web development, mobile app development, database management, and more. Advanced topics might include artificial intelligence, machine learning, cybersecurity, and cloud computing, reflecting the current trends and demands of the industry.

I’d highly recommend getting as much information as you can on the languages and/or frameworks being taught in the practical elements of the course. In the past I’ve seen universities who’ve employed lecturers who have come from careers in VBA or VB.Net and they tend to steer towards what they find familiar. I have seen actual courses where the language of choice has been VB.Net and this wasn’t that long ago. So as a word of note, just take care to check what you’re learning will be beneficial to you in your potential career.

Research and Development Skills

University courses also emphasize research skills, critical thinking, and problem-solving. Students may have opportunities to work on projects directly with industry partners or engage in cutting-edge research with their professors. This experience is invaluable for developing the ability to tackle complex problems and innovate within the field of software development.

Notable UK University Courses

I’m not affiliated with these universities in any way; but, they do have notable courses in computer science with good graduate employment rates. However, there are universities all over the midlands and north of the UK that do excellent computer science courses too, just because they’re not listed below doesn’t mean they’re not worth doing.

  1. University of Cambridge - Computer Science Tripos: Cambridge’s Computer Science course is renowned for its depth and quality. It covers a broad range of topics from algorithms and data structures to graphics and networking. More Info

  2. Imperial College London - Computing (BEng): This course is designed to develop strong analytical and problem-solving skills. It covers fundamental aspects of computing but also allows students to specialize in areas of interest in later years. More Info

  3. University of Oxford - Computer Science (B.A., MCompSci): Oxford offers a comprehensive course that combines the theoretical foundations of computer science with practical applications, including a final year project. More Info

  4. University of Edinburgh - Computer Science (BSc, MInf): Edinburgh’s informatics school is one of the largest in Europe, offering a wide range of modules and research opportunities. More Info

  5. University College London (UCL) - Computer Science BSc/MSci: UCL’s Department of Computer Science offers a variety of undergraduate and postgraduate programs with options to specialize in different areas, including machine learning, virtual environments, and software engineering. More Info

Career Prospects and Networking

Graduating from a university not only equips students with the necessary knowledge and skills but also provides a valuable network of peers, alumni, and professors. Many universities have strong ties with the industry, facilitating internships, placements, and employment opportunities through career fairs and campus recruitment events.

Additionally, universities typically offer career services that help students prepare their CVs, improve their interview skills, and navigate the job market. This support can be crucial in landing the first role in software development.

Strengths and Weaknesses

Pursuing a university degree in computer science or a related field in the UK is certainly a viable path to a career in software development, offering a solid foundation of knowledge, practical skills, and networking opportunities. While the commitment in terms of time and finances is significant, the benefits of having a recognised qualification and the support of a university’s career services can be substantial for entering the software development industry. Equally it’s worth noting that there is value in practical experience and practical application of coding within the university labs is not representative of the field in reality.

Benefits
  1. Comprehensive Curriculum: University courses typically offer a broad and comprehensive curriculum that covers both the theoretical foundations and practical applications of computer science. This well-rounded education ensures graduates have a strong understanding of the field.

  2. Accreditation and Recognition: Degrees from reputable universities are widely recognised and respected by employers worldwide. This can significantly enhance a your employability and career prospects.

  3. Networking Opportunities: Universities provide a unique environment for you to connect with peers, faculty, and industry professionals through events, clubs, and career services. These networks can be invaluable throughout one’s career.

  4. Research and Development Opportunities: Many university programs offer you the chance to engage in cutting-edge research or development projects, often in collaboration with industry partners. This experience can be particularly beneficial for you if you are interested in pursuing careers in innovation or academia.

  5. Structured Learning Environment: The structured environment of a university program can provide a clear pathway and support system for you, which can be especially helpful for those who thrive under guided learning conditions.

Potential Drawbacks
  1. Cost and Time Investment: One of the most significant barriers to university education is the cost, including tuition fees, living expenses, and the opportunity cost of time spent studying instead of working. This can make university education inaccessible for some and lead to substantial student debt for others.

  2. Rapidly Changing Technology: The field of technology evolves rapidly, and university curriculums can sometimes struggle to keep pace with the latest developments and industry demands. This may result in you needing additional training or experience to be fully prepared for current job markets.

  3. Practical Experience Gap: While many university programs include practical projects and internships, the amount of real-world experience gained can vary. Employers often value practical experience highly, and you may find yourself competing with candidates who have more hands-on experience through bootcamps, apprenticeships, or self-learning.

  4. One-Size-Fits-All Approach: University courses often have set curriculums that offer limited flexibility for students to pursue their specific interests or specialize deeply in a niche area. This could be a drawback for you if you have clear career goals that require specialised knowledge or skills.

  5. Theoretical vs. Practical Balance: Some critics argue that university programs can be too theoretical and not sufficiently focused on practical skills and technologies currently in demand in the job market. You may need to seek additional resources or experiences to bridge this gap. Having already paid for the degree this can be somewhat disappointing.

Thoughts

In my experience while a university degree in computer science or a related field can open many doors and provide a solid foundation of the required skills, it’s important for you to consider your personal, financial, and career ambitions when choosing this path. Alternatives such as bootcamps, self-learning, apprenticeships, and contributing to open source projects can also lead to successful careers in software development and may be more suitable for some people based on their circumstances and learning preferences. So, as always take the time to weigh up the benefits and pitfalls of this route.

Bootcamps

Coding bootcamps have emerged as a dynamic and practical route into the field of software development, offering an accelerated pathway for those aiming to break into the tech industry. These intensive, short-term training programs are designed to equip participants with the most in-demand technology skills through a curriculum that emphasizes hands-on experience and real-world project work. Below, we explore the various aspects of coding bootcamps, their benefits, potential drawbacks, and what participants can expect.

Overview

Bootcamps are typically structured to be immersive and rigorous, often lasting anywhere from a few weeks to several months. They are specifically tailored to cover programming languages, tools, and frameworks that are most relevant to current job markets, such as JavaScript, Python, Ruby on Rails, and full-stack development. The goal is to prepare you for immediate employment by teaching you practical skills that align closely with industry needs.

Curriculum and Learning Environment

Strengths and Weaknesses

In the rapidly evolving landscape of technology and software development, individuals looking to enter or progress within this field must carefully consider their educational and training options. Coding bootcamps, as an alternative or complement to traditional degree programs, have emerged as a popular and effective route for many. However, like any educational path, bootcamps come with their own set of benefits and drawbacks. Understanding these pros and cons is crucial for anyone considering a bootcamp as a pathway into the tech industry or looking to enhance their skills in a short time-frame. Below, we look at the key benefits and drawbacks of coding bootcamps, aiming to provide a balanced view to help you make informed decisions aligned with your career aspirations and personal circumstances.

Benefits
  1. Speed: One of the most significant advantages of bootcamps is the speed at which participants can acquire new skills and become job-ready, making it an ideal choice for career changers or those looking to quickly enter the tech industry.
  2. Focused Curriculum: Bootcamps cut through the breadth of a traditional computer science degree to focus intensely on practical skills and technologies that are directly applicable to the job market.
  3. Career Services: Many bootcamps offer career support services, including interview preparation, resume writing workshops, and networking opportunities with potential employers.
  4. Cost-Effectiveness: When compared to the cost of a three or four-year degree, bootcamps can be a more affordable option for many you, with the potential for a high return on investment if it leads to a successful career in tech.
Potential Drawbacks
  1. Intensity: The fast pace and high workload can be challenging, requiring a significant commitment of time and energy.
  2. Variability in Quality: The quality and outcomes of bootcamps can vary widely, so it’s crucial to research and select a program with a strong track record.
  3. Limited Depth: While bootcamps provide a quick pathway to entry-level positions, they may not cover the depth of topics found in a degree program, which could be a limitation for some career paths within software development.

Choosing the Right Bootcamp

When selecting a bootcamp, consider the following:

Thoughts

Coding bootcamps represent a viable and increasingly popular route into software development, particularly if you’re looking to transition into the tech industry rapidly. With a focus on practical, hands-on learning and a curriculum aligned with current industry demands, bootcamps can offer an effective pathway to acquiring the skills needed for a career in software development. However, you should carefully consider their personal learning styles, career goals, and the characteristics of individual bootcamp programs to ensure it’s the right choice for their professional journey.

It’s worth noting that in my experience being a hiring manager I come across a lot of applicants who have come from the bootcamp route. It’s really important that the bootcamp portfolio isn’t the only work of note that you bring to the table as you’re of demonstrates your unique value, this is the only way to differentiate yourselves from everyone else that’s come out of this route.

Self-learning

In a particularly fast-paced industry such as software development it can be challenging to know where to start from the perspective of self-guided learning. Arguably, there is an abundance of online resources but note that this approach hinges on the your own initiative. You’ll need to leverage online courses, tutorials, forums, coding challenges, and more to forge your own path into software development. In this section, we explore the nuances of self-learning, including its benefits, potential challenges, and strategies for success. If you haven’t already feel free to read my previous blog post on how I got into software development, which was done using this approach Just know it is not without its challenges.

Benefits of Self-learning

  1. Flexibility and Convenience: One of the most significant advantages of self-learning is the ability to set your own pace and schedule. This is ideal for individuals balancing other commitments such as work or family.

  2. Tailored Learning Experience: Self-learners can customize their learning journey to fit their specific interests, strengths, and career goals. This means focusing on the languages, frameworks, and technologies most relevant and exciting to you.

  3. Cost-Effectiveness: Many resources available to you are free or relatively inexpensive compared to formal education or bootcamps, making it a cost-effective way to gain skills.

  4. Access to Diverse Resources: The internet offers a wealth of learning materials, including video tutorials, interactive coding platforms, and comprehensive documentation on almost any topic, providing a broad and deep pool of knowledge to draw from.

  5. Community Support: Online forums, social media groups, and platforms like GitHub provide opportunities to connect with other learners and professionals. These communities can offer support, collaboration opportunities, and insights into real-world software development practices.

Challenges of Self-learning

  1. Requires High Discipline and Motivation: Without the structure of a formal course, you must be highly disciplined to maintain progress and not lose momentum.

  2. Navigating the Abundance of Resources: The vast amount of available information can be overwhelming, and it can be challenging to discern which resources are most valuable and relevant.

  3. Lack of Formal Credential: You do not receive a formal degree or certification, which can be a disadvantage when applying for jobs that require such qualifications; note that there are accreditations and certifications available but these may come with additional costs or fees.

  4. Potential for Knowledge Gaps: Without a structured curriculum, you might miss important concepts or best practices, leading to gaps in knowledge that could affect their effectiveness as developers.

Strategies for Successful Self-learning

  1. Set Clear Goals: Define what you want to achieve through self-learning, whether it’s building a specific project, mastering a particular technology, or preparing for a career change.

  2. Create a Structured Plan: Organize your learning process by creating a schedule and setting milestones. Choose resources that align with your goals and cover the fundamentals as well as more advanced topics.

  3. Build Projects: Apply what you learn by working on personal projects. This not only reinforces your knowledge but also results in tangible outcomes that can be showcased in your portfolio.

  4. Engage with the Community: Participate in online forums, attend local meetups (if possible), and contribute to open-source projects. Engaging with others can provide valuable feedback, insights, and networking opportunities.

  5. Embrace Continuous Learning: The tech field is constantly evolving, so staying curious and continuing to learn new technologies and methodologies is crucial.

Learning Resources

Embarking on a self-learning journey in software development, particularly focusing on C#, .Net, and other programming languages, requires access to comprehensive and reliable resources. Below is a curated list of resources, including platforms for learning programming fundamentals, C#, .Net, as well as language-agnostic tools and communities that can support your learning journey. Whether you’re a beginner or looking to advance your skills, these resources offer valuable content created by experienced developers and educators.

For Learning C# and .Net
  1. Microsoft Learn: Microsoft’s official platform offers a wide range of learning paths and modules for C# and .Net, catering to both beginners and experienced developers. Microsoft Learn for C# | Microsoft Learn for .Net

  2. Pluralsight: Known for its high-quality courses on various technologies, Pluralsight has comprehensive courses on C# and .Net, created by industry experts. A subscription is required, but they often offer free trials. Pluralsight

  3. Udemy: Offers a variety of courses on C# and .Net, ranging from beginner to advanced levels. Courses are taught by experienced developers and are often available at discounted prices. Udemy

  4. Coursera: Provides access to courses and specialisations in C# and .Net development, taught by university professors and industry professionals. Audit options are available for free for many courses. Coursera

Language Agnostic Resources
  1. Stack Overflow: An invaluable resource for any developer, Stack Overflow is a Q&A platform where you can ask questions and receive answers on a wide range of programming topics. Stack Overflow

  2. GitHub: Beyond being a version control repository, GitHub offers a community aspect where you can collaborate on projects, explore open-source projects, and learn from other developers’ code. GitHub

  3. YouTube: A plethora of tutorials, coding sessions, and educational channels are available for free. Notable channels include:

    • Traversy Media: Offers tutorials on a wide range of web development technologies. Traversy Media
    • FreeCodeCamp: Known for their comprehensive guides and tutorials on various programming languages and development tools. FreeCodeCamp
    • Scott Hanselman: A well-known developer who creates content on C#, .Net, and general programming best practices. Scott Hanselman
  4. Reddit: Subreddits like r/learnprogramming, r/csharp, and r/dotnet provide communities where you can ask questions, share resources, and connect with other learners and experienced developers. Reddit

Well-Known Developers and Educators

Thoughts

In all honesty I think that being a self-taught developer and opting into this route into the industry is mostly about your own personal resolve. In some ways it’s also a testament to the empowering nature of the internet and modern technology. Whilst it has it’s challenges which often relate to the theory side of software development, the mathematics of it all, It does offer a unique path for those who looking for the flexibility to learn at their own pace and according to their interests.

Please don’t think this is an easy option, many people have tried to self-learn software development and failed to do so because they lose momentum. It requires a significant amount of self-discipline, motivation, and a strategic approach, the rewards for your time and effort however can be substantial. You need to genuinely make the most out of the online resources available to you and equally, acknowledge that there will be areas of theory and or development processes that will be unfamiliar to you that could come up in both interviews and the kind of work you might be asked to tackle whilst working in industry. You need to be open to being reflective and pragmatic about your own weaknesses and proactively seek to bridge that gap otherwise you will struggle to make a significant foothold in the industry.

Apprenticeships

Apprenticeships can present a structured, practical pathway into the industry, blending on-the-job training with academic learning. This approach allows you to gain firsthand experience, build a professional network, and earn a salary, all while learning the skills necessary for a successful career in tech. Below, we explore the benefits and drawbacks of apprenticeships, and provide guidance on how to get involved in one, including insights into the different types available.

Please know that being successful in an apprenticeship is as much about choosing a good reputable company, college or university to sign up through as it is about your own personal commitment to the learning.

Benefits of Apprenticeships

  1. Earn While You Learn: One of the most appealing aspects of an apprenticeship is the opportunity to earn a salary while acquiring new skills, making it a financially viable option for many.

  2. Real-World Experience: Apprentices gain valuable hands-on experience by working on actual projects, which can accelerate learning and enhance understanding of software development processes and best practices.

  3. Professional Networking: Being part of a company allows apprentices to connect with professionals in the field, offering opportunities for mentorship and building relationships that can be beneficial throughout their careers.

  4. Structured Learning Path: Apprenticeships provide a clear progression path, combining practical work experience with coursework that can lead to a certification or qualification recognised across the industry.

  5. Transition to Full-Time Employment: Many companies use apprenticeships as a way to train and evaluate potential full-time employees. Completing an apprenticeship can often lead to a job offer from the host company or open doors to opportunities elsewhere in the industry.

Drawbacks of Apprenticeships

  1. Limited Flexibility: Unlike self-directed learning options, apprenticeships have a set schedule and structure, which may not be suitable for everyone, especially those with other significant commitments.

  2. Competitive Entry: High-quality apprenticeship programs can be competitive, with more applicants than available spots, making it challenging for some candidates to secure a position.

  3. Varying Quality: The quality and relevance of training can vary between programs, potentially affecting the skills and knowledge gained during the apprenticeship.

  4. Salary Considerations: While earning a salary is a benefit, the initial pay for apprentices is generally lower than that of entry-level employees with a degree or bootcamp certification, reflecting the training component of the role.

Getting Involved in an Apprenticeship

As I mentioned earlier it’s important to find the right apprenticeship for you and it’s as much about you evaluating the scheme as it is them deciding if you get one of the spots. It is competitive so this is a balancing act; below are five of the key things to consider.

  1. Research: Start by researching companies and organizations that offer apprenticeships in software development. Look for programs that align with your career goals and interests.

  2. Prepare Your Application: Tailor your resume to highlight relevant skills and experiences. Include any personal projects, coding bootcamps, or courses you’ve completed that demonstrate your commitment and passion for software development.

  3. Network: Attend industry meetups, conferences, and career fairs to connect with professionals and learn about potential apprenticeship opportunities. LinkedIn and other professional networking sites can also be valuable resources for finding openings and connecting with potential employers.

  4. Types of Apprenticeships: There are various types of apprenticeships to consider, including those focused on specific programming languages, full-stack development, cybersecurity, and more. Some programs may offer a more generalist approach, while others might specialise in a particular sector of the tech industry, such as fintech, healthcare, or e-commerce.

  5. Educational Partnerships: Some apprenticeships are run in partnership with educational institutions, offering a combination of workplace training and academic study. These programs can lead to a formal qualification, such as an associate degree or certification in a specific technology or programming language.

Thoughts

Apprenticeships offer a unique blend of learning and working, providing a practical route into the software development industry. They are especially suited to individuals who thrive in hands-on learning environments and are looking for a direct path to employment in the tech sector. By carefully selecting an apprenticeship program that matches their interests and career aspirations, aspiring developers can gain the skills, experience, and professional connections needed to launch a successful career in technology.

Contributing to Open Source

Contributing to open-source projects is an excellent way for aspiring developers to gain real-world experience, improve their coding skills, and build a portfolio. It also offers the chance to collaborate with other developers and become part of a community, which can lead to job opportunities and professional growth.

I’ve kept this section separate from the rest as I think it should stand as an opportunity in it’s own right. It can be an additional accomplishment to accompany any of the above routes into software development. It helps you build out a portfolio or extend your existing one; if you can contribute to noteworthy projects in the field of software development your interested in it can make for a really interesting addition to interview conversations or if high-profile enough you’re CV.

Choosing the Right Path

The best route into software development depends on individual circumstances, learning preferences, and career goals. Some may prefer the structured environment and networking opportunities that a university degree offers, while others might thrive in the fast-paced, practical learning environment of a bootcamp. Self-learning and contributing to open source are great ways to break into the field for those who are disciplined and self-motivated. Apprenticeships offer a blend of learning and working, ideal for those who wish to earn while they learn.

In my personal experience I can tell you that any of the above routes are viable but you need to pay close attention to the work required once you’ve completed your path into Software Development. You need to demonstrate that you are more than the sum of your learning. Acknowledge the theory you don’t know, accept the lack of practical development experience and take steps to bridge that gap. It’s critical that you create a unique selling point for yourself. I have been training apprentices, hiring graduates and mentoring and coaching developers for many years and this is probably the most important activity I can tell you to think about and proactively engage with. Lastly, you’ve got this; it will take time and commitment, but being a software developer is a uniquely rewarding career and if you can persevere you’ll be an excellent developer. Just know that your learning is never done in this industry, it’s fast paced and technology shifts frequently, so prepare to commit to a lifetime of not knowing everything.