About the Author
Jane (J.M.) Bedell spent her childhood daydreaming in hayfields, talking to cows, and finding her heroes between the pages of books. She is a full-time writer of historical fiction and nonfiction for children. She received her MFA in creative writing from Hamline University in Minnesota. She lives with her husband and two Siberian huskies in Portland, Oregon. Visit her at JMBedell.com.
Excerpt. © Reprinted by permission. All rights reserved.
So, You Want to Be a Coder?
Entering a Coding Career
Question: How do you define hardware?
ANSWER: IT’S THE PART OF A COMPUTER THAT YOU CAN KICK!
Congratulations! You made an excellent choice. You picked up and opened a book that I hope will introduce you to a career that is exciting and challenging. And well paid too!
When you think about writing code, you probably dream about designing an action-packed video game riddled with warriors, heroes, monsters, or trolls; building a robot that can walk the dog and take out the trash; or developing the machines that will put a human colony on Mars. Any one of these dreams is within your grasp if you decide that becoming a programmer is the right career for you.
Today, a large part of our world is built on code. From the first computers that could add and subtract numbers, to the code that directed the Philae lander to set down on a comet that was flying at eleven thousand miles per hour through space, the people who write computer code are the driving force behind new innovations around the world.
In our internet age, every company from food producers to sportswear manufacturers is a technical company. Businesses need websites to promote their products. Banks need new ways to protect their customers’ business transactions. Governments need help organizing all the information that comes to them each day. And everyone wants their identities protected, their packages delivered fast, and their movies streaming without a glitch.
There are toy race cars that use artificial intelligence to compete without drivers! With no tracks and no one at the controls, these cars sense what your car is doing, think for themselves, and race against you. Anki cofounder and CEO Boris Sofman said about the Drive cars, “They sense the environment five hundred times per second. They have fifty megahertz computers inside of them. They understand where they are and they communicate.”1
What career links all of these needs? You guessed it! Coding. And because the demand for coders is growing fast, there aren’t enough talented, trained people to fill the need. That’s where you fit in. If this is the right career for you, the jobs are out there, waiting to be filled.
Five Traits You Need to Succeed as a Coder
Entering the world of coding begins with an understanding of what it takes to be a coder or computer programmer. As a coder, you should love to solve problems, revel in discovering new ways of doing things, and question everything. You must be a good listener and know how to manage your time. Here are a few important traits that every programmer needs.
If you look at a line of code and are scared because you don’t understand it, have courage! You aren’t alone. Like learning any new language, you start with the basics and build on that knowledge until you can speak and write it fluently. Courage will help you put your fears aside and embrace the trial-and-error process essential to learning any new skill.
You are a creative being. If your creative side leans toward solving problems and looking at things in unique and different ways, programming might be right for you. When writing code, there are many different ways to solve a problem and get the job done. If you love to tackle problems and find solutions, you can use your talent to produce efficient, graceful, and easy-to-maintain programs.
In 1949, Popular Mechanics predicted, “Where a calculator like ENIAC today is equipped with 18,000 vacuum tubes and weighs 30 tons, computers in the future may have only 1,000 vacuum tubes and perhaps weigh only one 1 1/2 tons.”2 What they couldn’t predict was the invention of the transistor and the integrated circuit, which both drastically shrunk the size of a computer.
Make no mistake. You must be able to think logically to work as a coder. Computers follow basic rules of logic in order to do their job, so good coders are logical thinkers. They approach each problem with one thought in mind: there is a solution; I just have to find it. To do that, they break a problem down into smaller pieces, and by following a set of programming rules, they build and rebuild their program until the problem is solved.
10xers is the name given to coding superstars. They know how to write excellent code fast! These superstars can write up to ten times the amount of code as their average coworkers.
Most programmers are engineers at heart. You need to be passionate about building things, taking things apart, questioning processes, and solving problems. Coders’ passion for discovery can leave others bewildered. But it is passion that keeps them working late into the night and on weekends while others play golf or stroll along the beach. Without passion, the process of learning and writing code could become overwhelming.
Patience is what is needed to overcome the difficulty of learning a computer language. If you aren’t patient, your desire to learn will quickly fade. Like learning to play a musical instrument or write a good story, patience is necessary for success. Even when passion fades and frustration sets in, patience will carry you through.
Computer, the Word
In 1613, the word computer entered the English lexicon. It was borrowed from the French word compute, which in turn was borrowed from the Latin word computare, which means “to count, sum up; to reckon.”
Originally, the word computer was used to describe a person who worked with numbers. Then, sometime in the late 1800s, machines began to do the number-crunching work faster and more accurately than any person. The word quickly moved from describing a person to describing a machine.
Charles Babbage (1791–1871), Father of Computing
Charles Babbage was born in England on December 26, 1791. When Charles was around eight years old, he became deathly ill with a fever. To aid in his recovery, his parents sent him to study in southern England, but his continuing poor health forced him to return home to be privately tutored.
Under the guidance of his tutors, Babbage studied many subjects, including continental mathematics and algebra. In 1811, he entered Trinity College. While at Trinity, he cofounded the Analytical Society, which promoted continental mathematics and worked to steer the college away from teaching Newtonian mathematics, which was the popular theory at the time.
In 1816, he was elected into the Royal Society of London, a society for those who contributed to the improvement of knowledge in mathematics, engineering science, and medical science. In 1820, he helped found the Royal Astronomical Society.
Babbage’s Difference Engine, invented in 1821, was the first machine that could perform simple mathematical tasks with speed and accuracy. With the help of government funding, he built the machine, and when it was finished, it became the first successful automatic calculator. Unfortunately, his funding ended in 1832, and a decade later, the government ended the project.
After the Difference Engine, Babbage devoted his time and his fortune to designing an even better machine, the Analytical Engine. This machine could perform not just one mathematical task, but any kind of mathematical calculation. The Analytical Engine was never completed, but it had elements in common with today’s computers.
From 1828 to 1839, Babbage was the Lucasian Chair of Mathematics at the University of Cambridge. He helped establish the Royal Statistical Society and lobbied the government and influential members of society to invest in the study of mathematics and science.
Today, little remains of Babbage’s prototype computing machines. In 1991, the Science Museum in London finished construction of Difference Engine No. 2, using Babbage’s original designs. The device, on display at the museum, consists of four thousand parts and weighs over three metric tons.
Name: Kelly Clarke
Job: Software engineer, NASA Jet Propulsion Laboratory
When did you first become interested in writing computer code and decide to make it the focus of your career?
In the seventh grade. My homeroom classroom had computers in it—which was a new thing in the late 1980s. I was able to sign up for an elective course that taught Logo (a computer language), and I remember working on a program to write my name on the screen in cursive. Later, I chose to be bused across town to William C. Overfelt High School in San Jose because it had a magnet program using computers. I had to convince my parents to let me go, but it turned out that the school had amazing teachers, some I’m still friends with today. I learned BASIC and Pascal. At UC Berkeley, I chose to major in computer science for my bachelor’s. I used Assembly, C, C++, and the like. I graduated in 1996 during the technology boom and then went to work for Hewlett-Packard.
What education/work path did you take to get to your current position at NASA?
I was working at Hewlett-Packard’s spin-off, Agilent Technologies, when, in 2000, my husband heard about a career fair at the Jet Propulsion Laboratory (JPL). A section manager at the laboratory circulated my résumé, and I got several interviews.
What helped me the most, besides the section manager passing out my résumé, was my answer to one question asked at the career fair: What is your favorite programming language? My answer was that it depended entirely on the task at hand. If it was a short little tool to solve a simple problem, using a shell [batch file script] or Perl is going to be easier. If it’s a large team effort for a large tool that would be maintained for years, C++ or Java would be easier.
Languages can be taught. The things that can’t be taught as easily are the ability to think and a person’s attitude.
What does an average workday look like for you?
At HP/Agilent, it was almost all software coding, with occasional meetings.
It has varied over my career at JPL. When I first started, I did a little bit of user support and troubleshooting, but most of my time was spent designing, coding, or talking to people about coding (from peer reviews to design reviews to testing to development techniques). Not long after I started, I became the cognizant engineer over the Mission Control and Analysis subsystem—which had many tools in it written in various languages. Being the cognizant engineer meant the buck stopped with me—I had to answer any and all questions about this area at any time.
However, I found over time I gravitated toward the operations side, actually using the software in the environments they were designed for. I just found it more fun. As that happened, I did less coding and more figuring out what is actually needed by the end users and communicating that to the software developers.
Now I’m splitting my job between two hats, one is a manager, where I spend most of my time in meetings. Since it involves areas such as ground software test, integration, and deployment, there are lots of people I need to bring together, and technical and process items to work and evolve. The software is meant to be used by all of NASA’s robotic missions, not just JPL’s.
I’m leaving this manager role and transitioning to a role with the Europa mission. Europa is an icy moon of Jupiter which may harbor life. I’m leading the Europa ground-system software team and will be working with others to ensure we develop all the software here on Earth that we will need to communicate to and from the spacecraft and provide tools for the spacecraft team to analyze all the data it sends.
What was your involvement in the Cassini-Huygens mission?
I started working on Cassini-Huygens my first day at JPL in 2000. Cassini had already been launched in 1997, and at the end of December 2000, it flew by Jupiter. I also supported Cassini in July 2004 when it entered Saturn’s orbit. The Hugyen’s probe separated from Cassini on December 25, 2004, and Hugyen’s landed January 14, 2005.
Even though I supported those mission-critical activities, I did more behind-the-scenes support. I helped the mission’s test facilities out—Integration Test Laboratory—where command sequences were sent to be verified prior to going to the real spacecraft. I adapted software, wrote small software tools, hooked up existing tools, automated software. All of it centered on uplinking commands to the test spacecraft or downlinking data from it.
Explain the Mars Exploration Rover and your involvement with it.
I joined the Mars Exploration Rovers in 2003, after they had launched and were en route to Mars. They were named Spirit and Opportunity. I worked to help ensure that the data could be seen from the spacecraft by all the team members.
When Spirit landed on January 4, 2004, I was working in the room right behind the cameras filming the event. We went through the “seven minutes of terror,” waiting for the spacecraft to land. It was intense! For the actual event, I went into the camera room and jumped up and down with the team, and came right back out to get back to work.
A few days before Opportunity was set to land, Spirit had an anomaly. I was on shift that night, when Spirit stopped talking back to Earth. It took some time, but we figured out that she wasn’t going to sleep, and she was wasting her battery. We were at risk of losing the mission. Eventually, the team managed to get her to a safe state from which she could be recovered.
Opportunity landed January 25, 2004. Each rover was supposed to last on Mars for ninety sols (ninety Martian days), which was their primary mission. It was thought that they may go a little longer, but eventually their solar panels would be covered in dust, and there would not be enough power to keep the instruments and the rovers themselves warm and alive (Mars is very cold!). Luckily, the Martian winds put dust on the solar panels, but they also take it off. This was a happy surprise to everyone. Spirit was stuck with wheel issues, and we could not get her into a good position for the solar arrays (sun and wind). She was last heard from on March 22, 2010—about six years longer than we expected her to work. Opportunity is still going today (May 1, 2015) with over four thousand sols on Mars and over a marathon in driving.
For Spirit and Opportunity, I did primarily operations—using the software others had created and running it, troubleshooting issues, even performing as a help desk for data- and software-related issues.
I stopped working on Spirit and Opportunity not long after ninety sols for a few reasons. The team had been working around the clock (twenty-four hours a day, seven days a week) for the entire ninety sols. The team went slowly to more human-friendly Earth hours. Our team worked around the clock on Earth time; most other teams actually shifted with Mars time, which meant coming in about forty minutes later each day. So they needed fewer people. And I needed to get back to Cassini-Huygens be...
"About this title" may belong to another edition of this title.