Is engineering worth it still?

DrGoogle, Do you mean I should ask the students (children) instead of their parents (because this is a Parent Forum)?

Some of us programmers would get satisfaction a little bit when we could write a few lines of code to achieve something not very trivial. Here, the function prob() consists of 5 lines of Python code.

I do not think my child would know it (he won’t let me teach him…I have only successfully taught him LOGO programming language and C/C++ when he still lived with us. We did not go very far when I tried to coach him on Z80 and M6800 assembly even though we had acquired all the “age appropriate” learning materials from ebay at that time – this parent was sometimes bit too “greedy/aggressive” in this endeavor,) But he is not a EEer or CSer like I am (or was, because I am about to retire.)

@mcat2,

I’m 18 and have been on a lot of forums with people my age, some older, looking for a starting language. C++ and Java are almost always recommended. Python is usually thrown under the bus.

Personally, I’m using the Eclipse IDE to learn Java because that’s what my college teaches all CS majors.

Stugace, Python is the recommended language to start. Second is Java. C++ is an awful language to start.
https://gasstationwithoutpumps.■■■■■■■■■■■■■/2013/03/21/why-python-first/

@stugace,

I forgot who said this: Python is a “snake oil.” But it is fun to play if you just want to have some fun with it (like in the first programming course for the freshman students.)

Assuming that you are good at either C** or Java, are you be able to do the same in 5 lines of source code using either of the languages?

Granted, there is some truth in the saying: Python is a snake oil. (It seems Google buys into this snake oil to a certain extent. Its GO language is even less popular.)

The getter/setter in Java are tedious to type. Those :: between a class name and its member method looks unpleasant and sore on the eyes also.

I think most modern languages are good enough to use for their intended purposes.(Python is more a personal language than a project-wise language, to be sure.)

I used to be trained in Java using some very early release of SDK from Sun Microsystem. Boy…in those years, the tool sucks (not really reliable.) I guess they solved the problem long ago though.

BTW, I learned the programming in the very old school way - from the book “the Art of Computer Programming” (I think) by D.E. Knuth. Its code is written in English and MIX assembly language. But later the professor at our school forced us to study a research version, the 6th Edition, of Unix source code line by line. (All UCs used to do this – they first let the students learn a toy Unix-like software first and then a real Unix OS code.) Ken Thomson (who created Unix, with Denis Richie who invented C) had put in “goto” statements in his OS’s scheduler. Ken gave us the “grep” Unix utility command too. That code used to be a part of his “editor” software called QED (Quick Editor.)

@NJSue yes, employers do not want to train

Actually, there is no way I can train an engineer in math, physics,computers, their specialty, and solving problems and equations in less than 4 years, so that is why I want them to pay their own way to get that education and the BS in engineering. I can teach them technical specifics, have them do some core work, and since they have computer skills, they can teach themselves the software. That’s what’s worth 80K.

If I had similarly technical or math intensive work, but maybe not specific to one specific engineering discipline, hire an engineer who can train themselves. If I need someone to manage or support or sell to engineers or write proposals for engineering work, hire an engineer with writing skills, people skills and/or management skills.

If I want someone to write articles for the Atlantic on non-technical topics or I want someone to manage non-technical people or work in a non-technical field or I can use someone much cheaper from a non-high paying field, will hire one of those people.

Right now, we need a lot of highly skilled technical people. We really need cheap highly skilled technical people, partially because companies want cheap products and high profit margins. We need some new skills sets and some / many / most experienced people just don’t want to learn Python or CAD or CFD. So there is a demand for $80 K new hires (senior top-level engineers at those companies probably make twice that).

If we either produce too many of these, or bring in lots of highly skilled immigrants, or continue to find ways to have one engineer do 2 or 5x the work … won’t be as good in 20 years.

Careers do have an element of guessing in them. Find a major with a career path that interests you, do well in that career, and be prepared to retool if that field gets slow. 5-10 years in is a good time to assess whether your field really has long term prospects. You can either broaden or move to a nearby field, easier if you do not want say 120 or 160.

I only know Java. I’m definitely not a professional since I taught myself 2 months ago and haven’t done much coding since then.

Right now, I’m just making a small transition into Java since I haven’t even started my freshman year of college. The hardest part about coding in any language for me is how slow it is. I’d like to make applications with designs and such on them, but I know I have to go through the mud first.

