Coding Tools for Managing Programs

I’ve been using coding to help me manage programs for a while now. I’ve recently seemed to have a bit more interest from others in how to get started doing the same thing. After a few requests, I realized that this might be a good post. So here it goes.

Python is the most common language I use, and the tool I use most commonly is jupyter notebooks (.ipynb files). If you haven’t used Python before, I think using it via notebook files is the gentlest and quickest way to get your feet wet. Snippets of code can quickly be written and run and get instant feedback from the results without needing to resort command line’s and figuring out how to output results. I can’t imagine using notebooks without two essential libraries: Matplotlib and Pandas. Matplotlib is not the most intuitive, but it get’s the job done and I’ve not come across another fundamental package to supplant it. Pandas on the other hand has changed my working life. I love it. I for the most part have abandoned Excel for entirely for the combination of notebooks with Pandas (and inevitably Matplotlib). Pandas allows me to read in data from any file format, in any scheme and manipulate it into any other format. If you have some basic skills in Python, it’s pretty easy to pick up. I originally learned it from Wes McKinney’s book (McKinney is the creator of Pandas). Fairly recently I have stopped using the original Jupyter localserver to run notebooks in favor of VSCode’s .ipynb tool. VSCode has gotten too good to not use.

Subscribed

The next tool isn’t really coding strictly speaking, but it’s not a conventional tool so I’m mentioning it here as well. No single tool since Pandas has changed my daily work more than Logseq. Logseq calls itself a second brain and I agree. Logseq is a note taking app in the spirt of OneNote, but I find it way, way better. Logseq allows you to create your own wiki of your notes. I have the ability to quickly recall information from my notes and organize it in multiple ways within the tool. Logseq has a fun graphic of how all your note pages are linked together in a graph. Below is my logseq for file for my personal notes at home. I have similar ones for my work.

The above tools represent a good start. I have also started using much more html and javascript to create stand alone documents and to share information. One tool that I use with some frequency is the D3 javascript library. There’s no way around it, D3 has a significant learning curve. But, if you want a tool where you can create any data driven graphic that you can dream up, including with interactivity - D3 can do it.

I think that covers my most used tools. Certainly coding skills traditionally wouldn’t be thought of as an important tool for Program management. But I subscribe to the belief that one of the most important roles for a program manager, particularly on larger teams is to collect information from all the programs parts and make it available for others to make informed and independent decisions. This certainly turns the conventional paradigm on it’s head in my experience where program leaders expect there team to report to them information. My coding skills allow me to take in large amounts of data from notes, measurements, experiment results, etc, store it, reformat it and get it out to the doers who need it make decisions and get work done.