Industry or Research Internship?
"I'm also really interested in computer science education and I want to do research. I'm thinking about going for graduate and post-graduate education, and I've been looking for professors who have done research in CS Ed. It's still kinda challenging because education abroad is expensive, so I have to have a good enough record for financial aid. I want to be a teacher, and I want to improve the way computer science is being taught. I know it's _really_ difficult, especially since I'm just a student right now, but if I work hard at it I know I'll find a way.
What advice would you have for a student who's at one of those crossroads? Should I go for the internship, do well in the industry, and make something that lots of people can use? Should I look for an internship at a university that does research in computer science education, and help develop the next generation of whiz kids? What are some other choices I might not know of yet?"
Sorry, but Brazil is far from being Third World when CS is concerned. Might as well say India is Third World in this context. NopeNopeNope. Our Filipina/o colleague should work on real stuff for a real developer because the work experience you can get while doing this is so useful. Coming to the U.S. to intern can be tricky because of the labor and export laws. There's a lot of lead time required to get an H-1B (foreign expert) visa and most times, an F-1 (student) visa does not entitle one to work for hire. There are some no-wage internships at NASA and a few other government agencies, but these are scarce and hard to find. I'd recommend the following: seek a contract situation with a U.S. developer who works on consumer applications; i.e., strictly non-military, non-space, stuff to develop a specific product for them. Work remotely and keep up with your colleagues by e-mail. Arrange to come meet your colleagues, and then do the work from home. My experience with this tells me that the face-to-face meeting is important to making a telecommuting relationship work. Good luck and press on.
Let me tell you, the first time you have to take a job at a pay cut because the the IT industry is hiring a ton of cheap foreign IT labor (mark my words, it will start happening) you'll whistle another tune about every human being deserving a chance.
If we're not careful, we could go the way of the factory worker. Cheap, expendable, and easily replaced in foreign countries. (once their IT training gets up to par that is)
This message brought to you by the Council of People Who Are Sick of Seeing More People.
If you want to go onto a good grad program, you will need research experience. Industry experience will not help you here.
Early on in life, when you take a job, you have to ask yourself "How is this good for my career?" To get into a good graduate program, you have to have a resume that shows you will be a good researcher. Having industry experience doesn't help, and in fact, can hurt a little, as it makes it seem that you are not as dedicated to an acedemic life. The good programs have 100s of applicants and only a few dozen research positions. In order for you to be accepted an individual professor has to take you on. The way to catch a professor's eye is with research work. He will not care if you programmed the backend to eBay. If you have an internship doing fourier analysis of spectrographic readings of plant samples from the amazon, it will show you'e got the math it takes to do research.
There are some industry jobs that may help. A friend of mine worked on uC++ and ssh, but he also had a lot of other pure research interships (as well as was on the winning team of the ACM one year) and is now at Berkley.
Don't get me wrong, you may be able to get into a good program with good marks alone, but the research experience helps a lot.
On the other side, the research experience will help a little in getting an industry job. Just don't expect it to count as much as industry experience. You will still be viewed as a entry level applicant, and be paid accordingly, but you will have a edge over those with no experience. If you use a language like Java in your research, that will help you a bit (it will certainly get you by H.R. filters). Once you have a job in the industry, you will probably be promoted quickly so while you loose a little ground, you'll catch it back in a year or two.
Good luck. :)
-no broken link
#1 Why would you title it internship? #2 Your unwritten rule sucks. I got more exposure to a broader range of stuff in my internships than I have in any 'real' job I've held. 'Real' employees are happy to show stuff and answer questions when you're just an intern and not a threat.
We've essentially boiled down the process to a business model ...
A) Write Proposal (often times we have no idea how to accomplish what we've proposed -- it just has to look good on paper)
B) Stick it to some GSR (Graduate Student Researcher) who's trying to get his PHD from us ... we pay him 40,000$ a year, but we make anywhere from 100g - 1m from the proposal ...
C) Launder the rest of the money and use it to pay our salaries, buy equiptment, our manager routinely buys the newest baddest computer when it comes out ... (keeps em for 2 months only sometimes) takes trips on the university dollar ... etc (while the GSR's are running SS20's and Ultrasparc 1's and 2's ...) ... and this isn't to mention his 6 fig salary ...
D) Start step A again in paralell ...
Granted not every research facility is like this, but I thought I'd offer a disenting oponion from someone who deals with it on a daily basis ... I've personally witnessed things like -> converting (completed) research papers into research proposals ... People in their 7th year of research because the boss considers em too valuable to award a PHD (and thus they'd leave for a job that pays 4 times what we do).
Free Techno/Jazz/DNB/MI Music by guys obsessed with monkeys!
As far as paying for it, my friends in grad school are all on scholarship/research thingies that pick up the tab for schooling plus about a 12k/yr(USD) stipend.
But, I would highly recommend taking a year or two somewhere to work. There are many int'l firms looking for good coders. Currently, my gig is with a banking software firm in NL. As an American, I was looking to come to NL. Most firms would ask 2 questions: Work permit? I need one. Dutch language? A semester in college. "Sorry." Then I found an int'l company.
They did the whole process for me (new speed record in permit turn around too) and pay me a reasonable sum (never enough, but hey).
I would say hit grad school for a couple years, get your masters. Take two to three years and get some practical experience (crucial in the classroom. my university was begging for prof's with real experience) and then return for some phd action with some cash on hand.
I agree totally, but for different reasons. You say you're a sophomore, and you've done a lot of web programming. I'd say the odds are you don't have much of an idea yet which you're better at or want to work in, industry or research, unless you've had more experience than you claim. I say this because I thought in terms of an MS or a PhD in CS after my sophomore year, too. It all seemed terribly easy and fascinating.
Now that I've finished my bachelor's and worked as a programmer for a while, though, I'm still thinking about the MS but the PhD is a distant dream - I know I'm not cut out for research or teaching like I once thought I was.
I'd say, go for the internship, and any project-based/directed studies courses you can get, and try them both out. See if your school allows more than one internship (the coop program at my school required, IIRC, 3 or 4). See how you feel about programming/thinking about programming all day, every day (I and many others happen to love it, but YMMV), and see how you feel about research. That's the only way you're going to find out which will make you happy.
But above all, don't feel like you have to decide right now and for the rest of your life. That's the way to give yourself ulcers and make yourself miserable.
Cyclopatra
"We can't all, and some of us don't." -- Eeyore
Probably someone with a Ph.D. would be overqualified for the jobs for which you would hire. On the other hand, if you were hiring people to design adaptively calibrated analog-to-digital converters, for instance, I think you would be better off hiring a Ph.D. than a B.S. with 4 years of circuit design experience. This is because getting a Ph.D. forces you to truly know what you are doing, and when you are working at a very high level, knowing what you are doing is important. In advanced circuit design, for the most part the B.S. and most of the M.S. engineers work for the Ph.D. designers and the best of the M.S. engineers.
Here's what I mean. When I was an undergrad, I could study for tests and get A's without fully grasping what is going on. (How many people who took Calculus REALLY understand Calculus? Maybe one in ten) Likewise, when I was working, I could get by with a cursory knowledge of the material because I had a small part of the project and I was doing rather routine stuff. Now that I'm a Ph.D. student, the success of the project depends entirely on one person, ME. I need to know every last detail because there is no one else who will do it. This means I need to deeply understand the fundamentals, be able to absorb new information quickly, and become truly independent. This is difficult to achieve when you are working on a project and not running it yourself, because when you don't have to deal with the big picture it is easy to become nearsided. Most B.S. engineers I know are fairly competent, but they only know what they can look up. They are fine for routine designs, but they tend to lack the deep knowledge needed to extend the state of the art.
This is not to say every Ph.D. engineer is a better designer than every B.S. engineer, because that is not true. But, I submit that every B.S. engineer would be better if he or she went through the trial by fire of a Ph.D.
I'll need to find an educational exchange program here, then, that wil allow me to pursue that kind of path. Although our university has ties to Jesuit universities in Japan, and perhaps some ties to schools in the US, it's usually humanities-related majors that get the international exposure.
I'll look around our school to see if there's a way. Although computer science generally isn't seen to be one of the majors that could really use international exchange, I'm certain that the exposure to different cultures, working environments and people will be really helpful.
I'm also looking at the Fulbright scholarships - that might help. Most financial aid in the US is meant for US citizens - understandably - but there are a few that international students might be eligible for. I'm also considering Australia - Monash University looks really good, since they do a lot of research in computer science education - and other countries.
I'm sure there are plenty of options that I might have missed, so I'd love hearing about any little bit that might help.
Most good engineering school have a lot of support for grad students, so jumping to industry will just slow you down. With my Research Assistantships and Teaching Assistantships, I haven't paid a dime to go to grad school and I've been here four years. The student salaries are enough for rent, too, so I haven't had to get any loans. I am a traditional engineer, by the way. I'm getting a Ph.D. in Electrical Engineering.
A big problem with industry paying for your master's degree is that they usually don't give you a raise after you finish big enough to compensate what you could have gotten with a Master's in the first place. And you can't just quit, because then you have to pay back some of the fees they paid you!
I'm working on my self-confidence and communication skills - it's been pretty hard, especially for a self-confessed geek, but I make myself do presentations and talk in front of a lot of people, and I'm slowly getting used to it. I want to be exposed to different teaching styles so I can look for best practices to use, and I've been reading the ACM SIGCSE papers to see what other people's research reveals. I can't wait for next year. Hopefully our department chair will let me hold tutorial sessions for the freshmen, and that will help me gain a little more experience.
I like explaining things to people and getting them to understand, and that will be useful whether I teach or work in the industry.
The industry has its own lessons. I'd also need to carefully plan my career, since doing pretty much the same thing as just a coder for four years is likely not going to help me very much, but progressing from coding to designing bigger systems and applying whatever I learned from the best practices promulgated in programming books would really help.
Definitely, I'll choose to do what I love, knowing that everything else will follow. No need to worry about whether or not I should chase the money - if I do what I love and I'm good at it, the compensations - monetary or otherwise - will follow. And since I'm into this long-range planning, I'd like to do things that bring me closer to achieving my long-term goals, like making a significant contribution to computer science. =) (And computer science doesn't just mean theoretical computer science, mind you..)
As for the job, build a portfolio of what you have done. Employers care mainly about that. As for school, I know the universities are good where you come from. Enroll quickly, find one that has an exchange program. Teach lab or help other student by tutoring. All of what you said can be done and only you can decide. If you find american universities too expensive, come to Canada :)
I'm definitely planning to help improve the way computer science is being taught in the Philippines and other countries. I know that my university is relatively better off than most schools here - there are a lot of technical schools that only teach the use of applications! - but there's still a lot of room for improvement. Hopefully, by learning and improving on the different ways that people teach - and learn - computer science, I can spread those 'best practices' to universities here and abroad.
Doesn't Intel have a fab in the Phillipines. Surely you could find a nice tech job there.
-atrowe: Card-carrying Mensa member. I have no toleranse for stupidity.
Face-to-face meetings are definitely useful - it's fun to talk about algorithms and discuss programs over lunch, and there's nothing better for quickly resolving ambiguities.
Hmm.. Working on open-source projects addresses the meeting-and-interacting-with-other-geeks, so it's also a viable option.
Contract programming is useful, but still, there's not much future development in it - you contract for a specific project, and that's it. There's no mutual investment and support. I like the idea of mentorships, of companies investing in people in order to develop them to become more effective, and of their employees likewise investing in the company in order to be of use. I know that I could develop myself on my own - I read a lot, and I can pick up experience on contracts and open-source projects - but I also know that guidance would be really, really beneficial.
You have several years of school before you are i the real world. You have some important things to learn. (Amoung them: picking up computer languages quickly is not impressive, someone who can't do so is a poor programmer, but someone who can isn't nessicarly good).
Please get real world expirence. I have no problem with those who want to teach and do research all their lives. However those two areas are far removed from the real world. In the real world small programs consist of 2 million lines of code written by many people not all of whom should write code. There is no way for a human to understand it all and get his work done. Research demands the best coders, and often forces the less good programmers to re-write unreadable code. In the real world if it works we don't break it. (This is both good and bad)
Getting real world expirence means you need to look over the shoulders of your betters. (If only better in expirence, I've learned a lot myself looking over the shoulders of senior engineers who did a bad job, just because their expirence worth learning from even if the code itself was worthless in all respects) There are computer jobs in your area. There are also companies that will bring you overseas and pay you to work for them. Good luck finding them.
When I went to school I knew a couple students who weren't that great (They passed, but mostly Cs) who paid less for school then I did because they found some little known programs and got into them. Study abroad is expensive, but there are orginazations that will pay most of the cost. Find them and get in.
In the US the most desirale engineering studnet for grad school is the white female, followed by the white male. The lease desired is the asian male. Asian Males make up the majority if grad schools in the US. They are getting there somehow, it is up to you to figgure out how.
I wish I could give more definate answers (contact x and volia). The reality is I know several persons who found programs that got them into exactly what you wanted, but I don't know how they got there. Really there is only one definate answer I can give: your professors probably know the people you want to talk to, and the programs you want to get into, so pester them until they remember you when one of those annoying "do you have any students who would be interested in ..." calls come in.
I'll remember not to be tied down to any one thing that might become obsolete - I always have to keep learning something new in order to be even more useful.
I can take some time off between graduate and postgraduate studies in order to check out my research in the Real World, and I might find some new things to work on as well. Since I want to focus on computer science education and programmer productivity, this has immediate advantages for companies no matter what kind of applications they develop. Thanks for the great advice!
Still, one of the things I like about my university is that the faculty's really flexible and approachable - they're encouraging me to pursue this interest of mine, and our department head will even let me take psych/ed units for my major electives.
There must be some way to fill in the holes and improve the research environment in my university, just in time for me - and other students who might be planning to pursue research - to reap its benefits. =) Sure, it's a selfish little thing, but I need the foundation.
So, does anyone have any suggestions for setting up an undergraduate research program in computer science?
A rule of thumb: If you're not sure whether to move on to grad school or to go into the computer industry, go the industry route. Get a job, earn some money, learn how the office world works. In a few years you'll have some good practical experience (and some savings) under your belt, and then you'll be in a much better position to decide whether you'd like to return to academia to work towards a degree or stay in the corporate world and work up the job ladder.
If you have dreams of changing the world, if you want to revolutionize the way that computer science is being taught, there are plenty of ways you can go about this in the hours you're not at work. Help out at a local school or university, or tutor people in computer skills in the evenings. If you stick with it long enough, you can eventually make a name for yourself, build up contacts, and find you have the freedom to take this in any direction you want to go with it, and the experience to know where to take it.
All too often people fall into the trap of not knowing what they want to do with their life, so they slip into grad school, slave away a few more years of their life, and emerge with another degree but no better idea of what to do from there. You can prove your skills without needing that piece of paper. In the computer world, more than any other world I think, experience (and proven ability) counts far, far more than college education.
This is a bit of an untruth. It is true that as you gain experience in one aspect of IT, you will be considered more and more of an expert over time, but the main problem comes in when you try to think that your 10 years of DB2 experience + a course in Java makes you worth as much as an expert Java programmer. You aren't an expert, and will have to take a pay cut if you want to switch your aspect. As I said elsewhere, you will gain your old status quickly.
One place where this is true is poor interns who get a QA job as their first job. If they stay in QA for too long, then people will begin to think they can't program. One way to counteract this is by doing open source work. Of course, open source work also helps you change your aspect. If you have 10 years DB2 + a course in Java + are a contributer to any of the Java apache projects, then you'll look rather apealling.
-no broken link
If your goal is to get some experience in the US, and if you have some money to travel and live on your own for a few months, it is actually easiest to get an internship and/or temporary work when you are a student. Check to see if your university has a partnership with a US college/university - you might already be considered an honorary student at Nowhereville State University. Or you may be able to register for classes at a US college without too much difficulty. In this situation, it is fairly easy to get a work permit for an internship or a 1-year position at a job related to your field of study. Check with an immigration lawyer for details.
As far as the choice of working or going directly into reseach, IMHO you should work outside of the university in a non-research position for at least two years before making that decision. You can always return to the university from the real world and get back on the PhD track, but it can be very difficult to leave the academic world and go back to industry. Not as true as it once was, and not as true for the EE/CS area, but still a concern.
That's my 2 units of minimal monetary value.
sPh
In good times, you have the luxury of doing such.
In the bad times (been a while in tech) desire
sustains you.
Do what like to do, and try to become as best as
you can doing it.
That's right; my ancestors made this country what it is--a place where investors want to invest their money; it's a stable country, with a great infrastructure, and the best place in the world for longterm investment--we made it that way.
And because of that, we have jobs while you do not. We American citizens are all shareholders in America, and this is where we make our living; this is our place of business, bought and paid for with the blood and sacrifice of our ancestors; we and we alone are entitled to reap the benefits deriving therefrom.
Now if want to bring something to the table so that you might be able to do business here too, then you had better bring a lot, because when you come here to do business, you take business from me
Yes, some of us AMerican citizen-shareholders DO profit when non-shareholders (foreigners) are allowed in to work; these people, unlike the majority of American citizen-shareholders, do not work to supply goods from their own brains and backs, instead they reap the fruits of others' labors---they have the capital to buy labor, or they may work in a managerial or recruiting capacity, where they have to much to gain by bringing in labor from outside. What do they gain? Lower prices for labor. The operative words here are BUSINESS and MONEY.
Those who exploit others (and that's all right--everyone has to make a living) have much money (they have the capital!) and so they BUY advertising and therefore support the mass media. Not surprisingly, teh mass media often sees things their way, and so we have it that those American citizen-shareholders who oppose the immigration of non-citizen-shareholders (foreigners) are painted as racists. It's an old story, and its name is Propaganda....
Look, son, I don't give a fat, happy damm what color your skin is, but if you are going to come into my place of business and compete with me, you need to "buy in". How about you bring a legitimate PhD with you when you come knocking on our door....
Sig:
Navy nuke sub lifestyle?
In my experience so far, and industrial experience far outweighs the benefit of doing internship at a University.
Well, I live in a third world country too (India) and as far as I know, all the best minds in the teaching community (esp.comp sci) sooner or later move onto greener pastures in the industry. I do not know about the Europe and America and other developed nations, but here in developing ones, it suffices to say that quality of those remaining are far from good.
I'm doing my 2nd year engineering in Electronics & Communications, and I found a job working as a programmer and research intern on AI, and in my experience I have learnt a lot more in this internship than anybody could ever teach me. Given that my favourite area is AI, I have met some very good people into this field after joining this place, which has been, if not anything, a great source of inspiration.
This is not to say that college is bad. It's great, but the amount of resources that you have at your disposal in a company - books, unlimited internet usage (most of us Asians aren't as lucky as you western counterparts to have unlimited usage at educational institutions!) and people willing to guide you - that's something that'll really help you in the long run.
After joining this place, I have learnt a lot more practically, hands-down-experience, than I ever would have. I have seen a real hacker at work, I have been part of a project developing a full-fledged NLP app. from scratch, I have worked on hardcore AI areas and I have met people. Not anybody and everybody, but people with real skills, people who have been there, and fellow hackers.
You see, even I'm planning to do my research into AI, and this company has agreed to sponsor me at a good univ., be it in India or abroad. And plus, I have work experience which will help me. More than anything, I'm now motivated more than ever.
"...Fear the people who fear your computer"
according to /., you should consider your local Catholic Church if you want to do anything with the internet...frightening.
At this stage, go for industrial experience --- we already have too many academics who have none or whose experience is severely out of date.
Your industrial exposure will do you nothing but good. You will be exposed to a completely different environment where you can't just "do enough to pass". You will make new friends and you will learn a hell of a lot. In my experience, Universities are very boring places once the undergraduates go for the summer.
After you graduate, with a couple of years experience, you may find many academic institutions delighted to have you work part-time, so it's not necessarily an "either or" choice. You can do both as I have done for a few years -- I do "real work" for money, and academic project supervision for kicks.
Given the choice, I'd do something more academically oriented myself. Unfortunately, it pays very badly compared with industry and I like eating regularly, some level of warmth, and clothing without large holes in it (the last academic position I was offered would barely have covered my rent).
Do what you want to do and what feels right. You are, I assume, young enough to make a few mistakes, change direction, and have a lot of fun in the process.
-- Yep. It's me again.
maybe going for a remote job? You could work from the Phillipines on projects for companies all over the world, USA, Brittain, Germany, Japan, I'm sure that with the programming language experience you have, it would not be that hard to arrange.
How Jaded Are You?
Perhaps a contract programming job where you can telecommute? While it's maybe not exactly what you're looking for it could definitly be a learning experience.
lamer.
I live on a third world country (Brazil) and I think that event here(or on your case, there) you have changes to increase your potential. I going to my second year but I am working half day (4 hours) as a Security Analyst on my own city (That isn't a big one, too, just 2 millions of people live here). So, don't be shame of your country and if you don't find a good company to work on it, create it! And smalls companies can give you plenty of challenges too!
When I worked at Motorola in sunny Scottsdale, AZ our team transfered someone from a Motorola facility in the Philippines -- heck, her slot may still be open! In general, its not a bad company to work for. It seemed to be fairly easy for employees to move around internally (I never did), even if it meant relocating them. And there's always the chance of getting on really cool projects. However, it can also be rather annoying a big-company way: tons of bureaucracy, slow pace at times, corporate politics. Personally, I'm glad I worked there, but I'm much happier now at a small company.
especially visas if I'm going to do an internship abroad.
Right, and like I said planning for an internship isn't the same as planning for work after graduation (although people do get hired at the place they interned at). The field is moving and changing so fast that a company may disappear, or a new one may appear, between now and graduation. Expectations change, so much in computer science changes so fast, that planning to do anything in 2.5 years is IMHO a waste of time; you're going to have to re-evaluate later anyway.
I have to have enough time to correct whatever deficiencies I might have due to a weak computer science curriculum
Don't worry, I learned more in my first 6 months of co-op work than in all 5 years of school. Do an internship if you're worried, you'll learn a lot.
Besides, I like doing long-range plans - it gives my life direction, and I don't get too lost. =)
It's good to plan, but in CS, things change real fast around you...;)
Good luck!
Personally if I were in your situation I would go ever to a couple of job sites and search for companies willing to sponsor H1 visa's. Pages such as Hotjobs, Dice, Monster, all have options for foreigners to break into corporations via sponsorships.
Speedygrl has a comprehensive listing of job search engines and companies.
I've never dealt with looking for positions in other countries but soon I will be asking the same question when I get close to moving to Sweden, so I'm curious to these answers as well.
Hope that helped a bit.
Redhat spoofed
Thanks for the memories
If you don't get any interviews just because you're an hour and a half away, then I'm probably going to face a significant problem. =) I'm willing to relocate anywhere (as long as the living conditions are nice - no war-torn areas, please, I've had enough of chaos at home). That's also why I can consider schools anywhere on the world - last I checked, a few universities in Sweden and Australia were actively doing research in computer science education. It's far, and a completely different environment, but I think I should be able to adapt. =)
Real-world experience is definitely necessary. Does working on open-source stuff count? I also help train other people around here - I even get to help some of the graduate students with C++ and Linux from time to time - so maybe that's a plus. What other things should I work on? =)
There is always the route of contacting companies in the US, and getting them to sponser you for an H1B visa if/when you get hired. However...
.com's and related businesses are using the H1B as a 2k version of Indentured Servitude.
/. as to companies that had/are sponsoring H1B visas, and their fairness (for lack of a better term) in the process. I could be wrong (or it could have been on another site). Look around, do your research, and good luck:).
Be very careful about the terms and conditions that come along with this. It may seem like a company is offering the world to you, but, rest assured, there is fine print. Unfortunately, due to somewhat lax oversight and the desperate need for technical personnel in the United States right now, alot of up and coming
At a previous employer of mine (and this is not an isolated incident, just one i happend to be a part of), we had hired several workers from India, and then sponsered them for H1Bs. However, after being the in country for a certain amount of time, they asked for a nominal increase in pay (much like any worker would after a set period of time, in this case, 9 months.) The programmers were denied the raise, and told that any further asking would result in the termination of the companies kindness in the H1B process. Also, if there were fired, it would make things extremly difficult, since there is only a set amount of time you have to get a new job and have your new company pick up the visa tab, lest you be deported.
The process can be an excellent thing for people in your position, with talent and skills that are in demand. However, just make sure you read the fine print, and if possible, talk to other employees in the company who may have gone throught the process themselves.
P.S. I think i remember seeing a link in a story on
"Moving through the masses like a fish through water." syrup
Hey, why am _I_ saying this? I'm 17 - shouldn't I just be thinking about fashion, what's going to happen tomorrow, what cool movies I should watch?
Just my luck to be a geek. <impish grin>
Okay, these are the assumptions I'm making about 2.5 years into the future:
Is valid, no?
ust be careful of what you do. The first job you take is generally what you will be doing for the rest of your career.
Entirely untrue. If you let yourself be defined by the title assigned by your employer then, I suppose, this can happen. A job is a job and titles mean next to nothing except during the minute and a half that someone skims your resume. What can you do? Can you prove it? That is important.
Take a few jobs. Work on different things. Work on things that interest you and some that don't. Stay somewhere long enough to learn what it's like to be an insider. Jump around when you need so you know what it's like to be on the outside. Build a large set of skills. Accept lower pay when changing areas if the field interests you. If the company is large enough, transfer internally to other areas. Work hard. Develop a good reputation. Admit when you screw up and then fix it. Stay in touch with colleagues.
That's about all the advice I can give.
- technik
As someone with a MS in Computer Science, and who contemplated a Ph.D., my experience is that you cannot do relevant CS research without at least one foot in the private sector. The reason is that the value of the research rests on its real-world utility rather than its potential utility. CS research is littered with exotic UI paradigms, protocols, etc. which for various reasons (expense, marketing, not sufficiently better than the status quo) don't catch on as well as more mundane solutions.
This tendency to overengineer exists both in the public and private sector, but in the private sector the need for sales keeps you honest. A lot of professors I know will moonlight in the private sector to test the relevancy of their theories.
If your goal is (as it sounds) to maximize your value to society, it's hard to argue against education and research. (Education and research go hand-in-hand: each one improves your ability to do the other.) In education, you are guaranteed to improve at least some people's lives on a regular basis. These people, thanks to you, have an opportunity to improve the world in all the ways you are currently contemplating. Since you are in a third-world country, this is especially important since the limiting factor for future economic growth through technology is likely to be the number of skilled workers.
In the private sector, you have a small chance to have a huge impact on society, but most of the time you will end up working on either mundane projects or change-the-world projects which usually never see the light of day (or do see the light of day but for various reasons go nowhere.)
The private sector can make up for its apparent world-improvement shortcomings in one important way: money. The private sector is likely to pay far better than a university, and you can have just as powerful an effect on society through philanthropy as through educating people. What's more, donating money can be done all the time whereas choosing a career can be done far less frequently.
I'm trying to remember back to my college days. Does that come before or after the softmore year?
since I'll be graduating pretty soon - March 2003
In Computer Science, 2.5 years is not 'pretty soon' - it's a long time!!! Think about the state of Comp Sci in mid-1998. A whole lot has changed since then, and more will change by March 2003. You need to wait until at least mid-2002 before planning anything, unless you are talking about doing internships or coops. That's unrelated to when you graduate (and an internship, while good for experience, will postpone your graduation date).
Well, you could always apply to a certain IT company in the UK. Currently rewarding their staff for their loyalty by asking them to volunteer colleagues for the sack, to be replaced by cheaper labour from outside the UK. Successful volunteering is rewarded by a GBP 1,000 bonus.
Sorry, no useful links, but you'll get the general idea here
OK, this is completely off topic here but relevant to all of Slashdot. It seems to me there was a time not long ago (it couldnt have been because I've only been here around a year) That intelligent, or at least readable comments were the majority. Now I look at the comment totals, and most have less than 50% being moderated at 1 or higher. For this one, only 30 out of 120 comments were 1 or higher. 25 FUCKING PERCENT of posters had something to add to the discussion, the rest were lamers, trolls, goatse.cx linkers and guys saying "How about a Beowulf cluster of these?" It's ironic that today a story about the "average slashdotter" was put up when really (by these numbers) the average slashdotter is a 13 year old moron. I was hoping this site would always be interesting to geeks and boring to the scum of the internet, and we could always have intelligent discourse, but that just isn't the case anymore. Yes I know I don't have to read the dregs (and I don't) but just having it there irks me. Thank God for the Slashdot moderating system, 99% of other message board on the internet are unreadable.
(Sideshow Bob voice): I'm aware of the irony of appearing on a 0 post in order to decry it, so don't bother pointing that out!
From hell's heart I fstab at /dev/hdc
I'd argue that it varies with the discipline and the employment environment. I'm an AE and I work at a NASA subcontractor. It makes economic sense for me to work there and go to grad school [or would if I were done with my u-grad yet, but I advise students and cow-orkers alike].
EE is easier to do that in right now, and traditionally has been. AE is a bit harder because you have to be close to a school where the AE department has what you want. AE one place may be civ aviation and low-speed aerodynamics; others, it may be propulsion. But it's great that you're getting a Ph.D. in EE--we need those people and that research!
Depends on the industry, I guess. There are a couple of local companies--AdTran is one--where I haven't seen the raise matter any whether you did it on your dime, theirs, or some research money. Yeah, you're tied to the employer, and that's the one downside to it.
What's really good is going to school on a civil servant job. A friend of mine is getting his Ph.D. in Engineering Management that way, and he'll get a year off--with pay and benefits--to do his thesis work, and they pay for all the schooling before then. And they call it training or whatever it has to be called for you not to have to be taxed on it.
--
-- Geof F. Morris
I own a small business and I can honestly say that I would rather hire someone with 4 years of experience than someone with a PHD. In fact, I pay more as well. That is not to say going to school is not helpful or a great experience....To be honest with you all, I miss the lifestyle associated with going to school....women.... :-)
Seriousily, do what you want to do. If you are doing what you love, money and happiness (however you define it) will always follow. Life has a funny habit of taking care of those people who work hard.
-Angreal
Just be careful of what you do. The first job you take is generally what you will be doing for the rest of your career. If you are hired on as a DB2 guy someplace then you will be viewed as the DB2 guy for a long time. These impressions are a real pain to change. Your first step into a real job is the most important. As to what to do... become a consultant and charge large corporations three times what they pay their employees to do the same thing.
----------
do { Work(); PayTaxes(); Eat(); Sleep(); } while (alive)
----------
while (alive) { Work(); PayTaxes(); Eat(); Sleep(); }
Bool
<laugh> So, any companies here that might want to help develop this undergraduate? It requires significant time/money investment, and I'd like to know how I can be useful enough. =)
I think it should be possible to write neat, easy-to-understand, practical code. The Mythical Man Month said something about that. I need to be an 'expert programmer', though, so I'm working on developing myself to that level. Any ideas?
I like reading other people's source code. It's tough when it's messy^H^H^H^H^Hover-optimized, but it's fun to piece together the statements and figure out what's going on.
With, umm, minimal bloodshed and confusion, and no national turmoil - my country has enough problems. Severely off-topic: kinda worried about the bombings around here...
Go for the internship. As someone who has worked in this industry for quite awhile experience is so important. Unless you get lucky that experience you will gain by doing an internship will help you immensly.
My advice would be to get the corporate gig. It doesn't even have to be a "corporate" gig, per se. I work for a small company (5 of us) doing database consulting. Working in such an environment has given me much opportunity to satisfy my creative leanings as well as live comfortably.
The wonderful thing about computer science is that you do not need to live/work at a university in order to do research. You should make enough money to allow you to do whatever you like in your spare time. Get attached to open source projects, distributed.net, or a myriad of other projects. There is no end to all the "unofficial" research to be done out there, and there's no reason to live like a pauper while doing it.
Unless of course, you've got the IQ of Bill Joy and can go to UC Berkeley and create Unix...
"I'm also really interested in computer science education and I want to do research. I'm thinking about going for graduate and post-graduate education, and I've been looking for professors who have done research in CS Ed."
:-)
If you're thinking of a career in research and or education, I would suggest that you're best to stick in academia for at least a graduate degree. It sounds like you're more interested in CS than Education in itself, so perhaps an MS or PhD in CS might be a good option. On the other hand, you mention that you want to be a teacher, which means you'll probably need to go to teacher's college at some point. In North America, that's just a year, which is no biggie. A Master's in CS and a teaching degree would take three years or so and would put you in an excellent position to teach, and with your ambition and drive, to eventually affect how CS is taught on a larger scale. Of course, to teach at the university level, you'll need a PhD to get a faculty appointment. If you're keen on this, go for it. We always need more good teachers in academia.
Of course, all this may be different in the Phillipines. I can only speak for the North American situation.
"It's still kinda challenging because education abroad is expensive, so I have to have a good enough record for financial aid. I want to be a teacher, and I want to improve the way computer science is being taught. I know it's _really_ difficult, especially since I'm just a student right now, but if I work hard at it I know I'll find a way."
Ambition and hard work can go a long, long way, so don't get discouraged.
"What advice would you have for a student who's at one of those crossroads? Should I go for the internship, do well in the industry, and make something that lots of people can use? Should I look for an internship at a university that does research in computer science education, and help develop the next generation of whiz kids? What are some other choices I might not know of yet?"
My final point would be this: to be an excellent CS teacher (at any level), become a good computer scientist first. Just the fact that you have a passion for teaching will make you a good teacher; thorough knowledge of the subject, some training in teaching, intelligence, common sense, empathy, and experience will help make you an excellent teacher.
I should warn you that I'm a grad student myself, and enjoying the experience immensely, so my views are biased towards the academic route
Good luck - Stefan
So if I went into the industry, I'd like to start off small. Maintaining someone else's code - good code, so I get a feel of the coding standards and what good programming practices there are. Ideally a pair-programming thing, too, and mentorship. Doing little bits of code - the grunt work - so that the talented and experienced developers can spend their valuable time on something else.
Then I'll graduate to working on bigger pieces of the puzzle. Maybe working on a different project. Finding or making something that will make life easier for everyone.
After that, I can move on to training the next person in line.=)
I've had to help other people with really ugly code, and I'm currently going over the source code for something without being able to talk to the developers. Lots of redundanct code and inconsistent spacing - my progress is slow, but I'm gradually understanding enough of the application to clean up the code a little. So I take pains to make my own code neat. (It helps me debug and do code reviews, too. =) )
I know there's a tendency for fresh grads to overengineer stuff. I try to avoid kludges whenever possible - it just makes things harder to maintain. However, I do follow the principle of The Simplest Thing That Works - so I won't use fancy data structures when a simple array will do the job efficiently. ;) I don't have a compulsion to apply _everything_ I learned in class - just a need to keep learning something new. =)
And I hate reinventing the wheel. I'm lazy - I always look for stuff I can reuse, perhaps modify a little to make it fit better. <impish grin> That's why open source software is so terrific. =) I've found a couple of tools, like a mailing list manager, an IRC proxy and an online collaborative environment, that our organization has found useful. They have maaaany more features than I would have the time to implement, and they fit our needs.
I'll still be careful about the traps you mentioned. Anything else I should look out for?
I've worked for many software companies, including Digital Equipment and Red Hat. In the research world, your work is part of a process moving toward a goal. In the business world, R&D are almost always treated as overhead, even when designing new product.
In previous companies, I have met many programmers just out of college whose work productivity and priorities would have been much better if they had been placed in a situation where they did not get a paycheck unless the customer was satisified.
If you want experience that will help with your career, I'd choose the internship at a company. However if you have ANY desire spend some time in a pure research environment (where money is granted, research is not overhead, etc), then do that internship first and later move on. Pure research roles do not appear very often in the business world.
---
Keith Barrett (kgb)
Red Hat HA Team
---
Keith Barrett (kgb)
I just graduated from an undergrad EE/CS program, so let me give you a few words of advice:
;)
1. Don't underestimate the difficulty of getting a visa to work in the US as an intern. Many companies (such as IBM, I believe HP, and many others) won't sponsor a visa for an undergrad intern.
2. Don't rely on monster.com or even the company's own web resume submission gateway. Simply carpet bombing these places with your resume won't get you anywhere, especially because you need a visa sponsored. Find someone inside the company that you know/or have contact with, and get your resume to them.
3. The best company I can think of for you, as much as it pains me to say this as a fellow geek, is probably Microsoft. They have a very liberal visa sponsoring policy, and they pick up the bulk of your living expenses while you are interning for them. Besides, what better way to subvert the system than from the inside!
4. If you're thinking about a Ph.D., it's true, research experience is a very (perhaps the most) important factor in getting into a good school. Still, you have plenty of time to forge a good relationship with one of your professors and get research experience. I think if you see the industry side of things first, you'll see that nearly as much new work is being done in the industry, if not more. Plus, it pays a hell of a lot better too!
I have been pondering your problem for the last few hours and I finally reached a conclusion:
:)
YOU DON'T HAVE TO WORRY!
Look, this is what is going to happen:
- Bush promised to spend more money in USA's army... for "defense" (yeah, right)
- Bush wins the elections.
- Bush spends more money in the army.
- The army finds out they have nobody to defend from.
- They army gets bored, they need action!
- Bush decides to take over the world.
- He begins with the third world.
- Takes Philippines in one day (National Security reasons, of course)
- Your country becomes the 51st star in the flag.
- You become an American citizen.
- So by the time you graduate you are ready to work anywhere you want in the USA.
ISN'T THAT GREAT!!?
You are welcome
For interships in the US shorter than 18 months, a long term temporary H1B visa is not needed at all.
The relevant visa is the J1 Exchange Visitors visa which is much easier to obtain than a H1B and which can be valid for up to 18 months. It's an exchange program based on reciprocity, the US let Froggies in for internship and France let Yankees in on similar terms. It also works between US and Philippines for what matters to you.
As it's an educationnal exchange program, in most countries, those programs are not directly handled by the US consular administration but by a local non-profit organization (for instance in France, the US Council) and the exact requirements to obtain this visa may vary from place to place.
In addition to the reduced paperwork, the J1 visa has 2 nice side effects. You (and your employer) don't have to pay some social taxes (Social Security, Medicare, Disability, etc). Yet, you still have to pay the incomes taxes if you stay longer than 6 months. Also, if you're married, your spouse can accompany you with a J2 visa (or a J4 or Jwhatever, I can't remember). This visa is a very cool thing as it allows your spouse to do whatever (s)he wants in the US for the duration of your visa, without anymore paperwork, have a job, go to college, etc. It's equivalent to a short term Green Card.
American software companies look at two things in choosing new graduates: your grades and any internships you've done. Whether business or research internships are better depends on the company.
It goes the other way too. There are plenty of places that would rather hire a Ph.D.. It SHOULD simply come down to who can do the job and how much they're paid to do it but that's not always how it works out. Even saying that you would choose 4 years experience over a Ph.D. discounts everything related to how the person with 4 years experience and the Ph.D. could do the job. I doubt you meant it literally and it sounds like you're reasonable so you probably would care much more if they could do the job and their other qualities not listed on a resume.
I totally agree that as long as he works hard, he'll be fine. Industry experience is very valuable but I would caution him to choose carefully for something that will benefit him in the future. Or at least something he's interested in. He will learn more than he could imagine in virtually any internship but if he can find something that will move him towards future goals that's an extra bonus.
I think it is possible to do both industry and research ( with a caveat or two ).
;). Doing the school thing will teach you to write impractical and over-abstract code ( er, I mean, niche'd and deep code ;)
Get a job with a company that will pay for your education and start doing an aggressive class schedule ( 2 classes a semester ). It will take you about twice as long to your masters, and you won't have much free time, but you will be completely submersed in software/computer science related stuff.
Doing both will additionally give you both a good practical and theoretical understanding of our ( black? ) art. Working for The Man will teach you how to write sloppy and ill-managed code ( er, I mean, efficient and cost-effective code
In the end you should come out as a balanced and skilled programmer.
Sozin
...what I tell people in "traditional" engineering disciplines is to jump to industry and let your employer pay for grad school. But I don't see that happening as much in computer geek companies right now. It might in the next year, as people realize that their fresh-out-of-high-school developers need some theoretical knowledge behind their code-fu to develop kick-ass relational database solutions, etc.
If you're even contemplating further education, and you like theory stuff, stay in school. It might not pay as well, but money isn't the only reward.
Me? I'm just a two-bit hack nearing an AE undergrad degree and wondering what the heck to do with the rest of my life. I'll be in industry mainly because the thought of more school at this point is nauseating. So what do I know?
--
-- Geof F. Morris
If I went into education, on the other hand, I could have a shot at improving the way that people learn and use computers, and maybe they'll make much more of a difference in their own ways. I won't ever be as famous as, say, Linus Torvalds or Bill Gates (<impish grin> might be a good thing), but I'll be contributing invisibly - backend stuff, like what I like to do when programming.
Besides, the industry gets a heck of a lot of great people already. Someone's got to look out for the next generation of whiz kids. =)
The sands of time, for me...
;)
are running looooooooooooowwwwww.....
excellent post, my friend
The opportunities are fantastic, although not absolutely terrific, as much hype would have me believe. I'm trying to find alternative ways to get the interaction with highly-skilled techies - open-source projects look promising - but I know that the industry experience would greatly help me. And besides, working abroad - in the US or in another country - will help me get closer to projects that might really make a difference, instead of just the repackaging-and-customizing operations that seem to characterize software development in the Philippines. I'd love to be proven wrong, though - I wish that a Philippine company could step forward and prove that it was really innovating and changing the way people use computers.