@PickOne1 , an honest and valid appraisal.

I just looked up who said “Python is a snake oil.” It is Larry Wall, who, as I heard, is a linguistic turned into the creator of the Perl.

Surely there are some cult-like followers for many computer languages.

When I looked up the “snake oil” comment, I bumped into this somewhat funny comments about several languages – unfortunately he did not comment on Java (likely because Java was not a mainstream language back then as it is today.)

Here is his comments or reflections about all these languages: (Apparently, he does not buy into both the Perl and Python.)

His comment: Python is “computer science R us” is hilarious. There is some truth in it (I agree with DrGoogle that it is no harm to use Python as the very first introductory computer language - it is somewhat rich in “computer science-y” flavors. Just do not become overzealous and be its cult member after you have learned it as your first “tutorial/inspiration” language because it has its weakness outside its main application.)

"Scheme (MIT, is that you? Maybe CMU is similar in this regard), like other langs with a cult, sold me a lie that lasted 10 years. Similarly, Haskell f���ed me with a lure of “no assignment”. You can try to learn the lang for years and all you’ll learn is that there’s something called currying and monad.

In 2005, i spent a year to learn Python. Perl is known for its intentional egregious lies, lead by the demagogue Larry Wall. It fell apart unable to sustain its “post-modernistic” sophistry. To me, Python have always seemed a antidote to Perl, until you walked in. You learned that the community is also culty, and is into certain grand visions on beauty & elegance with its increasingly complex syntax soup with backward incompatible python 3.0. The python f���heads sport the air of “computer science R us”, but their intelligence is about the same level of Perl mongers. (Schemers and Haskell book authors at least know what they are talking about. They are just ignorant outside of academia.)

I think my story can teach tech geekers something. In my experience, the langs that are truely a joy to learn and use, are those sans a cult. Mathematica, javascript , PHP, are all extremely a joy to use. Anything you want to do or learn how to do, in so far that the lang is suitable, can be done quickly. Their docs are to the point. And today i have to include OCaml. It’s not about whether the lang is functional, or whether the lang is elegant, or what theoretical advantage it has. Also, lang of strong academic background such as Scheme and Haskell are likely to stay forever there, regardless what is the technical nature of the lang. The background of the community, makes half what the language is."

@NJSue

The implication that employers “don’t have to train” engineering grads is entirely inconsistent with my experience. YMMV, I guess.

@mcat2

My university historically used Scheme for the first CS-major programming course, but I believe they are now using Python. There is an option to start with the intro C++/Java courses (mostly targeting engineers) and then transition in, for those changing major to CS. My background is EE, so I can’t comment further on these classes. My first college programming course began in Assembly and then introduced C.

@noimagination, Thanks. It gives me some glimpse on how EEers/CSers are educated in this subject today.

I vaguely remember that, in our old days, besides the basic programming classes, for CS majors, the core courses on the “practical” side are: Data Structure, Assembly Language (yes, there was a specific course for learning this - it goes deeper or more extensive than what a typical computer engineering major would learn), Survey of Programming Languages, System Programming (covers all the basic software development tools and system software systems: assembler, linker, macro processors, a preliminary overview of Operating Systems, etc.), Computer Architecture, Operating Systems and maybe compilers. There is the theory side of required courses too.

The way we learned Computer Architecture (sometimes called Computer Organization) is interesting. We learned some semi-formal hardware description language, and then this language is used to describe the computer hardware in a precise and concrete way. In one textbook, it uses an “array” language adapted from APL (called AHPL, H stands fir hardware.) But another popular language is CDL (computer design language.) The actions of each register-to-register or memory-to-register transfers are precisely specified, and the clock phases when these transfers happen are specified too. Later in the industry, I once ran into a hardware description language (proprietary to IBM, not Verilog), which is very similar to this CDL language, except that it could be synthesized into actual hardware circuits.

I’ve learned Perl but only just enough to be dangerous. I’ve heard at kid #2 college, Haskell that was introduced in the Automata theory class caused a lot of kids trouble, lots of them didn’t pass the class, like up to 30% with D, F and W.
I know most languages in some of your posts including Fortran, Basic, Pascal, Ada, Lisp, C++, C, Java. But no Python, nor Scheme. But I was an EE major so I was not suppose to know a lot of languages. Of course, assembly language was taught in MicroComputer class. Btw, when I was in engineering school, I called Intel and got a few 8085 parts for free if I remember the part correctly, not AMD 2900.

