Xiaoyun Yang

Xiaoyun Yang

Naval Reactors Engineer by day, Entrepreneur by night
Naval Reactors
Washington, DC, United States
Xiaoyun Yang
Ask a Question:
Required field
Please note
The engineers who take the time to respond to student questions on this forum are often very busy and may not respond to some questions, particularly those that have been answered elsewhere. Please be sure to review previous questions and answers to see if your question may have already been addressed.
Enter the code shown: (only upper case)

I studied Electrical and Computer Engineering at Carnegie Mellon on a Navy ROTC scholarship, got both my Bachelors and Masters in ECE in 5 years before commissioning as an officer in the Navy with an assignment at Naval Reactors at Washington DC. I work on reactor plant components that go into nuclear submarines and aircraft carriers and my day job requires knowledge of electrical engineering, mechanical engineering, and reactor engineering. I do a lot of reading and writing of technical documents. When I'm not at work, I work on bootstrapping my tech startup, Looseleaf.us, writing software for the web application, designing a logo and infographics to convey what my product does, and going to meetups and tech conferences to network with other entrepreneurs and designers.
  • I am willing to be contacted by educators for possible speaking engagements in schools or in after school programs or summer camps.
Answers by Xiaoyun Yang

Hey Aalaya,

From my experience, the best way to learn programming is by making a game. I learned programming by making various arcade games of increasing complexity (start with Snake, then Tetris, then Pacman etc). I think learning it this way is both fun and instructional as you know exactly what the end product should look like and you can see if something is out of order.

Problem solving is the most important quality to possess.  The second most important skill is knowing how to leverage the online community to acquire solutions, i.e., googling for tutorials, stackoverflow Q&A, or Github Repository sample code. There are endless things to learn in terms of computers and software, the best way to succeed in this field is to focus on learning enough to solve the problem at hand, which sometimes require deep understanding in the theory.  Unless your problem is very esoteric, you can always find a TON of examples online. I always start with an example of something similar, study the code (use google for specific questions), then modify the example little by little until it turns into exactly what I need.

If that's not your learning style, you could take an online course from Coursera in beginner programming; the class includes a bunch of videos and homework problems for you to solve.  I liked those courses that gives you a way to upload your homework assignments and give you actually feedback. 

The only programming book I ever read is Functional Programming in Scala, which is a very good theory book about a new paradigm of programming that I wanted to learn on my own. I really like the book, especially the theory and the examples, but I think it may not be a good place to start for someone who is beginning. I think the best way to learn programming is to just start making something. 

As for the language, I suggest either Python or Javascript because they are both really popular languages and requires minimal setup for you to begin right away.

Good luck in your journey and feel free to message me anytime if you need anything!



Great question. The software industry evolves rapidly and requires constant learning of new tools and software engineering concepts (Moore's law). A passion for learning new things is definitely not a good trait to have if you want to keep up-to-date with the latest technology. Software engineers need to be resourceful and know when to leverage an existing technology stack and when it's necessary to create something new. A really nice thing about software engineering is that if you have a good idea, you can implement it right away with no up-front cost, which implies that if you have the initiative, confidence, and perseverance, you can turn an idea into reality without anyone's permission or help.  Software engineers operate under a lot of autonomy so being self-motivated is really important. This is contrasted by the other type of engineering (nuclear and system engineering) that I'm also involved with, which requires a tremendous amount of teamwork and engineering management to get things done right.


Hi Jaren,

I can speak to how to become an engineer. As for being a female engineer, you will become good friends with a lot of guys.

In high school, I took a lot of AP classes that I knew are required for any engineering degree, e.g., AP physics BC, AP Calculus C, and AP Chemistry.  Through taking AP Chem, I realized that I did not like chemistry so Chemical Engineering and Material Science was out of the question. I also was in a FIRST Robotics Team in high school so that got me interested in mechanical engineering and electrical engineering. 

I said in my college application that I wanted to be a mechE but halfway through my freshman year, I switched to Electrical and Computer Engineering (ECE) because I took the intro to ECE and intro to mechE classes and decided I liked ECE better. Taking these AP classes in high school really freed up my freshman year to take these intro to engineering classes that were needed to help me find my passion. 

It was hard for me to know what type of engineer I wanted to be in college if I hadn't taken the AP classes and intro engineering classes early on.  Thus it's very important that you start getting experiences in engineering early on to zero in on what engineering you are truly interest in. All engineering requires problem solving, but it is what type of problems you are solving and how you solving them that differ. Find your passion first, because becoming an engineer requires a tremendous amount of focus and dedication to master the skills, it would be hard to do it without the passion.


Hi Rosemaricel,

I work at Naval Reactors, which designs, support, and maintain reactor systems that go into power submarines and aircraft carriers. writing, reading, and talking to people is about 99% of what I do. We have a huge cross-organizational team of experts, each is an expert in a particular area, and it's my job to review everybody's work in form of reports and write a shorter report summarizing what it says, with some additional insights from my experiences working with another group.

The style of writing needs to be both concise and informative. It's almost like a history paper but with more technical content in it.

I did not have to demonstrate my reading, writing abilities at all to get the job. The focus was technical proficiency and demonstration that you have good thinking patterns during the interviews. I had to solve some math, physics, and engineering problems on paper during the interview, and explain to the interviewer how I derived the solution.

I think that writing is really just an extension of your mind, so if you are knowledgable and able to communicate verbally, that's all it takes to be a good technical writer.