Interning at IBM Watson
From Start to Finish
Looking back to the beginning of last fall, I can remember how often I would spend my free time scraping Linkedin, Indeed, and my university’s job search engine, for any and all Software Engineering Internships for the summer of 2017. This was usually proceeded by a multitude of Google searches: “X company software engineering internship review”, “X company software developer internship interview questions”, “software engineering internship experiences”, etc. This would lead me to places like Glassdoor, Reddit, and here, on Medium, where I’d usually find the most pertinent information. So, this post is a way in which I can contribute to this community and offer my experiences in gaining a Software Developer Internship with IBM Watson.
Finding the Internship
As noted in the introduction, the majority of my internship search was based online. The resource I used the most was Linkedin’s Job Search. I began browsing early at the beginning of the my Junior year at the University of Rochester. This is were I found a plethora of internship listings and specifically: IBM’s listing for a Software Developer Internship. It was a general listing and due to the fact that IBM is a larger company, many technical internship recruiting and interview processes are streamlined. The application outlined that given a successful venture through their interview process, you’d be matched with a team that fit your skills and interests. So, within 5 minutes my online application was submitted!
The Interview Process
After submitting the online application, within two weeks I received an email regarding IBM’s IPAT examination. This is a pattern and number series recognition test, given online, and takes about 45 minutes to complete. Once completed you do not see your score, and passing of the exam is indicative of moving to the next round of the interview process.
The next phase of the interview process was an online HireVue interview, which came a month after completion of the IPAT examination. During the interview, I was asked four programming questions which increased in difficulty. I was also tasked with multiple recorded responses to other questions. Specifically, one recorded response required me to explain the implementation of one programming question’s solution. The other questions were a mix of general behavioral and technical questions. Within a month of completion of the HireVue interview, I received notification that I passed the challenge - on to the final round.
My last round of the interview process was a 45 minute long video call with an IBM Software Engineer. This round focused on work experience, previous projects and various behavioral and technical questions. This included a live coding session along with questions regarding the previous round’s programming challenges as the interviewer was equipped with those results. At the end of the interview, my interviewer noted that I had passed and that my application would move on to the matching phase, to be connected with a business unit within IBM. They were able to take into account my location preferences but, given that this was a general internship listing, location could not be guaranteed.
I was one of 35 technical interns. Interns were spread amongst various business units within the office, but social interactions and get-togethers were frequent. Specifically, our intern group organized lunch meet-ups, a trip to Six Flags New England, a community service event cleaning the Charles River, and finally a boat cruise on the Boston Harbor. Further, the office-wide use of Slack proved to be useful in facilitating interaction with new-hires and full time employees. Specifically there was a sports channel, dedicated to organizing basketball and soccer games held at the office at the end of the workday. Ultimately, I was able to build great friendships that I have carried past this summer.
As previously mentioned, I was a member of the Watson Conversation Service Team. Watson Conversation is IBM’s virtual agent/chat bot solution, which leverages natural language processing to automate interactions with end users. It is a web-application where you can train, build and deploy conversational agents to facilitate workflow within your application. I specifically worked on the backend component of this application. My main responsibilities focused on optimizing and scaling this backend infrastructure, which is responsible for transacting data between the Watson Conversation front-end and the Watson NLU, Dialog and Analytics APIs which drive this product. The main technical highlights were having the ability to work with version control and issue tracking with Github, using Node.js in a production environment and gaining exposure to the Software Development Lifecycle. The last of which proved to be the biggest takeaway; there are so many moving parts that go into delivering a software product to end users that personally, as a computer science student working on class projects, I never realized. Finally, the success and knowledge I was able to gain would not have been possible without the invaluable help from my two mentors and my manager.
Undoubtably one of the most memorable parts of the internship was participating in IBM’s North America Hackathon. The hackathon was completely remote with interns participating from nearly every IBM location in the country. We were given three days to develop a minimal viable product with a corresponding business plan. Unlimited access to IBM Bluemix was granted, along with live access to full-time IBM engineers via Slack. My team consisting of five other interns set out to build a cognitive chat bot to simplify and facilitate the process of immigrants attaining U.S. citizenship. We built a web application which allowed users to create an account and begin interacting directly with our chat bot in one of six languages. The chat bot engages the user in a basic conversation to determine U.S. citizenship eligibility based on just a few questions. It also provides resources to official documentation about the U.S. citizenship process when asked after it has determined eligibility. The application also displays JSON data, which our server is receiving to show that our application can be used as a document filler for official citizenship documentation. Finally, the application demonstrates persistence, when a user logs out of their account and eventually returns to their account, the conversation will resume where they left off. All in all, our efforts proved to be a success and we built Watson Immigration. The code and documentation can be found on my Github and the application can be found here. Here’s our business pitch too!
Our team name, Apertus Colloquium meaning “open dialog” characterizes our motivation for building a widely accessible chat bot supporting multiple languages.
All in all, my summer at IBM proved to be a rewarding experience. I had the opportunity to make valuable connections, work on interesting technical challenges and enjoy myself along the way. I hope this story offers useful insight into the internship search and the experiences had as a Software Developer Intern. Now… to begin the job search for full time opportunities next year!
Given that this is my first Medium story, I am welcome to any and all feedback! I have really enjoyed the content that I have read here and I am happy to kick start my Medium profile with this story.