|
Principal Software Engineer |
Q:
What is your job title?
A: Principal Software Engineer
top
Q:
Please give a brief description of your job, specifying what you do
each day.
A: In my current job, I write software for computers that make the
internet work. The software that I write sets up a path through the
network for two computers to send data between them. At the source
computer, we determine the location of the destination computer and
set up the best path to it for the amount and type of data that will
be passed. For example, during a phone call, words pass as very
little data that must move quickly. If you downloaded a picture,
there would be a lot of data but you would be willing to wait a few
seconds to see it.
Right now, I am working on adding a feature to the box. I work with
one other engineer. First, we look at the computers in the network
and figure out what needs to happen at each computer for the feature
to work correctly. When we understand that, we figure out what needs
to happen in a single computer. We each write half of the software,
so we have to agree how our software will talk to each other's. When
we agree, we write a document so other people can read about what we
intend to do. Then they can make suggestions or point out issues we
may have missed.
After our design has been reviewed, we write the software. We
individually test and debug our code and then put it together and
test again. When we think we've gotten all the bugs out and it works
the way it should, we pass the code on to SQA (Software Quality
Assurance). Their job is to test each individual feature and the box
as an entire unit. We fix any bugs that they find.
top
Q:
What have you been working on or teaching lately?
A: Lately I have been doing a lot of scalability work. The computer
has two primary resources, CPU and memory which you can really think
of as time and space. I have been trying to make the computer do more
work in less time. There are two ways to do this. You can eliminate
unnecessary work and/or do the necessary work faster.
Computers do many, many searches. Searching for something can take a
great deal of time if you don't think about how you do it. Suppose I
asked you to point out your best friend in a school that has 1200
kids . If your whole school was in one line, it would take you quite
a while to find her. If each class was in its own line, you would
find her faster. If each homeroom was in its own line, you'd find her
even faster. But if there were only 20 kids in the school, searching
for her in a line of the whole school would be fast enough. If there
were 300 kids in her class but they stood in order of height,
shortest to tallest, you would find her fairly quickly too.
I make searches faster. I try to guess how many items will exist when
we do the search. I make an appropriate number of lines to search.
Sometimes, I put the items in order so they will be faster to find.
Sometimes, I eliminate the search completely by calling the thing I'm
looking for by a name that points to it. It's fun to try to figure
out where the computer is wasting time and how to make it work
faster.
top
Q:
What most interest you in your job?
A: My favorite parts of my job are figuring out what needs to be done
and how to do it. This is the design phase. My next favorite part is
figuring out why things are broken and how to fix them. This is the
debug phase. This is like doing puzzles. It's really fun.
top
Q:
What do you like the least about your job?
A: My least favorite parts of my job is writing specifications and
writing code. In both cases, I've already decided how to do it and it
just has to be done. At least, after I write the code, I get to debug
it!
top
Q:
What has your career path been?
A: I started in Network Management, working on a computer that
controls other computers in the network. I enjoyed that because I got
a good overview of how the network worked. Then I moved to
programming the computers that move the data through the network.
While I enjoyed that, I realized that I was very interested in how
the computers talk to each other. Their conversations are called
protocols. I took a job where I wrote protocol software that other
companies would license and use in their products. Companies license
software because it takes too long to write all the software from
scratch and test it.
After writing protocol software for a few years, I started do
protocol design work. People from many different companies come
together and design protocols so their companies' products can talk
to each other and pass data. When new features are added to the
network, a protocol must define how the computers will say they are
capable of supporting the new feature and that they are going to use
the new feature. It is fun and challenging work. You get to work with
very smart people and think about how to best solve new problems.
My current job is at a startup company and I am writing software
again. All my friends were making a lot of money at startup companies
so I wanted to see if I could too.
top
Q:
Was there any person who inspired you to do what you're doing today?
A: I have always sought jobs with people I admired and from whom I
could learn.
top
Q:
What attracted you to this career when you were in high school?
A: The summer after my senior year in highschool, I worked at a stock
brokerage firm. The manager of the office suggested that, since I
liked math so much, I would probably like computers. It seemed like a
good idea so I took a programming class the first semester I was in
college. I am so glad that I did because I loved it and continued
taking computer classes every semester until I graduated.
top
Q:
What careers in your field do you see as promising for the future?
A: I think networking will continue to be important. The internet is
going everywhere and will be used for more and more functions. The
computer will become an "always on" device in your house and other
devices in your home will connect to it. Wireless
networking and security will be important as well as
applications.
top
Q:
What advice do you have for young women who want to work in your
field someday?
A: Expect that you will succeed. You can do anything and everything
you want to do if you are willing to do the work. Seek mentors. It is
always good to work with people who know more than you. They can
provide you with information and, more importantly, teach you how to
think. In turn, if you have an opportunity to teach or mentor others,
take it.
top
|
|
|
|