Computer science

Computer science is a branch of science focusing primarily on pretty much anything that can be done on a computer. It attracts a wide population of neckbeards because everyone thinks just because they play a lot of video games they will be good at programming. The field of Computer Science ranges from using advanced mathematics to precisely determine why your solution is dead wrong even if you knew how to do it, all the way to banging your head against a metaphorical brick wall for an hour because your program won't compile only to discover it was because you added an extra curly bracket.

"We joined computer science not because it was easy, but because we thought it would be easy"

This is what actual coding is. You will soon discover that it is a tedious, time consuming, head smashing, bureaucratic, black hole of time that is 100% necessary if you don't want to ship a steaming pot of spaghetti code. Fortunately, other people have pinpointed exactly how much this sucks so the whole process is pretty streamlined. This is called the development cycle.

Initialization The customer approaches the company in hopes that they are desperate enough to make their ludicrous fantasy into a marketable reality. The idea is pitched to a bunch of upper level managers who don't even understand how to close the tabs on their phone, let alone know how to do any of the actual work required. After a large amount of false promises and exaggerations, the general idea of the product is set so that it can be mangled and distorted properly later down the line.

System Concept Development The least incompetent people working on the project are gathered to discuss the details of how exactly they will go about assembling this shit sandwich. Big questions are answered, such as "What language should we use?", "How should we handle the back-end?", "How should we outsource as much of this as possible?", and "Why does my soup keep disappearing from the break room fridge?".

Planning This is the stage where deadlines are set so that they can inevitably be missed, and where teams will be divided into subgroups. This stage is mostly so that the people involved can feel like adults and waste more time in board meetings. It's biggest function is to establish more stress in the environment. This part involves a lot of writing stuff down and woefully attempting to hold people accountable for their actions.

Requirement Analysis Research is done to find out what the hell people who use the program actually want, since programmers have a very loose grasp of daily life and the general behavior of the world population (In the same way that engineers would design everything for engineers if they could). User specification is nailed down to the point where literal interpretation trumps all forms of common sense and established norms.

Design This part of the process involves a lot of scientific-looking doodling which in reality is just a way to stop you and your lazy co-workers from taking shortcuts during development that will end up biting you in the digital ass. In order to write good models, you must assume that your dumbest co-worker has just had a stroke and then consumed 5 units of alcohol, and he is the one responsible for implementing that model. If you hold yourself to that metric, then the development process will be that much easier. Writing well thought out and detailed models will significantly reduce your workload and bug-fixing later in time, so naturally most people don't take it seriously.

Development This the actual coding part of the life cycle in which your mental stability will be tested. You must actually turn all of the design models into hard code that will inherently have more bugs than a village in Africa. In order to actually create a working product, you will have to constantly test and debug your code as you write it. Testing is a whole domain on its own but mostly just concerns the fact that if you put a button on your app that says "DO NOT PRESS" someone will press it. So you have to think of every possible way an idiot will break your program, because if they can they will.

Integration Testing This is the nightmare stage where you will suddenly find yourself surrounded by many religious people. This is where you attempt to connect all the moving parts. There are so many unforeseen problems and hiccups that you didn't even know were an issue until now that you will begin to question if computers are actually just magical boxes left here by a space wizard. This is where a lot of yelling and blaming happens, and most things start to completely fall apart because no one wants to change what they have already done.

Implementation Includes beta testing, mostly involves creating a real world version of what you have ready. This can once again lead to more unpredictable issues and complications but at this point it's too late to change any of the core setup of the product and so it gets sent out anyway. Whoops. That's what Day 1 patches are for.

Operations and Maintenance This is the follow up of the product, assessing important steps along the way, like did we use the right components, did we bug test this enough, and seriously where is my soup this is getting fucking ridiculous. And any product, much like a bicycle, requires constant patch updates and quality assurance feedback. Thus maintenance teams and support forums are created in order to keep the damn thing afloat. At this point in time, the last step repeats itself until superintellgient AI consumes the world or the company gets bought out by Google.

Shortened to IT by the non-believers, this is the janitorial work of the Computer Science world. These poor bastards have to forcibly interact with the general public who not only knows less than nothing about anything behind a screen but refuses to learn or be honest with someone who is trying to help them. Most people in IT would be unemployed if people just typed the exact same questions into google, but some of them have extensive knowledge of computer systems and are well trained in the command line. They are divided into strict hierarchies based on skill level and the time they have spent in the IT realm. (As a side note, everyone of these ranks is a virgin. Hiring managers can tell if you have touched a vagina and you will be turned down from the position)

