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...
I'm going to recommend you become a sysadmin. I work for a Marxist political party in Europe and we can always find developers, but infra people like network engineers or sysadmins with a leftist mindset are almost impossible to find. And there is a lot of beautiful FOSS out there already but you need people at the helpdesk and sydadmins to get it adopted by users in an organization. Otherwise your movement will get lured into a Google or Microsoft ecosystem.
Being a sysadmin is a lot less sexy but I feel we have a lot of people developing open source already, and not nearly enough people at the front line interacting with users (1st and 2nd line helpdesk). Sysadmins are from the beginning of their career directed towards closed source and private ecosystems. The rule today is to use Windows with Active Directory, Office365 and put your servers in the cloud. We desperately need people with a Marxist understanding of political economy and the role of private property, who are able to link this to the ownership of the means of production via hardware and software.
Your WLB will depend mostly on the organization you work for. You want to find a job that can be combined with participating in social movements? Go work for social movements! The pay is often worse, and you will probably have more stress, but you are advancing the class struggle instead of filling the pockets of Big Tech. And social movements, especially when they are still small or medium sized, usually have a bigger need for helpdesk people and sysadmins.
Whatever you choose, development, helpdesk or infra, put your beliefs above your salary. There is no wage that could compensate for the fact that when I go to work, I greet my colleagues with "Good morning comrade". This is the best feeling ever.
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.
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...
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.
I usually say that the lazy dev is the ultimate generic knowledge worker. If you don't know how to solve a problem, get a lazy dev to do it to figure the path of least resistance. A skilled lazy dev will optimize for solving the most problems with the least manual work and code.
It's very hard to become a lazy dev though. You need to learn a lot about everything, to find the ideal touch point for the light solution, to design the simplest system. But the structured way devs learn to think, apply so well to so many different contexts, if you're open to explore that.
So... Aim for the lazy dev knowledge. Start from dev and learn about anything you find interesting that touches your current work. Then again, then again, then again. That should put you in a comfortable position to negotiate for the work you'd like to do, and for the salary and conditions you'd like to have, given the breadth and value of your knowledge.
But also, don't wait for it to build the study and social routines you'd like to have. :)
one thing to consider, I've not found it too difficult to transition from dev -> devops -> SRE. The opposite direction seems more tricky (as development skills/experience is harder to pick up on the job for one in IT than vice versa). This is just a personal anecdote tho
In the end, I'd choose the one that appeals to you more. But I do think that development is the more valuable (strictly in the market sense) career track and gives you more options to transition later down the road. So if you're doing well right now and aren't really anxious to transition, I'd stick with it until you have a few years of experience
I'm some years past college now tho so I can't speak on what the relative prospects are for new grads, esp in Canada
Thanks for your viewpoint and I think I'll do that and keep working towards my first dev co-op etc. Nice to have the flexibility to transition down the line.
To start with I'll answer your specific questions
-
Would working in helpdesk allow a better or worse WLB? This is very company dependent. In general though developers are usually able to clock out more often at the end of the day. If you go SysAdmin/DevOps/SRE when things break in the night it is you who gets the call. Again this varies wildly between companies, I'm in a DevOps/SRE role and have had that at 3 different places, one there was zero after hours calls, one was multiple times a week, and one was once or twice every quarter. So keep that in mind.
-
Would it be more likely to be unionized and thus a better place from which to participate in tech labour struggle?
Tech really isn't unionized much. Helpdesk while often the seemingly most likely to unionize has the issue of people move up and out quickly and tech workers in general can move to new companies if they don't like something and that is often easier than unionizing. To also echo @Kamaradski9000@lemmygrad.ml the leftists on the more infra side are few and far between. It draws a lot of loners and reactionary people, the musk fanboy types. -
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? It is easier in the sense that helpdesk is a grind(they call it helldesk for a reason) and places are always hiring. Pay will be terrible and you'll be grinding some boring work unless you put in extra hours to move up and show you know stuff, or at least that is the general path. Lucking out into a SysAdmin role or a role doing interesting work is about the same difficulty as breaking into a software development role. There are usually less positions on the infra side, but also less people doing it.
As for my advice, you are still in school so keep learning. Use this time to try some new things to figure out what you'd enjoy more. Both roles are in demand and can have comfortable salaries. If you are thinking about linux and sysadmin work try standing up a small web server on one of the cheap cloud providers and see what it is like, then automate it. Once you've done that maybe play with some docker containers. As for an internship I'd suggest sticking with software development as it is more in line with your degree for the time being, if you are doing multiple internships(like one each year) then maybe consider looking for a more infra focused one if you don't enjoy the development side
-