- Lessons Learned [ 2004-02-29 ]
- You think it’s just theory? Think again! [ 2002-02-14 ]
- Interviewing with a high tech firm II [ 2001-08-01 ]
- Things to Think About Sooner Rather Than Later [ 2001-06-01 ]
- Interviewing with a High Tech Firm [ 2001-04-01 ]
[Email from Davin Kanoa Cabebe Matsuda]Hi Professor Johnson,
Here is a lessons learned document for students within the ICS program. Hopefully, this will help them on their own job search:
In case you’re interested in my background, I graduated from UHM with a BS in ICS around two years ago. Two months after graduation I took a job in technical support. I worked there for about two years, but I knew that I wanted to become a software engineer and I started looking for another position. The irony was that my department relocated to the mainland and I was laid off anyway. I recently found a job closer to the field that I enjoy.
Frankly, the job market seems tighter now than at the time I graduated. It took around five months for me to find the job I have now. Hopefully you can draw upon my experience to help with your job search.
1) Look for the programming languages and technologies that appear in the classifieds and study those if you don’t know them already. When you apply for these jobs, in the very least you can say that you took the initiative to study them during your own time. This will show you’re a self-starter.
2) Look in all sections of the classifieds for IT-related positions. Financial and medical institutions often advertise in the non-technology sections.
3) Ask your friends to keep an eye out for possible job leads. A few of my job leads came from my friends and former co-workers and were unadvertised. If you’ve been laid off, try not to burn any bridges at your former company.
4) Study for a professional certification in the field that you’re searching in. This will keep your mind focused on completing a goal that can help you find a job. I believe my certifications helped me to land more interviews than I would have obtained otherwise. However, you’ll still have to impress them in the interview to land the job.
5) In my opinion, ICS 311, ICS 413, and ICS 414 are the most important courses in the undergraduate program. Some of the ICS-related interview questions I received were:
*Explain the software engineering lifecycle and relate this to a project you worked on.
*Explain the difference between an instance field/method and class field/method.
*Explain the difference between an abstract class and interface. Describe situations when you would use one over the other.
6) Be prepared for a test during the interview. I had requests such as writing the code for a stack or queue. Also, I had tests on ASP and SQL. If you’re rusty, you should study for these prior to the interview.
7) Be sure to back up everything on your resume. Once, I made a mistake of listing an ICS project that the interviewer asked me about. I couldn’t clearly remember the specifics of the project. Needless to say, I hurt my chances on that position. If you can’t recall the details of the projects you’ve worked on, you’re better off removing them from your resume.
8) Take classes that will interest and challenge you instead of going for the classes with the “easy” professors. In retrospect, I wish I took ICS 461 Artificial Intelligence and ICS 412 Operating Systems among others. I think I would have had a deeper appreciation for the computer science field had I taken those classes.
9) Start looking early. The more connections you make with prospective employers at career fairs, the better off you’ll be at graduation. You’ll have a feel of the job market and will know what the employers are looking for. I didn’t start early but was fortunate enough to find my first job after graduation within two months. Some of my peers weren’t as lucky.
10) Don’t get down on yourself during your job search. The average job search is about 5 or 6 months. If the job search is dragging on, try to keep positive. Maybe take up a hobby so your life isn’t solely focused on your job search.
In a nutshell, it’s a combination of what you know, who you know, and when you start that are the major factors in finding a job successfully. Good luck!
Sent: Thursday, February 14, 2002 3:24 PM
Subject: cellular automata, turing, etc.Dr. Itoga,You may not remember me (’94 MS grad, I was the one who created the surfer in your computer animation class — his arm flew off inadvertently — during the playback).Over the last several years, I have had to build and understand PCB design and firmware, understand software project management, write assembly, do database queries, program graphics controllers/encoders/decoders, program satellite receivers, etc. (long list). Not a single class that I took there was wasted. I have used in the real world everything that I was exposed to in my studies in the UH ICS graduate program, except the things that baffled me in your discrete math/cellular automata class.
Well, that was until now. I thought I would email you to say that I am finally seeing practical use of Turing s ideas, cellular automata, and other things as I delve into artificial intelligence (as a side project). Whether it is studying neural networks or artifical evolution/genetic programming, I keep seeing things that were brought up in your class. (I regret not having any time to take any AI classes there.)
You should tell your students to pay attention, because they may see those theories in the real world some day. 🙂
Staff Software Engineer
San Diego, CA
Here is another student’s interview and job search story. This student graduated from our B.S. program with a very high GPA and is now looking for a job on the west coast:
Hi Professor Johnson,Here are the details of my job search experience so far. It s not very positive. I keep on hearing about so many companies laying off workers. High-tech stock prices are dropping. The comic strips here are making jokes about former dot-com workers working at hot dog joints. And most job postings are for people with 3+ years of experience in specific areas. The avenues I ve taken trying to look for a job (in order of the most useful so far):
*company web sites
*online boards (e.g. monster, dice, headhunter)
I’ve only gotten one interview so far and have sent out way more resumes than that. Based on that one interview, my impression is that employers use the interview to find out if you really know what you say you know on your resume, and that you know it well. Some of the questions I was asked in the interview for a software testing position:
*Tell me about the projects you have done. (I was asked this when interviewing for an internship as well.)
*What part of the group project were you responsible for?
*Do you have project management experience?
*How do you ftp on unix?
*What does this particular java/unix command do?
*How would you determine the min and max values of memory a program needs to run optimally?
*What does an url that calls a java servlet method look like?
*What’s wrong with this program and how would you test this program? (interviewer drew a picture of the UI and explained what the program does)
*What do you include on a bug report?
*What is the testing life cycle?
*What’s a test plan/test case?
*Board question: there are two adjacent rooms with a door that let s you go from one room into the other. You are in the first room, which has three light switches. the second room has three light bulbs. Each switch in the first room turns on/off one of the light bulbs in the second room. How do you find out which switch turns on which light bulb if you can only go through the door once? (Opening the door and looking into the other room counts as “going through the door”).
What I feel I’ve done right:
*I’m glad I took challenging courses in school.
*I’m glad I did did more than one ICS 499 project.
*I’m glad I went to some company information sessions and a job fair at UH (even before I was a senior).
*I’m glad I did an internship while in school.
*I’m glad I had my resume reviewed by someone.
What I wish I had done differently:
*I wish I did a senior thesis on a topic that would be of interest to employers.
*I wish I had pushed myself to be one of those few exceptional students in ICS classes that professors will remember years from now.
*I wish I had talked more with the recruiters at the company information sessions.
*I wish I had paid more attention to industry/technology trends.
*I wish I had done practice interviews at the career center.
Currently I have a temporary position and am still looking for a full-time job.
Some interesting comments people have told me:
*A couple of technical recruiters at employment agencies said the type of entry-level positions they get are usually in testing or help desk type positions. But they currently don’t have a lot of entry-level positions.
*One person said he got his start by doing contract work.
*Some of the most important things are having a desire to learn and having an understanding of how things work.
*School is the easy part.
*I’d also like to mention that the career advice e-mails you’ve sent out to the ICS mailing list have been some of the most influential sources of advice for me
If you have an interview story you would like to share, please send it to me at email@example.com. Mahalo nui loa.
Life after your undergraduate degree or Things to think about sooner rather than later
Collaborative Software Development Laboratory
Department of Information and Computer Sciences
University of Hawaii
I recently received the following email from a former student:
Hi, I m a graduate of the UH ICS department (spring 99), and I was wondering if I could get some advice regarding graduate school.Most graduate schools require 3 academic letters of recommendation but unfortunately, I never knew my undergraduate professors at UH. Furthermore, I ve been out of school for 2 years and I m pretty sure that most of my professors have forgotten what little they knew of me. On the positive side, several of my managers have agreed to write a letter of recommendation for me.Do you think I should submit my work related recommendations, or should I pursue an academic recommendation from my undergraduate professors? Also, is it true that graduate school admission committees prefer academic recommendations over work related recommendations?I sincerely appreciate your help and I look forward to hearing your advice.
This is a very interesting and instructive email, and I would like to suggest that there are a few lessons to be learned from it:
Don’t think you won’t ever want to go to graduate school. This student probably did not realize when he/she was an undergraduate that the day might come when graduate school would appear attractive. Right now, you might be thinking that graduate school is something you would never consider. Think again: after a few years in a cubicle doing mindless and uninspiring programming, the prospect of getting some advanced training that helps you move into a more creative career path might start looking much better.
Recommendations are more important than you might think. For graduate school, the quality of your recommendations is extremely important. (In fact, the quality of your recommendations turns out to be extremely important in industry as well.) Many undergraduates naively think that the only important evaluation criteria is their grade point average. In fact, a good GPA means relatively little (because recruiters and graduate school admissions committees know that GPAs can be inflated) while a great recommendation letter means a LOT (because great recommendation letters are difficult to obtain and indicate far more about the person than a grade or two.)
Professors don’t remember students from regular classes very long. Many ICS professors have over 100 students total that they teach each semester, or 200 per year. That s a lot of students, and it is only natural that professors will forget the details of most students performances relatively quickly after the semester ends. If you go back to a professor from one of your classes a year or two later, he/she might be happy to write a recommendation letter, but it might not contain much more content than “This student got a B in my class.” That adds nothing of value to your application.
On the other hand, there are a handful of students each year that professors remember years and years afterward. I still remember several undergraduate students from the early 1990’s and could write a detailed recommendation letter right now for them if they needed one.
How do you become one of those select students that professors remember years later and that leads to great recommendation letters and thus great academic and professional opportunities? It’s actually quite simple. Here’s some heuristics on how to make an impression:
- Pursue an interest in something related to computer science that does not involve next week s homework assignment. Just like students, professors don’t find homework assignments all that interesting. They are simply exercises intended to develop the capacity of students to go off and do something that is interesting. So, go do it already.
- Talk to professors about your interests. Given that you’re pursuing an interest, say by reading about it, or trying to design a program, or contributing to a newsgroup, or even just daydreaming about it, the next step is talk to professors. Start with the professors in your current classes. Drop by during office hours and ask if you could talk to them about what you’re doing. Any ICS professor would be delighted to listen, and most will be able to give you interesting ideas about how to pursue it.
- Ask your current professors if there is someone in the department that might have special expertise in the area, and then go talk to them (and start off by saying, Professor X said you might be able to advise me on something I m interested in. )
- “I have a job and so I don’t have enough time” is not a legitimate excuse for not pursuing an interest. The ICS department allows undergraduates to take three to six credits of ICS 499–independent study. Once you’ve started talking to professors about what you’re interested in, see if they will sponsor an independent study for you to work on your interest. Graduate students can take ICS 699.
- Consider an honors thesis in your interest area. Mette Moffett, B.S. December 2000, was interested in e-commerce and did a very interesting honors thesis on a system she created called VCommerce. If you really want to make an impression, do an honors thesis. Not only is it virtually guaranteed to provide you with great recommendation letters, it will also distinguish you from “regular CS degree holders” in any university. Showing a recruiter a draft of your honors thesis is guaranteed to get their attention.
- Professors like to talk with students about interesting things. This is the deepest, dirtiest, darkest secret of all. Have you ever had the experience of sitting in a class and somehow the professor got sidetracked from the current lecture and started talking about something interesting? Did you notice how he/she suddenly got more animated, more excited, more alive? Did you know that you can produce that same change in a professor almost anytime you want to, simply by bringing up something interesting to talk about? There are wonderful, amazing opportunities for personal and professional growth in the ICS department. Each of you have the opportunity to develop a personal, individual relationship with one or more professors. Make the effort, not only for your future, but also because it will have a tremendous, positive impact upon your present.
The following is an email I recently received from a student in our M.S. program describing the experience of interviewing at a high tech firm. I believe it is very interesting and instructive. I have slightly edited it to remove identifying information about the student and the company.
Hi Philip,Here is the story:
Several weeks ago, I put up a one page resume on dice.com. Within one week (or 5 days), I got more than a dozen replies. One of them was from a recruiting company. I was asked if I was interested in an interview with XX company. I said yes (an interview never hurts :), but also I told them that I don’t have much time to make a decision. Basically, I told them that I needed to make a final decision within two weeks. The reply was: No problem.
The phone interview was scheduled for early December. This interview was about 2 hours (the longest one I ever had). They asked me the following kinds of questions:
*O-O and Java basics. Sample questions are: What s the difference between interface and abstract class? Which one you would prefer? In what situation would you use an abstract class?
*Design patterns. Sample questions are: What is a design pattern? Name 3 design patterns in the Java 2 API. Write a Singleton. In what situation would you use a Singleton? More detailed questions came after I wrote (and read to him) the Singleton code: Why was it implemented this way? Why not another way?
*Algorithm analysis. Data structure knowledge is fundamental. They don’t expect you to get stuck on this at all. So be prepared. The questions on algorithms are not trivial. For example, you have a long array of integers (positive or negative), given another integer k, decide if possible to have two integers in the array adding up to k. What is your algorithm? What is the time complexity? Can you improve that?
*J2EE. Explain the concept of Entity Beans and Session Beans. What are the benefits of using an Application Server? Is it possible that in certain situations you would not use an AppServer? Why?
*General questions. What is your software development experience? What kind of projects have you worked on? Which languages have you learned and used? etc.
I think I did well in this interview. Usually, the phone interview is about one hour. The questions vary depending on what kind of person they are looking for. Since my resume focussed on Application level design and development, the above questions were not big surprises to me. (However, honestly, I did not expect them to spend over a half an hour on algorithms. Thanks to Dr. Sugihara, I had a lot of this fresh in my mind from ICS621.)
On Sunday, I got a call from XX company. They invited me for an on-site interview. I got the e-tickets through email on Monday. The interview was on Wednesday afternoon. It ran approximately from 1:00 pm to almost 5:00pm.
I spoke to three interviewers one by one. Each of them emphasized a certain area. There was some overlap, but not much. They had a 3-minute conference between the sessions so that the next interviewer knew what was covered by the previous one.
We had a white board, and the interview was half talking and half writing. The questions were to some extent similar to those questions in the phone interview, but more detailed. Here’s what I can recall:
*You know what a queue is …. Implement a queue class with Java. What is the cost of enqueue and dequeue? Can you improve this? What if the queue is full (I was using an looping array)? What kind of mechanism would you use to increase its size?
*Explain final, finalize, and finally. When the finalize is invoked? How does GC work? etc.
*As a developer, would you prefer to use application server? Why?
*What is your experience with Servlet and JSP?
*What is the Prototype design pattern?
*In a system that you are designing and developing, a lot of small changes are expected to be committed at the end of a method call (persisted to the DB). If you don’t want to query the database frequently, what would you do?
*Give an example in which you will combine several design patterns, and explain how the system can benefit from that.
*Why would you apply design patterns (benefits)?
*What is a two-phase commit?
*What will happen if one of your web-server or appserver crashes during its execution?
*Quite a few algorithm questions: A. Give an algorithm that calculates the distance between two text strings (only operations you can have are: delete, add, and change, one by one), (BTW, this was one of the midterm questions of Dr. Sugihara’s 612 course). B. Given the definition of a sequence (5 4 7 6 is, but 1 2 4 5 is not), write an algorithm to check if an arbitrary array is a sequence or not. Once I figured out a solution, I was asked to do a space and time complexity analysis.
*Thread programming. Describe a situation where concurrent access would lead to inconsistency in your application. How would you solve this problem?
*Draw a class diagram (UML) for a system. (They described the system in plain English).
*Which do you prefer, inheritance or delegation? Why?
*What is the difference between RMI and IIOP?
This list could continue if I had more time to recall the questions. Instead of doing that, I would rather write about what I consider to be important for job-hunting.
*The resume should be just ONE page (at most two pages). There are tons of resumes online, and no recruiter will take more than 30 seconds on a single resume. If you hit him/her, you get an chance.
*Focus. I removed all C/C++, VB, ASP, etc. from my online resume, leaving everything Java related, and I used bold fonts for keywords such as Java, J2EE, and design pattern. And partially because of that, I did not get stuck by questions in areas that I am not familiar with.
*Be honest. The interviewers are often professionals in the area. They can sense what you are trying to say. They can tell right away if you are trying to make up something. When I was trying to get an internship last summer, I was so afraid to confess my ignorance. The farther out on a limb that I went, the more awkward of a position I found myself in. Now, if I don t know the answer, I indicate that right away. If I only know a little about the topic, I say so up front. Then, I try to lead the conversation to a topic that I feel comfortable with, that I feel I can use to show them that I am capable.
*Demonstrate to them that you are willing to learn.
*Take advantage of any opportunity for an interview. You don’t lose anything from an interview. After half a dozen interviews, you will start to enjoy it.
Most of the above are just based on my own experience, to those who are doing job-hunting now or will do in the near future, this may be taken as a reference.
To make the story complete, company made a nice offer (near 100K) Friday morning.
If you have an interview story you would like to share, please send it to me at firstname.lastname@example.org. Mahalo nui loa.