How do I refine my programming?
6 30 Sep 2015 14:21 by u/YogliB
Hi, I'm a college student learning CS, so far I've learned C, Java and Assembly (8086), but apart from homework I don't have any experience. So, how can I use what I've learned and learn more, possibly by helping open-source projects?
10 comments
2 u/sun_butt 30 Sep 2015 14:47
I found looking at other peoples code helped me a lot with the learning process (make sure they have some sort of standards set for pull requests). I self-taught myself programming when i was younger by looking through visual basic 6 project sources. Open source software would be ideal. You could contribute to open source projects maybe even start one of your own. You should read up on Git and or SVN if you plan on contributing to open source projects. If you mainly plan on using github, using git is a must. Even if you aren't contributing to github or anything you should incorperate some sort of version control system into your projects. it will make your life a lot easier.
2 u/Master_Foo 01 Oct 2015 05:49
I've been programming for decades and I'm still learning new techniques everyday.
The best thing to do is 1) Find a mentor who will give you small projects which will expand your skill set. 2) ABC: Always Be Coding. 3) Become a mentor for someone who is less skilled than you.
If you are interested, I'm building an open source game framework. There are a couple other people helping me out. You can join the group if you want an interesting project to work on. There's little obligation to join. If you find you have a few hours on the weekend here and there, you can probably find something productive to work on and finish.
Send me a PM if interested.
1 u/mwolf 01 Oct 2015 05:54
Can Confirm. Little pressure, fun time.
0 u/Master_Foo 01 Oct 2015 06:22
Thanks for the vote of confidence!
1 u/Sylos 30 Sep 2015 17:28
As @sun_butt said, contribute to open source projects(or just make your own). Another key step is having people read and critique your code. It's important to not program in a vacuum, otherwise you'll build bad habits or reinvent the wheel.
1 u/sun_butt 30 Sep 2015 19:26
yeah don't be afraid to join in an IRC chat or something and ask for constructive criticism
0 u/mcbeal 12 Oct 2015 22:07
I started to code in a bit of vacuum and reinvented some wheels. In retrospect, the vacuum is bad I agree.. but reinventing the wheel is not all bad. Facing a problem first-hand may give a different perspective / deeper understanding than what you get by just understanding and using something.
1 u/mwolf 01 Oct 2015 06:14
As for open source projects, contributions are always welcome, but even just learning about a source code management tool like git will put you bounds ahead of many of your peers. Having a handle on the lower end of things with an understanding of C, and an understanding of OOP concepts through java, gives you a strong base to go out into the work world.
Your university (or college, whatever) probably has some sort of internship/co-op program, or hosts a job fair every semester. Go to your university's career center. Build a resume. Inquire about places that might want to hire college CS students for summer full time work.
Alternatively, many universities offer programs that allow students to work full time during the semester as well as part of a school sanctioned internship program while maintaining full time student status, which rocks if you're in the US and still on your parents' health insurance/stuff like that.
The best way to get your feet wet is getting experience in the industry you aspire to work in.
If your university somehow doesn't have a career center, then go find a resume building service/workshop (a free one, paid ones are a ripoff) and craft a resume. It might seem trivial and empty but it is a document showcasing your current skillset.
Then, with resume in hand, go to your school's career fair (having researched companies you think you might want to work for) and visit the booths of some companies. talk to them, give them your resume, tell them you're interested in getting some real experience and you like the company's product line/the job description/whatever relevant work thing that caught your eye.
Then go in for interviews with whoever wants to interview, take the job offer you like the most ,or the first one you get, whatever, it's a 3-6 month internship, its not a huge deal if you have reservations about whether the place is a perfect fit. and you will get valuable experience regardless of the position.
Just remember that even though this process is daunting and you might feel like a grain of sand at the beach when it comes to applicants, what it comes down to is how well you can demonstrate an ability to learn/apply concepts. employeers seeking to fill an internship position will understand if you arent an expert at what they do, as long as you can learn the basics quick enough to get basic work done. and if you know C/java, you already have a pretty decent understanding of the syntaxes and basic concepts of most popular industry languages not relating to webdev.
I'm guessing you're much more than a freshman if you've taken assembly and an OOP course relating to java. the farther along in your education you are, the more eager employers will be to give you an internship in the hopes you will enjoy your time working there and reapply for a full time position upon completion of your undergrad. You have just as much to offer them as they have to offer you (another reason to ignore the feeling of being a grain of sand at the beach).
Good luck and always ask questions!
0 u/BendingUnit10110 30 Sep 2015 20:43
I would recommend you learn html/js/css simply because it's the easiest way to show things to other people. It also doesn't take very long to learn the basics. You should know enough to create a simple bootstrap / whatever.js site and self host it using github pages.
0 u/Torchhead 02 Nov 2015 05:32
An internship could offer you a great opportunity to learn how to program professionally.