Sepm Unit 9

3 minute read

Published:

Learning Outcomes Achieved

  1. Explore the implications of computer and network architectures for system-level design and development, as appropriate for risk and quality management
  2. Systematically develop and implement the skills required to be effective member of a development team in a virtual professional environment, adopting real-life perspectives on roles and team organisation

ePortfolio Activity

The following task was given as an activity:

Use some Python code which you have developed in the past and apply at least 3 of the strategies presented at the source to improve its quality. You can use the Jupyter Notebook workspace in Codio and save your work to your GitHub repository.

The code I used was an implementation of the tree command-line application that appears on various operating system terminals- I wrote this some time ago as a personal project. To improve its quality, I used autopep8 --in-place to format it to fit PEP 8 standards (it mainly fixed problems with whitespace, run git diff --no-index to see the changes between the files). This implements suggestion 3: “Follow a Style Guide”. I then also added a README.md file which gives a bit more information about the project. This implements suggestion 4: “Document all the things!”. Lastly, I ran a tool called bandit on my code, which checks for any security flaws (none were found). This implements suggestion 1: “Use Tools To Help You”.

By completing this activity, I achieved learning outcome 2, because I learned how to increase the quality of software which I write by applying Pythonic coding principles. Although my group’s assignment is written in Kotlin, some of the Zen Python principles mentioned in the presentation of Mertz (2019) could be applied to our assignment- some that I think would be good to apply are:

There should be one– and preferably only one –obvious way to do it. Simple is better than complex. Complex is better than complicated. Flat is better than nested.

Simplicity is key, but in our assignment codebase, some things become complex because of the amount of work involved (e.g., to make cards for the UI, a lot of visual elements on the card need to be manipulated).

With regards to the 4 strategies Mertz suggested, I think we could make good use of Android Studio features to lint our code. Additionally, we could use the Kotlin equivalent of PyDoc/docstrings to further improve code quality- right now we only have many single line comments, and this is not exactly ideal as many of those comments could become top-level descriptions to make things clearer. I also should be looking for automated tools to improve the development experience on Kotlin.

References

Mertz, J. (2019) Writing Clean and Pythonic Code. Jet Propulsion Laboratory California Institute of Technology.

Group Work

This week, we had some group meetings, and Andrey made some interesting points on teamwork based on his career experiences- I found them valuable and thus made notes on them, which I’ve left below.

  • You can’t control someone’s motivation, make sure you know who you can trust to deliver, and prioritise supporting them
  • If someone’s having an issue, let them tell the team so they can respond accordingly, they don’t have to go into detail but make things clear
  • As a worker, understand your obligation to a team.
  • Focus on people’s strengths, try to figure what they are, and play according to those- be careful of falling into the trap of saying “you’re great, but…”.

I’d say this is something that helped me achieve learning outcome 4- learning from colleagues is a key skill for personal development.

Artefacts

Programming tasks for the assignment (we forgot to take minutes)
ePortfolio Activity- original Python code
ePortfolio Activity- original Python code refactored to be Pythonic