Highest Rated Comments


alpha_hxCR82 karma

Hi Al,

Thanks for creating pyautogui and for writing the Automate the Boring stuff book.. I saw your youtube video at Pycon 2016/2017, which introduced me to pyautogui and have been using it a lot to automate some stuff.

I have been coding for a few months, working on a side project trying to automate a lot of things that are pretty mundane but need to be done manually. It has gradually got pretty complex, and now I have intermittent bugs, which I can’t necessarily track down. I have been reading Code Complete and gradually implementing more Object oriented programming structure, writing better specifications, and deciding the architecture before I start coding, thinking of writing unit-tests. Because of the intermittent bugs, which I can’t track down, somebody suggested that I put my windows application in a Docker container.

Questions

It seems to me that all of the above strategiest: OO, writing unit-tests, specification, requirements, source control, Docker/pyenve/virtualenv are designed as a defense mechanism against complexity of a program. So we can work with the smallest chunk.

I know that my code base can be improved a lot, but now that I know there are a lot of strategies, that can be use to improved the code base, but I know necessarily know how to prioritize my time so that I can improve my codebase most efficiently. If you were given an unknown codebase, which was partially OO, didn’t have unit-tests, didn’t have requirements/specifications, didn’t use Docker/pyenv, how would you go about prioritizing which one of these strategies to use to improve the code base?

I also have some plans to extend the code base urgently to some other activities, but because of the intermittent bugs, I am wondering if its better instead to stop and make the current code base more OO, have unit-tests, write out specifications, use some kind of environmental variable control/Docker, before I write new code?

What is the best practice in such scenarios?

alpha_hxCR81 karma

Hi Al,

Thanks for creating pyautogui and for writing the Automate the Boring stuff book.. I saw your youtube video at Pycon 2016/2017, which introduced me to pyautogui and have been using it a lot to automate some stuff.

I have been coding for a few months, working on a side project trying to automate a lot of things that are pretty mundane but need to be done manually. It has gradually got pretty complex, and now I have intermittent bugs, which I can’t necessarily track down. I have been reading Code Complete and gradually implementing more Object oriented programming structure, writing better specifications, and deciding the architecture before I start coding, thinking of writing unit-tests. Because of the intermittent bugs, which I can’t track down, somebody suggested that I put my windows application in a Docker container.

Questions

It seems to me that all of the above strategies: OO, writing unit-tests, specification, requirements, source control, Docker/pyenv/virtualenv are designed as a defense mechanism against complexity of a program. So we can work with the smallest chunk.

I know that my code base can be improved a lot using the above strategies. But I dont necessarily know which one of these I should implement first.

  1. Say you were given an unknown codebase, which was partially OO, didn’t have unit-tests, didn’t have requirements/specifications, didn’t use Docker/pyenv. How would you think about prioritizing which one of these strategies to use to improve the code base?

  2. I also have some plans to extend the codebase urgently to some other activities, but because of the intermittent bugs, I am wondering if its better instead to stop and make the current code base more OO, have unit-tests, write out specifications, use some kind of environmental variable control/Docker, before I write new code. In your opinion, is it better to make the current code base more robust using the above strategies, before writing new code?

alpha_hxCR81 karma

Hi Alpha..

Thanks for sharing your advice.

Yeah.. my development environment doesnt change too much, but I do my development on my own computer, which turns out to be Windows.

I will work on adding unit-tests and making the new code modular, add unit tests.

alpha_hxCR81 karma

Hi Al,

Appreciate your answer and for sharing your experience. I will work on incorporating unit-tests for the existing codebase and new codebase. And work on refactoring once I get some breathing room.

The Tetris analogy to technical debt was very helpful.