Initiate These consist of interns and people who have yet to despise the general population. Their abilities include, google, asking their supervisor what to and 'Have you tried turning it on and off again?'

Sorcerer People with actual marketable skills, they actually use linux on their own personal computer. These intermediate level IT members have the ability to configure networks, properly encrypt files/messages, fix some minor back end issues and occasionally do stupid shit that crashes everything. Their knowledge is above rudimentary, but still requires further development.

Warlock In order to achieve this rank, you will at this point be not only an outcast from society, but also looked funnily at by the CS world. If they are even remotely social, Warlocks frequently become supervisors and even department heads. These people have usually been in IT for at least 6 or 7 years and have learned how to do pretty much all common tasks that the position requires. This is of course learned by watching someone else fuck it up and thinking "Wew I was up about to try that".

Wizard An IT Wizard is a powerful being with a near infinite knowledge of how computer systems actually work. These people have been department heads for many years and have repeatedly seen entire networks crash and people corrupt entire databases (and maybe have caused some themselves). But nonetheless to get this position they become jaded and snappy with even other lower level members of the IT hierarchy, as a wizards knowledge of computers is vastly superior even to warlocks. At this point they are the supreme authority within their surrounding region and they will rarely clash with other wizards, but often will get engaged in intense digital feuds as to what linux distribution is superior. Ironically they are not always department heads, because in order to acquire these powers, they will have spent years interacting with the general public, idiot co-workers, demanding bosses, ancient and obsolete systems, and then after all this some mouth breather comes along and tells him they know more than he does. This makes them impatient, hostile, and socially impossible to interact with.

Grand Wizard The Grand Wizards are a secret group of a dozen of the worlds most powerful IT professionals. They have spent ages as a wizard and when they are called upon they ascend to the wizard council where they alone decide how things must be done in the IT world. These beings are immensely powerful and get their powers from the fact that they are at least 35 years old and have never touched a womans breasts. Their decrees are then passed down to the wizards and enacted by their respective areas. It is through this hierarchy that the IT world manages to function.

This is how computers actually work. Upon outside inspection, it appears that computers are magical boxes that let you play games and type stuff. Once you learn the mathematics and the process that go into just the software design without actually building anything, you will once again arrive at the conclusion that computers are magic and it's a miracle that everything works. An Operating System consists of about twelve gajillion intricate components that range from user priority to scheduling algorithms, each of which is susceptible to hundreds of bugs even when written properly. There are multiple domains of operating systems, but none of them really matter except for the one that contains Windows, Mac, and Linux. (As a side note, Linux is objectively superior to Windows and Mac, because all 3 of them fucking suck and are one click away from a dumpster fire but at least Linux is free). Unless you are a MENSA certified genius, I would avoid this topic entirely.

This is how you make money off people being lazy. Making a website is the easiest goddam thing in the world. I could make a website now in 10 minutes if I had more free time (and when I do, I will). The fact that this is an entire industry and not a niche hobby is because people are lazy boneheads incapable of doing anything themselves. While the most common language (Http/CSS) is sad excuse of a dumpster fire, it's still brain bendingly easy to make a functioning website. That being said it does take an actual company to run, maintain, setup the backend and troubleshoot a website. You are better off watching dated youtube tutorials than going to a class on web design.

If you like driving cars older than you and inflicting self harm, databases is for you. The most common (and free) language, SQL was invented when Vietnam was two countries. Yes, it's 44 years old. It has aged reasonably well, but it is ugly and clunky to use. There is no error detection, you have to use it's own awkward syntax to look for anything and worst of all the icon is some ugly ass dolphin that no one wants to look at. Much like software development, databases involves drawing a lot of diagrams in order to not look like a monkey when you show your co-workers your bug-ridden and horribly designed code. Unfortunately there is pretty much no leeway as to how you design your database and this is usually where the funniest bugs occur, because they have real world consequences. As a bonus, you will more than likely have to deal with already existing databases, which is like trying to drink out of a beer bottle that has been smashed into a hundred pieces and glued back together.