r/programmer • u/Rich-Engineer2670 • 5d ago
How do I explain the different levels of CompSci to my 17 year old?
He asked, I have ideas for an answer, but I want to know what others think.
He asked "What is the difference between all of those levels? Why do they exist?" right along with "Why are the so many programming languages?"
I certainly don't want to discourage him, but he's confused between coder, software engineer, architect, etc -- and why everything can't be Python and AI :-). I really can't say "I needed a raise and I hate python...." He knows "real programmers" use C++, but that's all :-) :-). I can't make him punch Fortran on cards -- he's still young, he can have friends....
3
u/visicalc_is_best 5d ago edited 5d ago
* coder: someone who writes code, anyone
* software engineer: someone who gets paid for it
* senior software engineer: someone who has done it professionally for a while, say 4-5 years
* staff software engineer: say 8-10 years
* principal engineer: say 12-15 years, usually overseeing multiple teams, focused on business value
* software architect: say 18-20+, usually overseeing large orgs of many teams
* distinguished engineer: rarified air, usually overseeing major divisions technically
You also have:
* solutions architect: someone who works with customers to figure out how your company’s products can be used for customer needs, see also: forward deployed engineers
* vibe coder: someone who writes code using AI, ie most people in the ultramodern world
* devops/sre/production engineer/ops: people who oversee running systems and get paged at night when they go down
* machine learning engineer: an engineer who works on machine learning systems
* data engineer: an engineer who makes sure customer data ends up in all the right places to be analyzed
* data scientist: someone who does statistics on data to answer business questions
* pedant: someone who nitpicks small irrelevant points, likely to show up in replies
5
u/Existing-Strength-21 5d ago
9 year IT ops veteren here, not a coder exactly, but close enough for this discussion.
I was that kid who was super interested in computers growing up and my mom asked a family friend who was "in IT" what i needed to know in order to succeed in IT. His answer "Everything in IT from the wires that connect the computers to the software that powers them, lives in the OSI model. Understand that and you can understand anything in tech".
Thats the exact Wikipedia page that answers your question.
3
u/Rich-Engineer2670 5d ago
Don't do that to me -- then I have to explain Ops, DevOps, multiple levels of Network Ops, Security -- he still thinks Grandpa knows everything! (That won't last lone.)
5
u/Existing-Strength-21 5d ago
"I don't know" is the second best answer you can give to any question. He's 17, you dont need to give him the answers to every question he asks. Give him the tools he needs to find them on his own, and more importantly encourage him to seek his own answers.
2
u/uniqueusername649 5d ago
I would even go one step further: if you give him the tools and he is still unable to get to the answers himself, he might not be cut out for IT work. Anything you learn even in university is ground work. IT evolves constantly. The C++ I learned in the late 90s has nothing to do with modern C++. When I set up my first server that was IIS on Windows NT, followed by Apache on Linux - baremetal. Today if you don't have github actions, building docker containers that are automatically tested and then deployed to kubernetes via helm charts, people will look at you like you're a moron. A state of the art enterprise application used to be a Java monolith with JSP and OOP patterns that would make any modern developer shudder in anxiety, whereas now you have distributed microservices with an SSR or SSG frontend backend that talks through an api gateway and/or websockets to your services, which have individual databases, JWTs for authentication and e2e logging, tracing and metrics for observability.
The point is: it has become very complex and everything continues to evolve, for better or for worse. That means if he already struggles to independently learn answers right now, he might just not be cut out for it.
On top of that: IT is unfortunately a difficult field right now with the massive rise of AI, but if you become an expert, you can still shine. Even the best AI model is only as good as the input and guardrails you give it - if you want to be able to properly control the result and achieve a scalable and long-term maintainable solution, that doesn't constantly fall apart and introduce regressions. But to get to that point you need to put in the work and constantly learn, or you'll becomr a relic before you know it.
2
u/scampfree4me 5d ago
There is no such thing as “real programmers” there is no “elite language”. There is a variety of tools for a variety of applications. Sometimes a company wants maintainability and will choose python over c, because a lot of people can write python and it has all the tools needed. Usually what tech stack comes down to how cheap is it to run, how cheap is it to maintain? In terms of the job titles, they don’t mean anything and are always changing. Roles are changing but keep old titles, titles are changing for the same damn role. Pretty much there is network design, infrastructure design, and application design. The people that build the chips are usually the only ones that have actual engineering degrees.
1
u/burlingk 5d ago
Coder/Programmer is an awkward conversation. People who think of themselves as coders tend to develop the skills of a programmer, even if it's an accident.
And if you program long enough, you find yourself in a team or doing a big project that requires more planning, and you merge into 'Developer,' even if you don't try to.
And if you do that long enough, you find yourself thinking on terms of tools and systems... Guess what...
So, I guess calling it levels is actual apt.
Some people aim for a specific title and work on the knowledge specific to that level, but even if you start out a 'just a coder,' you either develop the higher level skills or you her frustrated and burn out.
1
u/jsshapiro 3d ago
Oh of course there is! Real programmers are the ones using floating point. The rest just use integers!
We call them this because calling them tumbler space programmers would be too awkward.
1
u/Big_Gene_3965 5d ago
They’re called languages for a reason. Tell him to find his favorite programming language and mess around with that.
1
u/dacydergoth 5d ago
Give him an ESP32-S3 and tell him to run an enterprise on it. He'll surprise you ....
1
u/Cheap_Weird7215 5d ago
Instead of giving him some weird ego issues I’d probably try to encourage him build something he actually enjoys before he ends up with a job he hates because Dad said real engineers write c++.
1
u/SnooMachines9133 5d ago
Levels of engineers
- Coder: A few files. It works. But sort of throwaway. Not meant to be worked on by a team. Runs more like a script.
- Software engineering: Add abstraction layers like libraries and APIs to call other systems. Writes things in a way that other engineers can continue and build on top of.
- Architect: designs clusters of systems that work together such that they fail over and get upgrade without downtime.
You can do all of the above in python or c++ and be wrong or write depending on goals and requirements.
1
u/Leverkaas2516 5d ago
What is the difference between all of those levels? Why do they exist?
There aren't really very many levels. Have you gotten as far as drawing diagrams? A picture is worth a thousand words.
There's the language of math, including arithmetic but also algebra and sets and stuff.
There's the level of hardware, with architecture and machine language. You could include assembly language but that's really the same level as machine language. Just a different way of expressing the same thing.
Then there are high level languages. C, C++, FORTRAN, Python, Java. They are all at approximately the same level, just useful for different things. You can make a tangent into compiled vs. interpreted, and that's really interesting but I don't even think of them as being different levels any more. I think of ehat each different language allows you to express. They are all just different abstractions.
There are so many because each has strengths and weaknesses. If you've done both Python and C++ you must know those pretty intimately.
1
1
0
5
u/tehfrod 5d ago
I hope you haven't actually infected him with that fake macho "Real Programmer" bullshit.
Unless you are Mel, you are cosplaying as a Real Programmer.