Software Development in Industry
Life after a university degree in computer science
Olivier Bourgeois
Mount Allison University
January 23, 2019
Introduction
Olivier Bourgeois
B.Sc. Computer Science (‘18)
Software Eng. II at Dell EMC
Me!
Content
● The Software Industry
○ Career Opportunities
○ Role of a software developer
○ Typical day-to-day life
● Internships & Research
○ What are they?
○ Why are they important?
● Career in Software Development
○ Finding opportunities
○ Networking
○ Side projects
○ Interviewing
● Closing Words
The Software Industry
Career opportunities
Below are a few of the endless possibilities in software development:
● Automation;
● Cloud development;
● Data science;
● Desktop development;
● Embedded systems;
● Mobile development;
● Video games development;
● Web development;
● … And many more!
Your future employment could even be a combination of multiple fields!
Role of a software developer
Software developer as a professional role is varied.
Usually includes a combination of the following:
● Collaborating on a team of fellow developers and managers;
● Developing new code and refactoring existing code;
● Learning new languages, technologies, and frameworks;
● Presenting proofs of concept and demos;
● Reviewing other peer’s code and plans;
● Solving novel problems and coding challenges;
● Testing new and existing code retroactively;
A day in the life
Below is an example of what a typical work day could look like:
8:30-9:00: plan for the day, read emails
9:00-10:00: one (1) hour of coding
10:00-10:30: daily stand-up meeting
10:30-12:30: two (2) hours of coding
12:30-13:30: eat lunch, read novel
13:30-15:00: coding reviews, update tickets
15:00-15:30: read tech blogs and news
15:30-16:30: one (1) hour of coding
Sprinkled in the day: “water cooler breaks” with coworkers
Internships & Research
What are they?
Both these types of opportunities are generally full time, taking part or all of a
summer term during your degree.
Internship (Software Developer Intern)
● Work on real projects and learn the day-to-day of a developer;
● Collaborate and network with established developers;
● Get the opportunity of scoring a return offer from that company;
Research (Research Assistant)
● Work on real research taken on by your professor;
● Insight on the research component of academia;
● Will get to know your professor and their network a lot better;
Why are they important?
Research and internship opportunities can help you by:
● Building a bigger professional network;
● Financing part of your education;
● Giving you the chance to get your foot in the door;
● Extending your resume with relevant experiences;
● Providing you with resourceful mentors;
Undecided about higher education or working in industry?
● These opportunities are a great way to help you make that decision!
Career in Software Development
Finding Opportunities
There are multiple ways of finding opportunities:
● Career fairs / recruiting events;
● Company’s career section;
● Job aggregator services;
● Student sections of career pages (for internships);
● Technical recruiters;
And one of the best method:
● Networking (whether offline or online);
LinkedIn
Networking
LinkedIn is the biggest and most popular professional networking service.
Bonus: It also doubles as one of the most prominent job search service!
Example of a typical example of networking chain:
You <-> a computer science professor <-> an alum that currently works at ABC Inc.
Advantages of professional social networks:
● Keeps track of where past colleagues and classmates are at;
● Allows sending and receiving references and recommendations;
● Enables you to find network chains going all the way to CEO’s;
Note: All of this is feasible “offline” (i.e. without using a service like LinkedIn),
but it does make it much harder and time consuming.
Side projects
Side projects are a great way of getting noticed without any professional
experience in software development and learning a lot along the way!
What is a good side project?
● Goes beyond the scope of a degree curriculum;
● Solves a problem you encountered before;
● Allows you to learn something new in the process;
These projects can be put up on a source code repository host, such as...
GitHub
Other ways to get noticed
Besides personal side projects, there are many other ways to get noticed:
● Career fairs;
● Local meetups;
● Medium;
● Personal website;
● StackOverflow;
● Twitter;
● Volunteering;
Note: None of these tools are necessary to have a long spanning career in
software development, but they can definitely boost the amount of
opportunities that comes knocking at your door.
Personal website
Personal website
Interviewing
Interviewing can vary between sizes and types of companies.
Generally they involve some subset of:
● Resume screening
● Coding assignment(s)
● Phone interviews(s)
● On-site interview(s)
The interviews can be behavioral, technical, or a mix of both.
Interviewing
Behavioral interviews are familiar to most, but technical interviews introduces a
whole new set of challenges.
It’s not common to spend 20 minutes of the interview discussing the trade-offs
between an array and a linked list, or solving questions looking like this:
Write a function that, taken a list of sorted points, computes and returns the
area of the formed polygonal shape.
How do interviewers use these types of interviews to assess candidates?
Interviewing
Write a function that, taken a list of sorted points, computes and returns the
area of the formed polygonal shape.
Typically, technical questions like the above are solved using these steps:
● Asking questions to resolve any ambiguity;
● Planning and designing a suitable algorithm;
● Writing clean code;
● Testing carefully and fixing mistakes;
There are many resources available to learn more about and practice
behavioral and technical interviews for software developers.
Appendix
Appendix - Resources
Software Engineering
● Clean Code
● The Mythical Man-Month
● The Pragmatic Programmer
Interviewing
● Kattis
● LeetCode
● Cracking the Coding Interview
Need a software-free break?
● The Hitchhiker’s Guide to the Galaxy
Closing Words
Any Questions?
Feel free to contact me!
Olivier Bourgeois
olivier@bourgeois.io
https://bourgeois.io
https://github.com/bourgeoisor
https://linkedin.com/in/bourgeoisor

