views:

384

answers:

10

So...As a senior year computer engineer in college, I was wondering if you guys had any ideas of what I should do to gain more experience?

I took a intro to C++ class, and are proficient in C++, Verilog, Python and Bash scripting. I will be taking a bunch of programming classes in the Fall (Operating Systems, Algorithms, C# Programming, and Senior Design).

I've also been interning with the 3D/4D Visualization team at an engineering company and have learned alot about C++ and a dev-cycle.

But later on, I do want to become a programmer for my career, but I feel like I really don't know anything about programming. Some people have given me the idea of making a few projects such as a calendar or a tic-tac-toe game etc. I've made a snake game for a microprocessors project so I do have some limited development experience.

I guess I feel like I really don't know what to do besides simple console applications... and am quite desperate to learn some things for my grad school interview and my future career.

What did you guys do to begin as developers? (Preferably in C++)

Thanks for the help in advance!

+10  A: 

Code, code, code :-)

Seriously: you only get experienced by coding - reading and taking classes are good, but will never give you a feeling for "the real stuff". A start could be an open source project that interests you. Start using it. Then try to write little patches for stuff that bugs you and submit them. Later try to work on items from the projects bug database. After some merit, you will get write access to the code. This will build skills and also a network of people - both needed for a career.

Heiko Rupp
I have no ideas for any projects...thats part of the problem :(
hahuang65
For project ideas, go to freshmeat.net or sourceforge.net (the former probably better) and browse around for interesting stuff. If you were asking for Java, I'd have you directed to Jopr (http://www.jboss.org/jopr/ ) :-)
Heiko Rupp
Thanks for the links! :)
hahuang65
Wikipedia. They may be one of the most accessible projects to hunt bugs for. Also, check out http://projecteuler.net/ for raw code and problem solving skill sharpening.
Autocracy
+1  A: 

It's great to do something that ties in with an interest or hobby to keep your motivation going. Start thinking about what would be fun.

David Plumpton
+1  A: 

Why not create a knowledge base/blog type application to store all you have learnt about programming!?

Create an application to organize your photo's, a calender?

Just think of something that you might use and get started, as Heiko said, code, code, code and you'll start to figure stuff out!

Rigobert Song
+1  A: 

My suggestion is you should find a programing topic that interests you, and start a project in that topic.

If the topic that you are interested is business application, take a random business application you know, and try to duplicate it's operations.

If the topic that interests you is games, take a simple game that you like, and try to make it yourself.

and so on.

The main thing, is that you need to code, and do it a lot. It has been said many times before, and it is very true, you will start understanding things through experience.

kkaploon
A: 

Write Silverlight or Flash web games with a ranking ladder.

Scott Whitlock
A: 

Look into building a simple CRUD web application involving a database. You could probably make the database about something useful to yourself, e.g. movies, music or courses taken organized in various ways and managed through a web interface.

As for what I did to begin, that was back in 1998 with ISAPI extensions in IIS 3.0 which seems like a very long time ago now.

JB King
A: 

In addition to what others have said, I'd recommend:

  • Read programming books. Learn from the huge collection of knowledge out there.
  • Learn new programming languages and APIs. Different languages force you to think about problems differently. Learning methods and paradigms in one language expands how you think about programming in general. Increase the number of tools in your tool box so you can use the right tool for any job.
  • Practice programming. I'm a fan of Project Euler.
  • Work with people smarter than you. Learn tricks and techniques from those with more experience.
luke
A: 

There's no substitute for experience. Your best bet is to get hired somewhere as an entry-level developer, get assigned to a team, and start generating production-quality code in exchange for money.

Open source projects and things done for your own amusement are fine, but in my experience, if you get bored with them, it's easy to put them down for weeks or months at a time. Money, or the fear of having no money, is a decent motivator to get you through those times.

+2  A: 

Here's something I remember I really enjoyed coding for the pure joy of coding: simulations.

Build a simple model of something you see around you every day. For example, traffic patterns. You can do something really simple and still have lots of fun with it and gain coding experience at the same time.

For a traffic simulation, all you need is:

a) A car class. Cars have properties like speed and braking distance. They have simple behavior such as - they accelerate if there's no other car in front. - they break if there's a car within x (pixels).

b) A road class. A road has cars. Maybe a road has properties that change how fast cars can accelerate and brake.

c) Some sort of "renderer" that draws this all on the screen.

The road can be a broad black line. The cars can be dots. The interesting thing is that even with something this simplistic, you can get complex behavior. You can add a few cars with different speeds to the road and see how they interact. Then you add a really slow car and see how all other cars get stuck behind it.

Another fun thing to implement is Conway's Game of Life. Also do some reading on genetic algorithms and try messing around with those. That's awesome stuff too.

Anything that models something and lets you change behavior of the system by tweaking little parts. And a simple ui on top so you can observe what's going on.

Yeah db crud is cool I guess, but not nearly as interesting. You will be doing db crud for the rest of your life once you have a job :)

(I did all this in java with awt - looked awful)

killdash10
+1  A: 

I was in a similar situation right out of college - except I thought I learned something about programming in college. I was lucky enough to find a small local company that was willing to give a fresh faced college grad the chance to start a career. It took about an hour my first day to truly realize how much I wasn't taught in school that I would need to learn real fast. Ironically, I don't think I've stopped finding things I need to learn.

My point is that part of being a programmer (at least a good one) is the continued learning process. You may not need to learn something new for every project but rest assured you will continually find problems will present themself that will force you to find new or different solutions.

The best thing you can do is create a portfolio of what you have done, even in class. Sure you may have only done small projects but you want to show an understanding of the basic structure within a given programming language. Show things like efficienct processing, comparisons, exception handling, and other standard fundamental programming concepts.

In my current position, I have hired plenty of new programmers. I try to find out is if the prospective applicant has a basic foundation of knowledge. I then try to find out if the person has the ability to answer their own questions. Mentoring is one thing but if I have to spoon feed everything I might as well be doing the work myself.

If you can show you have an understanding and application of a given language and the ability to quickly pick up new concepts, your chances are very good that you will find a company willing to give you a chance.

One additional suggestion I will make, based on the grammar in your question, proof read your writing. I admit I am guilty of it from time to time, but you do not want the first impression you make on a potential employer to be that you are challenged by the basic language usage.

Good luck!

Badfish