Job Responsibilities
Design, develop, code, and test software for avionics systems. I
am on a pseudo R&D project, so we don't spend much time on design
and development... a couple of hours a week...I use a whiteboard,
our group is transitioning to a modeling tool, but for now I am
suffering. I spend the other 30+ hours writing code in a
standard programmer's editor, and the other few hours creating
and running unit drivers. When we do integration on the "bench",
I spend approximately 16 or so hours testing with the hardware,
and then the remaining hours during the week bug-fixing my code.
|
Job Requirements
I am an anomaly. I graduated from the U.S. Naval Academy, served
a five year career in the Navy, and worked as a manufacturing
supervisor in other industries before getting involved in DoD
systems and software development. My undergraduate degree is in
Mathematics with emphasis in Computer Science, and I have a
Master's in Computer Science as well. Having said that, software
engineering is all about solving puzzles. You have to like
solving puzzles, and have a strong personality for problem
solving and analyzing everything. It's the personality that
makes a good software engineer, not so much the schools you went
to. IMHO, the best software engineers have undergraduate degrees
in physics, electrical engineering, and mathematics -- not
computer science. The comp sci graduates may know the details of
the languages, but they lack the analytical thinking skills and
math background the others I mentioned have. I went through a
pretty tough undergrad program, and the professors didn't hold
your hand. My master's program was more or less the things that
the average Comp Sci major gets -- I didn't take those classes
when I was an undergrad, so I took them later on. I plan on
continuing my education, i.e. taking courses on things that will
make me a better software engineer. I like coding.
|
Uppers
coding, coding, coding -- feel under-utilized if i am not writing code...
There is always a good feeling when you get your code to work. It's the
intellectual stimulation and satisfying intellectual curiosity that is most
rewarding. Learning while you are working!
|
Downers
I hate waiting around, poorly planned projects. Not being given
specific tasks, because of poorly understood requirements. Not
having the tool set available to do the job. Using old
technology, old toolsets. Dealing with managers who don't do
their homework, and who don't really understand what the team is
supposed to be building.
|
Lifestyle
Typically a 40 hour work week when everything goes well. Some folks work
weekends every now and again. I have never worked a weekend that I can remember.
Sometimes you travel and go into the field for engineering testing which is
interesting, because you see how the customer will use your product. I always
dress down in jeans, t-shirts, sneakers, sweatshirts, never shorts and sandals,
etc. I never really wear appropriate office attire, but I have been working in a
pretty relaxed environment for quite some time. We have some luncheons for folks
retiring or when a flight test goes well. I have never been to an after hours
event, except for beers and dinner with my colleagues when I am on travel. Bear
in mind good software engineers are analytical, intellectual, and definitely not
the greatest communicators in the world. As a whole we are deep down inside
geeks. Many are athletic, and into sports, but not so much in an extroverted
social way. Many separate work from their social life. As a whole, if you are
not interested in ladder climbing, and like to spend time creating the product --
it's great work, because you only have to manage yourself. You go home at the
end of the day without bringing home your work. There is always plenty of work
with a good company, so nobody feels obligated to bring it home...if you did, you
could be working 24/7/365...your work is never really "done".
|
Compensation
Most good software engineers are not really motivated by salary,
they are motivated by the intellectual stimualtion they receive
while trying to solve "the puzzle" at hand. However, that
doesn't mean a software engineer will be loyal to the end. We
are like software engineering prostitutes -- we generally sell
out to the highest bidder, with good "toys to play with" (system
to work on, problem to solve), and an easy-going environment that
doesn't have too much stress. Starting salary varies; however,
with business trying to lower salaries to the McDonald's level by
outsourcing to places like India -- one saving grace is defense
work (U.S. citizens only). We generally don't get stock options,
unless you work for a really risky start up. I like to stay with
the top of the line, big companies, where benefits are standard,
and you might get a bonus every now and again if you work on a
good project team that does something great. The bottom line in
this profession is...if you can write good code, and do good
work, you get compensated fairly -- if you aren't, maybe you
should pick another company, or another line of work. There are
some, who are successful at BS-ing their way to an outlandish
salary, but you can spot them easily, because they don't write
much code, and they generally don't last more than a year with
the team or the company. Bottom line: companies collude to set
salaries for a given region by job title, so you generally get
what your neighbor is getting who works for a different company,
same job, similar industry.
|
Advice to Jobseekers
Number 1: You have to like solving puzzles. Must have that "Mr.
Fix-it" personality. Must be the type that analyzes everything.
Number 2: Must like working by yourself without someone standing
over your shoulder and coaching you. Must be able to solve
problems by yourself without having the group involved every step
of the way.
Number 3: Must be the type who likes learning on the job.
Intellectually curious.
|
|