Software Engineering

As the backbone of engineering divisions of modern firms, software engineers are highly coveted in the job market. If you’re considering this path, you’ll need to work hard to demonstrate to interviewers that you’re the real deal. Fortunately, Williams has all the resources you need to ensure that you’re in tip-top shape.

Position Overview

Software engineers develop complex software systems that solve key business problems. They build products that consumers enjoy using and find useful. Software engineers are excellent programmers and have an eye for good software architecture design. There are many different types of positions that are often classified as Software Engineering, such as:

  • Backend: you work on the elements that aren’t immediately visible, such as databases and architecture.
  • Frontend: you work on the elements that clients see and interact with, such as the design and buttons of a website or application.
  • Full Stack: you can work on both frontend and backend.
  • Quality Engineering / In-Test: You are responsible for testing the quality of the product, often through developing tools and scripts that run tests.
  • Cybersecurity: You are in charge of creating and implementing tools to ensure the product is secure from cyberattacks. Passwords, personal information, and confidential data are all examples of things that need to be protected.

Resources:

  • Academic Guidance

    It is strongly recommended that you pursue a degree in computer science if you want to be a software engineer. While it is not impossible to pick up the material if you major in a related field (such as statistics or mathematics), all of the programming skills and data structures knowledge that you need will be satisfied by a robust computer science education. In particular, the material taught in CSCI 134, CSCI 136, and CSCI 256 will be essential for interviews.

    Co-curricular Guidance

    If you are looking to set yourself apart, you should try and demonstrate your unique programming skillset in some way. Here are some of our recommendations:

    • Become a Teaching Assistant for your favorite CS course.
    • Have a public GitHub account and contribute to open-source projects.
    • Build your own independent project (websites, apps, etc).
    • Get involved in relevant student groups. Williams Students Online, the ML Club, and UNICS are good examples.
    • Spend a summer at Williams doing research with your favorite faculty member.
    • Build a project at a hackathon nearby. The Career Access Fund can be tapped for any expenses.

  • The software engineering interview circuit is unusual in that it stresses technical proficiency. The types of questions you'll see will be about programming fundamentals: data structures, popular algorithms, and problem-solving techniques. It is strongly advised that you prepare for these through mock interviews. Practice makes perfect, and even the best programmers often struggle with these interviews their first few times.