I'm looking for recommendations on modern best practices in:
Software engineering; Software project management; How to properly, efficiently, and clearly document software; Best practices for programming in teams; etc.
I realise there is no one-size-fits-all solution, but I'm hoping to find a variety of sources that I can filter through for gems.
Backstory: I'm moving from academia (robotics & ML research) to industry in 4 months and am looking for some resources to help me transition from working on single-person/small-team research projects and codebases, to those of a 30-engineer company.
The company is in the embedded systems & robotics space and has recently found success and is looking to grow. They have engineers who are technically excellent but lack formal training in software engineering and project management. They have a few guidelines in place for source control (Git) usage, and have some quality control & testing processes implemented, including running integration tests of releases on the physical systems continuously throughout the day.
I'm entering the company at a rather senior level, since my research work focused on exactly an area that they're looking to expand in. I will spend the first half year getting to know their robotic systems. Longer term they would like me to hire and manage a small team working in my field as part of their expansion strategy.
I've had masters-level courses in Software Engineering and Project Management, but this was many years ago and I expect the material of these courses to be very outdated.
As no-one else has replied, randsinrepose always used to be popular around here:
But these days I don't know.
Everyone says they follow agile, or agile methodology, but it can mean everything from actually following the https://agilemanifesto.org/ and letting the engineers determine their own working practices, to extremely prescriptive process like Scrum and Extreme Programming (XP). Personally I'd be wary about any overly prescriptive processes like scrum, which tend to treat grown adults like children and is often little more than thinly disguised micro-management.
The biggest issues I've run into with scrum and agile has been the disconnect between upper management both wanting transition to agile, and a firm commitment on what exactly is going to built over the next 3month/year.
On the project and management level read Rapid Development by Steve McConnell. On the detailed technical level read Code Complete by same author.
Then read some blog posts on agile, scrum and kanban only to get familiar with the jargon.