IBM Cloud Summer Internship

May – August 2019

My internship with IBM provided the opportunity for me to step back from CSEd research and and return to software development in industry. At Softlayer’s Dallas office, I joined a client facing support team as one of their first developers. The Revenue Support and Enablement Team (or RSET for short) specialized in Accounts and Billing for IBM’s IaaS and PaaS offerings. My role consisted of identifying places where I could apply my technical background to eliminate productivity bottlenecks. Ultimately, this work intended to facilitate increased efficiency and a higher level of client satisfaction. This broadly defined rason ‘d etre left me significant wiggle-room to pursue my own interests. What I worked on and how I worked on it depended mostly on my ability to convince higher-ups of its value to the RSET team. To get to the punchline, I got to try on a bunch of different roles. To describe my work at a high level… I observed agent practices, located areas for improvement, and developed a dialogue for increasing efficiency. I proposed projects, established development practices, and evaluated technical solutions according company value. I led meetings, established deliverables, and presented the impact of my contributions. Lastly, as with most software engineering internships, I wrote a fair bit of code.

Below is a list which describes what I did in more detail:

  • Developed a RESTful API in Express.js for collecting untouched GitHub issues. This project was my baby. It sprung into being when I suggested that I could attempt to address the concerns of my manager’s manager during a conference call. The concern was this: our department received poor NPS ratings when another team did not promptly follow up on the GitHub issues that we sent them. To combat this untimeliness, my tool collected GitHub issues based upon agent criteria so that our team members could send cordial reminders concerning issues where poor timing could have negative consequences. The technical progression is as follows: the tool started as a Python command-line tool, transitioned to a Python application with TkInter GUI, then its functionality moved to Cloud Functions as an API before it was finally subjected to complete overall: becoming an Express.js API which filtered octokit responses to pass requested data to a React front-end. This process increased my willingness to adjust technical details to accommodate technical proficiency and improved the end-result. Lastly, on another important note, key soft-skills that I gained from this project include claiming responsibility, interpreting client needs, and delegating appropriate tasks.
  • Championed co-worker’s inclination towards automation and personal growth. A member of the RSET team with little formal coding experience and multiple team responsibilities hoped to reduce his workload by writing code to prepare recurring team-specific NPS (Net Promoter Score) reports. Initially, I provided technical advice for turning his code into a more formal application. Later on, my help encouraged managers to allocate resources for a developer team and expand the scope of the project to a broader one of NPS reporting and analysis. This shift and my support ultimately provided my co-worker with the opportunity to be paid to gain experience as a developer.
  • Organized an Agile environment for a part-time developer team. In short, I reached out to an Agile coach for advice and ended up becoming a Scrum Master. The coach describes this process in his own articles about our team’s set-up and transition (where I am mentioned in both as an intern and “Type C” team member).
  • Implemented Django microservice for uploading NPS data. This contribution is relatively self explanatory. To expand, I applied the Django framework to make a quick application and taught co-workers relevant skills for its maintenance. A grander share of the project focused on setting up conventions, communicating overarching structure, and acquiring company resources.
  • Migrated and tested Cloud Pricing Estimator to IBM Forms Experience Builder. Some sales representatives used Excel spreadsheets to communicate pricing estimates. This was unfortunate because outdated sheets and human error could render incorrect charges. As part of a small team of interns, I collaboratively set out to provide a quick, maintainable replacement for the versioned spreadsheets rather than a custom-built internal website. I would consider the product successful because it was tested, deployed, and beginning to receive user feedback before the end of my internship.
  • Participated in a remote Intern Hackathon. Over the span of a few days, my team and I developed a mobile app which used IBM Visual Recognition to translate medicine prescription labels into calendar reminders. We called it im-med-diately (see image below for logo). Work involved a fair amount of pair programming and several tutorials. My primary role on the team was to refocus the team on its deliverable components (such as the demo video and marketing forethought).