Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Now this is interesting. When I read about awesome brogrammers working on the next hip web app with a cutesy hipster name, my eyes glaze over. But you guys are really ENGINEERS, and doing something with massive value.

I am a bit surprised that coders can actually get a job at such a place, I would have thought you only hired like aerodynamic physics professors or whatever. Maybe you could go into more detail about what you do at work and what kind of people get hired? :)



Software has a huge presence in aerospace! But, programming an avionics system (or even less important support systems) is nothing like building a web application.


Would like to know more about the differences.

Maybe we can start a new meme. Whenever someone talks about their super-duper awesome social ajaxy photo-sharing app, we can snarkily respond "well, it isn't exactly rocket programming..." :)


"Would like to know more about the differences."

Avionics software development is primarily concerned with software that is designed and developed to operate in an embedded system [1]. There is also a focus on real-time performance [2] with regard to the software's operation and integration in such an environment.

The target language may be C, C++ or assembly language, although other languages are used.

Depending on the application, an on-board front-end may or may not be utilized. For example, an unmanned rocket would not contain a front-end; rather, operating parameters would be monitored remotely.

On the other hand, a modern, manned aircraft or spacecraft instrument panel would provide electronic displays and controls necessary for communicating system status to the pilot(s), as well as for accepting input from the pilot(s) for operation and flight.

[1] http://en.wikipedia.org/wiki/Embedded_system

[2] http://en.wikipedia.org/wiki/Real-time_computing


Does software for remote monitoring of operating parameters really share nothing in common with a high-performance web app?


The software process that develops the applications are very different. An avionics system must be able to operate autonomously, must have robust fault detection and tolerance, and must interact directly with many hardware components.

Web apps tend to layer on top of other systems and can reuse a lot of code. When I worked on avionics software we had to develop everything, from the hardware drivers for memory modules to the drivers for the display and all of the controlling systems for each of them. A high-performance web app just needs to perform well enough - at some point you can add more hardware. In an avionics platform you have specific weight, cooling, and power requirements that limit your total hardware capability. They are really very different.


A good analogy would be the difference between being a brief writer for a law firm and being a fiction author - you have "writing" in common (hopefully "good writing" at that) but the intricacies of each domain make it appreciably different.

Web application programming relies on a plethora of "soft" technologies (xhtml/html5, css, javascript, sql/nosql, php/python/ruby/perl, frameworks for all of it, a lot of 3rd part libraries outside of the frameworks, etc...) - embedded programming is much more low level in comparison and comes with many different kinds of problems.


If you wnat to learn how far one could go for safe programming (computers) check out this presentation (from a german hacker Congress)

http://media.koeln.ccc.de/browse/congress/2010/27c3-4123-en-...


> But you guys are really ENGINEERS, and doing something with massive value.

Now you know the pain of legit engineers who share their title with Java cargo-culters and Rails bros.


What's a good standard to aim for, for those people who don't wish to be counted among boilerplate hacks and beer-swilling hipsters?

Learn algos really well, I guess? Hack on C/C++?


In my mind, it's not so much the knowledge or tools that separates the two groups as it is the process. Do you have a thorough assessment/validation system? Do you consciously know what the risks and possible failure modes in your systems are? What are the fallback systems, and have you formally thought of what should and will happen when those fail? Is your code reviewed by someone other than its author? Is your code maintainable and understandable for others? What records from construction and production are you keeping and why?

You can do engineering in basic VBScript and you can do hacks in horrible but algorithmically amazing C++.

A lot of this effort doesn't make sense in a casual web environment. If you're building an app with ads aiming to flip in a couple of years - or even to run it as lifestyle - you might not be very troubled when one of your features has a glitch and you don't necessarily have to have planned for HE.net going down or looked for Django exploits. There isn't anything necessarily wrong with that, it's just not engineering.


This is an amazing and inspirational pursuit, but someone has to come out and defend web development here. Yeah, it may not take an exorbitant amount of resources or talent to get started with web dev, but certainly amazing value has been created within companies like Google and within the aggregate of the web. This draws directly from this low barrier to entry. If it were as easy and lucrative to start a rocket business, we'd have lots of crappy rocket engineering but we'd also be a lot further towards colonizing other planets.


A robotics friend of mine went to SpaceX a couple years ago. I understand he's working in computer vision for autonomous docking.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: