Success in balance
I’ve found success in my career through balance.
On one end of the balance, I operate with a business leadership mindset. I focus on asking the right questions while maintaining and refining a strategic vision. Pursuing growth opportunities through writing research proposals, hosting technology transfer events and performing demonstrations for potential funders shaped my focus as a researcher. My recurring themes have been “what value does this work have?” and “what value steam am I not currently pursuing?” Envisioning the customer experience and putting tremendous emphasis on value allows me to craft a technical approach.
On the other end of the balance, I have a scientific and technical mindset. Using programming and mathematics as tools, I shape complex data into decisions and actions. My education in mathematics instilled analytical rigor into me but my experience as a scientist has put it into my bones. As a scientist and researcher at a non-profit institute I’ve had to maintain tremendous analytical discipline. My growing technical skillset has benefitted tremendously from working at a non-profit institute. Without external drivers, I’ve been able to act as a referee of data and call the balls and strikes as I see them. Avoiding things like confirmation bias and data snooping makes results more trustworthy and decisions made based on the findings more reliable.
As an individual, I’ve pursued this balance of business and analysis for almost a decade. From the time I selected my majors at university to today, I’ve enjoyed the mixture of these two mindsets. Each is rewarding and each lends to the other.
Process for programming projects
Programming Process
Every programming project is unique and the plan of often varies with the goal. However, I’ve developed a general outline of the steps I use to expedite my projects. I’ll walk through an example of a project I did recently LINK TO Card Memorization BLOG POST. Since I think this project is an illustrative (and interesting) example.
Problem Definition
The first step is defining a problem. I typically sketch out the things I’m looking to do on my iPad using the Notability app. This app has been an absolute game changer for my productivity. It allows me to quickly draw mind-maps, record voice memos, draw graphics and write outlines. I have a separate blog post going into more detail about this app (LINK) but I encourage readers to investigate it.
During this stage, I do a brain dump of the things I’m looking to accomplish. Momentum will often build at this stage and I try to envision what the final product will look like. This is still the idea stage so I don’t let myself get hung up on the technical details.
- Here’s an example of how this looked for a project I did recently. The goal of this project was to develop a tool to track my progress on improving memory.
Jupyter Notebooks
Once I have a clear idea of the goal and I’m ready to start programming I’ll use a Jupyter notebook to translate my outline into functional stages. Here’s where I dive more into the technical details and refine the structure of my approach. Jupyter is great because you have inline results and you can easily sketch programming ideas. There is also a broad community of resources that I consult during this stage.
My go-to resources
Jupyter also has the ability to incorporate markdown tool so I can have a report style presentation with Latex and background information inline with the code. A side note, Jupyter also has some great functionality for presentations (link) and methods for exporting code to other useful formats.
Some projects take just a few hours and others take longer periods of time. Markdowns in Jupyter are helpful because you can easily come back to a project months later and see where you left off and what the thought process was.
PyCharm
Lastly, I’m interested in taking projects I’ve developed and sharing them with the community. To do this, I will revisit the Jupyter notebook and translate it into a .py file using Pycharm. The point of this is reproducibility. I’m interested contributing to the programming community since I’ve benefited greatly from the work of others.
When working from PyCharm, I’ll create a virtual environment where I install all the necessary packages to run the programming and so I can later share that environment as a .yaml file.
When the project is complete and I’m satisfied with the results, I’ll do some final touchups and documentation in preparation to share the results. This includes cleaning up the code and writing a supporting document. The cleanup is aimed towards readability. I want other people (and my future self if I come back to a project, to quickly be able to understand the process. PyCharm’s makes translating code into compliant with PEP 8 extremely easy for a novice programmer.