Sunday, December 10, 2017

Some reflections on project management

During the last year, I became a software project manager. Wow. Not something I was expecting.
It's a chaotic (to say the least) environment I've been thrown into -- especially in the realm of decision making (in fact, I think I probably need to sit down and think exactly what environment I'm in a la the Cyefin framework).
The first few months felt like a breathless attempt to keep up, but finally, this Friday, I had a chance to sit down and take baby steps toward acquiring a knowledge framework for my job. Of course, my company has some online training modules, but I wanted an individual voice of experience (and my mentor is out on leave out the moment). Of course, googling 'best practices agile software project management' is going to get me a lot of hits -- but many of those are from paid consultants, and many are highly general. I wanted something more grounded and personal than that.

Luckily, I happened to remember that a blogger whose personal writings I've been following for years, is also a (biotech) project manager & consultant! I spent about 2 hours devouring her content over at  Beyond Managing  and at Chronicle Vitae .

I love her pragmatism and honesty -- particularly her admission that she was an accidental manager -- thrown into the role because she was excellent as an individual contributor -- and that she didn't at first view project management as 'real work' compared to technical work. I identify on both counts!  Or rather, I understood even before I became one that project management was real work -- because I've seen both excellent and poor examples in the workplace --- but I didn't know if it could give me the satisfied feeling of 'getting stuff done' that say, publishing an API reference from scratch could.  Now I am starting to understand from my own experience (and from reading hers) that yes, the process of figuring out how to get work done well as a PM can present mental challenges and satisfactions on par with 'concrete' technical work. No, the output is not so tangible -- but that's OK with me. I get my reward from the process, not from work artifacts. So what parts do I like the best? So far, I most enjoy:

  • digging deep to truly understand the implications of the technical work in terms of schedule, risks, and dependencies
  • translating detailed technical explanations from development managers into summaries for executives
  • noticing when critical conversations are lagging and driving them to conclusion
  • reconciling ambiguity underlying functional specifications and turning research language into software engineering language
  • being the person who has the answers to engineers' questions about priorities, cross-functional teams; and articulating agile best practices



So, I can definitely see how project management could give me years of interesting challenges, but a lingering question for me at this point is -- have I gotten the technical depth I wanted as an individual contributor yet?  How to balance the 'fun' of deep-diving into a new technical area with the more general approach necessary for a manager? Or is it a false dichotomy I'm constructing here? (I've heard a dev exec mention that he thinks the best project managers are those who are most technical, after all).



Friday, June 16, 2017

End-to-end development of Swagger API docs, including Dockerization


I've known how to edit API docs in swagger for about a year or so, but as a solo writer recently I took taught myself the end-to-end process. Since I don't know any other information developers who've done the process end-to-end at my company, I taught myself the technology and occasionally asked my devs for help. Here's what I did, working on and off over the course of a few months:

-researched pros and cons of swagger annotations in the java spec itself or in a separate spec file. Went with the latter, even though at first I felt this violated single source of truth principles. (the build process was so precarious and difficult for in-java annotations that it wasn't worth my time)

-read the java code in order to author the yaml spec by hand. API handyman came to my rescue here: https://apihandyman.io/writing-openapi-swagger-specification-tutorial-part-1-introduction/

-Installed swagger-editor to get instant feedback on my edits.

-Created a web app to publish my docs using Tomcat.  Made some use of https://idratherbewriting.com/learnapidoc/pubapis_swagger.html

-Got feedback that I actually needed to publish my docs using Websphere Liberty Profile instead of Tomcat.  Created a WLP web app using this tutorial: https://developer.ibm.com/wasdev/blog/2016/02/17/exposing-liberty-rest-apis-swagger/. In theory this would have been easy, but the most difficult part was finding the right version of WLP to install on Eclipse marketplace; the versioning conventions just seemed really confusing to me.

-Got told I needed to put my web app in Docker. Fortunately, there were a couple other Dockerized web apps in our team I could use as an example, plus the Docker intro videos are really good (https://training.docker.com/introduction-to-docker). I successfully Dockerized my WLP app, and handed it off to a developer.

YAY!








Wednesday, June 14, 2017

Some new roles





I've taken on some new roles in my team recently:

Agile coach

I'll be the agile coach for a 3-month stint for my team.  We face BIG challenges in implementing agile, the biggest being:

-lack of tooling:  since we work in highly regulated industry, our tools are waterfall-focused, and jumping over to agile-focused tools is a huge approval process. We hope (*HOPE!*) to have better tools -- ie GitHub, Jira support for Agile -- in place by late 2017.

-team complexity -- Coordination across executives, researchers, offering management, sw dev teams, ux, etc, across multiple offerings across TWO companies (parent company/acquired company) that both have required, differing regulatory processes? Very very tough. Biggest challenge I see is at the moment, some upcoming projects lack epics/hills. My hope is that for the projects that DO have epics/hills, we can build out our stories/tasks so as to provide workable examples/templates for other projects.

In the meantime the program manager and I have cobbled together an awkward issue tracking process involving issue types, links, titles, and labels.  It's incredibly manual at this point. We'll hobble along until later in the year, when better Agile support will be available, and I'll be checking regularly with my scrum masters to see if we can make any improvements given the limitations.

Software Release Manager
At my company, there's a traditional documentation set that technical writers are responsible for,  and another set that developers are traditionally responsible for. But I have enough technical depth that I can contribute to the developer docs too (stuff like functional specs, SW design specs, etc), and so I am.  I've also taken over project managing these docs from my SW development boss.

This also means I'm working on defining documentation processes, since our docs are all highly interrelated and highly regulated. For example, helping to come up with a process for tracking and maintaining our third-party components in a 400-row-plus spreadsheet (that one was a bear!); defining and writing up in our wiki how to document unit tests and code reviews, etc, etc.