35

Soooo I think I have finally come to the point that I may have to create a YouTube channel, to teach software engineering from the ground up... and teach it the way the universities and everyone else should be teaching it, so that they have a solid foundation.... throwing hello world, and loops and variables at folks out of the box without any of the environment context or low level embedded register, even logic gate understanding

That lack of understanding is why, soooo many college students and younger folks, are actually pretty shitty engineers. Everything is high level languages and theoretical concepts to them. Nothing practical, that’s why there’s sooo many python and java developers that can’t for the life of them understand memory management, low level hardware interfacing etc, because the colleges don’t teach it the way it use to be taught.

I seriously fear 30 years from now or sooner when there are few embedded engineers only left till retirement, as without those folks the whole pyramid of electronics falls to pieces.

Java, C#, python, all that shit don’t run on the bare metal... there’s this magical layer of C, and assembler that does all the work just so folks can abstract their thoughts.

Either 1 of two situations will happen.. price of electronics will rise because the embedded guys are few and far between therefore salaries skyrocket... OR everything starts running shit like java on the metal, where there are a over abundance of developers, their salaries will be low because there are soo many but the processing power, space, and energy needed to run java natively causes electronics cost to increase

but regardless 30 years from now if those script kiddies are building everything I fear it cuz there’s gonna be memory leaks, and overflow issues everywhere.. shit be blowing up more than 4th of July.. lol

Soooo in effort to prevent that and keep the embedded engineers up, or atleast properly educate the script kiddies, I’m gonna make that YouTube channel.. 1 maybe 2 videos a week, 1-2 hours sessions each.. starting at the fucken ground and building up.

