Monday, November 23, 2015

Data Structures 101 for the Product Owner

Data structures may seem like a very foreign concept to those unfamiliar with any high-level computer languages such as Java or C++. Though it is not integral to know precisely what data structure will be used for your particular app, it is extremely handy to understand the differences and some of the reasoning and benefits to some data structures over others. Some data structures offer speed over ease of adding and deleting information. Some, can offer quick and easy access but may run into problems in the future. Basic knowledge of what data structure is used can help you understand if the app will be a clunky, slow, and cluttered app, or a streamlined, well-oiled machine.

The Santa Clara Valley Wine App currently uses a hash map using the name of the establishment as a key for the hash map. Before continuing any further, let me answer the question that those unacquainted with Computer Science have. What is a data structure?

An extremely important use of Computer Science is the handling of data. Perhaps an app will need to store the data of a particular restaurant and its lunch menu. The menu may have dozens of listings. We will need to store data, organize the data, access the data, manipulate or alter the data, or be able to pass the same data somewhere else. (Weiss, 2012) This is where a data structure comes in. Now, there are those who may have a small background in coding and will offer a simple yet faulty solution. We can just store information in an array or an array list. Sadly, as aforementioned, data structures have strengths and weaknesses. Array lists offer easy access, but when adding or deleting new information, for large data it can be extremely taxing for the system to implement it. Array lists are not an efficient data structure for storing a large amount of data.

There are dozens of data structures but when working with developers, one may hear the word hashing or hash code. To the average developer this is no big whoop, but to someone who wants an app this will fly right over your head. Hash maps are data structures where data is stored in array of something known as buckets. Data in each bucket have a unique ID to access the data known as a key. This key may sometimes be known as a hash code. A strong benefit of using hash maps is random retrieval using a key will be significantly faster over a list. (Weiss, 2012) Lists are when data is stored in order and if retrieval is done in order the data is stored in, it will be faster but when storing winery locations, for example, a hash map is very much preferred.

Hopefully, the idea of learning about data structures without a background in code is not too big a pill to swallow. Though it is not something necessary to have a profound understanding, it will help bridge the gap between a product owner and developer. It can also help the product owner get a small hint of an understanding whether their developer is a good developer or a great one.

Weiss, M. (2012). Hashing. In Data Structures & Algorithm Analysis in Java (3rd ed.). Reading,
     MA: Addison-Wesley.