HN2new | past | comments | ask | show | jobs | submitlogin

Personally I have the impression that many web programmers, especially those who has never worked with anything other than the web, are ignorant of the existence of other branches of programming.

In many aspects programming for the web is simpler. For example the quality requirements for a microwave oven firmware are much higher. You can't easily deploy a hotfix to production after shipping 100k units. I have a feeling that most of complexity in web programming is incidental. It's a result of how poorly the web is designed as a platform. Of course it's very successful commercially but from a technical standpoint it isn't good.

john_b, could you give an advice how to get into aerospace industry? It always seemed very challenging and I'd love to have a chance to work there.



I'm not john_b, but I also work in aerospace.

I've made numerous rebuttals (many right here on HN) to claims that software development is not engineering, citing aerospace examples to the contrary. Often the actual task of programming is as simple (or even simpler) than web programming, but there is a wealth of process that surrounds it, to, as you suggested, make sure that what goes out the door is as correct as possible the first time.

Having also done some web and mobile development on the side, I see software development across a spectrum: ranging from throwaway hacks to cheesy mobile entertainment software to quality mobile entertainment software ... etc ... to embedded medical software and flight control software and such.

While all of these activities are software development, it would be erroneous to classify them all as the same thing. Best practices in one region of the spectrum may well be ludicrous if tried in another region.

How to get into aerospace? Apply for a job? Anyone with a computer science degree or equivalent experience [though the degree may be "required", depending on the company] would qualify for an entry-level position in most aerospace fields that I am familiar with. Another approach, if you're more web savvy, might be to get a job in an aerospace IT department doing internal web development and such, and then transfer out into some other project later.


> I write software that runs on various jet engines. There is a lot of software that goes onto a modern commercial engine, but the general theme of the software I focus on is the modeling of the underlying engine dynamics using sensor data. It's very math- and physics-based. A thorough knowledge of linear algebra, signal processing, regressions, and clustering/neural network algorithms is essential, among other things.

> I've made numerous rebuttals (many right here on HN) to claims that software development is not engineering, citing aerospace examples to the contrary.

I don't get this pattern of argument. If the question is "is programming math" or "is programming engineering," it is not an answer to point out that some programming tasks require engineering or math skills. Doesn't this simply establish that certain problem domains require those skills while others don't? The same pattern of argument could be used, I would think, to "demonstrate" that writing is math or engineering: after all, if you're writing a textbook on engineering you sure need to know something math and engineering. But surely nobody would accept that writing, therefore, IS either of those things. Or pick another social science: knowledge of math sure does help if you want to perform a quantitative sociological study, but I don't think that this makes sociology math.

One might make a somewhat stronger claim about programming: math and engineering skills will make anyone a better programmer. I think this is probably true, to some extent, and this is what is at issue in the articles' debate over the usefulness of mathematical measures of complexity. But this also does not establish that programming "is" either a branch of math or engineering.

Then again, I really have no idea what turns on any of these distinctions or, therefore, why we would be debating them for any reason beyond philosophical curiosity. Isn't it enough to say "no, programming isn't math [or engineering], but like many other disciplines, programming bears some conceptual similarities to math, and a grasp of mathematics [or engineering] will make you a better programmer"?


Then again, I really have no idea ... why we would be debating them for any reason beyond philosophical curiosity.

Indeed. I am not aware of any other field that seems so obsessed with making up comparisons about what it is, is not, or intersects with.


Then you are not aware of very many other fields.


Please feel free to enlighten me! I would genuinely be interested in seeing how we software developers are not alone in this manner.


Well, somewhat notoriously, there has been a rolling debate for better than a century now over whether "higher" sciences simply are complex subdiciplines of "lower" sciences. E.g., are all biologists ultimately just physicists? How about psychologists? Economists? The proper meaning of "are" itself in that sentence also, rightly, is the subject of significant dispute. But the analogy isn't the best since I think that philosophers enjoy that question a lot more than actual scientists.

