What to Know Before Pursuing Tech Degree
Tags: career, beginners, webdev, python
Published: 2022-09-05 18:10:29

Going into tech I was overwhelmed and did not really know what I wanted to do.  I always wished someone would have pointed me in the right direction early on.  Here are some things I wish I knew ahead of time.

## 1. Actually Decide on Tech Sub-field (They're Different)
One of my biggest mistakes is my first decision to go to school.  I started programming when I was a senior in high school.  Unfortunately, people in small towns do not talk about tech very often. At the time, I believed all tech is the same. However, it is not, and there is a stark difference between the tech fields.

Many of my friends and family believe an engineering degree lead me to a degree in software but that is wrong. When I arrived at college, it sounded like networking would be the best way to learn software. Also wrong! If you want to work with software you need a degree in software.  Computer Science or quite literally "Software Development" is what schools tend to call this field.


![Tons of tech options](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d2b68yjg8krw9ncnwxb2.png)


 
Anyways, I pursued networking then eventually swapped to software. What I didn't realize is there are major subcategories in tech. Knowing that these sub-fields exist can help you plan your career early. Here are some of the big categories (there are many more):

* Cyber Security
* Data Analytics
* Computer Science (Sometimes called "Programming")
* Software (Sometimes called "Programming")
* Networking
* Information Technology

Most of these fields overlap with each other, and vary based on the job or school. Some schools are better at making the distinction than others. If you pursing higher education, ask questions or you'll end up in unintended sub-field.

### Data Science
This field is mostly advanced statistics/probability. The biggest topics being "Big Data" and Machine Learning/Artificial Intelligence (ML/AI). They use software/programming as a tool to analyze data for business decisions. They work with tools like R, Python, and databases. These people are super smart but don't write quality software by any means if at all. This field requires higher education.

![Analytics and probability](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s9s91nhlsmkk05ta5d9m.png)

### Computer Science (Sometimes called "Programming")
This is the highly technical side of programming mostly focused with optimization and algorithms. These write algorithms in their head. Schools which provide this degree involve a lot of high level math (Discrete Math & Calculus). Rumor has it that most CompSci schools tend to focus on theory more than actually writing software.  CompSci is super valuable to people who are already well versed in software. This field typically requires higher education.


![computation and optimization drawings](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dycbvpi768ei0dflukwo.png)


### Software Engineering (Also called "Programming")
Software developers work more on the design and architecture of software. They are the front runners who prototype and engineer software solutions. They do the most coding but tend to be a jack of all trades. It is very common for engineers to know a handful of programming languages and when to use one over the other.  Engineers also have a high degree of understanding software systems, and how they fit together. Often times, they can visualize problems way ahead of time. This field typically requires higher education and/or a portfolio of projects.


![software developers](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3k969l6vpmd2lxc9qvl3.png)



### Networking
Networking is purely focused on routers, switches, and sometimes very low level code. Typically they study network architecture with a mix of Cyber Security.  When you pursue this field you have a high chance of managing data centers and wiring cables. Networking is the foundation for many businesses. This field is mainly requires certification.


![wires](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/68243mrd5bmfrhs4tdb2.png)



### Information Technology
Information technology is mainly a catch-all for all things tech. As a result, most people in this field pursue careers in tech support, system administration, or computer repair. People in this field are well versed in computers and do not concern themselves with the details of software and data. This field tends to be the most hand-on. Their range of computer knowledge allows them to pivot their career with ease. 


![people solving computer problem](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e07cyf4n5lb2ayzjsrz5.png)


### Cyber Security
Cyber Security is in the name. This field is similar to networking and information technology but people are solely focused on keeping technology secure. They study and discover attack vectors in hardware and software, but are also concerned about physical security. This field typically requires some higher education but is mostly based on certifications.

This is the most in demand field for the tech world. 


![a security analysts worst nightmare, free wifi](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2acatorzjbmk2h8yuaav.png)


---
 
## 2. Software is a Business Tool and a Business Language
When I started out, I had an ego and a hero complex. My thoughts were coders are a rare breed and no body understood tech so it was my job to fix everything. 

In reality, many people have knowledge of what tech can do, however, they are not interested in the details of software. Most business problems just converge at programming. 

Why do business problems converge at programming? It's because everyone wants to automate or simplify their job with software. 

![whiteboard work](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ogo4fdk15hzur5fmkdup.png)

Unfortunately this aspect of business can confuse many young developers. They think that every problem has to be solved, but that is not realistic. 


The best engineers are close to the code and spot business problems ahead of time. Instead of putting the weight on their shoulders, they communicate their findings to other parts of the business.


![guy struggling with code](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k6k6mkloewqbzfy0pnkr.png)



This ability to see the business through code is why many software developers tend to make great owners and executives. Given enough time, an engineer sees almost every aspect of business cross their path.

---

## 3. Software is Just Decades-worth of Abstraction and Poor Decision Making
One of my latest jobs was to maintain a code base that was nearly thirty years old. We had all types of languages including Python, Java, C, and FORTRAN.

Most of the code is replaced over the years, but there are chunks which are essential components of the business. These core sections of code are often built upon like Lego blocks. 


![ugly c code](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1g8oflls8rpdd119bjj8.png)



Devs can easily waste years trying to understand the core code, but that is not an effective use of time. At some point, you have to make a trade off and ask yourself if it is worth your time to refactor or write something from scratch.

This balance of perfection vs good enough is very common in all aspects of business.  Coders tend to make the decision more often. 
 
---

## 4. The Internet Shouldn't Solve All Your Problems
One of the biggest problems for programmers is solving trivial problems. Naturally, we go to the internet and copy the first answer off of StackOverflow, Reddit, or some random blog/forum.

However, stop for a second and ponder about how those questions/answers were published. Odds are someone had no idea what they were doing so they asked a question. Then for trivial questions, they probably posted the answer after having no idea of what they were doing.


![stackoverflow](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ul6ze9bhbgdwto4ec2d5.png)



I'm not trying to discredit crowd sourced code.  I'm saying that you should take answers with a grain of salt, and if you have any doubt always cite your source. Use these sites as a starting point not an answer. The last thing you want is to copy and paste code that you do not understand. Ask yourself, if this problem crops up again, will I have a better idea of what works?

If you need answers it is better to spend a few extra hours/days reading the source documentation or source code to make your own conclusions.  This allows you to get to the source of the problem and often times you retain more information.

---

## 5. People Skills Get Raises Not Tech Skills
This ties back into #2 but is more focused on how to get the job you want. This is not 1960, 1980, or the 2000s, programmers are considered human nowadays. If you want a raise or need more time, you are expected to communicate and stay cool.

Unfortunately, coding can lead to all sorts of changes to your mental well-being. Many devs do not realize how much their mood fluctuates when they are going through a sprint or debugging session. 


![meeting with people](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xib8tzod0rgofghlgele.png)



Not to mention, popular shows and early experiences can lead you to believe people think of you as some magical nerd, which is kind of true, but it really comes down to how you communicate.

You have start by communicating why the coding decisions matter, and drop all the nuances of syntax/architecture. You will find it much easier to communicate to other people in the business world once you realize where people's knowledge of code exists.

---

## Conclusion
The world runs on software but it doesn't revolve around it. Understanding the role of software and where it lies within the tech world can save you a lot of regret.