"How would you assess the condition of a given software project?"
I had a question like this come up from an acquaintance recently and my brief answer is below. Questions like this require establishing a view of the condition of the project at both high and low levels and will require, to start, a conversation with #management . Some questions that may come up include:
🔎 Does the #application work?
🔎 Is it experiencing any strange behavior?
🔎 Does the application perform well and consistently?
🔎 What's the attrition rate look like on the team?
🔎 Are bugs rampant?
🔎 How often do the #developer s deliver new releases?
🔎 How frequently do crises occur?
🔎 How long has the project been in #development?
🔎 If the app hosts sensitive #data: Have you ever run a #security audit? pentesting / penetrationtesting
🔎 Is your application properly covered by web analytics software such as Google Analytics?
Next steps will be to review the code at which point I may need to speak with the developers. During this effort questions will need to be answered and a brief list is included here:
🔎 Is the application architecture correct?
🔎 Are the dependencies relatively current or are they outdated?
🔎 Is the development based on any non-standard practices?
🔎 Does the source code make use of multithreading explicitly? If yes, is there a good reason for this?
🔎 Are problems being solved by inventing solutions where an established open-source alternative exists?
🔎 Does the application experience memory leaks?
🔎 Is there automated testing in place? Including unit, integration, performance, security, front-end testing (where appropriate)
🔎 How does one scale the application?
🔎 Is there CI/CD in place? How are released handled?
🔎 What is the development methodology for this project?
🔎 Are there scheduled restarts of the application to prevent problems from arising?
This list can get to be quite long and hence it will not be developed quickly but when we're finished with it we should have a pretty good idea what the current condition of a given software project is.
Do you agree with this approach? If not, how would you do this?
Questions and comments are welcome.