The End of Release 0.4

To finish separating the code into modules I had to take some time to approach how I was going to deal with passing all the data that needed to move around. After reviewing the code, I found that the biggest barrier to moving the code was that a lot of functions passed data that it didn't necessarily need to use to another function that was called in it. I believe this is why the owner of the project decided to use global variables to provide a solution to this issue. But with how I wanted to arrange the modules using global variables would not work so I needed to find a way another to get around this. 

I tried a few different solutions to this problem. The first thing I tried was to try cutting down on the number of functions that were used by repurposing a few functions so that they could be reused more than once. This worked for a few functions but the way the code was written it didnt really solve the problem as the amount of parameters the functions started to have were getting to be too much, as well as the functions becoming bloated and overcomplicated. After reviewing the code once more and arranging the code a little differently, I noticed that most of these variables that needed global access were being created in the initialization functions I had moved to an initialization module. With this information I decided that it would be best to create an initialization dictionary that would hold all the data that would be used by the further module. This way that dictionary could easily be passed as one variable and the needed information can be used or passed again using the keys in the dictionary. 

Once I had decided on using the dictionary solution, I went ahead and started work on removing the global variables and the ways they were used with the initialization dictionary and adding parameters to functions were needed. When I had completed that I made sure that all the imports were correct and the modules were working correctly. I did some tests to make sure the app was working as intended and made my pull request

In the end, I was able to learn a lot about reading and repurposing code that I didnt write in this release. When you write code yourself you take for granted the logic you write and may not take the time that is needed to make sure the code is readable to others. I was also able to learn the importance of modularity and making code as compact as possible. Overall, it was a good experience for a project I think is worthwhile and is something I would definitely like to continue working with the repo owner on going forward. 

This being the last release/post for my open source development I also wanted to say that I learned a lot about myself and what it takes to do software development especially open source development. I was able to learn how to use git and github in a much broader way compared to the very basic push and pull knowledge I had going into the course. I was also able to learn and gain confidence in approaching other developers for projects to work and overcome some of the imposter syndrome I feel sometimes. Its still something I struggle with but with this course I was able to identify those feelings quicker and get over it a little better. Finally and probably the biggest lesson I learned was the value of time management and managing setbacks. I didnt really succeed with the time management or approach to setbacks this semester but I was able to learn through consequences that the approach to setbacks is make immediate and constant communications and adapt and make new timelines from there. I am hoping I can apply that knowledge better moving forward.

I would like to thank all my classmates and my professor, David Humphrey, for a great learning experience even though I may have not interacted with you all as much as I should have, I would like anyone reading this to know that I was reading a lot of your blogs or posts on slack and I learned a lot. 


Comments

Popular posts from this blog

Planning for Release 0.4

Using and Setting up a Testing Framework

Adding Features and Pull Request