College related question?

Advice for first-year college student?

  • As an experienced software developer, what advice would you give to a first-year college/university student for things to do during a software engineering course? I was asked this yesterday by a local college student who had to interview an IT professional for an assignment. I suggested three things: Write lots of code - you get good by doing. Preferably start a personal/hobby project so you get to build something real (and hopefully new) that you can work on for longer than the average college assignment. Write (not just code) and publish - so you learn to write, because written communication skills matter. These days, the obvious thing to write is a personal blog, although there are other options. Learn to touch-type - so 1 and 2 do not take up all of your spare time. This is not a hard thing to do. Obviously, these are not original, and I think there is at least one Coding Horror article on each one. What I am looking for are more creative or original suggestions, either for what do (e.g. learn to write) or how (e.g. write a blog). Note: the http://stackoverflow.com/questions/3553/one-piece-of-advice question is related, but not specifically about things to do while at college.

  • Answer:

    Read, read, read, read, read and read some more. And while you are reading...code, code code, code, code and code some more! I can't emphasise this enough (the web only has two accepted emphasis tags!) Reading and coding are the best ways of developing yourself. If you are given coursework where you have a choice of exercises (as can happen in many programming modules) - do the one you are most comfortable with and submit that - but then do the others. You will learn more, and most decent lecturers are more than happy to go through the others (after the fact of course) Get involved and get active - Internships, open source, small individual projects. All of them can help develop you and your abilities Don't get hung up on one language, one paradigm or one software engineering method. Many new coders fall into this trap, mainly due to universities only teaching one option. Learn the basics, and learn them well - I don't care what anybody says, design patterns, paradigms, high-level point and click software "design" will get you nowhere (except bothering the rest of us.) Learn discrete mathematics (Set theory, Graphy Theory, Discrete Probability, Finite State Automata), algorithms (Sorting, Searching at a minimium), basic data structures (Arrays, Linked Lists, Trees, Queues, Stacks) machine architecture (Very low level stuff - logic gates, Von-Neumann, Data Storage and Memory etc.), Assembly language (See how well you understand the architecture!) . These are the building blocks which you can use to understand higher level stuff a hell of a lot better than people who grab a copy of Learn Buzzword in 24 Hours and attempt to build their knowledge from the ground down Read at least one of the following - The Annotated Turing (Best introduction to computational theory I have read - goes through Turing's original paper on the subject), Godel, Escher and Bach - An Eternal Golden Braid (This will get you thinking about more aspects of computation, including it's link to other areas - not exactingly about software engineering, but it has definitely made me better for reading it.) or The Art Of Intrusion (again not a software engineering book but this will give you an idea of the hackers mentality - ann essential read if you ever plan to go into security) Hope that helps!

Peter Hilton at Stack Overflow Visit the source

Was this solution helpful to you?

Other answers

Learn how to learn. (and college/university is the perfect place for that). That is the one skill that will really be with you your all career, as illustrated by the question http://stackoverflow.com/questions/68862

VonC

Mine would be more focused, because I think that it's more likely to affect a first year student: Don't skip class - ever. No reason is good enough except for violent illness. If you show up, at least you'll hear the material once. Divide your fee bill by the number of classes you can attend during the year. The per-class fee will astound you. Don't blow that cash. Show up. Don't wait until the week before an assignment is due to start thinking about it. Dive into that prototype on the day it's assigned. Last minute work is never good, especially in computer science. Talk to a professor or a TA when you stumble into a black hole. Don't wait and let it fester into a real problem. Learn another domain well besides computer science/programming. Accounting, engineering, physics, biology - domain knowledge will be as helpful as programming languages. Know something about the kinds of problems you can solve. Attend seminars that are over your head. You might not understand the topic when you hear it, but you will someday if you keep at it. The other stuff about learning, reading widely, thinking, etc. - I agree with all that. But these are things that I wish someone had told me when I was an undergrad.

duffymo

Go to parties and have fun. You will regret that more than not reading about code later on in life, if you miss out. ENJOY college. It's supposed to round out your education and make you a well-rounded citizen, not just a specialized subspecies that can bend machines to your will. (Although that latter part is fun too!)

Genericrich

Learn to negotiate. Dealing with people is considerably more complex than dealing with machines, and fresh college graduates are at a disadvantage due to inexperience.

Kim Reece

Classes will sadly not teach skills needed for software development in the real-world. Thankfully most universities have many programs that allow the students to work with professors or at companies through interships. Do it every semester and every summer. Seriously. If you can, do 2-3 at a time. For a while I was working 60 hours a week while in full-time school, the experience was well worth it. I feel sorry for Seniors who are just starting their first internships, they've already lost so much time to learn.

DavGarcia

Learn the principles of http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod. Its the one thing I regret not learning at university! Yes I was taught it...and yes I thought I understood it...but years later I'm looking back at how I've programmed and realized that I have not been programming in an Object Oriented manner....even though I thought I was. I'm fixing this mistake now...but I wish I had understood that the abstract and difficult to understand theories being taught in Programming 101 were more important than getting my hands dirty in code. Learn the basics first and experience (and others experiences) will teach you the rest.

mezoid

I'm going to reiterate a lot here because I think these statements are important. Go to class. SO IMPORTANT. Read everything, ask questions, and do the assignments. Pick the brains of your professors and teaching assistants. They've walked a similar path before you and they are there for a reason. For that matter, pick the brains of software developers outside of academia. They will be able to give you advice on where the industry is heading and what they are seeing show up on their desks. Focus on the fundamentals so that you will be able to apply what you've learned to whatever is thrown at you in the future. Don't stop learning when the class is over. Pick out the parts that interest you and delve into those subjects. Finally, for fun, don't start playing an MMORPG till they hand you your diploma.

Reece

If you're just going into college now and you can't touch type... good luck to you! With all the instant messaging and texting these days they ought to be pretty darn good at that. My suggestion would be to read the programming books. That was the single most important thing that I did my freshman year. I learned a lot and in the later years I didn't have time to read all of the stuff and I felt that I missed out because of it. With all due respect, you can write code all day long. But unless it is good code, you're not really learning much in my opinion.

Joe Philllips

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.