The Way to Programming
The Way to Programming
I’ve been wondering about this for a while and googling it certainly didn’t give me any solid answers… so I was wondering if someone in this forum can help!
I’m current finishing my sophomore year as CS major. I know a bit of java and c++ currently (more of java than c++).
I thought about getting certification but I found out that there aren’t any certification for c++ or c that has national recognition. I’m applying for internships during the summer so I can get some hands on experience though!
unfortunately, my GPA isn’t all that great.. barely making C+ average (but it’s not like I’m forcing myself to study CS, I actually like it and have been studying it since HS).
My main questions are… what can I do to gain advantage over those who graduated with.. say… higher GPA? I heard that joining open source project is great, but I don’t even know where to begin (is Github a correct place to start?)
well, I hope I made my message clear. How to gain edge after graduating college.
An OCJP will help you get the job, but it won’t help you do your job.. Yeah it will give you a good understanding of the internals of standard Java, but in the industry we make use of frameworks such as the Spring framework for Java. I’m not saying that you shouldn’t do an OCJP, just that it won’t necessarily give you the better edge. If you want to gain an edge, learn relevant technologies in the language of your choice. This will let the interviewers know that you already know the relevant technologies so you won’t need to be trained as intensively. Usually graduates get assigned mentors, so that way the mentor doesn’t need to spend as much time on training the junior.
For Java these include (these aren’t the actual definitions, but it will give you an idea):
– JQuery: a JavaScript framework that is very customizable
– Google Web Toolkit (GWT): A framework that allows you to write Java code (the style feels similar to old-school Swing GUI programming) that gets compiled into javascript.
– JSP/JSF: Front-end web technologies that take care of the servlet code for you. Instead of writing HTML pages you’ll use a syntax similar to it, but it gets compiled into servlets at runtime.
– Spring MVC: A front-end web technology that uses the Model-View-Controller design pattern. It makes creating web applications quite easy.
– Spring WS: A web service framework.
– Hibernate/JPA: used for persistence (it takes care of the database interaction for you)
– Maven: a build manager that resolves dependencies (it even downloads them for you). There are also many plugins for it, for example plugins to check how much of your code is covered by your unit tests.
– Unit Testing: this isn’t actually a technology on its own, but many graduates don’t know what unit tests are. Learn how to write efficient unit tests.
Just Google for web application tutorials – ex. “Spring MVC 3 tutorial” and see if you can get it working. Use an application server such as JBoss to run your web applications.
If you don’t know enough Java to understand these topics then work on some standard Java stuff and by all means do an OCJP, but don’t depend on it to give you an edge.
If you want to contribute to open source projects, join websites for those projects that you are interested in and get in touch with the community. You’ll probably do things like documentation and testing at first, but its a good way to get to know the processes.
What you need is something that makes your CV memorable. A good way to do this is to become a commiter on an OpenSource project, as you’ve already noticed, but there are other ways too. Most colleges host conferences – present a paper or session at one of these. It doesn’t even have to be a computing conference – you could present on the application of IT to the core theme of the conference. Alternatively, publish something. While it’s difficult to get something published in one of the top-tier journals like the ACM Communications, there are many others where you might get something accepted. Another idea might be if you patent something: while patenting software ideas is considered evil by many, it’s something that your lecturers are interested in doing, so discuss some ideas you have with them and see if they’re willing to push the idea through the college’s IP process.
Of course, if you look at what the major companies are using, they’re the things to focus on technically. For example, IBM use the Dojo Toolkit in their web solutions, so any company that’s an IBM shop (and many are) would be interested in Dojo skills. Other areas that are often overlooked by less experienced graduates are things like internationalization and accessibility, both of which are difficult to get right.
If you want to ‘gain an edge’, you need to prove that you put 110% effort in and that you’re dedicated. Learn a programming language that will best enable you to what you want to do. For example, don’t go into C# if you’re more interested in website design… Then, start making things and don’t stop until you are happy with them. Show people your work. Try and get jobs from people (freelance) to prove your skills and build up a portfolio. When you leave college, show people that you’ve actually taken things in and that you can apply what you’ve learned.
Really, just think about what you would be looking for as an employer. If two candidates had identical qualifications, how would you make a decision?
Here are some tips that will help you steer yourself down the right path for graduation:
1. CHANGE. Improve your grades, immediately. You need to fix your study habits. You still have time to rebound that GPA to over a 3.00. With a C+ average is ~2.33 gpa, and on that basis alone you will be automatically rejected from major tech companies (unless you have some friends which can refer you). Don’t let this deter you from applying for internships over the summer. Although they inspect gpa’s for interns and don’t normally hire many freshmen or sophomores, exceptions are made.
2. SELF-IMPROVEMENT. You’re at one of the best points in your CS career (for starting off), as in ~2 years, you will be a brand new computer science graduate with some new programming knowledge that last year’s grads didn’t get (so they think). While you’re improving your grades, get (more) active in collegiate activities. Build your confidence and social interaction skills. At the same time, focus on yourself. What are you good at? How can you sell yourself to a recruiter? What projects have you done in which you took some key knowledge away from them?
3. FOCUS. Dont waste time making your warez site. This will take a lot of time to set up for not much return.
4. LEARN. Follow TheBlindSide007’s advice. Pick up new languages and new technologies. Bonus points for technologies created by companies you talk to, like, C# and .NET with Microsoft, or AngularJS by Google.
5. PARTICIPATION. Participating on github or open source projects is a good idea. Create a linkedin profile if you haven’t yet. Create a stackoverflow profile if you haven’t done so yet. When you reach enough reputation, they allow you to register on stackover careers. The importance is to show an interest in the community as well as the fact that you know what you’re talking about. People bs their resumes all the time, but if you are a stackoverflow member with 5k rep, you have to have gotten a few things right (or asked a lot of good questions, which is still a +).
Sign in to your account