Difference between revisions of "Management Q&A"

From Klenwell Wiki
Jump to navigation Jump to search
(Overview)
(In order to best run routine database queries on very large datasets, is it better to build the software in PHP or Python?)
Line 24: Line 24:
 
A cursory Google search seems to bear this out:
 
A cursory Google search seems to bear this out:
  
<blockquote>
+
''PHP was designed for web development at its core... On the other hand, Python comes with powerful functionalities that are hugely suitable for building apps based on AI, ML, data science, Big Data, etc. You have various options available for libraries like TensorFlow, Theano, Pandas, and more.''
PHP was designed for web development at its core... On the other hand, Python comes with powerful functionalities that are hugely suitable for building apps based on AI, ML, data science, Big Data, etc. You have various options available for libraries like TensorFlow, Theano, Pandas, and more.
 
  
 
https://kinsta.com/blog/php-vs-python/
 
https://kinsta.com/blog/php-vs-python/
</blockquote>
 

Revision as of 19:38, 17 May 2022

Overview

This page lists selected questions I have been asked over the years about managing software development teams, usually as part of a job application or interview. Questions are not necessarily my own but all answers are. Both may have been edited for correctness or clarity.

Questions

Describe the process you used with your team in deploying a major product feature.

In brief, work with the product owner to break it down into milestones (if it's big enough to warrant them) and provide estimates on those. Break those milestones into user stories. Each user story should represent a unit of work ready for release upon completion. Milestones are mutable, user stories immutable (once development starts). Release continually: my teams usually work in two week sprints where main branch is released at sprint's end. If we need to defer the release of certain features or want to release the feature selectively for live testing, we use feature flags.

If the feature crosses teams, that will require additional planning and coordination up front. Important lesson I've learned: clarify boundaries and organize development around a client and service. Service team ultimately owns the terms of service.

If something else is meant by the term deploy here (e.g. the process of actually deploying the completed code) or you'd like to dig deeper into the process outlined above (say, requirement gathering or user acceptance testing), I'm happy to discuss that.

In 1-3 paragraphs describe a time-sensitive situation you faced that had major impact on the overall company. What was it, why was it so important and time sensitive, what did you do, what was the result?

Shortly after I started at the first startup I worked at, a fintech startup building a turnkey asset management platform for independent retirement advisors, the CEO sat me down and informed me that he had signed a contract with an API-driven clearing service. This would be the backend for the new investor interface we wanted to build to automate and accelerate client onboarding for our advisor platform. For independent advisors, onboarding new clients with the advisor's broker is a major pain point. CEO wanted to know how long it would take for us to deliver this.

The catch? In 6 months, we would be on the hook for a flat monthly service whether our product was ready or not. (The fee would be about the same as one developer's monthly salary.)

I met up with the first engineer I had hired, who had past experience as a product manager, to review integration requirements and come up with an estimate organized around major features and milestones. We came up with three estimates: the 6-month version (totally unrealistic), a time-insensitive version (much more realistic but projecting 12-18 months for delivery), and a Goldilocks version that made some optimistic (but not too optimistic) assumptions and aggressively narrowed scope on some features. The Goldilocks version projected 9-12 months.

This was all highly speculative as we hadn't even hired the team yet when the request was presented to us. I made this clear to the CEO when I presented him our estimates. In the end, the product took about 15 months to release to production (less than 12 months if measuring from when the 4-developer team was fully assembled). Our company negotiated some minor concessions on the monthly fees. A major unexpected development in the online broker industry, as the project was readying to exit beta, ended up requiring a major pivot away from our original API vendor (which went pretty smoothly thanks to the care we took in developing our code.) Our company was acquired a year later. A few months after that, the new owners laid off me and most my team and ended up abandoning the platform. I learned several lessons from this experience I'd be happy to talk about in more detail.

In order to best run routine database queries on very large datasets, is it better to build the software in PHP or Python?

I don't have a ton of experience with very large data sets. Where I do, the software was already built and used Python. So I'd be inclined to go with Python. In my experience, PHP is oriented toward web application development and Python has better support (tools and libraries like Pandas and Numpy) for processing large datasets and configuring the sort of backend processes where these queries would likely be run.

A cursory Google search seems to bear this out:

PHP was designed for web development at its core... On the other hand, Python comes with powerful functionalities that are hugely suitable for building apps based on AI, ML, data science, Big Data, etc. You have various options available for libraries like TensorFlow, Theano, Pandas, and more.

https://kinsta.com/blog/php-vs-python/