On the topic of whether engineering is worth it, I have to say that I am not sure that many high school students completely understand how much more work engineering is compared to many other majors.

Re: “Fortran, Basic, Pascal, Ada, Lisp, C++, C, Java.”

These languages are for us old timers. Maybe Java is a slightly newer one. Scheme is relatively old (older than Java) I think, but it is likely not as old as Lisp. (Maybe we could add Cobol and PL/1 into the mix of very “old” languages too.) Scheme seems to have a reputation of being used at an engineering school at a more “elite” level. It usually means that the professors there do not think they have to teach their top students computer languages popular in the “trade”. A case in point: At one time, a coworker who was from CMU (computer engineering, not CS) said that a few top companies “complained” to the school that their students when just graduated do not know any “practical” language or operating system (at that time, CMU had their own homegrown operating system. This system was what their students used and learned.

I tried to pick up Lisp because it looked cool to me at that time but I did not get very far (no immediate use for me then). So I am not on the pure computer science side. (In the old time, the pure computer science guys are supposed to be immersed in Lisp.)

Intel 8085 is a microprocessor and AMD 2900 is like a building block that an EEer could use to build, say, a specialized (for particular application) processor. I vaguely remember there are two 2900-series chips: one for your CPU’s data pa. It is more complicated than the “TTL logic gates”.

I know more high level CS than low level CS, I have a certificate in AI from UCLA back in the 80s. I thought it was going to be a big trend, a little too early, that’s where I learned Lisp.

My knowledge about AI is almost zero - if my chance-encounter with the minimax algorithm in my advanced algorithm design and analysis course does not count as a part of AI.

Some time ago, a friend of mine gave me a Knight-Tour problem to solve using computer programming (My circle of friends in this field occasionally have some fun to do nerdy things like this so that our old brains will not age too fast.) I still remember some algorithm from that course I took back in the graduate school days and used it to solve it. (Solving it means to write a working program which will print out the correct answer.) I think any CS junior year student would be able to write such a program. (But their brains are sharper than mine so they could write it in a shorter time – this is why the tech companies like these young software engineers/programmers. LOL.)

But one professor who was in this field when he was young happened to be in my MS thesis defense committee. I think he co-authored a popular graduate level book:

http://www.abebooks.com/products/isbn/9780121703509/16019733645

(I remembered him because he gave me the best “grade” among the three professors in that committee. My thesis was about some new algorithm. He stopped doing AI by that time though. He also wrote short fictions when he was old. A very smart and interesting person. He is very good/kind to all of his students.)

In total first year compensation, I’ve heard over 150K for Silicon Valley companies. Pay is less in other locations. I’d say 90K sounds about average for the Midwest.

I work for a company in Silicon Valley and my compensation is much lower than 150K.

Conclusion: I must be a “bad” engineer that is of little value to the company. LOL.

I actually know a PhD with a whole life of experience under his belt. He told me (before he left the workforce/retire) his compensation when he retired not long ago (also in SV) was only 140K.

If someone graduates from their state flagship in Arizona with a BA in CS, is it realistic to expect 90k salary?

Another question: How are CS people paid? Is it on an hourly basis? For example, $22 an hour.

In my life, I have always been paid by a semi-monthly salary, twice a month. (I almost always worked for a large company, except for my current one though.)

Typically salaried.

It probably wouldn’t be a job in Arizona but it should be realistic as long as they are in the top half or so of their class. As I said, 90K sounds about average in the Midwest. So about half will make less and about half will make more in first year compensation.

It’s not uncommon for new people to make more than people who’ve been with the company a long time.

I know Google a couple years ago was starting at 150K total first year compensation (100K salary plus all the signing bonus and stock options and such added up to about 50K more). Twitter and Facebook are slightly higher.

Edit:

Looked at the most recent data from Michigan. http://career.engin.umich.edu/wp-content/uploads/sites/30/2014/12/annualreport.pdf (page 8)

85K average starting salary for CS. So total first year compensation average is probably about 100K. A fair bit higher in SV, slightly higher in Seattle and Austin, and slightly lower in the Chicago/Midwest and NYC.