Why Most Programmers DON'T Last
18:56
Пікірлер
@Sociology_Tube
@Sociology_Tube 8 сағат бұрын
You gotta keep it obscure enough so someone else can not replace you.
@TheRealXartaX
@TheRealXartaX 8 сағат бұрын
Chat GPT is actually one of the things this is great at solving. Specifically the "is there a way to do this in my language?" part. Instead of spending an eternity going through docs etc, ask someone who already has gone through everything. Then once it has pointed out what it is, you can go read that doc specifically.
@vNCAwizard
@vNCAwizard 9 сағат бұрын
You tube wants to play games. Ok. Here is another try. I'll just break up the comment into several in a row. Fuck KZbin; stay out of my way! I agree with you that management has a hard time dealing with problems. Their point is risk, and they have no crystal ball respecting that issue. So, they flail. The smart consultant knows how to wield that flailing, to the point of getting their managers to accordingly march. Yet, it is true that telling management about problems can be itself problematic. I want to share one story from my career, and I will be rather specific, to include the name of the associated client: Aerojet, now known as Aerojet Rocketdyne, at their facility which at the time (oh, circa 1997) was located very near Sacramento California. The project is called MaxPac, and it is a rather innovative Pilot Ejection Seat. The control (read mother board) for MaxPac was designed and built by Southwest Research Institute, located in San Antonio Texas. I had the wondrous task of integrating software, some of my design, some from other programmers, that governed operation of MaxPac. The fun was finding the error. I am a programmer, and even though I work in embedded environments that are rather close to the supporting hardware (where I might often expect failures in that hardware), it is nevertheless true that a programmer has an inherent right to expect that the hardware performs as advertised, else you cannot write software, since there is no identifiable target. Sure, when you work in a hardware development environment, you might encounter situations in which the hardware fails, and so the software cannot possibly correctly operate. But, those you expect. For MaxPac, there were interesting extenuating circumstances. Here is where the story gets juicy. You see, I was a member of the fifth team to work on MaxPac. Clearly, Aerojet had a spotty commitment to MaxPac, and so that project obtained support in bits and pieces. But, this was the fifth team. How many problems had been fixed along the way; who knew? Yet, at the fifth time into the problem, a programmer could reasonably expect that the hardware would work, and that the missing component was the part for which the programmer had been hired: software. The primary task for me was to avoid hysteresis; powerful motors with the life of an individual subject to how my software controlled those motors. I take pride (much to the annoyance of the Lord) in being mindful of the harm that my software might bring. I wrote a very simple triggering mechanism, that brought into rigidly regular execution the software that computed change to motor operation; you need pressure for thrust, and you need thrust for the travel vector. That means balancing exhaust and burn rate. The software that my little routine called is known as the Burn Rate software. My solution? The use of a interrupt service routine that was triggered at a regular rate by an on-board clock, and that software (an Interrupt Service Routine) did only one thing: call the Burn Rate. Well, actually, it also implemented a time-of-flight data collection scheme, but that is not really relevant to the present discussion; I discovered that there was plenty of time after the Burn Rate software to implement a sort of Flight Data Recorder.
@vNCAwizard
@vNCAwizard 9 сағат бұрын
Hard to have hysteresis when the software that governs Burn Rate is executed in a dead-nuts fashion of timing; exactly every 2.5 milliseconds. Excellent solution, in my view. As to the issue of communications with management, we are getting there. Just a little more setup is necessary. When testing my solution, it came to pass that we members of the team visited a physical site where motors were actually allowed to burn. Our team was not then at the burn stage but the support environment (measurements, timing, recording of events) was quite well suited to integration testing (my favorite laboratory). This is where the fun began. You see, when doing most of the development work, I was seated in a well air conditioned laboratory; not higher than 70F. The test site was not air conditioned, and we were working in the Summer, in Sacramento. It gets hot in Sacramento. As it happened, the motherboard did not like those Sacramento test facility temperatures. 100F is common there. While testing the motherboard (and my integrated software) at the test site, it would happen that the system as a whole would fail. What few facilities were then implemented by SWRI and their contractors gave me messages like "address exception" and the like. Now, I admit that I was then using the Microsoft C compiler (was it 5.1, 5.4? some version suitable to the development of commercial software), and so it might have been possible that compiler generated machine code would elicit an "address exception." Yet, I highly doubted this point. The nature of the errors was always obscure, and never seemed to occur at the same address. Really, not at the same address? Software does not work this way. Software is rigidly deterministic, and so errors tend to occur in the same location. How did I know that the error moved, in terms of associated memory address? Easy. Very easy. Take an oscilloscope and attach its input to a output of a "pintle" (a kind of valve used to control thrust vectors in rocket motors) and adjust the position of the pintle in software. That way, you know where in the software that the error occurs. You get a graph, every 2.5 milliseconds, and when that graph differs, you have located an error in software, since errors cause the machine to halt. The graphs changed, for every run. The errors never occurred in the same place in memory. This technique is called "Picket Fencing" the putting of change in some physical feature as a means to show execution progress in software. What really sold me on the notion that the problem was in hardware, and not software, was the magical moment when the report error was not "address exception" but "opcode exception." I admit to being biased against anything associated with Bill Gates; does he have a backdoor in Windows? Yet, it seems reasonable to me to expect that his C compiler would not produce code that includes problematic instruction; most specifically, opcode exceptions in target processors. One point I have not yet mentioned is the derision visited upon my person because "Your software is the problem." The classic battle between hardware and software; who is at fault? Here is where the juice begins to flow uncontrollably. When I got the "opcode exception" that is when Aerojet management decided to actually get involved. There was a team meeting between those of Aerojet working on MaxPac, and those of Southwest Research Institute working on MaxPac. During that telephone speaker call, I lost all further patience. I challenged the SWRI personnel about their choice to both mutilate the microprocessor (and Intel 386EX) such that I could not attach In-Circuit Emulation/Monitoring hardware (would have been very useful for debugging this kind of problem), and a number of other things. Indeed, it got very hot, very fast. The man who hired me for this position, Fred Perz (for whom I have great admiration) later noted that from his experience, he had never seen somebody get that angry that fast in his life, as I had apparently demonstrated with the SWRI manager who was speaking to me. This is the point that you are discussing, Mr. Healthy Software Developer. You choose to be meek, and I choose to throw it in the face of management.
@vNCAwizard
@vNCAwizard 9 сағат бұрын
This brought a group of three Aerojet team members (myself, Fred, and the author of the Burn Rate) to visit the SWRI site in San Antonio, Texas. As I recall, we were there for three days. The details of the three days are not important; only the last few hours are important. First, the SWRI facility was well air conditioned; this is not a trivial matter. In those last few hours, before we Aerojet team members would have of situation been required to go back home with our tails between our legs, came redemption. For all the quality engineers (certainly, highly paid personnel), they could not duplicate the errors that we Aerojet team members (i.e., me) observed on operation of the hardware. Yet, from the next floor up (the area we were in was an atrium, with two or more floors of offices looking into that atrium) came a technician, who was interested in the work we were doing. The SWRI engineers told this female technician about the problem they were looking for, and how they had not found it. Her response? She pushed on one part of that motherboard, and the problem immediately manifest. That part was the one that had three big lugs, and controlled the voltage and current that was supplied to the 80386EX microprocessor. The problem is that the 80386EX expects that voltage and current supplies are absolutely accurate, else the process does not properly operate. Such details are the province of hardware, not software. So much for the quality of hardware engineers who worked on the MaxPac project. I won that argument. And, I was a bastard about it. All because I had been subjected to six months of ridicule over the quality of my software. Aerojet personnel demeaned me because their supplier, SWRI, sold them shit. Keep that in mind if you ever decide to work for either company. So, what was the problem? A voltage/current control regulator. This device had three lugs; big lugs. Not like connections you find on an integrated circuit. Each was surrounded by glass dielectric. The problem with the MaxPac controls is that this part had been inserted into the motherboard, and then bent over, in order to account for height requirements, such that the whole seat, control, rocket motors, etc, could fit in the airplane cockpit. And there is the rub. If you are not very careful, when you bend over the lugs on such a part, you break the dielectric. You break the dielectric, you change the electronic characteristics of the part, and since it governs microprocessor operations, no wonder you experience errors like "opcode exception." All of this is to say that ultimately, what I as a programmer found turned out to be a manufacturing problem, and if I had not been willing to place my balls on the table, this problem would likely never have been corrected. Did I ever receive so much as a thank you from Aerojet management? No. And is that surprising? No. So, in the end, and to your point, be careful of who you work for, when you are a programmer, because your clients have no idea what it is that you do, and so they will blame you for every problem that comes up. When you find them, just solve the problems, build a report about that problem and how you solved/fixed it, and wait until someone else notices that something works when it did not previously work. Then, show your report, and tender your resignation. They will beg you to stay, and that is when you should tell them of all their shortcomings and why you would be an idiot to continue to work for them. That is the only leverage that an employee has.
@JamesFadeley
@JamesFadeley 9 сағат бұрын
For the last point, I would factor even more time not just for documentation but also for other developers to review the code during the PR, and ESPECIALLY for writing unit test. A common problem I see is that in the early days of a project, developers can totally ignore unit and integration testing in the desperate scramble to get things done. And once testing is ignored, managers will dodge, duck, dip, dive and dodge to avoid paying that tech debt. Do. Not. Let. Them.
@vNCAwizard
@vNCAwizard 9 сағат бұрын
KZbin does not want to hear the truth about MaxPac.
@tropicten
@tropicten 9 сағат бұрын
Unfortunately this often doesn't happen quickly enough. Our very charming director, who was also a complete sociopath, managed to survive for years avoiding accountability. The people who worked for him paid dearly.
@needsmoretacos4807
@needsmoretacos4807 10 сағат бұрын
This hurt because it was so real. Im still learning the part about not overcommunicating issues with structure and organization lol
@tropicten
@tropicten 10 сағат бұрын
A good manager that you’ve built a level of trust with will see the problems for what they are, unforeseen complications. They’re also going to work with you to help remove roadblocks and put you in a position to succeed. If that level of trust doesn’t exist, they definitely could see it as an excuse. If you have an adversarial relationship with your manager, they’ll use it an ammo against you. It also puts you in a no win situation. If you take the higher risk tasks, you’ll be blamed if they don’t go well. If you don’t, they’ll see it as not applying yourself.
@Fab807
@Fab807 11 сағат бұрын
When someone used a pattern in my team, they would present it. The background of the choice, how it works and how it helped with their assignment.
@pontusdorsay4673
@pontusdorsay4673 11 сағат бұрын
In uninnovative work environments, it's taboo to bring up and talk about problems, and you get treated as you're complaining. In innovative work environments, the company welcome criticism, talk openly about problems and how to solve them. Unfortunately, many companies have uninnovative work environments. But this is not something to strive for, nor accept.. Aim to work in a company that has a innovative work culture where one can bring up and talk about problemes openly, without being treated as you are complaining.
@finwo
@finwo 11 сағат бұрын
If the manager requires the extra communication of me sending them status updates, even if they receive automated updates from tickets they're subscribed on, they're not fit to be a manager. Got plenty of them fired clarifying that to upper management
@1____-____1
@1____-____1 12 сағат бұрын
I love this channel, but I hate it, because I'm being confronted with the truth...
@HealthyDev
@HealthyDev 11 сағат бұрын
It's not always fun to share this stuff. I appreciate you being open.
@RobertWGreaves
@RobertWGreaves 13 сағат бұрын
I went back to college just shy of 30 years of age to change careers. I graduated at the top of my class as a computer programmer. My first job after graduating was rewriting a bill of materials / inventory program that was very buggy in an engineering department. They had been having troubles with the program for years, it was useable but often crashed. They had even hired a few people to fix it. They could not. I was able to rewrite the program without it ever having to be down in a matter of three months. The Head engineering department was bragging to his father who actually worked in finance about what I had done. His father had me immediately transferred to the finance department. I had my hands tied. The father was not a computer programmer and didn’t really understand many things, but I was unable to write any code that he didn’t understand. It was amazing just how much time was wasted writing extremely inefficient code. I wasn’t working directly with the money I was instead working on programs that were assessing the production going on the factory floor. So it’s not as if mishandling any money was going to be a problem. One day, a secretary offered me a doughnut as I was passing by a conference room as a conference was breaking up. One of the bigwigs complained to personnel that a lonely programmer was eating a doughnut from the conference room. I ended up in the personnel office having to explain myself. I quit. That was too petty. My boss was disappointed and asked me to return, I refused. But he recommended me to other employers because he really did think I was good at what I did. My next job was working for a financial investment firm and within a few months I was made the head of data processing. There came a day when they asked me to write a program that would interface with our banks and move money around. This was in the days before it was common to do online banking. The specific movements they were asking me to do struck me as being difficult to audit and potentially a problem, so I wrote a letter to the securities and exchange commission asking them if they had guidelines on audit trails for unregistered securities. The SEC was very helpful in sending me a great deal of literature for free. Upon reading it, it was clear to me that what they had asked me to do was illegal. And so I let the president of the company know, who was my immediate boss. He was livid and arguing with me that it wasn’t illegal. I resigned. A few months later, the FBI and the SEC raided that office on an issue they were investigating from before I was hired. To make a long story short many of them went to jail. Not me. That was when I realized that this job involved solving problems that meant absolutely nothing to me personally. And so I never did it again. I became an office manager in a print shop where the entire process was documented on computers. We got Apple computers and PCs talking to each other freely at a time when computer magazines were predicting it would soon be possible. We were able to do quotes based on the actual time and costs we were logging in our data base. We could use a quote program connected to our productivity data base and churn out complex accurate quotes in just about 5 to 20 minutes. Unfortunately the owner died and everything went belly up. The executors hired me to sell all the assets which took me about 3 months. After that, I became a full-time musician. That was what I wanted to do from the very start, but my parents warned me. It would not be a good idea. The last 15 years of my work before retiring was as a college professor teaching sound engineering. I wish I had just gone into the music industry from the very start.
@eldri7ch
@eldri7ch 13 сағат бұрын
I literally had to watch someone at my prior company get all of the glory for sub-standard code and for under-delivering and over-promising. I constantly pointed out that their code was inefficient and produced erroneous results and the company eventually phased me out. So wild watching it happen but this video is 100% correct. It happened to me.
@HealthyDev
@HealthyDev 11 сағат бұрын
I'm so sorry to hear this. It never works well to call other people out in most situations in my experience. Instead, I do a good job and try to improve my perception and build confidence.
@BeyondTheSide
@BeyondTheSide 15 сағат бұрын
annnnd this is why i stopped working in a company. you are right of course. i just hate living this life.
@GoryWory
@GoryWory 16 сағат бұрын
This channel is pure gold, literally EVERY word is straight forward truth. I plan to do programing for 8 more years, get basic condition for retirement (I am from Eastern Europe), sell some small inheritance and live like a human being with the money I earned.
@AdrianTache
@AdrianTache 16 сағат бұрын
I think as an industry we need to get together to start demanding more maturity from managers instead of just keeping our heads down and trying to keep them happy while feeling miserable ourselves. Think about it like this: if this were conventional engineering, would we still want to avoid communicating problems we notice? Would we still want to keep it to ourselves if people didn't do their job? And would we be responsible for reporting status, or would there be a clear plan for building things? We need more training and accountability for managers, which will inevitably also result in improvements to their subordinates.
@HealthyDev
@HealthyDev 11 сағат бұрын
I'm not so sure it's any better in other engineering fields, unfortunately. Much of this is just the nature of management and relationships.
@purdysanchez
@purdysanchez 16 сағат бұрын
Nice guitar riff.
@Lil-Jonn
@Lil-Jonn 16 сағат бұрын
Hi, 👋 A new sub here with around 8 years of experience. I aim to enhance this further with my different experiences across different cultures, roles and companies. In my observation, working late hours in permanent in-house roles often leads to diminishing returns. This practice can create a competitive atmosphere where coworkers may perceive you as a threat. Oh boy, how often did it happen..! It's crucial to be prepared to defend your position while remaining humble and often giving more credit than you receive. Essentially, avoid overworking unless it's compensated or necessitated by deadlines or unexpected events. As a consultant, entrepreneur, or contractor, the dynamics can differ. I've experienced significant benefits from working late, which has increased my employers' tolerance for occasional mistakes. This flexibility acknowledges that while timely delivery may not always be possible, demonstrating commitment and a willingness to prioritize the companys' interests can lead to greater recognition. Remember that these insights are based on my personal experience and can vary widely depending on your circumstances, cultural norms and organizational context... Good luck!
@SurprisedDivingBoard-vu9rz
@SurprisedDivingBoard-vu9rz 17 сағат бұрын
Because they are out of town. You can build your own house in India but not anywhere else in the world.
@Joe-ku1ko
@Joe-ku1ko 18 сағат бұрын
Fortunately for me, I like learning how things work more than the high level implementations of them, which means that the things I learn stay with me forever, and I can just Google or ChatGPT the library for some functionality.
@terrestrialaccessnetwork8456
@terrestrialaccessnetwork8456 21 сағат бұрын
Honestly, a lot of the deeply technical stuff is going to be further abstracted and automated anyways
@rtothec1234
@rtothec1234 Күн бұрын
Agreed. The most successful and highest earning people are seldomly the high skilled technical hermits, but rather, those who master the art of communication, conversation and negotiation. If you are looking to increase your value and financial prospects then learning the newest language / framework du jour has diminishing returns if you lack people skills.
@HealthyDev
@HealthyDev 11 сағат бұрын
Couldn't agree more!