Comments
  • 2
    I'm currently half way through my first semester at University and we've already covered manual floating point operations, logic gates, registers, ect. And this isn't even the first time I hear about this stuff, in school we've even worked with Verilog.

    Meanwhile programming is explained extremely slowly, I think the last topic was "methods".
  • 10
    give a shout once you started that channel, I'll definitely subscribe!
  • 1
    @R01101111bert if you are in Electrical Engineering, maybe computer engineering what you said makes total sense.

    For comp sci everyone is retarded not because they can’t learn.. but because the way the profs teach it.. if they started comp sci off like EE and CE.. I think then broke away.. I believe we’d have better software engineers.
  • 2
    It's even worse than you think because the idiotic suits throw in ageism. It doesn't matter what skills you have, once you reach 40 or LATEST 50, you're unemployable in dev. And that's already the less insane ends of the industry because the "innovative" teams in Sillygone Valley don't have anyone over 30. The shortage in companies will hit in 15-20 years before there is actual shortage on the market. Suits will rather have their projects fail than rethink their hiring policies.

    On top of that, the innovation cycles are ever shorter, which forces devs to mediocrity at best because all they can do is muddle through somehow. In embedded, you'll see that with replacing C by C++ where nobody actually understands the language AND the hardware. Those few who really do are too expensive anyway and will work as highly paid consultants to clean up projects in urgent mess state.
  • 1
    @Fast-Nop THANK YOU!!!! so glad to see people understanding this issue and seeing what is going on. The good thing about the auto industry here in Michigan all the embedded systems are built using C .. not C++ or atleast every project and company I’ve worked with were using C ... and my current company, we have a dev that is retiring in April, age 65. Worked for the company for 40 something years.. as a software developer. It’s sad to see that knowelge being lost. But the issue we have right now is we can’t find a replacement for him.. only ones we can find are Indians who got their degree in Indiana, and claim to be experts in vision and embedded systems. But in interviews we can tell they are all theoretical and only used python or higher languages.. ORRRR the few that we call “integrators” that only know how to use third party APIs and libraries and configure them to work.. not understanding any of the shit that makes things work.
  • 0
    @QuanticoCEO yeah I bet - especially with CS folks, there is a shortage of candidates who can do that stuff. That's why the embedded domain is mostly taken by EE people who also understand the schematics and hardware datasheets. I think you know the 0x10 embedded C interview questions by Nigel Jones?
  • 1
    @Fast-Nop exactly, and I don’t recall the questions based on the reference. But yeah more and more are EE folks doing the job.
  • 1
    The Coming Software Apocalypse. I see it all crashing down soon. The "pyramid of electronics" is soooo true. "The Powers That Be" have no fucking clue about this "pyramid" and how much work is involved. 20 years ago, none of this existed. WE BUILT IT. WE KNOW IT. THEY DO NOT.
  • 0
    I've tracked most of this back to NAZI Politics in the USA, as the ROOT CAUSE ANALYSIS. Control Freak Ignorant Power Hungry Greedy Assholes, taking over companies, instituting policy.

    The golden age of anarchy on the internet... don't you miss how fucking amazing it was BEFORE government put down its iron fist?
  • 2
    Tag me when you create it.
  • 1
    Thank you guys for sharing the same opinion and thoughts as me.. for the longest time I thought I was the only one thinking and seeing this..

    Definitely will make this channel.. i may not be able to prevent the pyramid from collapsing.. but atleast I tried to properly educate those who are lost. Or have no experience at all...

    The issue will be proving to those that high level language is not everything and there’s a damn good reason why C still exists and hasn’t died out or became obsolete like many professors have proclaimed .. yes I’ve heard them say in class.. A few years back.. I was dumbfounded and everyone just accepted it as truth.

    I also blame, a few companies too, Oracle for donating to universities to get them to structure the courses around java.. causing a huge influx of only java developers, and I blame google and Apple, regarding the mobile phones and the market place... I don’t know which of the two to blame directly so I’ll blame both... you get those kids thinking they can link buttons to code and 10 mins later you got an app for 99 cents and boom 10 years the market is flooded with 70-85% inexperienced, narcissistic, arrogant.. basically children... and not enough jobs specific for them.. and the jobs that are open.. the “kids” can’t do.

    And the thing no one is looking at is ... how fucken long is this mobile app market bubble gonna last before it bursts, and all these small App startups close up.. then we will be in deeper shit sorting thru 10x resumes we have now. As they try to find work but slowly realize their skills arnt useful in the real world.. in the virtual phone and internet land yeah maybe.. but not in the world where you have to work with physical things, and safety systems are in play.
  • 6
    I don't think people need to know low level details. At least not to start with. If you start lesson 101 with logic gates and assembly you'll send them running for the hills.

    Some people will think "good. if they can't handle electrons they're not cut out for this anyway" and that elitist attitude is another factor keeping people out of this industry.

    I'm not saying never get to the low level stuff. I'm saying start with the high level. Let them write stuff they can actually use as fast as possible. That keeps them interested. Then, when they understand high level programming, break out C and get them understanding pointers and memory management. Then they'll understand what they're doing when they're throwing around references and creating new objects.

    Then... If they're interested, they can get into embedded stuff. Not everyone needs to write embedded stuff. It's a specialisation. People do need to understand how memory and hardware works in theory though.

    Walk before you run
  • 0
    Well, don't worry too much, embedded programming is for nerds and there will always be some nerds available to keep the world going 😀.
  • 0
    @QuanticoCEO I'm worried about the simple minded linear extrapolation thinking. We had assembly, then we moved (mostly) to C even in embedded, so a truckload of more abstractions away from the dirty hardware must be even much better, right? Wrong, because every optimisation algorithm tells you that the steps get smaller if you get closer to the optimum, not bigger.

    There's nothing wrong with having concepts and ideas since symbolic thinking is a key part of human intelligence, but the big trap is to mix up the resulting map with the territory! The cultural issue, not only seen in tech, is that the mindset shifts away from seeing the abstractions as approximations of chaotic reality to seeing reality as imperfect implementation of the abstractions. Once that happens, you're in for a serious bruising.
  • 1
    @M3m35terJ05h no I’m sorry man, but your type of thinking is what has gotten us into this mess... this liberal college idea of not wanting to scare people off... if your scarring people off your doing it wrong period..
  • 1
    @M3m35terJ05h To say one does not need to understand low level, is to admit they are content with essentially being an integrator, rather than innovator. I should be able to walk up to any programmer and say take this board and program it to pulse or say to a programmer I want these two boards to communicate to each other.
    It should be a trivial task... the issue arises when I ask someone who wasn’t taught a good foundation.. those who only do high level, would respond to the question with, what’s the liberay calls or where’s the API to blink the led.. etc. without those the high level folks would not be able to solve the issue..
    I’ve also noticed it’s easy to go from a low level language to a high level language.. but nearly impossible to go from high level to low level without the proper foundation!
    Foundation is key to the success of a programmer.. they are problem solvers and should be able to solve any problem. The low level guys are clearly better problem solvers because they are conscious and aware of the code behind the source... they can problem solve beyond the IDE debugger which most don’t even use IDEs.. they make their own tools to solve issues..
    It’s not elites when it’s based on facts ... without the embedded guys.. in the phones the app devs are developing on won’t work.. cars won’t work. Cell tower won’t work.. TVs won’t work.. nothing will freaking work. The embedded guys are the guys that everyone forgets about because they sooo high on abstraction they can’t even see or perceive the hardware layer. But without them there is nothing.
    Programming at its simplest form is just applying voltage or not applying voltage to inputs of transistors and acting apon the output.
    Doesn’t matter if your doing apps or firmware everyone should know how.
  • 7
    No. You shouldn't be able to take an arbitrary piece of hardware and expect a random programmer to be able to do anything with it. You don't take an embedded developer and expect them to write a react app in a week. People specialise. You're being elitist and you're acting like people outside your nieche are inferior. Have you even created a windows GUI app? How about Android? What about a web application? A 3d game? You assume all this stuff is beneath you but if you ever actually have to do it you'll find your hardware knowledge won't help you as much as you think.

    Again, I'm not arguing for treating computers like magic. I'm just arguing that it's ok to start high level. And not everyone needs to go as low as you think.

    Just applying voltage... Are you one of those people that codes with a magnetised needle and a steady hand?
  • 1
    @M3m35terJ05h actually I have done all those things except 3D game.

    It’s not elitist ... it’s reality.. code is code.. just difference in syntax... people over complicate things too much.. thus why people are scared of embedded and memory.

    And yeah embedded are better.. they have to be conscious of code size, memory, etc .. they do everything from scratch.. not implementing code they have no idea how it works...

    High level folks don’t care how big their shit is, don’t care what size their ints are and floats.. as long as it holds the value they need they don’t care.

    And yes it’s just applying voltage and not applying voltage across a transistor... that’s what the damn processor on every device is doing from java to python.. even html... in the end.. it all boils down to ram registers or some type of memory registers being set or cleared... which is really voltage going across tiny transistors in and, or configured gates.

    It’s easier to split a problem up thinknabot it from a small task like embedded and work up. And they would be all round better developers and know more about high level of they did low level .. cuz everything will have came full circle and started makeing sense like the whole ahhhh haaaa moment would hit them.
  • 3
    Most people get over this "just syntax" attitude shortly after uni. I don't know how you got through making an Android app and managed to keep it. It's all well and good to know java syntax or how to blink an LED on an Arduino but it won't give the slightest clue about how to write hello world in android. The android framework is more complex than java itself
  • 1
    Ill follow.
  • 1
  • 1
    Here is an old-but-gold piece by Joel Spolsky, co-founder of Stackoverflow:

    https://joelonsoftware.com/2002/11/...

    If you don't know the foundation behind abstractions, i.e. what is really going on behind the scenes, you'll be fucked everytime an abstraction leaks. Even worse, you can't foresee such a leak, and it will bite you in the middle of a project.

    Here another interesting read by Spolsky, on programming basics and why programmers must know them:

    https://joelonsoftware.com/2001/12/...

    Folks who don't know that will often code n^2 algorithms left and right without even noticing.
  • 1
    @Fast-Nop great articles!
  • 1
    @M3m35terJ05h lmfaoooo that Android api is harder than java itself... well maybe if people understood lowlevel ... MAYBE the fucken api wouldn’t be such a complex concept.

    Regardless your type of attitude is exactly why we have so many “script kiddies” and code by the IDE.. it’s no longer a crutch to them.. the literally cannot code without the IDE support... those folks arnt programmers imo... they are just integrators.. period.
  • 3
    I'm sorry how the fuck does knowing what a nand gate is help with the android lifecycle? Are you seriously suggesting an embedded developer wouldn't need to look that up? I'm calling bs on your android experience
  • 0
    @M3m35terJ05h of course an embedded developer would need to look shitup.. we leave reference manuals and data sheets open all day long.. we look everything up... it’s no different. Android is easy.. all the hard shit is done, you literally just implement the API.. the api is where all the magic happens... same with iOS... I did iOS dev and Android development from 2009-2015.. the shit ain’t that hard.. that’s why there’s 100s of thousands of developers doing the same shit... and millions of articles, tutorials and books on the subject. And with the IDE.. most of the hard shit is automated with the intellisense . And do even get me ranting about the new Xamarin and all the code once deploy multi device systems ... biggest failure since inventing flash
  • 0
    E@M3m35terJ05h everything a embedded dev would manually do and do from scratch is taken care of with the higher level languages thru APIs and libraries.... that’s why it’s easy... the embedded devs understand what’s going on behind the scenes where to a only high level guy .. behind the scenes it all just magic going on.
  • 0
    Ok but you need to know the API to implement it. That right there is more to remember than java syntax. And knowing low level shit won't help you with that. If you take an embedded developer and put them to work on android, it'll be a while before they're useful.

    And like you said all the low level stuff on Android is done already. It literally doesn't matter whether you know how to do it or not because there's no way you can do it anyway. That's all locked down
  • 1
    @M3m35terJ05h Android also has the C/C++ NDK where you can mostly treat Android like Linux or any other Posix system. Useful for parts where raw performance actually matters, but not recommended for GUI coding.
  • 0
    @M3m35terJ05h I’m sorry but you arnt getting the point of how everything ties together... obviously knowing and gates and the behind the scenes won’t directly help ... but in directly will... for example.. the embedded developer writes everything from scratch.. therefore they understand on a fundamental level.. what needs to be done say to send data for remote comm.. knowing that everything you need is in the APIs.. the embedded developer opens up the api manual and searches the methods that are close to what he would be doing if he wrote the driver..

    the embedded guy knows what needs to be done... he just needs to look for the method that does the step or thing he needs done..

    That’s how I and the other embedded guys did it.. it was like perfect.. sitting around a conference room table saying we need this this and this.. and 30sec searches later. Boom yep it’s this method and this method and this method. Boom done

    The mobile API documentation is great, for iOS and Android .. for someone who knows what he needs todo but don’t know which methods simple search for what needs to be done results in basically how todo it.
  • 1
    @QuanticoCEO You don't need to have written a network interface driver to understand what's involved in TCP connection and what the overhead is and how it behaves when something's wrong.

    I'm not against knowing any of that. I'm against the notion that the only real programmers are the ones who write network drivers. I'm against the notion that only way to understand memory management is to create your own CPU from scratch. Like, sure, you'll understand memory management if you do that but it's not the only way. And for a lot of people it's not the best way
  • 0
    @M3m35terJ05h I disagree you just arnt seeing the point. Somehow you think knowing 30% of what is going on is sufficient to be a programmer.

    I guess the only way to agree is there’s differences between what I can developers/programmers And software engineers. One group implements and integrates. The other invents, and understands things on a deeper level and builds the things the other group uses.

    Without the one group the other group can’t function or exist.
  • 1
    No you're not getting it. Have you noticed this whole thread you've been putting other categories of developer down? Because I have. It's pretty clear at this point this thread is just an excuse to stroke your ego. I should've noticed earlier but I guess that was back when I only understood 30% of what was going on. I'm gonna call it a night
  • 1
    @M3m35terJ05h please read

    https://joelonsoftware.com/2001/12/...

    maybe you will understand mine and others standpoint

    Best Quote "I think that some of the biggest mistakes people make even at the highest architectural levels come from having a weak or broken understanding of a few simple things at the very lowest levels. You’ve built a marvelous palace but the foundation is a mess. Instead of a nice cement slab, you’ve got rubble down there. So the palace looks nice but occasionally the bathtub slides across the bathroom floor and you have no idea what’s going on."
  • 0
    @M3m35terJ05h ohhh and for your reference ... the author of the articles is he CEO of StackOverflow .. so that should mean something lol
  • 0
    certain paths in electronics engineering are, not even slowly, taking the place of computer science for that set of skills. at least in italy and australia, i can tell you that what they teach is becoming broader and broader, and is quite solid (as solid as a uni can be, anyway...:-S )

    it may be not so appealing to new students... but that's another story
  • 1
    @stillwater if anything is toxic, it's you putting up a stupid strawman to beat. It was NOT "everything should be done low level". Read the OP again.
  • 0
    @QuanticoCEO do you have to be an expert in the process of converting copper ore to wire to know how to design a headlight assembly? What about knowing exactly how the car is wired? Couldn't you just assume that you will get voltage to the bulb when needed?

    At some point you are going to have to rely on some external component when building something sufficiently complex. The article you cited aknowledges that. Are all abstractions leaky? Perhaps but some definitely more than others. I can't recall the last time Booth's algorithm failed me when multiplying ints in java so I can safely say I don't really need to know that to be a good java dev.

    If you think that more people should be embedded systems engineers that's a different topic. But claiming that everyone needs a great understanding of how the "metal" works is misleading. I value knowledge on all fronts but from personal experience I can tell you that knowing business logic is much more important/practical where I work.
  • 2
    @kotman12 understanding how the actual machine works does NOT imply doing everything yourself. It seems that already this basic point is lost mostly on people who don't have that kind of understanding.

    If you fail to understand what exactly has been abstracted, you have no way of even making sure whether you're using it right. Something as innocent as looping through a 2D array the right or the wrong way can have drastic performance impact.

    Or take sorting. Sure, should work equivalently. But depending on what exactly is behind the template, the application can still behave differently on each platform. That's fun if something like that is buried deep within some framework.

    Or spawning objects on the heap in loops because the coder doesn't understand what actually happens.

    But well, I guess all those annoyingly sluggish Java applications must come from somewhere - and it isn't Java itself.
  • 1
    @Fast-Nop In the industry I work the average java dev knows mem management enough to know where an object is constructed. Maybe I just haven't had as bad of an experience as you.

    Not to mention that when java abstracts this away, it does a pretty thorough job. You already provided a good example of the JVM's brilliance, namely knowing where to allocate a locally scoped object. Also GC is reasonably well documented and has pretty granular logging capabilities. Most of these tools are readily used by java devs I've encountered.

    Having said all that, I can also think of a 1000 things that go beyond strict computer knowledge that I need to have a mastery of to do my job. The engineering field I work in is in charge of developing business logic which requires expert level knowledge to properly implement. Saying one thing is universally more important than another is just wrong.
  • 1
    @kotman12 well of course you need domain knowledge to implement business logic. But that doesn't mean the basics don't have to be in place, like understanding how a computer works.

    Java applications are often slow like shit because the coders think they don't really have to understand a computer. It's not really a language problem, it's a problem of the ecosystem. It has become worse since universities opted to teach Java because languages with pointers and shit would be "too hard":

    https://joelonsoftware.com/2005/12/...

    Now, just to make it clear, that doesn't mean you should actually implement e.g. software for financial transactions in C or C++. That would probably be a bad idea.
  • 1
Add Comment