SE: A Product Managing Training

In the passing semester (Fall 2015), I did a field project with Demandware and Professor Pito Salas at Brandeis University. It is a very different project than a normal programming project assigned in class, and I, therefore, have a lot of fun and learn a lot. I won’t go into the detail of this project here, but you can visit our landing page if you are interested.

p-compute-1

###A Product Managing Point of View

Demandware is a software technology company providing a cloud-based e-commerce platform and in this project, they are interested in exploring solutions and technologies to enhance customer’s shopping experience in physical retail store.

“Solutions and technologies to enhance customer’s shopping experience in physical retail store” is really all we got from Demandware in the beginning. It is a broad topic and very open ended. And as any creative, passionate college kids, my teammates and I went wild and just brainstormed on a Google Doc. In our initial meeting, we basically throw a list of “amazing” ideas to the Demandware team. At that meeting, I got two very simple questions that I cannot answer and learnt a lesson I would not learn from an ordinary Computer Science class.

#####1 Why do you think these ideas will work? Do you have any research or survey data?

“Ideas are cheap and plenty. Regardless of how great your idea is, there are probably dozens (if not, hundreds) who have had it before you (but, failed to execute).”

I always thought the such “execution” is just about implementing, but the reality is, the first execution step is actually check your idea. This is a little mind blowing for me. With very little industry exposure, I thought building a product will just be two steps: come up with a feature, and implement it. This is how we do our programming assignment at least: I need to support a function, so I come up with an idea and start implement it in a different branch, I merge if it works and I rollback if it doesn’t. Simple as that. But for software engineer company, when they need to come up features to solve problems, they can’t really worth to push their features or ideas to scale without any testing. So, that’s the first question they ask: how do you support your “million dollars” idea?

#####2 What’s most important ideas in the list? What’s the key idea?

We have a list of amazing ideas, but we don’t know how answer this question because we don’t know what exactly the question is: it is a broad topic with a open ending. We got a question and we answered it. This will work fine in a ordinary computer science assignment because the question we got are usually very specific and we just need to answer it.

However, in reality, such problem solving involves a process more like writing a paper. We have a general question we want to solve, in our case will be, “What solutions and technologies are there to enhance customer’s shopping experience in physical retail store?” The next step will then be narrow down the problem, for example, “what are the key problem in today’s retail store and how can we fix it?” Once we have a more narrowed problem, we need to ask is this a good problem to solve? Is this problem important enough? Lastly, what is your paper thesis, in other words, “What’s your solution?”

Today we have thousands of start ups are there calming they are solving a problem or even problems, but only a small fraction of them are getting successful, I think the key difference is how good their “problem” is.

Today, it is very easy for a group of people to come up hundreds or even thousands of ideas. But these random ideas coming from everywhere won’t get us anywhere. Creating a product, or a startup, is not really about how many ideas you have. Instead, it is more about identify the key problem in today’s world and find a great way to solve it.

Not many successful start up ideas are random, there are often a very through thinking process behind that people don’t really realize.

###A Software Engineer/Computer Scientist Point of View

But how is such information beneficial to a computer science student if she is aiming for a career as a software engineer or a computer scientist instead of a entrepreneur or a product manager?

I think the key goes to the problem solving skill training. As a computer scientist, we learn recursion, dynamic programming, etc. to train our problem solving skills because these are some of the good way to understand and conquer a specific question. However, in reality, engineering is not just about traversing a tree, instead, you probably will get a more generic questions like design a X system to achieve Z.

To answer such question, you will probably need years of experience and a very good understanding of the existing system, but more importantly you will need to answer a similar question I mentioned above: “What is the key problem you are solving?” and “What’s your solution to that problem?”

When we are coming up ideas in our project, I started to do some coding as a proof of concept and learned a very valuable lesson, that is “how to locate the major technical difficulty behind an idea? what is the key technology to overcome the obstacle?” This thinking process is rare when I did programming assignment for classes because we know professor assign this project for a recent topic and we just need to implement that. Therefore, we don’t really have enough training to answer a question like “design a X system to achieve Z” and I learn a lot about this in this field project.

I used to think that product managing courses are not really worth taking, but it turns out that I love it, enjoyed it and highly recommend it.

Written on December 22, 2015