There are a few critical differences between writing software in small academic projects and professional settings:

  1. The code base is typically larger.
  2. The code is written and maintained by a team not just one person, some of the code is written by people no longer with the project.
  3. The software is part of a business operation, either serving an internal customer or an external one.

The following are topics we will aim to cover in your internship, read through these and use this library for reference as you go through your internship

What is open source

Git, Github and Version control

Testing in software projects

Documentation

Packages and Dependencies

Object oriented inheritance

Cross-team collaboration and knowledge management

Debugging your code

Scaling and distributed systems

Monitoring, logging, observability

Code maintainability and technical debt

Continuous integration and continuous deployment