5 CS skills I wish I learned in college

      

Lindsay Hall, Software Engineer (Google NYC)

I started working full-time as a software engineer Lindsay_Hall_1(SWE) at Google NYC in 2012, after graduating from Harvey Mudd College with a degree in Math and Computer Science. Prior to joining full-time, I did 3 SWE internships with Google, working at YouTube in the San Bruno office and with the Google Docs team in NYC.

By the time I did my first technical interview with Google, I was fortunate enough to have learned the skills and Lindsay_Hall_2topics usually covered in these interviews, which tend to focus on coding, algorithms, and data structures. In general, if you can pass a Google technical interview, you can learn the rest of the skills on the job, but there are some key areas where I wish I’d been better prepared in college.

A college degree is generally supposed to prepare you for a job in that field (hopefully we can all agree on that). Obviously, software engineering isn’t the only field you can enter with a degree in computer science, but there are over 1 million software engineers in the United States, and the field is expected to grow by almost 20% by 2024. Are college-level CS programs really teaching the skills required for students to become professional software developers? Well, yes and no. Here are some of the topics I think were covered well in my program, and some of the areas I think were lacking.

Things that my college program did well

Many of the skills I learned during my time at Harvey Mudd College continue to be invaluable to my job at Google. These include:

  • A rigorous background in algorithms and data structures
  • Coding knowledge, including experience coding in multiple languages (Python, Java, C++, and others) and an understanding of the difference between various types of programming languages
  • Experience working closely with other engineers to solve problems together
  • Practice explaining technical concepts to an audience, either in written or presentation form
  • An understanding of how computer science can be used to solve problems outside of purely technical fields

5 things I wish my college program had taught me

Despite all of the amazing, important things I learned in college, I spend most of my day doing things that I never learned how to do before joining Google. Here are 5 topics that are critical to my day-to-day job at Google that I think should be required learning for all college CS students.

1- Working in an existing codebase

Unless you’re founding your own start-up, it’s highly unlikely you’re going to be writing any significant code from scratch as a SWE. The very first skill I had to learn at Google was how to read and understand the existing code for my project, and how to integrate my changes into that codebase while adhering to the design patterns already in place.

College CS courses tend to focus on writing code from scratch, or implementing methods in an existing class. I’ve never heard of a class which required students to understand and make changes to an large, pre-existing codebase (although such a class might exist!). This is a crucial skill for future software developers and one that should be stressed in college curriculums.

2- Testing code

Writing automated tests for your code is a huge part of working in a large codebase. Tests help ensure the correctness of your code, provide information about the expected behavior of methods/classes, and protect your codebase against future regressions. Test-driven development is also a popular strategy for software development at many companies.

A few of my college courses required students to write unit tests for their code, although there was never any emphasis on testing strategies or best practices for writing unit tests. While unit testing is a big part of  the test suite at many companies, other types of testing are critical as well, including integration testing, screenshot testing, and automated testing of production code using a prober or a bot. Understanding testing practices and the importance of different testing approaches is critical to working as a SWE, especially at a large company.

3- Writing design documents

As I mentioned earlier, I was fortunate to attend a college that placed a strong emphasis on technical communication, both written and verbal. I would say the single most important thing I do in my day is communicate with my coworkers, whether it be about code that I’m writing, code that they’re writing, or a design that we’re working on together.

A design doc is a key component to working on a project at Google. Before you start writing code, you need to outline your proposed changes in a format that can be easily shared with your team members and reviewed by at least one coworker. Doing these reviews before you start coding saves a lot of time and energy, since you can iterate quickly on various design ideas without having to update your code each time. Learning how/when/why to write a design doc or proposal is a skill I wish I had learned before starting at Google.

4- Conducting code reviews

Many companies adhere to a code-review process where every line of code that’s submitted to the codebase is reviewed by at least 1 other engineer. This allows for a 2nd pair of eyes to catch bugs and suggest improvements, and also helps to spread knowledge among the team (so that at least 2 people know how all of the recently-submitted code works). Learning to review someone else’s code for correctness, style, and good design is an important skill. Also, it’s important to learn how to have your code reviewed, and how to take feedback and suggestions (and when to push back on those suggestions).

5- Working on large-group projects

