You have provided an interesting initial post, and I agree with you at every point except the first and second factors.
I agree that reusable algorithms are the greatest timesavers, but they are not always practical because of the software's individuality.
In many cases, the algorithms must be specially adapted to the software. Correct me if I am wrong; I am still learning too :)
- Reply to Gianluca Cannnone from the student:
Hello Gianluca,
Thanks a lot for your reply and sharing your views. I agree with you that each piece of software is unique, but I think each software is comprised of several algorithms that are reusable (and several others that are unique to that piece of software).
For instance, let's think about Security Helpers of Werkzeug (2007) which I use frequently in my own coding practices to hash passwords. With its generate_password_hash method, you can easily hash a password and likewise, with check_password_hash method, you can check the password provided by a user.
Thanks to these already available methods, regardless of the type of software, you can easily secure and validate user passwords without needing to invent an algorithm to hash and check a password.
To summarize, I think such kind of off-the-shelf algorithms and codes save the developers from a lot of trouble in many ways, the most important of which are:
- They save time, especially in complicated situations like hashing a password as in our example.
- They stand the test of time. If we go back to our example, a proven password hashing algorithm like this is most likely to be more secure than you can come up with on your own.
It will take time to validate the security of your own algorithm and it might lead to vulnerabilities that may harm your users.
References:
Werkzeug, 2007. Werkzeug Documentation. Available from: https://werkzeug.palletsprojects.com/en/2.1.x/utils/#module-werkzeug.security [Accessed 16 June 2022].