A more interesting example may be law and economics. There has been a concerted movement by certain economists/legal theorists to show either that law is simply applied (or misapplied) economics, or that it should be. (Here's a taste: http://www.law.berkeley.edu/faculty/cooterr/PDFpapers/stratc...) Again, though, the analogy is imperfect. I don't think that many would claim that law "is" economics, but rather that legal rules are or should be explicable in strictly economic terms. Though maybe this would satisfy some definitions of "is."


Is fashion art or not is a common minor debate in this field. Others I've heard: is physics math? Is math physics?


Pharmacutical research and clinical trials is another field in which software development is more like proper engineering. I worked in a niche that was not very math heavy, but intensely process heavy (out of necessity). First you design a system that can never fail. Then you assume it will fail and design another system to make up for it. Repeat over and over until you reach the desired safety.

I think the dividing line between whether an industry practices programming or engineering is the question "Is it possible people might die as a direct consequence system failure?" Eventually, someone will die and folks will search for answers. When the investigators/plaintiffs come around, you must be able to produce documentation explaining why you thought your system was robust enough to rely on for a safety critical task.

Edit: Perhaps a good rule of thumb to distinguish between programming and engineering is this: are you productively working full-time and producing more than 20-50 lines of high-level language code per day? If yes, you are programming. If no, you are engineering.


I think the dividing line between whether an industry practices programming or engineering is the question "Is it possible people might die as a direct consequence system failure?"

Commercial aviation products are developed according to the requirements of DO-178B (or increasingly, DO-178C) which defines several levels of criticality at which a software component could exist. The most severe indicates that software failure could result in loss of life. The least severe indicates that a software failure wouldn't interrupt anything notable (often used for in-flight entertainment, for example). As you go up the chain, the amount and stringency of process increases.


> Edit: Perhaps a good rule of thumb to distinguish between programming and engineering is this: are you productively working full-time and producing more than 20-50 lines of high-level language code per day? If yes, you are programming. If no, you are engineering.

I like this. As a web developer I am often expected to write closer to an order of magnitude more lines per day than that. But maybe our high level languages aren't high level enough and I'm mostly writing bloat.


I know many engineers who write more than 50 lines of Matlab code per day...


I can't believe that in 2014, web development is still getting this mindless, indiscriminate bashing. The kind of web development you might have seen, or done, may have been simpler, but please don't generalize it to everything. Every field has its low ends and its high ends.

I'm generally speaking a web developer, I work in bioinformatics and I can assure you that what I do is not "simpler" than most other programming, please get over yourself.

Your microwave example actually undermines the point you're trying to make. If microwaves are indeed so far more technically advanced, why then is it so hard to upgrade them? I know it's a stupid question, but so is the point that brought it up.

I've spent 15 years having to justify the worth and quality of my work to non-web developers, a lot of whom I wouldn't even trust with the most basic programming tasks. That included some of my teachers at University (!), who not only undermined me all the way through my dissertation, but actually proceeded to steal my work and use it as a teaching base for years after. This was after they admitted that they could not, in fact, fully understand my work, mostly because they disregarded it for the longest time.

I'm pretty damn proud of being a web developer, and even though I do or have done other kinds of programming, I'll stick to web development, if only to prove to people like you that we, too, are programmers.

Rant over.


>If microwaves are indeed so far more technically advanced, why then is it so hard to upgrade them?

Because they're not connected to the internet. Was this actually a question?


Had you read the sentence that followed right after, you would know that no, it wasn't actually a question...


What does you bioinfomatics code have to do with web programming?

To me it sounds like you have a bioinfo library that you've integrated with a website.

If your bioinfo code is actually mixed in with your web code then this is exactly what real programmers talk about when we trash web programmers.


> To me it sounds like you have a bioinfo library that you've integrated with a website.

??? This is the hostility the above poster commented about; why did you assume that they were using unsafe / uninventive practices? From what? How did you read their development of a complex piece of software as "you made glue code", without external information, or, perhaps, internal bias?

> If your bioinfo code is actually mixed in with your web code then this is exactly what real programmers talk about when we trash web programmers.

Why would you frame a hypothetical situation, unrelated to their comment, as evidence of your beliefs? How does this make sense?


It's pretty clear people use "web programmer" as a synonym for "poor programmer" or "lesser programmer".

Oh, you work on hard problems and complex software? I wouldn't call that web programming!

I promise there are enough hard problems and complexities in the "web" for any programmer in existence to choke on. HTTP/CSS is just a small part of the "web"; it doesn't speak to the complexities of the system behind the curtain.


I'm really not sure how to respond to this.

First of all, the assumptions you've made about what I do and how I do it are false and really, beyond the point of my comment.

Second:

> "[...] real programmers talk about when we trash web programmers"

Has the community fallen so low?


Well, he has a point. From your description, it seems tenuous to classify what you do as 'web programming'. So why don't you describe how your bioinfo work relates to the web part, because all I can think of is that you have software for which you simply have a web frontend.


From his current job's description (Clinical Genomics Database Web Developer) [1,2]:

"The Clinical Genomics Database/Web Developer performs a variety of duties in the development of interactive websites, databases and interactive tools for the interpretation of genetic assays performed in a clinical setting. The Clinical Genomics Database/Web Developer also participates in the development of interactive tools for interpretation of genetic and genomic assays in support of developing high-throughput, clinically accredited pipelines to aid in identifying known variants in hereditary cancers, and in assisting in research towards the development of personalized treatments for other cancers.

Duties/Accountablilties:

1. Development of interactive websites to allow for sample submission, clinical report retrieval, and analysis interpretation.

2. Development of databases for tracking of patient samples, and preparation of reports for Clinical staff and physicians.

3. Development of interactive tools to allow for interpretation of results from genetic and genomic assays.

4. Quality-assurance testing for websites and databases.

5. Development and assessment of bioinformatic tools for detection of genetic variants implicated in oncogenesis."

Quite intense. Far from a mere "presentation layer", it seems in this case the work involves developing actual clinical research tools --which just happen to be web-based.

[1] http://ca.linkedin.com/in/hadrienjouet/

[2] http://bioinformatics.ca/resources/jobs/clinical-genomics-da...


> Personally I have the impression that many web programmers, especially those who has never worked with anything other than the web, are ignorant of the existence of other branches of programming.

I see this again and again in the articles that show up here. Occasionally, mobile apps are acknowledged (although they usually mentioned when the author is trying to make a point about trivial social media apps).

> I have a feeling that most of complexity in web programming is incidental. It's a result of how poorly the web is designed as a platform. Of course it's very successful commercially but from a technical standpoint it isn't good.

It seems that most of the technical challenges that people run into in this field can be divided into two categories:

* Needing to accomplish something difficult by developing, implementing, or otherwise employing novel techniques, algorithms, data structures, automation, etc.

* Needing to hack around poorly designed or obsolete software, such as CSS hacks to get older versions of IE to render a page element correctly.


Regarding getting into the aviation industry:

First, a disclaimer: the aviation industry is very large and surprisingly diverse. Different practices exist in different parts of it (engines, airframers, rotar winged aircraft, etc), so it's hard to give general advice. Everything below is based on my personal experience with only the engine subset of the industry.

At the moment it seems like a pretty good time to get into the industry. Hiring is very cyclical, but the companies I follow are generally hiring now. If you know somebody at the company, or even a contractor with the company, that would help of course. With the larger companies, contractors often do a lot of the actual technical work while the primary company manages various projects and contractors, with some of the more ambitious research-y projects conducted in-house (often by M.S. or PhD holders).

Aerospace companies did not begin as software companies, so even though many of their competitive advantages today depend on the quality of their software, a lot of people at these companies--especially older ones who pursued a management path--will not be able to assess your specific technical capabilities (nor will they try). If you have any code on Github, you can mention it as a plus, but some of the people you talk to won't know what a Github is. Some people will understand how desperately their company needs competent software developers, while others will be more interested in how you solve problems in a general sense, communicate & interact with groups, and function in an environment with complex processes and high standards.

You will generally be expected to have a B.S. degree in some form of engineering, though physics and mathematics majors are also hired in smaller numbers, depending on the company. A graduate degree doesn't hurt either. At my company and the companies I work with, there is currently a bias towards more traditional engineering degrees: mechanical, electrical, obviously aerospace; but CS majors are hired as well. The latter are needed most urgently in my opinion, as the former group often ends up writing software that doesn't really require their skills or background, but which could be better written by someone with a CS background who had a strong interest in the application area.




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

Search: