18
votes
Any college CS majors here? Any tips for one?
Hey everyone. I’m a Computer Science major who feels very behind. I don’t have any substantial projects to put on my resume. I look at basic open source stuff and can’t understand it.
I’m currently attending WGU online, but also work full time so I don’t have a ton of free time to learn or work on side projects.
Anyone have advice for a guy in my scenario? I ended up dropping out of college a couple times during COVID and now I’m just trying to get back on the right path.
The language I know best is Java, but I’ve been trying to learn C++ and web development as well. Applied for internships but no luck so far, I think I need to make some better projects.
If you truly don't have spare time to work in projects I don't really know how you can improve.
The only way to build a portfolio is to pick side/hobby projects and build them. This is just something you are going to have to make time for.
I wouldnt recommend open source projects. Just make things for yourself. Try to do things that aren't just test projects. Target things that you can show off like a website, simulation, data visitation; whatever you find interesting.
Just make sure you finish whatever you start. No one wants to see a GitHub with 10 started projects if none are finished
Good luck!
You’re right, I do need to find time and do projects. I’m just overwhelmed. I need to pick something and stick with it, do you have any suggestions? I took the next 6 days off work so I can regroup and get some school work/projects started. I had 50 hours last week so I wasn’t able to do anything then.
That's a bit too vague to answer for you. What do you find interesting in the space? What kind of job are you looking for?
I’m looking for any kind of developer job, but probably Java or C++. As for what specifically I’d be coding, I don’t know yet.
I apologize for being vague, I just want to use this week to my advantage. By that I mean i’ll probably start working on a project, so I need to figure out what kind of projects would look good on a resume, and what I need to learn to code the project, etc. Right now I’m interested in making a 2D game in Java, but I wasn’t sure if that’s too “immature” for a resume
What are some examples projects you did for school? What is the biggest thing you've made
I’ve not made any projects for school yet. The biggest things I’ve made are Minecraft plugins. I used to go around to servers and make them plugins for $10-$20. I don’t have any of the code for them anymore.
I made a maze game in Java years ago but I followed tutorials for that. Lastly, I recently made a personal website using HTML, CSS, and JS. That’s pretty much the extent of my personal projects so far, none really are good enough for a resume.
Honestly, I don't think you are ready for a development job. I wouldn't worry so much about your resume and instead focus on learning.
If you are interested in making a game in Java, that's a fine project but keep it very very simple. Games are extraordinary complex to program and even things that seem simple will take hundreds of hours. Do something like space invaders. You need to start somewhere, as you do projects you will be able to do more complex things.
This is all assuming you have a good basic understanding of programming in the first place. Either way you need raw experience more then a resume right now.
I’m not looking for a development job, just an internship and projects to work so that I can improve. The experience is what I’m looking for I just don’t know how to get it. Thanks for all the advice, I will try to start coding projects more frequently and learning as much as I can.
Internships are development jobs, at least at my company. Unfortunately for most work in the field you will simply need to have previous experience.
The good news is there is an overflowing amount of knowledge, examples, and tutorials on just about anything you could possibly be interested it. Good luck with your career, so long as you make time to improve you skills and build a set of example projects to show off during your interview process, you'll do fine.
I probably need to pick one area (Java, C++, web development) and build a project with it instead of trying to handle multiple things at once.
Since I know Java I was considering looking up the documentation for LibGDX and following their tutorials to make a basic game, how’s that idea sound?
Big +1. I work with a guy who's had 0 college-level experience with programming but has a really good head on his shoulders for learning new stuff. I've had an easier job training him than anyone on my team.
How do you prove this on a resume?
Considering I'm considering making a change myself, good question!
What impresses me about my colleague is how quickly he grasps the key stuff and asks pertinent questions, so I think it's more to do with how effectively you listen and communicate than anything that can be put on a static doc.
My approach to this would be a repo or devlog, but more importantly: being ready to communicate what you worked on, challenges you encountered/how you dealt with them, etc.
Your best bet is to contribute to OSS.
Once you have done a few tutorial apps, (don't copy and paste. Read what they write, then reproduce it without looking) you'll need something more challenging than that. Oss will give you something closer to the structure of working at a company and dealing with unknown or unfamiliar requirements and implementing them.
In general, for web, learn containers and kubernetes, helm, etc. From there, learn testing, CQRS, DDD, event driven, openApi/swagger
I've been a SWE for 12 years now and I've mentored dozens of engineers. Let me know if you have anything more specific
I appreciate the advice, anything else you have would be great. I’m not super interested in web development, I want to focus on Java and C++. I’m only forcing myself to learn web development because I see so many jobs and internships for it, and I don’t want to limit myself in the future.
If you were in my position and had 6 days off work to focus on this what would you do to get started?
I'm confused, in the OP you said web development.
For java, learn how to build java thick apps (swing).
C++ you should do Arduino and RPI stuff, build embedded development stuff.
You could write a Linux kernel mod and build a virtual file system to hold doom files (I thinks it's a common project for uni students).
You can also write a driver for a virtual joystick or HID
Thanks for the ideas! Yes I did say I was trying to learn WebDev, I want to have the knowledge of it so I don’t limit myself. I’m trying to prepare myself to take ANY developer job, but web development itself is the least interesting to me out of the three I mentioned.
I have an Arduino I got for Xmas and haven’t opened yet, that’s a great idea. I’ll have to see what fun things I can do with it.
If you don't enjoy web development, don't do it as a career. You'll be wanting to jump off a bridge 5 years into a 40-year work journey, and it becomes increasingly harder to switch as you get older because a certain level of competence is expected when you don't look like a junior anymore.
That isn't to say you shouldn't explore many different things to find what you like! But don't force yourself just because you think there are "lots of jobs."
Interesting to hear that, and definitely second this advice! Much better to wait a little bit and work a job that excites you (at least in the beginning lol) than be stuck in a career you dislike.
I feel like this website probably skews a little older than Reddit, but figured I’d post anyway. I’m 22 years old, for anyone wondering.
I come from a slightly different perspective to a lot of people as I'm predominantly a computational and imaging biologist. That said, I definitely echo what the others have said thusfar, getting your teeth into little projects and pushing yourself to learn new skills is the best approach to take. You gain a lot (not just in one language but generally) by taking the time to find a new problem to solve and then getting on with solving it. Honestly a lot of my earlier stuff was coding bots for reddit to solve my own needs and satisfy my own interests. That taught me a lot about threading, api interfacing, data management etc. Later work was more scientific but more focused on solving scientific problems at a low level and quicker than my colleagues with better documents.
Long story short you can do a lot with a CS degree and you can get a lot out of it, but the only thing you really need is to want to do it.
I would start by building your own website. It doesn’t have to be flashy or use the latest hot frameworks, just basic html, css, and a sprinkling of js. Use that site to document things you learn building other projects. Don’t get paralysis of choice. Start something small and finish it. Document it. Repeat.
I have my own website actually with HTML, CSS, and a little JS. I just don’t know what to put on it, what do you mean by document things I learn? If I could find a way to PM you somewhere I can show you the website.
Like others have said, pick a project you think you can complete from start to finish. As you're working on the project write some posts/articles on problems you encounter and how you solve them, or new techniques/practices you encounter.
To send a private message go to my profile by clicking my name on this comment. You should see a button to send a message.
I saw some really good advice the other day which might be helpful for you: pick something that's slightly beyond your abilities right now, and learn how to do it. Make sure you keep it small, even smaller than you originally think.
It shouldn't be far beyond your abilities because then it's easy to lose interest or get discouraged, but it should be enough beyond your abilities that you still learn something.
As an example, one of my first personal projects was a small command-line todo-app. I was taking a "C for Java Programmers" course and so wanted to use my C knowledge from the course and built on that to learn basics of sqlite. I don't use the app any more, but it let me learn basics of databases which has served me well long term.
At the beginning it starts as smashing concepts together, but you eventually learn how things work and stuff starts to click. It primarily takes time. It might not go as quick as you want, but if you make small steps, you'll get there.
For me it spiraled in a sort of good way - a few years down the road I had one friend who ran an IRC server and one who ran a Discord server. I already had an IRC bot from a previous project, so I learned a bit about the Discord API and built a bridge between them.
At the moment, I've got an eInk display (which I've used for other smaller projects) and I'm working on turning it into a dashboard with tasks I want to do for the day and upcoming meetings.
I don't know what's after that, but I'm excited to find out.
I think I have a couple ideas in mind after reading your comment, thanks!
Not too sure if this fits with your personal plan, but from your comments to other responses, I’d recommend spending a little more time focusing on education before trying to get into dev work (paid or personal projects).
You mentioned that you were enrolled in college online; try to see if they offer project based classes in the fields you are interested in. Imo such classes thread the fine line between traditional education and real world development.
In addition, if you have time I’d highly recommend supplementing your college education with courses from udemy and coursera, again focusing on the subfields of CS that you’re interested in.
Lastly, regarding career, fwiw I’m still a student myself, so take this with a grain of salt… but, to me it seems pretty critical that you pick a career that you actually enjoy rather than focusing on employability immediately after college. If your finances allow, I’d recommend exploring different parts of CS (compilers, systems, data science, architecture and so forth) and try to see what really excites you before committing. Luckily it is easy to change careers in CS, but from what I’ve heard it is pretty easy to get pigeonholed into a field that you don’t really enjoy, which is never a good thing.
Finally, just remember that everyone is on a different schedule, and there isn’t really anything like “staring late” in CS. As long as you put in the time and effort, you should be fine :)
Edit:
I forgot to include this, but a great way to get experience is to work as a undergrad research assistant, either during the year or summer. A lot of profs and grad students need help anyways, and as long as you show interest it’s not too difficult to get into a lab. It’s a great way to get real application-like experience, with a lower bar of entry than internships. Just cold email professors and grad students and show interest!
I didn’t study CS in school but became a software developer after a couple of jobs after college. My biggest advice is to start a blog and commit to posting every Monday or every Tuesday and Thursday or whatever. It’s best if you can come up with some sort of side project that you can blog about but sometimes I’d just pick a topic and write about it for a month. Every single potential employer who has seen my blog was really impressed and it has gotten me three jobs.
(It’s not an impressive blog, just the fact that I was committed and blogged was what was impressive)
Thanks! If you’re comfortable sharing your blog could you DM it to me?
I hire interns occasionally for an organization you have definitely heard of. You don't really say what stage you're at with school, but I would suggest two basic directions:
Personal projects and opens source contributions by students almost never rise to a level of complexity that meaningfully demonstrates competence in my experience.
† CS isn't really a single field by the way. There are a massive range of development jobs out there and I'm not going to hire a web developer to write code for a moon rover. Yes, some skills are transferable, but you will be ill served by learning web development if you don't want a career making websites and you will be just as ill served learning C if you do want a career doing web development.
Just to echo this, not all CS jobs have the same requirements - some will require qualifications and others prefer experience.
I work in processor design and we hire exclusively bachelor degree candidates with a 2:1 or above (UK or international equivalent). Experience doesn't factor in much because we don't expect graduates to know the industry - we asses more problem solving in interviews. I expect many large software jobs are similar in requiring a qualification, so I would recommend trying to narrow down what kind of work you like the sound of and researching job entry requirements.
Hey! You are way ahead of me. I am a 30 year old "photographer" but recently left my toxic job and am still figuring things out. Wow I feel old. I went to art school and have a BFA in photography. Super lame. Over the last 9 months I have been diving into Linux. My dad has been a linux sysadmin my whole life so I've always known about Linux but only recently found it interesting as I get more and more into data storage because of my last job.
There's so much more than just coding. And there's different kinds of code too. Learn programs for automating systems like ansible which uses YAML to control a whole fleet of systems and/or setup a homelab and just learn anything you can in hopes to find what scratches that itch which is what I'm doing. I really enjoy selfhosting my own blog with hugo. I used to not give myself credit and feel dumb and like I could never learn again but I feel like I've learned so much cool stuff.
Although I am just a janitor now so take my advice with a grain of salt, lol. I'm still looking for other opportunities, ideally IT within the school district I'm in.
I'd recommend reading Clean Code. You don't even need to read it end to end! I've found the biggest thing for most intermediate programmers is learning how to write code that others can read and understand. Unless you're only working on solo hobby projects you never reuse, it's worth learning how to write code that's super easy to read and follow.
The best thing about picking up programming books is they're easy to read a chapter when you have time to learn at your own pace. There are some classics that are definitely worth reading if you want to understand software engineering at a design level too (I love the second edition of Head First Design Patterns).
My limited experience is both self-taught and college-educated programmers really benefit from learning some of the finer points of software engineering like design patterns and what makes code clean or messy.
My only piece of advice would be to not drop out again, and get that degree. You also mention that you have a full-time job, how much time do you have daily for those studies? I think it's a question as relevant as the languages you know or projects you have done.
My uninformed opinion is that you have to split tasks and define everything well (like time allocation, or how to be more disciplined if you need) before choosing to start projects like blogs or a GitHub portfolio.
Hey! You are way ahead of me. I am a 30 year old "photographer" but recently left my toxic job and am still figuring things out. Wow I feel old. I went to art school and have a BFA in photography. Super lame. Over the last 9 months I have been diving into Linux. My dad has been a linux sysadmin my whole life so I've always known about Linux but only recently found it interesting as I get more and more into data storage because of my last job.
There's so much more than just coding. And there's different kinds of code too. Learn programs for automating systems like ansible which uses YAML to control a whole fleet of systems and/or setup a homelab and just learn anything you can in hopes to find what scratches that itch which is what I'm doing. I really enjoy selfhosting my own blog with hugo. I used to not give myself credit and feel dumb and like I could never learn again but I feel like I've learned so much cool stuff.
Although I am just a janitor now so take my advice with a grain of salt, lol. I'm still looking for other opportunities, ideally IT within the school district I'm in.
Hey, I recently graduated from university with a degree in Math&CS! I think your best bet for trying to improve your resume is to:
I will offer one (controversial) way forward for you, since I haven't seen it mentioned. Of course, I say this fully aware many others have given you great responses already.
Focus not on finding a job, but building the skills necessary for you to succeed in one.
Make sure you understand the difference between programming, software engineering, computer science, TCS, and computer engineering. A professional has their place amongst these broad crafts, so understanding their differences will help you define your path.
If you haven't already, skim the slides of CS courses from S-tier universities. You can skim the contents of most engineering courses in a few days - if you retain even 30%, that's far better than the 0 you'd often have had prior. Begin with the intro classes, whose slides are meant for students who have less experience than you, who will comprehend their contents and succeed in their classes, so this is well within your means. Following, you will have the prerequisite knowledge to succeed in further classes (use the school's course dependency graph).
If you're struggling with side-projects, these universities' homeworks are frequently 1. somewhat interesting and 2. bite-sized (so you can finish a project!) and 3. insightful and extensible. By getting through a CS curriculum - which I think can be skimmed with at least 30%-50% understanding by most, mostly requiring tenacity, you will get a broader understanding of the problem areas faced in the broader discipline. The saying goes, when you only have a hammer, everything looks like a nail; so this is a fast way to discover what other tools exist.