The human factors of software development
There are many ways to solve the same problem using code. There are many ways to design a website or app around the same content. There are many ways to arrange the discrete parts of a program, the structure of elements in a page, and in fact the lines of code that make these up.
But can you justify why? Why did you code it that way, and what were the other options? What makes your way the best way in this particular context? Simply meeting the brief is not enough. In programming, I would argue that the more challenging concepts lie not in making the code work, but rather in addressing the readability, reusability, accessibility, efficiency, and probably a bunch more -y’s that I’ve neglected to list.
Some considerations for students (and everyone else) writing code:
- If this suddenly became a team project, how quickly could you introduce a new person to your code and have them be a productive contributor?
- Who is the target audience of your project, and is your design usable and familiar for them?
- Have you considered how a person with a disability such as vision impairment would see or use your final product? How could you ensure that they don’t miss out on any content?
- How large is the file size of your website or app, and will people in a remote area or on a slow connection be able to view it or download it?
- How much would it cost to view your site or download your app on a mobile phone using some of the common mobile data plans?
The “why” concepts required to answer questions like these are far more important than most programming courses give them credit for.
It can be difficult to cover so many topics in the limited time frame available in a classroom, but that’s no reason to write them off. Even discussing just a few of these over the course of a year will encourage students to appreciate the importance of seemingly small decisions and to consider their impact on people with experiences and lives that differ from their own.
By guiding students in the exploration of these concepts through tech, I hope that we can contribute to building a more respectful, inclusive and empathetic tech industry and society.