The Software Development Industry

  • 1.
    Software Development inIndustry Life after a university degree in computer science Olivier Bourgeois Mount Allison University January 23, 2019
  • 2.
    Introduction Olivier Bourgeois B.Sc. ComputerScience (‘18) Software Eng. II at Dell EMC Me!
  • 3.
    Content ● The SoftwareIndustry ○ Career Opportunities ○ Role of a software developer ○ Typical day-to-day life ● Internships & Research ○ What are they? ○ Why are they important? ● Career in Software Development ○ Finding opportunities ○ Networking ○ Side projects ○ Interviewing ● Closing Words
  • 4.
  • 5.
    Career opportunities Below area few of the endless possibilities in software development: ● Automation; ● Cloud development; ● Data science; ● Desktop development; ● Embedded systems; ● Mobile development; ● Video games development; ● Web development; ● … And many more! Your future employment could even be a combination of multiple fields!
  • 6.
    Role of asoftware developer Software developer as a professional role is varied. Usually includes a combination of the following: ● Collaborating on a team of fellow developers and managers; ● Developing new code and refactoring existing code; ● Learning new languages, technologies, and frameworks; ● Presenting proofs of concept and demos; ● Reviewing other peer’s code and plans; ● Solving novel problems and coding challenges; ● Testing new and existing code retroactively;
  • 7.
    A day inthe life Below is an example of what a typical work day could look like: 8:30-9:00: plan for the day, read emails 9:00-10:00: one (1) hour of coding 10:00-10:30: daily stand-up meeting 10:30-12:30: two (2) hours of coding 12:30-13:30: eat lunch, read novel 13:30-15:00: coding reviews, update tickets 15:00-15:30: read tech blogs and news 15:30-16:30: one (1) hour of coding Sprinkled in the day: “water cooler breaks” with coworkers
  • 8.
  • 9.
    What are they? Boththese types of opportunities are generally full time, taking part or all of a summer term during your degree. Internship (Software Developer Intern) ● Work on real projects and learn the day-to-day of a developer; ● Collaborate and network with established developers; ● Get the opportunity of scoring a return offer from that company; Research (Research Assistant) ● Work on real research taken on by your professor; ● Insight on the research component of academia; ● Will get to know your professor and their network a lot better;
  • 10.
    Why are theyimportant? Research and internship opportunities can help you by: ● Building a bigger professional network; ● Financing part of your education; ● Giving you the chance to get your foot in the door; ● Extending your resume with relevant experiences; ● Providing you with resourceful mentors; Undecided about higher education or working in industry? ● These opportunities are a great way to help you make that decision!
  • 11.
    Career in SoftwareDevelopment
  • 12.
    Finding Opportunities There aremultiple ways of finding opportunities: ● Career fairs / recruiting events; ● Company’s career section; ● Job aggregator services; ● Student sections of career pages (for internships); ● Technical recruiters; And one of the best method: ● Networking (whether offline or online);
  • 13.
  • 14.
    Networking LinkedIn is thebiggest and most popular professional networking service. Bonus: It also doubles as one of the most prominent job search service! Example of a typical example of networking chain: You <-> a computer science professor <-> an alum that currently works at ABC Inc. Advantages of professional social networks: ● Keeps track of where past colleagues and classmates are at; ● Allows sending and receiving references and recommendations; ● Enables you to find network chains going all the way to CEO’s; Note: All of this is feasible “offline” (i.e. without using a service like LinkedIn), but it does make it much harder and time consuming.
  • 15.
    Side projects Side projectsare a great way of getting noticed without any professional experience in software development and learning a lot along the way! What is a good side project? ● Goes beyond the scope of a degree curriculum; ● Solves a problem you encountered before; ● Allows you to learn something new in the process; These projects can be put up on a source code repository host, such as...
  • 16.
  • 17.
    Other ways toget noticed Besides personal side projects, there are many other ways to get noticed: ● Career fairs; ● Local meetups; ● Medium; ● Personal website; ● StackOverflow; ● Twitter; ● Volunteering; Note: None of these tools are necessary to have a long spanning career in software development, but they can definitely boost the amount of opportunities that comes knocking at your door.
  • 18.
  • 19.
  • 20.
    Interviewing Interviewing can varybetween sizes and types of companies. Generally they involve some subset of: ● Resume screening ● Coding assignment(s) ● Phone interviews(s) ● On-site interview(s) The interviews can be behavioral, technical, or a mix of both.
  • 21.
    Interviewing Behavioral interviews arefamiliar to most, but technical interviews introduces a whole new set of challenges. It’s not common to spend 20 minutes of the interview discussing the trade-offs between an array and a linked list, or solving questions looking like this: Write a function that, taken a list of sorted points, computes and returns the area of the formed polygonal shape. How do interviewers use these types of interviews to assess candidates?
  • 22.
    Interviewing Write a functionthat, taken a list of sorted points, computes and returns the area of the formed polygonal shape. Typically, technical questions like the above are solved using these steps: ● Asking questions to resolve any ambiguity; ● Planning and designing a suitable algorithm; ● Writing clean code; ● Testing carefully and fixing mistakes; There are many resources available to learn more about and practice behavioral and technical interviews for software developers.
  • 23.
  • 24.
    Appendix - Resources SoftwareEngineering ● Clean Code ● The Mythical Man-Month ● The Pragmatic Programmer Interviewing ● Kattis ● LeetCode ● Cracking the Coding Interview Need a software-free break? ● The Hitchhiker’s Guide to the Galaxy
  • 25.
  • 26.
    Any Questions? Feel freeto contact me! Olivier Bourgeois olivier@bourgeois.io https://bourgeois.io https://github.com/bourgeoisor https://linkedin.com/in/bourgeoisor