At Google, there are often many working on a single project at any given time. In those situations, it is critical to break up the work in such a way that peoples’ changes don’t conflict with each other, and everyone can be productive without being blocked on someone else’s changes. Learning how to parallelize the tasks in a project and coordinate across a large number of engineers is a critical skill. While some college courses encourage or require group work, most don’t require students to work in groups larger than 3-4. Learning how to manage a long-term, multi-person project as part of a CS class would be a large benefit.

About the author:
Lindsay Hall is a software engineer at Google. She joined Google full-time in 2012, where she started working on the Google Docs web team. Since then, she has worked on Google Slides (both web and Android), the Docs performance team, and currently works on the Google Sites front-end web team. Prior to joining Google, Lindsay attended Harvey Mudd College where she gained a BS in Math and Computer Science. While at Mudd, she completed 3 software engineering internships with Google, working on YouTube and Google Docs. In her free time, Lindsay enjoys taking aerial silks classes and swimming on the Bearcat Masters swim team.

CC BY-NC-ND

Organization: European Consortium for Mathematics in Industry (ECMI)

The European Consortium for Mathematics in Industry (ECMI) is a consortium of academic institutions and industrial companies that acts co-operatively with the following aims:

  • To promote and support the use of mathematical modelling, simulation, and optimization in any activity of social or economic importance.
  • To educate Industrial Mathematicians to meet the growing demand for such experts.
  • To operate on a European scale.

Find out about European Study Groups with Industry and other opportunities on the website.

 

Study Groups with Industry: Mathematics meets the real world

A study group is a type of workshop which brings together mathematicians and people from industry. The meetings typically last for 5 days, Monday-Friday. On the Monday morning the industry representatives present problems of current interest to an audience of applied mathematicians. Subsequently the mathematicians split into working groups to investigate the suggested topics. On the Friday solutions and results are presented to the industry representative. After the meeting a report is prepared for the company, detailing the progress made and usually with suggestions for further work or experiments. Over the years they have proved to be an excellent way of building bridges between universities and companies as well as providing exciting new topics for mathematicians. Of course there is pressure involved in attempting to understand and solve a problem over a short time frame. This can often produce an exciting and intense atmosphere but, in general, a good time is had by all.

 

Meyers_Study_groups.jpeg

Experiments can often help guide a mathematical investigation (or cause even more confusion)

The original Study Groups with Industry started in Oxford in 1968. The format proved a popular way for initiating interaction between universities and private industry. The interaction often led to further collaboration, student projects and new fields of research. Consequently, study groups were adopted in other countries, starting in Europe to form the European Study Groups with Industry (ESGI) and then spreading throughout the world, regular meetings are currently held in Australia, Canada, India, New Zealand, US, Russia and South Africa. A vast range of topics have been covered in the meetings, including beer and wine bottle labelling, legal sale of rhino horn, spontaneous combustion, mortgaging of cows, building toys, city bike sharing strategies, determining fish freshness, etc. New forms of meeting have also evolved, such as the Mathematics in Medicine or Agri-Food Study Groups.

The popularity of study groups can be attributed to their mutually beneficial effects. For companies there is:

  1. The possibility of a quick solution to their problem, or at least guidance on a way forward.
  2. Mathematicians can help identify and correctly formulate a problem for further study.
  3. Access to state-of-the-art techniques.
  4. Building contacts with top researchers in a given field.

The academics benefit from:

  1. Discovering new problems and research areas with practical applications.
  2. The possibility of further projects and collaboration with industry.
  3. The opportunity for future funding.

An important feature of these meetings is that they can also highlight the talents of students, leading to employment opportunities with the companies. In South Africa, after attending a number of study groups, a group of students took a new direction. Noting the gap in the market for applying mathematics to real world problems they started their own company, Isazi Consulting. Now they return to the meetings this time posing their own problems, and looking for new recruits.

Information on the European Study Groups can be found on the website of the European Consortium for Mathematics in Industry. A good source of information for meetings in Europe and the rest of the world is the Mathematics in Industry Information Service, see

ECMI Study Groups https://ecmiindmath.org/study-groups/

MIIS Website http://www.maths-in-industry.org/

 

Tim Myers

Centre de Recerca Matematica

Barcelona, Spain

Blogpost: Parsa Bakhtary

fb_live

It is humbling to address future and current mathematicians, but as a former algebraic geometer myself, I will do my best to share with you my story. I work as a data scientist, which the Harvard Business Review in 2012 dubbed “the sexiest job of the 21st century,” at Facebook, which has been ranked by Glassdoor as one of the best companies for which to work. The path that led me from an eager math student who despised applications to where I am today has been a strange one, but the lessons I learned in my undergraduate and graduate math classes have had a profound impact on my ability to analyze concrete problems in industry.

After earning a B.S. in mathematics at UC Davis, I took a year off in which I decided to pursue a graduate education in the same subject. Seven years later, I finally received my doctorate from Purdue University, having written a thesis in the subject of algebraic geometry, and I was eager to take the path which would lead me towards a professorship somewhere. Unfortunately, I was unable to find a post doc in my home country of the US, so I took a position in Saudi Arabia at King Fahd University of Petroleum & Minerals, teaching calculus to aspiring petroleum engineers and occasionally publishing a paper. After three years there, I missed California and returned unemployed in the summer of 2012.

I quickly realized the job market for math professors wasn’t promising at the time, so I started looking for industry positions that would be suitable for someone with my background. After extensive Googling, I realized “data scientist” sounded like something I could do. I taught myself some Python and SQL, practiced analyzing and visualizing publicly available data sets in R and Excel, then started applying. After six months of unemployment, I caught a break and was offered a position at a startup in Chicago. The rest, as they say, is history.

My job at Facebook is unique in its flexibility and often quite challenging, though perhaps not in the same way as algebraic geometry. I have worked on game ranking, platform ecosystem health, comment ranking, celebrity usage patterns on Instagram, and discussion of TV show content on Facebook. I was lucky to be the first data scientist on Facebook Live when it launched, and our team helped grow it into one of the biggest live-streaming platforms in the world. The problems I work to solve can either be very technical, involving complex modeling and simulation, or it can be investigatory, requiring me to search for an explanation of an unusual phenomenon, or it can even be exploratory, such as trying to answer vague questions like “What makes a mobile game fun?”

The analytical training that we mathematicians receive put us at a unique advantage in the field of data science. The rigor we’re accustomed to help us break down a general question into concrete analytical pieces which we can answer with data. It is easy for us to spot errors in thinking, or situations where the evidence doesn’t actually answer the question. After learning some basic statistics and the familiarity with an analytical data manipulation environment (e.g. R or Excel), any mathematician can rapidly become a data scientist. The field of data science is also vast, as one can focus on subfields such as product analytics, visualization, or machine learning.

The biggest misconception people have about data science is that they think we all know how to program and have spent many years writing code. While some familiarity with SQL and analytical software is often desired, we are not programmers. We are, if anything, the voice of evidence at a company. We are there to help shape our colleagues’ understanding and intuition based on the data that we see, and to give actionable recommendations that will improve existing products and help define the appropriate strategies. It’s a fun job, and a great option for all mathematicians interested in industry.

parsa_thumbsup

CC BY-NC-ND

Opportunity: 33rd Annual Mathematical Problems in Industry (MPI) Workshop

Registration is now open for the 33rd Annual Mathematical Problems in Industry (MPI) Workshop, to be held June 19-23, 2017 at New Jersey Institute of Technology in Newark, NJ. The Department of Mathematical Sciences at NJIT is hosting the meeting, with Linda Cummings and Richard Moore acting as local organizers. Funding is provided by our industrial participants and the National Science Foundation.

The format of MPI 2017 will be familiar to those of you who have attended MPI or a similar week-long study group in the past. On Monday, several industrial participants present their research problems to an assembled group of professors, postdocs and graduate students working in the field of applied mathematics. These presentations are followed by break-out sessions, where teams form to work on the problems throughout the week. The week culminates in presentations delivered Friday to the assembled group of industrial
participants and applied mathematicians. A follow-up report is delivered to each industrial participant in the weeks following MPI. These reports are often modified and submitted for publication in peer-reviewed journals, and many past MPI workshops have produced fruitful long-term collaborations.

To learn more about MPI 2017 and prior workshops, please visit the workshop website:

http://web.njit.edu/~rmoore/MPI2017/

A link on the left menubar will direct you to the online registration form. Spaces and funding are limited, so please register as early as possible. Young researchers and those with prior experience at MPI or the GSMMC (see below) are especially encouraged to apply, as are members of groups traditionally underrepresented in applied mathematics.

Graduate students who have not already done so in a previous year are strongly encouraged to participate in the Graduate Student Mathematical Modeling Camp (GSMMC), held at Rensselaer Polytechnic Institute the week immediately preceding MPI. You will automatically be registered for MPI as a Camp attendee. Please follow the following link to register for the GSMMC:

http://homepages.rpi.edu/~schwed/Workshop/GSMMCamp2017/home.html

Although some of the industrial problems have already been selected, we are still
accepting applications to participate as problem-presenters. Please forward this email to industrial contacts who might be interested in exposing their research problems to a large body of creative problem-solvers with broad expertise in industrial applied math.

Looking forward to seeing you at MPI 2017!

CC BY-NC-ND

Blogpost: What are the obstacles to Math students entering BIG careers?

WMDStone

by Dr. William D. Stone, Dean of Arts & Sciences and Professor of Mathematics, New Mexico Tech Mathematics Department

A strong Mathematical background is an excellent preparation for many exciting careers in business, industry, and government. So why don’t more of our students think in terms of these careers? I see two reasons.

The first reason I see, is that many faculty feel uncomfortable advising students into these paths, since they don’t have much experience with industry. Most of us went from college, to graduate school, to a faculty position. We don’t know that much about what a Mathematician does in a BIG career.

This is not an insurmountable problem. Do you have former students who have gone to industry jobs? Invite them back to talk to your Math Club. Or contact a BIG-SIGMAA member in your section and invite them to talk about what they do. Some of your students might get excited. Some students who may not have considered a math major, since they didn’t see career paths other than teaching, may now think about joining your department.

Another obstacle can be faculty attitude. If we think of it as a failure when one of our graduate students goes into a non-academic career, that attitude is conveyed even if we don’t say it directly.

To me, this attitude is short-sighted. Many students want to work on real, applied problems. We should be welcoming them into Mathematics, and helping them on their path. The more that scientists and engineers see the value of a mathematician on their research teams, the better for our profession. When we have students out in industry, we may find ourselves being drawn into some very interesting problems, with genuine consequences. It’s a win-win all around!

5 Things I Learned About Working at a National Lab

Sandia_Severa.png

 

After completing his Ph.D. in mathematics from the University of Florida, William Severa moved to the southwest to join Sandia National Laboratories as a full time researcher in the data-driven and neural computing department.

Pictured above: Sandia’s Z machine is the world’s most powerful and efficient laboratory radiation source.

1. It isn’t all cloak and dagger.

Yes, Sandia National Laboratories certainly works with sensitive and classified information—though what I learned is there’s a sizeable chunk of national labs’ work that is entirely unclassified and in-the-open. As a researcher, I continue to publish my work, and I can still discuss my research at conferences or meetings. More than that, there’s plenty of internal support to determine just what is sensitive and what isn’t, so you always know what you can or cannot say.

2. I still get to research cool ideas.

One of my worries about leaving academics was potentially losing research freedom. However, it turns out I’m afforded quite a bit of flexibility here. We are encouraged to pursue grants from a number of external funding agencies, and the Department of Energy has its own congressionally-authorized internal research funding called Lab Directed Research and Development (LDRD). These projects range in duration and scale, and the process provides a great mechanism to propose my own research ideas. LDRD projects are focused on high-risk, high-reward research, so they’re always up for the next great idea.

3. It’s an engaging interdisciplinary effort.

Every day I go to work with an incredibly diverse team. Since departments are centered on topics rather than degrees, we have a truly interdisciplinary effort. My co-workers’ backgrounds range from psychology and neuroscience to climate engineering and computer science (and mathematics!). Together we each use our expertise to contribute to a unified solution.

4. ‘Go ahead; Stretch out and try new things.’

I’m the type of person who is always excited to learn new things or apply what I know to new problems. However, as a pure mathematician leaving graduate school, I found it difficult to expand from my core expertise. At a national lab, I am constantly encouraged to approach new challenges. Some are close to my expertise, and some are a little farther. Either way this freedom lets me push my work into different and exciting directions.

5. They give us our breathing room.

Project timelines are on the order of years, not months. As such, we have the time to do basic research, not just push out a product. The exact schedule is, of course, dependent on the program. In my experience, the schedules have always been accommodating.

NASA_SeveraDOE_Severa

Sandia National Laboratories is a multi-mission laboratory managed and operated by Sandia Corporation, a wholly owned subsidiary of Lockheed Martin Corporation, for the U.S. Department of Energy’s National Nuclear Security Administration under Contract DE-AC04-94AL85000.