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?"

26 of 587 comments (clear)

  1. 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 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.
    3. 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.

  2. 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. 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.

  4. 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!

  5. 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
  6. 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.

  7. 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
  8. 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.

  9. 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

  10. 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.

  11. 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.

  12. 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.

  13. 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
  14. 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.

  15. 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.
  16. 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.
  17. 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.........
  18. 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.

  19. 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