The Launch to NASA: Humans are Complicated

Christina Smithers
#TechMasters
Published in
4 min readAug 21, 2017
The first picture of Mars; A collection of numerical values from 0 to 63 representing a single pixel of the picture.

At the Jet Propulsion Lab, teams engineer all kinds of robots to go places where humans cannot. They are wonderful creations that don’t need to protection and caring for as we do. Engineering a robot and its flight is a great intellectual challenge, but our minds have gotten us to amazing places with such efforts. When it comes to things that involve interacting with another person though, it presents a different question. While the elements of space can be unpredictable, we are very good at being unpredictable as well. Our minds are places where things happen rapidly. Instead of things occur in binary reactions as our technology acts, we are a network of millions of firing neurons.

People like things to work once they understand the intended outcome. One of the things we take for granted the most is when they work as expected. When they do not, we react in ways ranging from annoyed to upset, depending on the scale of what is happening. From a software engineering perspective, we plan for this to happen as little a possible. Anything requiring human input can present a challenge.

The work I am doing now has works with API programming so that data can move from one software solution to another. One of the challenges the team has run into is finding a way to move the data in a way that preserves the fields while it parses. Anyone who has tried to upload a resume for a school or job application can see how difficult it can be to parse. Titles can be mixed up, sequences can be reversed, and sometimes date formatting can differ such as “15 September 2017” compared to “September 15 2017”. A well-made parser matches the field correctly, but it cannot read what someone was thinking. Something like this can make a user’s experience become vexing and functionally undermine a useful program since it is supposed to avoid manual input from the user. From this microcosm of engineering problems, it is evident that while we have algorithms that do amazing things, we still have much ground to cover when it comes to making our algorithms understand what we think while we use our applications.

Being able to work with data accurately is a valuable skill in software. Data science is making significant progress from companies such as Google and Amazon. The science that goes into those algorithms continue to improve at reading our minds from customizing story feeds to being able to prepare an item for shipping before the customer clicks to confirm their order. This project is much simpler than those because it is only trying to understand what the creator intended.

Creating a solution for the problem of uploading data is actually a collection of small steps that chain together when everything is done. The most helpful members in the #programming channel in TechMasters know that breaking a problem into smaller parts is a key concept in coding and often help each other whenever someone is trying to think through something. The first part of the solution would be to read the name and file type that taken in so that the system can check if it can use the information given and if so, to gather what it reads. Everything has to be captured while the user is still using the software so that nothing gets lost. The next task then would be to see if the information is identical to something else already in the system. If it is, then it can treat the new input as an update. If the data proves to be valid and unique, then a new entry is to be created in the system so that it can be processed. Now that we have our input read and the logic has decided what we are doing. The next step is to come up with where to put the data. From here, the fields are parsed and ensure that there is a match for that exact field so that everything shows up in the correct place. A larger amount of data might need other kinds of testing such as evaluating if the data matches the schema.

When testing, we like to see a test fail so that we avoid false positives. As a junior in software development, failing tests is easy. The first attempt at making a solution usually is not the final one. A passing test is optimal since it shows our work is creating value and thus what leads to us improving as developers. Testing can get rather extensive since the “looks good to me” evaluation is rarely enough. Modern development often uses a handful of automated testing besides to ones made by the code creator. There are also entire jobs and departments created with this in mind. In spite of everything we do to prepare, sometimes bugs can sneak through as we see with major updates to our devices. As soon as we think we have covered all aspects, it only takes one human doing something a particular way to find a weakness. A good tester is worth the investment because it keeps such occurrences minimal. The TechMasters chat is often filled with humorous stories on testing adventures to remind us that even when we get frustrated, testing can provide entertainment for those watching us suffer through it.

The past few weeks have been a learning experience for me because it took time for me to understand the problem I am solving. I had to make time to develop logical steps to solving the problem, and then tested out the solution before clearing it for use. It taught me that while coding is challenging, understanding humans from a computer’s perspective is even more of one.

--

--

#TechMasters
#TechMasters

Published in #TechMasters

Connect with fellow Technologists & Founders, Get help with coding problems, Discuss your startup goals and Learn new skills

Christina Smithers
Christina Smithers

Written by Christina Smithers

Programming seito, lover of learning , dog parent, and former NASA adventurer