I'm a little over half done my CS degree. I love programming, Linux, etc. I am considering getting CompTIA A+ and Linux+ this summer with pirated Udemy courses. I do coding projects too, like I am almost done my homebrew NDS game, threw together a Tkinter pomodoro app last week, and in the past I made a command line program that computes a readability score on a body of text. Finally, I am participating in 100 days of leetcode problems together with my CS club. So I've done a lot to move towards coding professionally.

The question is what kind of career should I go for to suite my goals in life. I would like to be able to own a place to live in Quebec (don't live there yet) whether it is in MTL or a rural area, not sure what I want yet. So software dev. gets a point for higher income, I think, plus it's what I've studied for, mostly. But it's important to me too that I have free time outside of work and so can participate in social movements. Would working in helpdesk allow a better or worse WLB? Would it be more likely to be unionized and thus a better place from which to participate in tech labour struggle? I'd really like to achieve fluency in French and Chinese (currently a beginner and intermediate learner respectively) eventually, and maybe the IT world would have me talk to people more. Is it easier to break into than software, like, so much easier that it would be worth changing course, or just doing IT as a stepping stone for my first co-op (internship program in Canada) or two?

Interested in others thoughts on how to proceed here.

For the meantime I think I'll start the A+ course because it can't hurt, and keep working on my DS game, cuz it's almost done.

I don't even know if I want to do either of those professions, I could see myself teaching English too, to Francophones and Chinese especially as I want to learn those languages...

  • ☆ Yσɠƚԋσʂ ☆@lemmygrad.ml
    ·
    8 months ago

    Web development jobs are still going pretty string right now, so that's one area I'd recommend learning about. Pretty much everything is connected to the internet nowadays one way or another. So, knowing how to work with databases, how the web stack works, etc. is generally in demand.

    Data science is another thing that's pretty big right now, a lot of companies have large volumes of data they need to process and analyze. This is also useful for stuff like research if you wanted to work at lab for example.

    One nice thing with web dev jobs is that there are increasingly remote opportunities available, so you can get a relatively high salary to where you live. Unfortunately, unionizing is very rare in tech right now.

    There's less demand for Linux administration nowadays because most companies use hosted services like AWS. However, knowing how stuff like Docker works is very useful.

    • rufuyun@lemmygrad.ml
      hexagon
      ·
      8 months ago

      Thanks for your input. Web dev seems great and I've considered trying to deploy some kind of useful REST API, like for computing directions from one place to another on campus, probably with FastAPI in Python. Doing something with Docker is also on my todo-list...

      • ☆ Yσɠƚԋσʂ ☆@lemmygrad.ml
        ·
        8 months ago

        That sounds like a fun project, and should give you a bit of a taste for how this stuff works. One more advice I would give is to not get overly focused on any particular tech stack. The key is in understanding the underlying concepts that are transferable. The tech space tends to be very volatile, and new languages, frameworks, etc. come out every few years. So, it's important to be able to be adaptable and figure out how to use new tools. Most of them aren't introducing anything fundamentally new though, so if you understand the core concepts then you can figure out how they map to the tool, and what problem it's trying to solve.

        React is a good example of this, it's a really popular frontend library, and the problem it solves is that it's expensive to repaint stuff in the DOM of the browser. So, it keeps track of all the components, and then whenever the state of any components changes it can compute which components need to be updated and repaint them efficiently. However, the idea itself is not new, it's basically the concept of a frame buffer that's been used in games. Once you see what's it's doing then it's just a matter of learning the syntax.

        So, basically, what I'm saying here is that you don't really need to worry as much about memorizing implementation details of particular tools or libraries, you can always look this stuff up when you need to. But, do make sure you understand how tools work conceptually.