Slashdot Mirror


What Skills Should Undergrads Have?

kramed8 writes "As a student myself, after reading the recent 'Slam' article on Java I really began to be concerned with the path of my education. I am currently attending a small Canadian University as a 3rd year Computer Science and Business student set to graduate next year. What seems to have troubled me from reading the article and user comments is that I do not feel as confident as I want to be in C, ASM and other related low-level programming topics. I was taught C++ in my introductory courses, with subsequent classes using C# or Java. My education has not been particularly difficult or time consuming to get good grades, so I have spent my free time dabbling in topics and languages that interest me (ie Multiple GUI Toolkits, Python, Linux). How can I spend my free time in the next year to prepare to enter the work place with a proper toolbox of skills? From what I have been told, there are more jobs for Java and Data Warehouse development teams compared to lower-level programmers. As an undergrad, what skills should I be trying to attain now to further my employability in the future?"

89 of 587 comments (clear)

  1. Free Time at School by Njoyda+Sauce · · Score: 5, Funny

    Parties and Women right? Oh.. forgot this was /.

    --

    You can only be young once, but you can be immature forever.
    1. Re:Free Time at School by Mike+Buddha · · Score: 3, Funny

      You meant LAN parties, right?

      --
      by Mike Buddha -- Someday the mountain might get him, but the law never will.
    2. Re:Free Time at School by cayenne8 · · Score: 3, Insightful
      "Parties and Women right? Oh.. forgot this was /."

      Actually...this isn't a bad idea. One skill you need (if you're a guy) is HOW to get laid.

      If you're good at talking up women, and can get laid a decent bit...you're not gonna be tempted to get married by the first girl that lays you. You won't be tempted to get married too soon right out of school.

      If you don't do that...you can concentrate on your career early. You can enjoy some of that money that is coming in (and hopefully saving and investing some of it). You won't be burdened with kids before you're ready.

      These won't directly affect your getting a job, but, they will help you keep and advance....and you really should have some "fun" out there before you settle down to a family if that is what you decide.

      So, guys....work on your women skills, learn how to get laid on a regular basis with a number of them. It will benefit you greatly...and in the end, you'll make a better informed 'consumer' in which one you choose to hook up with on a more permanent basis. That, and you'll have some funds saved up and be making a bit more $$, which also has the benefit of attracting better looking ones.

      --
      Light travels faster than sound. This is why some people appear bright until you hear them speak.........
  2. Don't overlook people skills by TechForensics · · Score: 5, Insightful

    People skills should not be overlooked. It is important you be able to get people to like you.

    --
    Those are my principles, and if you don't like them... well, I have others.
    1. Re:Don't overlook people skills by keenada · · Score: 5, Insightful

      No, it is important to be able to get along with people. Being liked by people isn't necessarily a good thing to pursue, because people will detect that you're trying. It's a fact of human nature. Trying to be liked is seen (for better or worse) as manipulative. In my opinion, as a Canadian post-secondary grad working in IT for three years, your biggest asset will be your ability to reconcile your people skills and your technical skills. A lot of Information Technology work in Canada is basically massive companies saying "We want to understand this objective, or corner this market, and we want to do it using modern tools." That's a pretty big problem set, and is going to require both a lot of analytical problem-solving, and a lot of communication. Whether you focus more on the technical or on the people aspects, never lose your ability to work in either.

    2. Re:Don't overlook people skills by rucs_hack · · Score: 2, Interesting

      I spent every free evening I had as an undergraduate working till late at night teaching myself the subjects we were learning, and spent every reading week studying. To the extent that a lecturer who caught me in the otherwise empty lab at night told me to get out and get drunk like a normal student.

      Social life is important, yes, but after a year of this I was so far ahead of my fellow students that while the course was really hurting for them, I was having the time of my life, and I ended up actually teaching a first year course whilst in my third year.

      If you just study what's in the lectures, you'll be, at best, as good as everyone else in that classroom. If you read around the topics and hack code at night, you'll get your head above everyone else when it comes to the job market.

      Each of my friends who socialized more than they studied ended up with mediocre to normal degrees. Those who spent a lot of their free time studying and (more importantly perhaps), hacking code for fun, got good degrees, and very nice jobs almost to a man/woman. Not me, I ended up in a four year PHD course, so I have yet to see a fiscal return for my work.

      My views may be extreme, but it is possible to go out a bit less, and benefit a great deal from extra study time.

    3. Re:Don't overlook people skills by Digicaf · · Score: 2, Interesting

      I wholeheartedly second this. I've trained a number of implementation engineers in the past couple of years, so I've seen firsthand the difference a this makes.

      The trainees with good people skills do much better in the field than those without. In fact, the few engineers I've trained with very little technical knowledge are doing quite a bit better than those with highly technical backgrounds because they have better interpersonal abilities.

      My suggestion is to take plenty of social classes that emphasize speech, writing, psychology, and even drama.

    4. Re:Don't overlook people skills by EastCoastSurfer · · Score: 4, Interesting

      True, but you can boil the book down to 2 basic things (that I've found anyways).

      1) Remember names!

      2) Be genuinely interested in other people. Everyone has something interesting about them. Figure out what it is and then let them talk about it. Remember, whoever talks most in a conversation is generally going to think it was a good conversation.

    5. Re:Don't overlook people skills by Maxo-Texas · · Score: 5, Insightful

      Les Gibson's book "People Smart" from the 1960's is also magical.

      It adds
      1) Smile the first second when you meet someone (tho tricky if you are a very pretty female).
      2) Imagine you MUST say "yes" 9 times before you are allowed to say "no" to a co-worker. This does many wonderful things. a) respects their opinions b) lets them do things their ways c) you are perceived as likable and non-critical d) when you do rarely say "no" folks stop and listen because you respected them and you only say "no" when it is really important.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    6. Re:Don't overlook people skills by EastCoastSurfer · · Score: 3, Interesting

      I like the 'yes' thing.

      You're right about smiling, also look them in the eye.

      And while we're adding more items to the list, Chris Rock had a good one on how to make women happy. Just ask "How was your day?" I first did this with random girls I met as a joke, but then realized how right he was when he said that that one question can lead to a 45 minute conversation. I wasn't even aware that much 'stuff' could happen in one persons day lol...

    7. Re:Don't overlook people skills by Run4yourlives · · Score: 4, Insightful

      Do people really need a book to get along with people?

      Short Answer: yes.

      Long Answer: Many technically adept people are often misunderstood, uncomfortable around people, and unfamiliar with the rules of social conduct. It has little to do with being sleazy, and more to do with trying to improve your communication skills. What you take as a given is a learned skill for most of us.

      Think of the people you've met you you've thought were assholes, arrogant, insecure, and fake. Chances are, they were none of the above; rather they just came off that way because they didn't know how to properly handle the nuances of social behaviour.

      Aiming to rectify that is never a bad thing.

    8. Re:Don't overlook people skills by Run4yourlives · · Score: 2, Insightful

      You are only in your 20's once. Keep in mind that if you're still in school you're not really in a position to evaluate the choices you've made.

      Make sure that when you are (say, in your 40's at least) you can still evaluate them in the same way you're doing now.

      I would talk to those in their 40-50's to get an idea of what you may think when you are that age.

    9. Re:Don't overlook people skills by Grishnakh · · Score: 2, Insightful

      2) Be genuinely interested in other people. Everyone has something interesting about them.

      I disagree entirely. Most people are dreadfully boring and stupid.

      Figure out what it is and then let them talk about it. Remember, whoever talks most in a conversation is generally going to think it was a good conversation.

      But this part is exactly correct, which is why it's important to develop your acting skills so that you can act interested in other people and get what you need from them, even when they're dreadfully boring.

      My own acting skills aren't that great, and I'm stuck as an engineer with little contact with others, but this is exactly the way I like it. Why would I want a job where I have to talk to other people all the time? Luckily, I've found there's plenty of jobs just like this, where you can keep your head down in your cubicle most of the time, and the only interaction with other people you have to put up with is with your immediate coworkers (which is cool when they're like you, as they tend to be in these jobs), and with your boss, not with customers, the general public, other managerial types, etc.

    10. Re:Don't overlook people skills by evilmousse · · Score: 2, Informative


      indeed. so he should get a bunch of cats, and practice herding.

    11. Re:Don't overlook people skills by Omestes · · Score: 2, Insightful

      I still don't know if a book is the answer. These books mostly deal with using people for your ends, and not the basics of "normal" interaction. I really don't think you CAN be taught normal social interaction, its one of those things you pick up and incorporate way back in your youth while being originally socialized. What these books teach are to interaction, what "networking" is to genuine relationships, shallow, fictional, and purely pragmatic. It boils down to "how do I fool this person into thinking I'm someone I'm not".

      I, for some reason, doubt that anything of lasting value can come of that. Building relationships (even of the temporary business type)is constructing things on a false foundation.

      These books are not about teaching those of us outside the mainstream culture how to fit in, their teaching how to get what you want. For this reason reading a couple good books on actual social-psychology (especially of sales) would have far more merit than something watered down into feel good, corporate speak, psychobabble. As for forging genuine relations I doubt even that the most pathetic basement dwellers among us need help, it still is a natural thing. Not everyone natters on about Brittany Hilton, or whatnot, and not everyone expects you to be slicker than owl shit in your communication skills.

      Really, here is the text of my self help book, I was going to publish it and make billions, but I feel generous:

      "BE YOURSELF" /rant

      --
      A patriot must always be ready to defend his country against his government. -edward abbey
  3. If you want to be a developer by Safety+Cap · · Score: 4, Insightful
    Then read "The Pragmatic Programmer," especially "GOALS" on pages 14-15.

    Other than that, the only skills you need are

    1. The willingness to admit you don't know jack, and
    2. The desire and commitment to learn.

    The hard part: once you learn a thing or three, you need to go back and do #1 and 2 again. Forever.

    --
    Yeah, right.
    1. Re:If you want to be a developer by sm62704 · · Score: 5, Insightful

      The hard part: once you learn a thing or three, you need to go back and do #1 and 2 again. Forever

      A fellow named Dennis Ringering, one of my undergrad instructors, was heard more than once telling some knowitall punk "I've already forgotten more than you've ever learned".

      --
      mcgrew's razor: Never attribute to stupidity that which can be explained by greedy self-interest
    2. Re:If you want to be a developer by Stripe7 · · Score: 3, Insightful

      Problem solving skills, generally knowledge is not the issue. What you do not know you can find out, on the job it is mostly fix problems that crop up. Whether it be with people or machines or software.

    3. Re:If you want to be a developer by 0100010001010011 · · Score: 2, Interesting

      Volunteer, Get involved in 'hands on' classes. Volunteer with FIRST (If canada has it) or at other local high schools teaching kids something. Or take a course where the result isn't just a grade. I took a grad level course my senior year to help get me more knowledgeable with robots. I was asked more questions about how my robot worked on interviews than "Oh I see you know 50 programming languages."

      College doesn't teach you everything you need to know in the workplace. I'm a Mechanical engineer and I work for a big company that makes big mechanical things. I don't know anyone that's sat down and actually done a FE (finite element analysis) by hand. We have tools, but you also have to know the concepts behind it.

      I'm a 'bastard ME' as I'm actually in Mechatronics. (I took a liking to Matlab and went that path). I had some classes in building robots and I had those on my resume. I also had some completely unrelated experience. I found a job that I love. But in no way did any of those fully prepare me for what I needed to know, for example:

      I know Matlab, PHP, C, C++ and some Assembly. Mangers and other engineers still love Excel and Powerpoint to view data. I had to learn VB. I didn't have VB on my resume, but given that I knew some different languages my boss knew I wouldn't have a problem picking those up. I'm now learning how to interface Powerpoint with Matlab via ActiveX so that we can get some plots automatically generated. Again, I learned none of this in college. I don't even know if we had classes on it. But I knew the basics (for, if, while) and I learned to adapt that to other languages. I'm sure it's not prefect, but it gets me high ratings and it gets the job done.

  4. Repeat after me... by east+coast · · Score: 4, Insightful

    Practice saying "Would you like fries with that"

    I wish you the best of luck but unfortunately you're going to see a lot of really good answers and they're all going to be right. Personally I would do whatever I like to do but become more robust with it. Knowing six languages on a beginners level isn't as good as knowing one ot two in-depth.

    --
    Dedicated Cthulhu Cultist since 4523 BC.
    1. Re:Repeat after me... by ari_j · · Score: 4, Insightful

      Better yet, learn at least three vastly different languages at at least a high intermediate level, or even master them. When you are confronted with a problem and immediately see its solution in, say, C++, Lisp, and Ruby, you will be able to quickly choose the right tool for the job (where "tool" could mean "closures" or "objects" just as easily as it could mean "Lisp" or "C++"). Even if you don't have that tool available to you (if your employer requires you to use Java, for instance), you will still be able to solve the problem faster and more elegantly.

    2. Re:Repeat after me... by TheRaven64 · · Score: 2, Informative

      These are the six programming languages I think everyone should know. If you have more time after that then learn FORTH (or PostScript if you want a real challenge and like pretty pictures) for a good example of a stack-based language. I'd also consider adding Self, Io or JavaScript (or NewtonScript if you can find a machine that runs it) to that list. You can do prototype-based OO in Smalltalk but it's not nearly as easy as doing it in a language designed for it.

      --
      I am TheRaven on Soylent News
    3. Re:Repeat after me... by Deanalator · · Score: 2, Interesting

      Of course it totally depends on what you want to be doing. I got my undergrad last December, and have been working on as a security engineer since last may. At school we did data structures in c++, operating systems in c, and compilers in java. I am sure that gave me a pretty solid base, but it is not how I got my job (I never let my schooling interfere with my education). I have one of the few jobs where knowing a ridiculous amount of languages is actually useful. For me, knowing how to calculate data flow in a multitude of languages is more important than familiarity with implementing specific solutions.

      Keep in mind that computer science is essentially a branch of discrete mathematics. The skills you learn in the undergraduate curriculum are useful to a multitude of fields. It's not just a degree in "computers" as some people seem to think. For example, a good friend of mine did his undergraduate in CS, then got an MBA. He now works for a consulting firm that optimizes business hierarchies for multi billion dollar corporations.

  5. Ask prospective employers by Dragonshed · · Score: 4, Insightful

    You will likely get both good and bad opinions in response to this question here on slashdot, but my best advice would be to ask this question of employers that you might be interested in working for.

    1. Re:Ask prospective employers by StaticEngine · · Score: 5, Insightful

      Agreed.

      One of the best things I did was to shotgun a few letters to prospective employers telling them how highly I thought of their company, and asking what I should focus on if I wanted to be hired there. The vast majority of them sent me back a "we'll keep your resume on file" letters (when I had not in fact sent a resume, but it was still good to know how impersonal these companies were, and learn that I probably didn't want to work there), but one CG Effects company in particular wrote a three page letter back stressing certain coursework and areas of expertise that I should focus on. While I never wound up applying to that company due to other circumstance, it was very valuable to hear from industry professionals, and get an informed opinion.

      I suspect this type of answer to your question would be much more valuable than a random smattering from the /. peanut gallery, although you probably wouldn't get to be amused by someone writing back that they're allergic to peanuts, and that I'm an insensitive clod.

      Good luck!

    2. Re:Ask prospective employers by apt142 · · Score: 2, Insightful

      Unfortunately, employers are often don't know what they want their employees to know. Take a look through some job descriptions and see how many show up with impossible requirements. (5 years experience in a language only out for say 3.)

      I'd suggest to the original poster to just mess around with anything that catches their eye. The more, the better. That way, he/she learns what he/she likes to mess around with and gets exposure all over. After that, I'd suggest finding some technologies that really intrigue him/her and learning as much about them as possible.

      I know that in pursuit of knowledge in my key area, I've had to learn a lot of things that are seemingly outside of it. I also believe that if you develop the passion for the work, you'll find a place to do it that will bring you the income.

    3. Re:Ask prospective employers by NeilTheStupidHead · · Score: 2, Funny

      I'm allergic to insensitive clods you peanut!

      No, wait...

      --
      Lose: misplace or fail || Loose: not bound together
  6. Personal finances and Confidence are the two by GenKreton · · Score: 5, Interesting

    First s learning personal finances will give you an edge on nearly every other student graduating. Know how to balance your finances, plan, budget, etc.

    Second is confidence. Confidence in the skills you do have an ability to gain new ones. Have confidence in interviews especially. Confidence enough to demand more sometimes, too. Confidence directly addresses your questions of how to make yourself more employable.

    The skills you need and success in life should follow those two. Actual skills programming have less to do with you getting employed than you may think.

  7. Requirements lacking in most graduates by MSTCrow5429 · · Score: 4, Insightful

    Spelling, grammar, basic math, an understanding of economics, and a knowledge of the outside world.

    --
    Slashdot: Playing Favorites Since 1997
    1. Re:Requirements lacking in most graduates by januth · · Score: 2, Informative

      Communication skills: spelling, grammar, public speaking, etc. If you can't make yourself clearly understood, or if you come off as an ignorant cretin, no one is going to be interested in any other skills you might have. I just had a resume cross my desk advertising a candidate's ability as a "NETW0RK ADMINISTRATOR"...a silly mistake, but if you miss a detail like that on your resume how much are you paying attention to detail on those netw0rks you are supposed to be administering?

      Business Acumen: Have a basic understanding of accounting, finance, and economics. Think about how IT/IS makes things happen for an organization, how it impacts the bottom line.

      Breadth of IT Skills: You can develop apps in a variety of environments...that's nice. But what do you know about databases, networks, servers, the care and feeding of end-users? Too many developers come up short here and are content to code in a vacuum and it shows in their work.

      Presence: Learn to leave the teenage and 20-something mannerisms and slang behind. Workplace email is not the same as your personal IM or text messages. Comport yourself and your writing in a manner befitting the situation. Restrict your use of the word "like" to no more than five times a day.

      Hope this helps...

    2. Re:Requirements lacking in most graduates by anaesthetica · · Score: 2, Interesting

      About communication, I agree wholeheartedly. I spent last semester as a TA at JHU. Admittedly it was in a non-comp sci field, but nevertheless I had to grade some pretty atrocious essays and exams from freshmen and sophomores. I found it shocking that kids could get into a top tier university without knowing how to write an essay. I gave each a page of comments, and almost all would start off with: number your pages, don't use the first person in academic writing, don't use contractions in formal writing, proofread to catch typos, etc. The second paragraph would go over organizational issues, e.g. not having a thesis until five pages into their ten page paper, not explaining how paragraphs of evidence support their argument, and so on. A lot of the exams read more like diagrams (especially from the engineering students) than essays.

  8. Learn how the hardware works. by Anonymous Coward · · Score: 2, Insightful

    Learn how the hardware works. The concept of code portability is limited. Compilers on diferent architectures do not always convert intergers, floats and strings the same way. Also memory structure can bite you real hard.
    The more you know about what is under the hood, the more likely you are to craft code that is actually portable and that will be useful for more than just one generation of processors.

    1. Re:Learn how the hardware works. by TheRaven64 · · Score: 2, Insightful
      I'd generalise this. When you are writing code there are three important layers of abstraction:
      1. The user interface.
      2. The algorithm.
      3. The language.
      4. The instruction stream.
      The best programmers are the ones who are able to think at all four levels (and some sub-levels) at the same time. In many ways the language is the least important of these, it only exists to allow you to write the kind of thing humans think about (the algorithm) in something that is easy to turn in to something the machine understands (the instruction stream).
      --
      I am TheRaven on Soylent News
  9. Business classes by EveryNickIsTaken · · Score: 3, Insightful

    To increase your marketability, take as many business/mgmt classes as possible. Also, get a part time job or internship so you can network. Knowing things besides how to code (and building a good network) will likely be the most important factors in you getting a job.

  10. I wouldn't worry about the job aspect. by MrCawfee · · Score: 2, Interesting

    Yes there are alot of those jobs, but many of them will take a skilled programmer of any kind even if they do not have the specific experience in the toolset. With that being said, i believe it is more important to focus on some aspect that you really enjoy more than what you think will make money, especially out of college the better programmers are the ones who did it because they enjoyed it not because they are tailoring their skill set to a particular part of the nerd market.

  11. You got free time? by techpawn · · Score: 5, Insightful

    As an undergrad, what skills should I be trying to attain now to further my employability in the future?
    If you have too much free time and think your classes are too easy, see if you can get an internship or co-op at a local company. First of all NOTHING beats real world experience, Secondly you can see what they're looking for and what the competition is asking for as well. Sometimes those internships doing crap help desk is a good way to get your foot in the door at a company.
    --
    Ask not what you can do for your country. Ask what your country did to you
  12. my $0.02 US by psbrogna · · Score: 3, Insightful

    For what it's worth my relevant advice to somebody planning to migrate from student to employee status would be: With great compensation comes great responsibility. (to paraphrase Spiderman, Pres. Kennedy & Pres. Lincoln) In my experience the biggest disconnect between an employer and a fresh out of school developer is that they expect high compensation but often aren't open to taking what an employer bundles with that (ownership, initiative, responsibility, etc). As far as specific topical areas? I think that depends on what kind of developer you want to be. Opportunities seem to exist no matter which environments you choose to familiarize your self with; as long as you have the theory down and aren't looking for a joy ride, you'll can make your way along a variety of paths.

  13. Learn the low level things. by epiphani · · Score: 2, Interesting

    C is definitely a starting point - you need not concentrate on ASM (since C is effectively macro assembler), but get used to memory management and handling basic structures. The functional flow and practices that you learn through requirement in C becomes hugely relevant in higher level languages.

    Also, linux or some type of posix-based system. C and Linux go together nicely, and most things for linux are written in C. Get out of the IDE environments as well - they're good tools, but they're tools that should be used after you're comfortable elsewhere. I suggest learning and using vim.

    Few people these days in an engineering organization have a good understanding of filesystems and underlying technologies. Someone capable of identifying and handling performance issues in applications are highly valued. Linux and C will force you to learn these things. Do GPL work, join some linux kernel lists - even watching these lists for purely curiosity reasons gives you an excellent method of peer review and gives you a good understanding of how development SHOULD work in an organization, even though it doesn't often happen that way.

    --
    .
    1. Re:Learn the low level things. by kudokatz · · Score: 2, Interesting

      Low level systems programming along with database work has been what I have grown the most with as a fellow student. I have a few internship offers, and many stem from well-roundedness in terms of programming paradigms and concepts. If you can get a good handle on functional programming, make a small web-database application, learn a scripting language like Perl (or dabble in its OO features), and tinker with the linux kernel then I think doors will open up.

      From a strictly job-search prospective, I must also sadly say that ASP/.NET experience seems to be in reasonably high demand, but job and internship postings typically also include *nix experience and C programming.

    2. Re:Learn the low level things. by Agoln · · Score: 2, Informative

      As a student who is just about to graduate in 6 months and having secured a job with one company, with about 10 offers from other companies, I would agree that knowing C and memory management is of the upmost importance. For a technical background, knowing your data structures, object oriented principles, and algorithms are also important. I asked how to implement linked lists, tell them what the different parts of different languages' OO properties (i.e. Java vs. C++), and how many bytes some data structure would take up. You need a good understanding of the basic concepts, such as time complexity of almost every basic algorithm (search/sort/iterate) for most basic data structures (trees/graphs/arrays). Always be reading and learning new concepts, not just new tools. Books that will help you are going to be such items as Pragmatic Programmer, Code Complete, Joel on Software, Mythical Man Month, and almost any book these reference.

      I think the most awarding experience that I have had during my time in college has been being involved in open source projects. They can teach you just as much about real world working as any co-op or internship can, if not do a better job of it. From my experience, open source projects usually have a much better development cycle then your ordinary company. Being able to talk about two solid projects that were not a trivial school assignment are important. And most open source projects will have politics to deal with, which go on at every aspect of every job.

      Finally, think about the people aspect. Working in teams is important, VERY, VERY important! Every single company I went to wanted to know what _team_ projects I had worked on, and how I contributed to that team. Very often, I was asked about the different aspects of working on the team etc. Leadership is a big factor here, being a team leader or showing leadership capabilities is important. You need to be able to be the alpha dog in a pack, although they are going to hire you as a grunt to start.

  14. The only that really counts by Yold · · Score: 4, Informative

    is experience. Look for a job doing something in the field, do your job well, and get a letter of recommendation.

    The article yesterday I think was more aimed at people who don't understand that basics of whats going on behind the scenes. For example, its expensive to convert between formats of numbers (int->double etc), or how to use bitmasks/shift bits.

  15. A couple of things... by Capt+James+McCarthy · · Score: 5, Informative

    If you can afford the 'free time' see if you can apply for any internships at different large companies. Or see if a smaller one would take the chance with you interning with them. The price is right for them, and you get to tail someone who's more experienced in the field.

    You can also look up some open source projects that need assistance (there are many of them that do) and see where you can help on them. Open source projects are a great way to get experience and critiquing your own skills.

    You can also learn these three words:

    "Hello. Geek Squad."

    --
    There are no loopholes. It's either legal or it's not.
  16. well, what do you want to do? by gangien · · Score: 2, Insightful

    If you want to be a software developer, and don't particularly care in which language, it would be a good idea to do a project in your spare time, in one of the main languages (C++/java/C#) used. Java seems to have the most jobs available, of couurse, that may vary in your area. The thing you need to be getting out of your education is understanding the basics, that transcend all languages. Rhe difference between C++, java, and C# are made to be a bigger deal than they really are. You should be able to program in any of these without to much effort. I think the best advice is to be smart, and take what you read here on /. with a grain of salt, as people here tend to overreact to almost everything.

  17. Self Taught... by BigDogDoug · · Score: 2, Interesting

    You're really going to have to teach yourself. Remember the college only prepares you with the basics. If you want to really impress your potential future employers you really need to know the stuff cold. You can't expect some over-paid college prof regurgitating text from a book to properly teach you anything. Join a group, network and get ideas from other people.

  18. Personal View by RockedMan40 · · Score: 2, Informative

    While I think you have a brighter future than "Want fries with that" option, the above poster did get one thing right.
    What do you *like* to do?

    I could not stand to write program code all day long, as it would drive me insane, BUT - for whatever reason, I don't mind writing in php and working with web-based programs. I know there are others that feel just the opposite. So, while you will see plenty of good answers on 'you have to know ' and they will be right, cull it down to what leads you into a career you can enjoy.

    I earn pretty decent coin now, but have earned better in past. I just loathed the job. And since this is personal view - As long as you can learn quickly, and don't mind doing good quality work, there will be a job for you somewhere.

  19. Don't forget "Engineering" skills by SpuriousLogic · · Score: 5, Insightful

    One of the biggest things I see when hiring college grads is that while they understand how a computer works, why languages behave the way they do, and what a certain language syntax is, they have very little knowledge of how to actually build applications from initial concept to full delivery. This type of knowledge generally falls into the "Software Engineering" category. Learn how to write and read requirements. Learn how to do formal estimates from requirements. Learn about different software development life cycles. Learn about requirements traceability and testing. Learn about software patterns. A lot of these topics are covered in Masters degrees in Software Engineering, so those are good places to look at for books on it. Here is an example, you can look at the classes to find the books used http://www.cti.depaul.edu/academics/Pages/MSinSoftwareEngineering.aspx

    1. Re:Don't forget "Engineering" skills by boristdog · · Score: 2, Insightful

      Learn how to write and read requirements
      This is VERY important! It keeps you from wasting your time.

      And only experience will teach you when to know what the customer/boss is REALLY asking for, no matter what they say. VERY few people know how to design a program/project/interface, or even know what they want.

      I find step 1 is often telling people "Get a piece of paper and draw out what you want". Saves a LOT of time and budget when they come to you later and say "This isn't what I wanted!" You show them their drawing or flowchart and say "Which part?"

  20. A few projects good for ANY programmer! by neapolitan · · Score: 3, Interesting

    It depends on what type of job you want, and how good you want to be. Really, it does, and the answer is not simple.

    I really feel it is best to concentrate in core subjects during college. It is trite, but nobody cares if you know high level language X, be it Java, Python, Ruby, etc. This will change. Knowing how to program, that is a skill that will never go out of date.

    I do most of my programming in a very scientific environment, which requires MATLAB for "quick and dirty" computations, but I have also written elaborate C programs when needed for speed (up to 15 times as fast as interpreted MATLAB code despite the claims of optimizations.)

    If I were you, I would learn C in and out, through and through. It will guarantee you skills that you will use for the rest of your life, and you will never be an idiot. The way to best do this is to write moderate sized programs in C. I would take as many high level courses in the college environment as possible, preferably one on Operating Systems, which are some of the most complex programming environments and concepts that you will be exposed to. If you are truly into CS theory, then high level mathematics courses are favorable.

    What to program, you ask? Why, the standard lot. Here are some of the coding projects we were given in college.

    Hello, World (just kidding.)

    The game of life.

    The game of animals (teaching navigation of link lists, etc.)

    Make a program that plays Connect 4 against you. (basic algorithmic concepts, basic "AI")

    Make the above program graphical, for fun (GUI / display concepts).

    Write a program that implements the Zip algorithm (Huffman encoding -- not as hard as you'd think.)

    If these are too basic for you in C, then I'd try to understand a bit of the linux kernel, or get involved in an open source project. Good luck!

    --
    Slashdotter, ID #101. UIDs are in binary, right?
  21. Learn about workflows and project management by mveloso · · Score: 2, Insightful

    If you really want to be a good developer, you have to be able to learn how real people work and how to run a project. That's tough - I'm not sure if anyplace has classes on this. But - everything you write fits into a workflow of some sort, and if you can understand the context in which your stuff runs your software will be better for it.

    Project Management is almost a must, esp. since you're in the business program too. Projects that come in on time are better than ones where you have to do a "death march" to the end. They make everyone happier, and makes everyone look good. A good PM is usually the difference between 4 80 hour weeks at the end of a project that fails and a nice, 9-6 project that cruises to delivery.

  22. Student's Perspective by YutakaFrog · · Score: 2, Interesting

    I live in a place where the computer industry is doing well, and programmers seem to be in high demand, admittedly. But I'm also a Jr. in CS right now, and here's what I've observed so far between my own job experience and those of my other friends in school: Find something you enjoy and do it well. One of my friends got into ASP and C# real heavy, and is now the lead dev of a team working on his university's intranet. I'm very detail oriented, and got a job documenting an undocumented system, for which now I'm pretty much the sole dev type person around here, and I don't think they would dare to fire me, even though my school schedule's a pain in the butt. The point is, there is such a plethora of work available, you won't know ahead of time what you need. You just need to get all the experience in _something_ that you can. You'll find a way to use it, somewhere, sometime. If you learn it, they [jobs] will come? Good luck!

  23. Don't focus too much on the technical side by antifoidulus · · Score: 5, Insightful

    You will, throughout your CS courses and professional/hobby work find out what you really like and you should gravitate towards that. If you are really skilled, then you should be able to pick up what you need to succeed.

    That being said, here are the skills I think you should pick up. My only qualifications is that 2.5 years outside of undergrad I am earning $70k+ a year AFTER taxes and have had professional experience on 3 continents(Europe, NA and Asia). Here is the list in no particular order:

    1. Pick up a 2nd major. Now of course there are "useful" majors such as science or business, and if that stuff interests you, great, but pick something outside of CS/IT that you REALLY enjoy and go for that. Even if it is film studies. For one, how many chances will you have after college to sit around a bar/coffee shop and discuss whether or not the feds in E.T. represent America's increasing xenophobia after being rattled by Japan in the first real post-war challenge to the US economy?
    Secondly, having a 2nd major will catch the attention of recruiters who have to sift through piles of resumes that look the same and can really give you something to talk about at the start of your interview and allow you a pretty good segue into your tech qualifications.
    Finally, a second major will allow you to look at problems from a different perspective and help your critical thinking skills, which are in much shorter supply in the IT industry than Java or Python coding experience IMO.

    2. Learn another language. Again, there are "useful" languages such as Chinese, Hindi, Korean, Portugese etc., but if you are only learning a language for the money and not because you are interested in the people and culture, you are almost guaranteed to never become fluent. Even languages such as German can help you on the job. If you are working for a company and you and a rival company submit similar proposals for a German contract, and your documentation is in German and theirs English, who do you think is going to win? Plus, from my experience abroad, there is no better way to break the ice with someone in another country than to speak their language. I got a Software Engineering job offer in Connecticut with a small company totally based in Connecticut partially because of my Japanese language skills. The company has to go through a 3rd party to sell their software products in Japan, and they could have really used someone with both a knowledge of the technical side as well as the linguistic side to aid the translators and to double check their work.

    3. Study/work abroad. (Shameless plug alert):I found an internship working at an R&D Lab in Japan by working with a group called IAESTE that finds and exchanges internships all around the world. I had to do a lot of work too, for instance I hosted our first intern from Argentina. But after work, there is a lot of drinking! Nothing more fun than a room full of drunk college students from the world over! The internship itself was an amazing experience in terms of both the technical and cultural aspects inside and outside the office. Not to mention I instantly stood out among my peers when it came time for job interviews. It also helped me land the job I have today, working as a software engineer in Germany. Oh yeah, and tons of fun and drinking, cannot stress that enough!

    4. Related to the above: work an internship, at home and/or abroad. I also worked in a steel mill writing software, which was a unique experience in itself.

    Above all, don't worry about individual technologies. Stay abreast of the news and don't be afraid to dive into something new every few years at the minimum. Oh, and its college, have fun! You have the rest of your life to work your ass off, and you should still work your ass off in college, but the nice thing about college is that for most students, they are young enough to work their asses off AND still have enough energy to go out and party.

  24. Not true by ShatteredArm · · Score: 5, Insightful

    I work with Indians all the time in my line of work, and the one thing they are all in agreement about is that their universities are not as good as ours. They simply don't have the education to compete with us, and if they are American-educated, they typically stay in America. The jobs they are getting are basically the equivalent of junior programmer positions, where they're told which module to write and they write it; or lousy maintenance jobs. There will always be a demand for developers who understand other lines of business (e.g., finance, health care, etc.), can work well with people, and have good analytical skills (for analysis, design, etc.).

    Which brings me to my suggestion: learn about other lines of business, because most likely you'll be writing software with actual business users. If you limit yourself to only jobs writing software libraries, you might not have as many options.

  25. Database by flymolo · · Score: 2, Informative

    Many real world applications need databases. Almost all web applications do.
    Learn some SQL. I've never seen a programmer job where Databases skills were a negative.

    --
    "Sometimes it's hard to tell the dancer from the dance." --Corwin Of Amber in CoC
  26. Communication and Theory by MosesJones · · Score: 2, Informative

    The number 1 most important skill if you want to have a decent career in IT that won't disappear to South America or India is to be able to speak to business people about IT concepts in their own language. The standard of communication in IT is woeful with the US (IMO) being towards the bottom of the league in terms of the number of IT people who can speak to business people in a way that makes sense to their audience.

    The number 2 thing is the theory. Most new technology trends boil down to new applications of well understood theories. If you understand about distributed computing then you know the problem domain and just have to learn the detail of Web Services/REST/CORBA/.NET etc, if you don't know the theory you are stuffed.

    Communication and Theory matter. The programming languages don't. After graduating from a good university that gave me that base I went to one interview and said "yes I know C", one week later I had to do a programming test... I had to learn C in that week and still came top out of the interviewees. That was the theory helping. Today however I find more and more that its the communication part that is important both in communicating with the business and explaining the theory to those who don't understanding it within IT.

    --
    An Eye for an Eye will make the whole world blind - Gandhi
  27. Re:Because girls dig it. by winkydink · · Score: 2, Insightful

    They dig knowing how to carry a conversation and how to make eye contact (i.e., not staring at their breasts) a whole lot more.

    --

    "I'd rather be a lightning rod than a seismometer." -Ken Kesey

  28. The best thing you can do by MikeRT · · Score: 2, Insightful

    Take as many development internships as possible. It doesn't matter how little the pay you. Take them. It's job experience that you can start out with that a hiring manager will look at your resume and go "ah, this guy isn't just a worthless, theory-ladden undergrad."

    You'll learn a lot of skills that way, and you might get paid to do it. Chances are, you'll learn a lot of basic skills that are applicable to your job market.

    This is the advice that I always give to people who are going to be graduating. Look at the skills that employers want where you plan to live. It doesn't matter whether you can code the best embedded systems in C and ASM on Earth, if there are no jobs for that where you want to live. If you want to get skills that aren't purely work-related, then study just what interests you.

    Where I live, Northern Virginia, the job market is primarily for Java developers. I don't waste my time learning languages like C++ on the grounds that someday I might need to learn them, when I can quickly pick up the basics when I need to use them at work. I keep up to date on Java for work, and learn Perl and stuff like that for my own enjoyment.

  29. Being able to talk to/analyze the customer especia by MikeRT · · Score: 2, Informative

    A developer that can sit down and talk to a prospective client about their business needs is going to provide a lot more value to their employer in most cases than one who needs someone else to build up the requirements set. I know some very gifted developers who have learned how to really talk to clients, and the pay difference is amazing. We're talking like they're getting paid salaries that'd make you think the dotcom bubble never burst. Why? They're one employee who can do the work of a developer and a business analyst. They can discover the needs, write them up in a way their team can understand, and then work with their team to execute them. Much cheaper than having two employees for the company, who is more than happy to pay bigger bucks to the developer.

  30. Personal Finances and Confidence with humility! by studly · · Score: 2, Insightful
    I think GenKreton got it 99% right. Start with Personal Finances. Add humility to the confidence and it's hard to go wrong.

    He's right that most graduating students don't know how to budget, plan, save for their toys or balance their checkbook. Learn these BEFORE graduating and practice every month. Keep in mind that budgeting doesn't mean denying yourself. It means making sure that you CAN have the toys/fun you want while staying warm, dry and well fed.

    Second is confidence. Be confident that you know what you know. But also keep the willingness to acknowledge what you don't know and then learn it. The phrase "I don't know" is rarely spoken by computer professionals. The phrase "show me how" is even rarer. Keep both handy and you'll be regarded as someone who knows a lot but doesn't seem arrogant. Try not to feel threatened by someone who seems to know more. If they do know more, learn from them. If they really don't know more, others will figure it out around the same time you do.

    The only other thing I can suggest in general is to take ownership of your own career. Don't expect your employer to train you or keep your skills fresh and new. That's your job. Also, keep asking yourself "what are you doing this year that warrants a raise from your employer?". If you don't want to pay your cable company more this year for the same service you got last year, your employer feels the same about their developers and administrators. Upgrade the services you provide, then ask for a raise knowing you deserve it.

    And lastly, HAVE SOME FUN! LIFE IS TOO SHORT NOT TO.

    Hope this helps...

    --
    Ididn'tdoitnobodysawmedoityoucan'tproveanything!
  31. Writing by MonkeyBoyo · · Score: 5, Insightful

    Often the biggest skill lacking in technical people is they cannot write very well.

    I've seen some really bad reports written by fairly good technical people.

    Spending several semesters taking writing courses is a much better investment than learning a new language (which you should be able to do on your own and which will happen during your career).

    Being able to explain things clearly on paper will put you in an important position in any development group and will lead to the most career growth.

  32. Re:Too much free time? by SQLGuru · · Score: 4, Insightful

    What do you wish to do with a computer? This is probably the best line in the parent post.

    Computer Science is a very general field with many specific applications of that knowledge. The skills needed to excel in one instance might be completely wrong for another instance. You should really evaluate what area you want to work in and learn the skills needed in that area.

    Games programming? C/C++, understanding of 3D space, understanding of low level hardware (consoles), etc.
    Embedded programming? Tuning, tuning, tuning, and some C/C++
    Business Apps? Database skills (Oracle or SQL Server would be my first stops, DB2 a close 3rd), Java or .NET, WebServices, and how to work with someone else's solutions (vendor solutions)
    etc.

    The other skills you need you can't learn from a book. You need to learn to integrate with a team. You need to learn how to write a good design spec (and not for a semester long "project", but for a real application that takes upwards of a year to work on). You need to learn to accurately estimate. etc. To learn these, I recommend that you find a very good mentor at your first place of employment and absorb from them.

    Layne
  33. Target skills come and go by Agilis · · Score: 2, Insightful

    Learning skills that apply all over, and get expressed as 'targetted' skills, is worth much more over time. The ability to read, write, speak, manage time, and finally, learn and adapt...

  34. You should be good by tritonman · · Score: 4, Informative

    The important thing is that you have learned programming initially or at the very least, been taught the fundamentals of some language like C or C++ which will let you understand how things like memory allocation works and how pointers work. If you understand those concepts you will be good. You don't need to be proficient in ASM, but understanding the concepts is important, you should learn that type of thing in an Operating Systems structure class though. Once you have learned the fundamentals of C or C++, I would say to do everything else in an easier language like java or C#, because you shouldn't spend your time focusing on your memory allocation and such when you are just trying to understand the structure of a redblack tree.

    1. Re:You should be good by lgw · · Score: 5, Interesting

      If you want to do "infrastructure" programming, such as OS development, language development, clustering, virtualization, storage, etc, it's vital that you learn C and C++, and have a firm understaning of pointers and recursion, data strustures and algorithms. In my experience most jobs in this broad area are still done in-house. Your job will be particularly uninteresting to a non-geek, but pay well. If your problem domain is the computer itself, you had better understand every layer you work with down to assembly.

      If you want to do "business" programming: inventory, payroll, CRM, SCM, vertical apps in a variety of fields, than by all means learn Java. But it's your business skills that will make you stand out, and as these jobs are largely outsourced, you very much need the people skills to work as a consultant, or manage consultants. If your problem domain is business operations, you had better understand how a business operates.

      If you want to do "embedded" or "realtime" programming, again the low-level details are important, but I caution you that these jobs pay significantly less than infrastructure jobs (despite often being harder). Also, non-realtime embedded programming is shrinking as a field, as the cost of hardware needed to run a full Linux or BSD OS install goes down every year. The world will always need realtime programmers, however.

      If you want to do "games" programming, I have no idea what skills you'll need, but you'll be paid crap and worked until you burn out and quit the industry, so do you *really* want to write games?

      --
      Socialism: a lie told by totalitarians and believed by fools.
    2. Re:You should be good by LithiumX · · Score: 5, Informative

      I'll wholeheartedly second everything Tritonman says here. You don't have to become a low-level master to be a good programmer, but a basic working knowledge of C and C++ is the key to understanding the majority of languages you'll face later (including ones that do not yet exist). Assembly teaches you why software is laid out the way it is, as that's what all compilers must eventually boil down to in one way or another. You don't need to be able to compose a serious tool in Assembly - you don't even have to know how to write anything useful in it. However, knowing the basics will give you a more solid framework for all later programming skills you tackle.

      However, here is another piece of advice. You'll hear many advising you to maintain a wide array of general skills, and they're absolutely right. On the other hand, I've been a programmer for about a decade, as well as an administrator (win and unix), graphic artist, management, and a wide array of other job descriptions - each of which I am well above average in, but none of which I specialize in (though my resume paints me as primarily a programmer). I'm well versed in more languages than anyone I know (including assembly language for four different chipsets), and I'm at least somewhat experienced in an even greater number. I'm able to easily install, configure, troubleshoot, and often hack many different operating systems. I'm also known at my job for being able to pick up almost any skill quickly, as-needed (such as studying for a CCNA, my most recent hobby) - I'm the resident fix-it-all here, especially when the task requires knowledge that none of us have at the time, or would normally require experts from a number of different areas. I have a range of experience that, in my line of work, is more comparable to the 50-something old-school techies that are inevitably found in this industry, than it is to my peers (who are in their late 20's and early 30's, have some range, but are usually unfamiliar with subjects outside their specific skill set).

      I'm not bragging though, and here's why.

      For all my wide range of skills, I've found I have been valued less in the corporate world than those more limited specialists. True, I can complete projects that normally take a whole team to do - and often faster. True, I've shown time and time again that I can find solutions and create software that even our better-paid experts haven't been able to seriously attempt. That doesn't matter, though, because as an accomplished generalist at a (large and growing company) I've found myself sidelined over and over, forced into a job of very limited scope that is filled with specialists (in ASP.Net in this case) who I now have to compete with (in the one area I was always weakest at - web design). I've had the empty pleasure of seeing my old tasks pulled away, one by one, so they can be moved into specialist departments (with the end result apparently being the same quality of work, but requiring a much larger work force). This wasn't due to overload (I can automate almost anyone out of a job) or poor work on my part, but simply a matter of corporate architecture. All of these skills I have, all of these years of experience, are now going utterly to waste, not because I have an inflated ego and believe myself to good for my present task, but because all I can do now is advise others on how to do the jobs I used to do, while I perform a now-monotonous role where quantity of output is the only way you're judged. That sort of thing, though, doesn't attract much attention or pay. If only I'd spent more time on one of those many subjects, mastering it more completely, because total mastery over one subject is eventually more useful than significant proficiency in many subjects.

      The long and short of it is... expand your horizons. Learn new skills, and maintain the habit of studying, even long after you're out of school. Grow and adapt, and become at least marginally familiar with as many areas of technology as possible, because th

      --
      Do not confuse "Freedom of Choice" with "Free Will".
    3. Re:You should be good by kalidasa · · Score: 3, Insightful

      Very well said. For a bit more academic piece of advice: get all the math you can handle.

    4. Re:You should be good by Kiaser+Zohsay · · Score: 2, Insightful

      a basic working knowledge of C and C++ is the key to understanding the majority of languages you'll face later (including ones that do not yet exist). The best skill you can have in any tech industry is the ability to acquire new skills.
      --
      I am not your blowing wind, I am the lightning.
    5. Re:You should be good by Crackerman111 · · Score: 2, Insightful

      It sounds to me like you've worked at places that aren't compatible with your talents. Am I wrong in assuming that you've worked predominantly in very large companies? A Jack-Of-All-Trades isn't as valuable in a larger organization as there tends to be a correlation between headcount and specialization. You should probably look for work in smaller organizations or startups, where being a Jack-Of-All-Trades is extremely useful. In these type of environments, the organization usually can't afford a body for every single role, so being competent in a lot of different areas is key. Although job security may not be as great in a smaller organization, if you work for a startup, you may be able to get stock options or equity of some kind. It depends what you're looking for. One other poster mentioned consulting, which could also be an attractive alternative.

    6. Re:You should be good by eeek77 · · Score: 2, Funny

      My paycheck appears quite nice too, as it is passed from my employer on the my wife and three kids.

    7. Re:You should be good by squallbsr · · Score: 2, Insightful

      You sound like you are in the wrong type of company. I believe that most every startup company would be looking for somebody who can wear many different hats and be proficient at each hat. You should consider sitting down and thinking through problems that you could solve that will make you money and start pursuing that after finding a buddy or two to go down that route with you...

      One of the most important things about startup employees is the ability to do many different things well, not to be a specialist.

      --
      Sleep: A completely inadequate substitution for Caffeine.
    8. Re:You should be good by philipgar · · Score: 5, Interesting

      Remember one thing though, there are a fairly limited number of "infrastructure programmer" positions around, whereas embedded systems programming is HUGE. The future of computing (and much of its past) is not in the box that sits on your desk, or the laptop that you carry. The future is embedded devices. Cellphones, cars, ipods, HDTVs, game consoles, media players, planes, controls, smart appliances, everything. The majority of computers are embedded, and this trend is only accelerating.

      However many of these devices are starting to resemble more "traditional" computing platforms. They run a full OS, have virtual memory support, FPUs, etc. However one thing they do have in common is that they run on a limited set of hardware, and often have strict memory, performance, and power constraints. The skill set does not really need to include knowing more than basic ASM programming (if you used SPIM in a computer architecture class you should be okay). You need to know the fundamentals of computer architecture, and a class on OS is very important (you must understand some of the different memory models etc).

      But, as a CS student, your job is not to know the details. Your job is not to know the languages and the tools, your job is to learn the algorithms, to learn the thought processes, to learn how to design. What tools you know how to use aren't very relevant, and will change over the next couple years anyhow. Being adaptable, and knowing the fundamentals, and having strong problem solving skills is far more important. The rest will come. Any company that won't hire you because you don't know their specific languages and tools is either not looking for a student out of college, or is looking for an IT monkey to write code for them. If they don't want a CS student, beware, as the job is likely quite boring anyhow.

      Phil

    9. Re:You should be good by JavaRob · · Score: 2, Insightful

      If you want to do "infrastructure" programming, such as OS development, language development, clustering, virtualization, storage, etc, [...]. In my experience most jobs in this broad area are still done in-house. Wait... isn't this exactly the stuff that most companies do *not* do in-house ("Hey, boss -- I'm thinking we should design a new programming language and OS for this next project")? Only companies like Google do any of this kind of stuff in-house.

      But excellent points overall... there are very different niches available, and it's a waste of effort to try to prepare yourself for all of them. Get some exposure to the gamut, then narrow down and get some experience *at depth* if at all possible -- i.e., working on a big project with other people with source control, collaborative design, testing, bug triage and debugging.. all that stuff that you'll never see on 2-week individual projects.

      Don't panic if there's an acronym or two that show up on job listings that you're missing. You will be learning new stuff throughout your career.

      I also want to emphasize that "people" skills are extremely important, no matter your niche. If you're a wreck in basic conversations, practice with your cat, neighbor, anyone. Memorize a list of fallback "small talk" questions you can ask if you're lost, and learn how to listen and ask follow-up questions. You have to get to know people, you have to gain their trust, and you have to learn how to work anyway with people who fail to gain yours. You have to know how to stop your client/boss/coworker when they're explaining something and you lose the thread. You have to know how to ask questions. You have to learn how to offer criticism without offending, and how to just shut up sometimes. You have to know how to tear your own suggestion to shreds and decide on someone else's as the better solution, plus how to null route someone else's suggestion without bruising their ego.

      Sometimes someone else will make a mistake that costs you hours of time (and sometimes you will make that mistake). Someone will send an email out to the entire team that contains an obvious error that makes you look bad (or perhaps you will send this email). There's a serious problem in the code, and you think you know who did it. How you handle this stuff will make a huge difference in your quality of life.
    10. Re:You should be good by dannys42 · · Score: 2, Interesting

      I'm doing non-realtime embedded work it my current company and my previous one. And I can say that we definitely would like strong C and networking skills, with some hardware familiarity. Some ability to comprehend other discipilines like SQL, PHP, HTML, etc. are also starting to be important in this field as everything's starting to incorporate web pages and web-based configuration.

      But even discounting the higher level languages, we've had a horrible time finding anyone with anywhere near the skills we'd need. And we're in Irvine, CA... theoretically one of the tech centers in SoCal.

      I'd actually think this field would be growing _because_ the harddware costs are getting lower, and it's becoming easier to just put Linux on everything.

  35. Information Interview by snowwrestler · · Score: 4, Informative

    One of the best things I did was to shotgun a few letters to prospective employers telling them how highly I thought of their company, and asking what I should focus on if I wanted to be hired there. The letter approach is not a bad one, but I think you can learn more in person. Try finding some folks who work in the field in which you'd like to work, and take them to lunch and pick their brain. This is often called an "information interview"--you stress up front that you're not looking to get hired, you're just hoping to gain a little insight. You might surprised how accomodating folks will be. The fact that you're young and still in school actually works FOR you in this context.

    How to find folks to interview? Networking. Work your contacts. Good sources include friends of your parents, your friends' parents or their friends, people your professors might know, etc. Or, find local events or societies or clubs that attract folks from your target industry. Or just call up companies you admire. This aspect of the information interview is great training for later in life, when you really want to get a job.
    --
    Build a man a fire, he's warm for one night. Set him on fire, and he's warm for the rest of his life.
  36. Basic switching/routing by crossmr · · Score: 3, Insightful

    Its amazing what sort of monstrosities can develop when a programmer at my company attempts to set something up and then calls me for help when it "just won't work". I'm not saying you need to know how to completely configure a cisco router with advanced features, but understanding general concepts like ip addresses, host and network portions of an address and how that relates to the subnet mask as well as the basic principal behind how a packet gets from point A to point B would do wonders.

  37. Read Joel on Software by Soskywalkr · · Score: 4, Informative

    ISBN-10: 1590593898

    Could recommend this book more highly to an up and coming programmer.
    This is the first book that we ask our interns to read.

    The second book (for those pursuing management positions) is
    "Leadership and Self-Deception"
    ISBN-10: 1576751740

  38. You're already ahead of 90% of your peers by jimicus · · Score: 2, Informative

    Let's see:

    1. You recognise that there are serious gaps in your experience and understanding.
    2. You are clearly motivated to do something about it.
    3. But you also recognise that your inexperience means that you're not entirely sure which gaps you should be plugging first.

    This puts you way ahead of a lot of computer "scientists" who are still in university.

    Please, please, please do the entire industry a favour and work to maintain that passion. People who've lost their passion,who don't really care as long as the next paycheque comes in seldom make top class IT professionals, and frankly are ten a penny.

  39. College Experience by Launch · · Score: 2, Insightful

    As someone who graduated college only a few years ago (2004) and as someone who has a career in the software industry and as someone who is responsible for hiring delevopers, let me offer you the following:

    1) I don't believe in CS programs. I feel that they fail to prepare students for the real world. Engineering is one of the few educations which should provide students with pratical experience that prepares the student for 'the real world'. You have learned a lot of therory. In my experience good grades has no corrilation to good developers.

    2) College, in general, is important for 'nerds, geeks, engineers, etc'. Sterotypically this group has poor social skills. This can hinder your professional development, as these skills are required in almost any business. Focusing on developing social skills, time management, and group collaboration will pay off.

    3) Therory isn't a complete lost cause. Focus on learning how to think, regardless of course of study, college should train you on how use your brain.

    4) Be passionet. College can be a great demotivator. I wouldn't be suprised if you loved computers a lot less today than the first day you stepped onto campus. Find time to utilize computers in a way that inspires you. Google Mircosoft's "Coding For Fun". Not only should you find something there that intrests you, it will help guide you into some self study of programming that is applicable to today's business world, which brings me to my next point.

    5) Focus on increasing your marketable skills. The utopian academia [and dare I say slashdot?] breeds a lot of technical fringe support. While being a hotshot ruby developer might be cool in this circle, it's not as marketable as being a profficient VB.net/C# web developer. Polish your skills in using technology that is common place, you'll need it being entry level in the job market.

    6) Experience is golden. Work for minimum wage, work for food rations if you have to! Finding internships in related industries will give you pressious contacts, and valible work experience to put on your resume.

    --
    Your mammas flamebait.
  40. Re:Reminds me of a joke... by keenada · · Score: 2, Insightful

    There is a difference between acquiring knowledge and acting on it.

    Closing off hints and tricks to new graduates only hurts your company, the industry, the economy and ultimately yourself. Knowledge is power, yes, but a person has to want to act on that knowledge. As anyone who has taken Computer Science knows, the concepts may be easy, but 80% of people can't apply them to pass a simple course.

  41. Re:Writing by spuckler · · Score: 2, Insightful

    Absolutely. I interview/hire a lot of software developers, and if you show up with a poorly-written resume, you're toast. If you can't be careful with the most important language in your arsenal (the one you use to communicate with other humans), how can I expect you to be careful with programming? other advice: whatever you do, do it well...even if it's something you're not interested in. The worst thing is to give someone some grunt work, have them to a lousy job, and then have them ask for more interesting work. Kiss of death. Don't sweat about the particular languages you're studying. Many of the best developers I've worked with didn't even have degrees in computer science or software engineering. I majored in Russian, and I've done ok... Do study something besides computers. I work in finance, and if a person comes in with programming experience AND an understanding of finance, they immediately go to the head of the class. It sets that person apart from the pack. Make yourself unique, and chances are your job won't get outsourced.

  42. Re:Being able to talk to/analyze the customer espe by inKubus · · Score: 3, Insightful

    You're talking about Software Engineering, "the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software".

    Knowing languages is good. Theory is good also. But to make a working product you need much much more. From the inital vision, to project planning, choosing the appropriate tools (language, platform, etc.), and matching features to business process requirements, you have a lot of work ahead of you. Of course, actually writing the code is a challenge in itself, but in a lot of small- to mid-sized businesses, the "developer" is also the project manager, the analyst, the senior developer and the IT manager all at once. Careerwise you CANNOT go wrong having at least rudmentary (such as Quick Kill) and probably at least a familiarity with development methodolgies. There is no one leader, agile was big for a while but it was too cult-like.. There's a million of them, you have to match the right one to the job. People who do this are software engineers.

    Wow, you know a language. Most working coders know 10. It's applying that knowledge to make or maintain software that gets you a job.

    --
    Cool! Amazing Toys.
  43. It's easy by Pointy_Hair · · Score: 2, Interesting

    1. Learn the art of bullshit. Become an expert at appearing you know what's going on even when your completely clueless. Keep in mind that this isn't just about bluffing or attempting to do something you aren't qualified for. It's all about appearance. If you look and act like you know what you're doing, 99% of the time most people will believe you. Instant credibility. Speaking of appearance, bathing at least daily and dressing like a real business person will make the bosses swoon and your peers hate your guts. You get real good at it, you will be able to spot another, less adept bullshitter a mile away.

    1a. Communicate well. If you're sounding like an illiterate teenager (in person, e-mail, it doesn't matter) that's what people will think you are. Maybe it won't be kewl and l337 to your peers, but the old people that write the paychecks seem to like it. If you're working internationally at least be functional in the language. Being in a meeting while natives are jabbering away right in front of your clueless face is not fun. The look on their faces once they discover you understood all the foolish American remarks and offer to buy them a beer is priceless.

    2. Always be able to articulate the value you add to whatever you're working on. Currency value is best since even the dumbest managers are keen on money. Understanding the business need behind the technology will help.

    3. Choose a technology that's interesting to you and that you like to work with. It doesn't matter if it isn't in the top 5 in last week's Network World. Even if it pays less than the skill-o-the-day. Nothing sucks the joy out of life more than a job that you hate. You'll also find that your natural enthusiasm for whatever it is you decide to be good at adds to the credibility you get from 1 and 1a.

  44. Re:Reminds me of a joke... by SatanicPuppy · · Score: 4, Insightful

    Oh please. I've worked in the business for a decade. My advice for an emerging undergrad? Remember that you don't know crap.

    School is about a foundation. You're worried about what you know about C? You may never in your life program in C. Or you may program in it every day. Either way, you're not going to get your first job based on your college programming experience, not unless you did something so wildly off the charts that you could have programmed it in RPG and people'd still be lining up to hire you.

    What you need most to remember is that it's your work once you're out in the world that will define your career. It's a hell of a lot more important to buckle down and learn in the real world, than it is to leave college thinking that you "know" how it's supposed to be.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
  45. Re:Writing by SoulRider · · Score: 2, Insightful

    absolutely right. Communication skills are the crux of any job. Take more than one speech class and writing class. Excellent communication skills can land you a job even if you dont have a lot of experience. When I was in school I took a business oriented writing class, that one class alone has really helped me to communicate with the business dweebs in my life over the years. Think about it, sure your boss and fellow workers will most likely be techies, but everyone else in the business is probably not a techie. It is only to your advantage to learn to communicate technical issues with non-technical people. In fact I have seen people with less than stellar technical skills who are absolutely loved within a corporation just because they are able to explain what is going on in non-technical terms, of course these people usually become managers/executives. If you have excellent tech skills and excellent communication skills you will go very far in this industry.

  46. SQL by somaking · · Score: 2, Insightful

    Get some SQL under your belt, and maybe take a databases class. Its everywhere in the job market, but schools don't usually promote it.

    Also, learn the LAMP stack if you want to be a developer. Statistics knowledge is very marketable. Take some classes.

    Most important: make sure you enjoy what you're studying / doing. It doesn't have to be your ultimate passion of the moment, but have long-term goals that fulfill your passions, dreams, ideals, etc.

  47. It won't teach you high-level by SanityInAnarchy · · Score: 2, Insightful

    Try going from C++ to Ruby or JavaScript. Possible, but there's a lot of things that it will take a long time to wrap your head around. (Closures being a simple example...)

    But for a real challenge, try going to Erlang, Haskell, or Lisp. Of those, Haskell is probably going to be the weirdest, but I don't have a truly thorough understanding of Lisp yet.

    --
    Don't thank God, thank a doctor!
  48. game programming... by HelloKitty · · Score: 2, Insightful

    you get paid like crap, it's really hard, schedules are very tiresome/stressful.
    you do it because of all the really cool shit you learn, and the opportunity to hang with artists.
    since there's artists, you can snag a really cool wife, before you burn out and quit the industry.

    that said, i'm still there, and like it. it is really interesting.

  49. People Skills by kramer2718 · · Score: 3, Insightful

    1) Learn how to manage conflicts. They are guaranteed to come up. 2) Communicate technical ideas well to non-technical people. Will your manager understand the technical details of your job? What about his manager? 3) Lean to present well. What better way to impress many people at once? 4) General Problem Solving Skills. A competent technical interviewer is likely to test you on this and be more interested in your performance than he is in you remembering the exact syntax in some language or some details of some library (although you should know those things to some degree). 5) Be generally eloquent and friendly The social aspects of work are often ignored

  50. the fundamentals: from a silicon valley developer by KMonk · · Score: 2, Informative

    I'm a developer in silicon valley working on semantic web applications here at moffet field. I did an MS in CS and engineering from a top school and a math/cs double from a normal state uni. I've been promoted up through my jobs over my few years in industry, moving from the midwest out to here with significant pay jumps each time. First, you need to decide what you want to do: do you want to be a developer or something else? If you want to be a developer, forget about all this low level nonsense about assembly code and C. It's totally useless in today's market. Computer programming is all about adding abstraction layers so that you don't have to worry about low level details. You need to build a coding portfolio so that you can prove that you know your stuff. Write a basic web2 app in ruby or java or whatever you are most familiar with, and try to make it as scalable as possible. Deploy it somewhere and let people poke at it. Check out dice.com and craigslist for silicon valley, and if you aren't in a major city get there as fast as possible - you want to be doing development, not maintenance on old legacy code. That means you need to go where the money is at. Of course, you could always be a sell out and just go work for google... If you are worried about knowing what to do? Study mathematics and algorithms extensively, particularly the Cormen textbook. Udi Manber's book is also very good. This will teach you the computational aspects of CS. Then, read up on RDF and the semantic web to get a background in data management. Then practice, practice, practice.

  51. school doesn't matter. by jantman · · Score: 2, Insightful

    Give up on learning anything technical in school. The technology changes too fast for most schools to come up with working curricula in time, and when they do get that figured out, it's not enough knowledge to help with a job. Learn business, management, maybe some financial or accounting stuff in school. In your personal time, try to learn as much as possible. Learn a few things *really* in depth, but also remember that variety is good. If you're mostly a Java person, learn a bit of Python or PHP, and get some Unix knowledge. Take a look at: http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/ Also remember that job experience is good, but personal experience is good too. Make some contributions to F/OSS projects or start your own.