If someone were interested in software development, where would that person start?
Published: 2022-11-16 13:54:02

Not so long ago, I was having lunch with a friend of mine. We were in an airport awaiting our flight home. He looked at me and asked a question. "If someone were interested in software development, where would that person start?" My first thought was this question is easy to answer. Before I responded though, I took a few additional seconds to think about my answer. Okay, this question is not so easy to answer.

## Background To My Thinking
When I was in college, software development was a field found to have the most people drop out at least according to a couple of articles. Many people entered the field thinking it would be fun and easy. Only to discover it is a discipline that takes hard work, commitment, and a love for what you are learning. Anyway, I digress from the main topic of this article. Back then, a number of avenues were available for software development. A developer would go mainframe with Assembly or COBOL. A developer could go to Windows with Visual Basic or C/C++/MFC. A developer could go web with HTML and CSS. I am simplifying things, I know, as there were more technologies available. But I wanted to provide some context.

In today's world, there are an endless number of possibilities. Mainframe development is still going strong though it consists of more older-generation developers. Advancements in Windows development with C, C++, VB.NET, C#, and other languages add a plethora to the mix. Web development exploded years ago with so many frameworks and languages such as Angular, Node.js, Go, Python, ASP.NET, Blazor, and much more. Throw in mobile development for iOS and Android. Or hybrid development that encompasses Windows, iOS, and Android. Again, I am simplifying things. Below is a basic list of the possibilities.

- Web Development
- Mobile Development
- Desktop Development (Windows, Linux, Mac OS)
- API Development
- Game Development
- Front-end Development
- Back-end Development
- Security Engineering
- Cloud Development
- Database Development
- Embedded Systems Development
- IoT Software Development
- Block-Chain Development
- VR Software Development

I pondered the original question: "If someone were interested in software development, where would that person start?" I asked about the person's interest to which the answer was they didn't have a specific interest in any certain area of software development. The answer makes things a little more difficult. 

## College/University
A good Computer Science program will provide exposure to a lot of the technologies utilized in today's technology industry. It will provide a foundation to allow a person to see the different areas and technologies to determine what might interest that person. By Computer Science program, I am not referring to the traditional CS program where hardcore geeks are pounding on keyboards knocking out code based on different algorithms. Below is a small list of concentrations available from colleges and universities.

- Artificial Intelligence
- Software Engineering
- Computer Forensics
- Computer Programming
- Computer Science
- Data Science
- Database Management
- Information Systems
- Information Technology
- Network Administration
- Software Engineering
- Web Development

**Pros**
- Exposure and learning of the basics of software development
- Formal exposure and learning to the different areas of software development
- Official degree from college or university

**Cons**
- Cost of the formal education can be expensive
- The associate degree requires 2 years while Bachelor's degree requires 4 years (or longer)

Is formal education a requirement for software development? IMHO, the answer is NO, a formal education is not required. Independent learning and boot camps are avenues that can be utilized to learn software development.

## Boot Camp
Boot camps provide the more focused learning on topics or technologies. Coding boot camps typically specialize in teaching proficiency in the coding language relevant to the chosen career path. Boot camps may specialize in focusing on a specific topic/technology such as Java programming or front-end development. Other boot camps may combine several topics into one course to prepare students to become full-stack software developers. Languages utilized in boot camps generally include JavaScript, Python, Ruby, NET/C#, Java, or PHP stacks. 

**Pros**
- The cost is relatively less expensive than a traditional college or university
- Time commitment is much less than in a traditional college or university
- Many are online

**Cons**
- Lack of fundamentals
- Bootcamp degrees are still not universally accepted; Employers may still require an official degree
- Programs may not be accredited
- Limited financial aid options compared to traditional colleges and universities

## Independent Learning
It is a fancy way of saying the person will learn at their own pace on their own time (self-taught). The internet provides a wealth of resources to allow anyone to learn the field of software development. A google search will bring up an endless list of resources including Microsoft Learn, LinkedIn Learning, Coursera, Udemy, Khan Academy, and Free Code Camp. Another avenue is to utilize the free online classes from many colleges and universities. As mentioned, this approach allows a person to learn at their own pace as well as decide what to learn. One drawback to this approach is knowing where to start with the different areas available.

## Pros
- Learn at a personal pace
- Cost is minimal (likely free)

**Cons**
- Lack of formal exposure to technology
- Lack of fundamentals
- The length of time to learn may be much longer
- Employers may still require an official degree

## What Was My Answer
With all that being said, how did I answer the question? Well, I'm not sure I really did answer the question. I told him the first step is to research the different areas available in software development. Research what is available and find what sound the most appealing. It doesn't need to be a single area. Then seriously consider the next step. My formal recommendation would be to consider the traditional route of a college or university. But at the same time, don't rely solely on formal education. Utilize independent learning at the same time. The college will provide exposure and fundamentals but a great software developer needs to always be learning.

I am old-school meaning a gen-x and not a boomer. I started my software development career in the 1990s and I have seen unlimited changes in the tech industry. If someone is interested in software development, the possibilities are limited only by the person's drive and willingness to learn.