Three Important Things Non-Programmers Should Know About Programming
What are the three most important things non-programmers should know about programming? originally appeared on Quora: the place to gain and share knowledge, empowering people to learn from others and better understand the world.
Early in my web development career I realized that there were three things that were critical for every non-programmer to know before interacting with programmers in a professional setting.
My experience building a single feature with a non-technical product manager taught me these lessons almost immediately.
Let me explain…
I was working with Colin, a non-technical product manager who was responsible for driving the direction of the product and working with my team, the development team, to implement features for our product.
As a developer, Colin was great to work with. The feature requests he created were always really well thought out. He always had all the edge cases accounted for and he drew detailed wireframes, diagrams of what the expected behavior of the feature should look like.
But then, all of a sudden, Colin had a feature request for our team that caused a major problem for our entire development team!
Colin gave our team a wireframe diagram of our application that had an additional checkbox that would allow a user to store their credit card information on the platform.
The feature request seemed simple enough, but because of laws and regulations about credit card information (specifically PCI compliance laws), storage of credit card information is something that is highly complex and regulated.
Despite seeming simple, supporting this one feature in our application would require a complete rewrite of our code.
I brought this issue up to Colin and at first he didn’t get it. “All I’m asking for is a simple checkbox, it can’t be that difficult to add”, he said. I explained that adding the checkbox would be super easy, but making the checkbox do what it claimed would be the difficult part.
Colin then did something that proved that he was the type of product manager who got things done.He explained, “Let me explain why I wanted to include the ability to allow a user to save their payment information…” and then Colin explained that after making a certain type of purchase, it was very common for users to make a related purchase shortly after.
Together we realized there was a solution where we could prompt the user to purchase both items at the same time, instead of worrying about storing the payment information. This was a solution that would give Colin everything he wanted and be ten times easier to implement for our team.
Together with Colin, we implemented this solution. This experience taught me that there are only three things that non-programmers need to focus on when working together with other developers.
They’re also easy lessons to learn…
1. Communicate the technical details to developers quickly and efficiently.
There is no more effective way to explain functionality of an application than showing a developer wireframes of proposed changes.
2. Things can appear to be easier to implement than they actually are.
Be open to the idea that things that seem like they should be really easy can be much more difficult to implement in practice.
3. Provide context about why you think things are important.
Explain the why behind the thoughts you have in situations where you’re getting pushback from developers — if you do this you’ll find yourself working together with them to solve problems.
Remember that you are have the same end goal as the developers you’re working with — to provide the best experience possible or the application you’re building.
Follow these steps and the developers you’re working with can focus their energy on being the best developer they can be. And if you’re a developer you can focus on the.
This question originally appeared on Quora – the place to gain and share knowledge, empowering people to learn from others and better understand the world. You can follow Quora on Twitter, Facebook, and Google+. More questions: