-
-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Restructure of software development as a process section #227
Comments
I fully endorse the stated goals and justification to root this section more in refactoring rather than writing fresh code. As mentioned in more than a few meetings, this section is always the most difficult to deliver, and I think having a different approach will give us some insight into what works best for this topic. I think there is also pretty good evidence for this from a similar course being developed: https://third-bit.com/sdxjs/ A few comments on the proposed structure.
I think we will need to keep this in some form because feedback from AstraZeneca was that this is an important part of their projects, and they wanted something about it in the course. I tend to agree that it needs to be somewhere. Whether it needs to be here, that is a different question. I could see it being moved to Section 5 since requirements collection does fit more into the project management side of the software development lifecycle. We would need to see what the implications of that are for Section 4 if it refers back to the requirements at any point.
I'm not a huge fan of the name "Clean Code" because of association with Rob Martin ("Uncle Bob")---discussion for another time. But it does describe what the objective is, and I don't have a good alternative name.
Really like the sound of this. ^
Great
Interestingly, there was a module on Persistence in the past, that is now in the "Extras". Might be helpful to start from that? https://carpentries-incubator.github.io/python-intermediate-development/persistence/index.html
Agreed, this would be great to have, and I would give it priority of the three additional exercises mentioned in this section.
|
The original questions, points and objectives. Software design questions:
objectives:
keypoints:
Programming Paradigms questions:
objectives:
keypoints:
Functional Programming questions:
objectives:
keypoints:
Object Oriented Programming questions:
objectives:
keypoints:
Architecture Revisited: Extending Software questions:
objectives:
keypoints:
|
Will be fixed via #333. |
Restructure the software development process to instead demonstrate refactoring existing, poorly architect-ed code into better code.
Instead of directly teaching functional, OOP etc it would show example code that could be improved (made more readable, testable, extendable) by applying these techniques. It would then name them, so that people can read more.
By focusing on examples where each helps it grounds why you would apply them, rather than potentially just encouraging people to think they need to use classes to being doing "good coding".
Another motivation for this change is we got some feedback when running the course is mostly what people are doing is refactoring legacy projects rather than writing new code and this would develop the skills for doing that.
Goals of this rework:
Proposed Structure
2.1. Introduce what an abstraction is
2.2. Introduce what refactoring is
3.1. Trying to test a messy function that both reads from a path and does some calculation
3.2. Refactor into a pure function that does the calculation using the output of another function that reads the file
3.3. Writing tests for the new pure function
4.1 Refactor out logic for computing something from displaying it in a graph
4.2 Add a new view
4.3 Introduce MVC and patterns as a source for inspiration
5.1. Ideas of an interface in programming concept
5.2. Write an interface for writing outputs
5.3. Writing an implementation of the interface
5.4. Using the interface
5.4. Writing an alternative implementation.
5.5. Explain the concept of de-coupling
Depending on how much quicker this section is to teach I think the following exercises would complement it well:
The text was updated successfully, but these errors were encountered: