The Secret Society of Code Reviewers at Microsoft

  Рет қаралды 89,367

Dave's Garage

Dave's Garage

Күн бұрын

Пікірлер: 388
@xxHANNONxx
@xxHANNONxx 2 жыл бұрын
Dave should use his Microsoft clout, to do long format podcast type interviews, with old school Microsoft employees. His channel does a good job, at showing the human element, of the big faceless corporation.
@noVicda
@noVicda 2 жыл бұрын
While that would be nice, it does mean that Dave then doesn't get the chance to first clarify his thoughts and jokes into a well structured script.
@nickpeppers7808
@nickpeppers7808 2 жыл бұрын
I think that would definitely be interesting to hear. Also, if he was able to get current employees at Microsoft on to compare their current processes to what he experienced when working there that would be awesome too assuming Microsoft allows that.
@aquual1462
@aquual1462 2 жыл бұрын
Great idea
@jpaugh64
@jpaugh64 2 жыл бұрын
@@noVicda A good interviewer doesn't have to insert many of their own thoughts into the conversation. They just have to listen carefully, and come up with thoughtful questions. OTOH, many interviewers do prepare in advance, by getting to know the interviewee in some way before the camera turns on, like by watching past interviews with them.
@noVicda
@noVicda 2 жыл бұрын
@@jpaugh64 oh yeah agreed, it's just a different skillset
@davidgreen8512
@davidgreen8512 2 жыл бұрын
Maybe a topic for a future video would be about device drivers - how certain drivers were decided to be included, how Microsoft dealt with vendors, handling poor drivers, etc.?
@jparky1972
@jparky1972 2 жыл бұрын
I'd like to see this too.
@Planetdune
@Planetdune 2 жыл бұрын
Great id
@DaveKeyes73
@DaveKeyes73 2 жыл бұрын
I too would like to see a video on this subject.
@ExtendedJet8
@ExtendedJet8 2 жыл бұрын
If he makes a video on this topic (which would be awesome/fascinating) I hope he explains a little bit why win95/98 drivers from all vendors crashed the system so often, and how NT/2000/XP improved things. Maybe that's not how reality was, but it sure seemed like it at the time.
@BDBD16
@BDBD16 2 жыл бұрын
They include drivers now?!
@deansmith4752
@deansmith4752 2 жыл бұрын
A software engineer started at a company I worked for and was given two lever arch files of my software - all in assembler. Apparently there was a bug which needed 39 steps to replicate and it was his job to unravel it. three weeks later , he pointed to a single line in the 200,000 where there was a jump instead of a return. He coded n machine gun style , a moment of reflection and shoot with his fingers flying over the keyboard. A genius in many many ways
@robwyatt
@robwyatt 2 жыл бұрын
When I was working on the original XBox we worked closely with Dave C because we gutted virtual memory management and a bunch of other core NT kernel bits (all of user mode..), this required his knowledge. Even if you knew him you weren't immune from his rage calls. He didn't really care about our build, or our "side project", as he called it. However, I once got a call from him at 1am in the morning for breaking the main NT build, one of our xbox changes accidently made it back to the main NT build (because SLM sucked) and took out the daily windows build.
@hillie47
@hillie47 2 жыл бұрын
Wait... Xbox was early 2000s. Still stuck on a single branch/release type of thing then? Probably riddled with ifdefs and whatnot?
@robwyatt
@robwyatt 2 жыл бұрын
@@hillie47 While Xbox did come out in the early 2000's, it was the late 90's for us working on it (I was working on what became the xbox way before J arrived, probably end of 97, start of 98, it was all part of the DirectX team at that point, which also used sim). But yeah, slm (slime) was used on xbox at least through the original Xbox and early 360. I left after this so I don't know when they moved to source depot (an internal build of perforce) and at some point around 2015-2016 they moved on to git.
@ajjr1228
@ajjr1228 2 жыл бұрын
@@robwyatt What was released to developers with A1 in mid/late 2000 was just Win 2K with a modified directx isn't it? Desktop and all.
@robwyatt
@robwyatt 2 жыл бұрын
​@@ajjr1228 Yes the early devkits were just PCs with a couple of libraries to make developers lives easier. The real OS wasn't used until the actual dev kits came out and the real OS was far far from Win2k. Everything ran in kernel mode, including the game code, there was no user mode code at all (same on 360 although that did have a hypervisor watching over the system). Lots of traditional win32 APIs, which worked identically the same on PC and Xbox from a developer point of view, had to get rewritten because it's not as simple as running the original user mode code in kernel mode. DirectX got rewritten so it was just an API to hardware, there was no driver architecture, no bytecode, no nothing, it was hardcoded for the fixed hardware and over time XBox DirectX stopped resembling PC DirectX (Xaudio and Xinput came from this rewrite). USB and network also had a lot of work done but resembled the original windows code, as most of this code is already kernel mode. Another big change, and this one is huge, is we didn't want stalls or unpredictable performance, so all page file support was removed from the virtual memory system, which for windows includes all executable code. For the windows kernel this is a huge deal and a massive rewrite of the virtual memory manager. To this day on Win11, even if you run without a swap file, windows still doesn't load executable code in to memory, it maps the original executable (using the same mechanism as the page file). Code will load from the source exe/dll on demand (as it faults). This is the source of DLL hell on Windows, because the code is mapped, you can't delete or replace a dll or executable file while its in use. Xbox loaded all executable code in to memory and never went back to the source file. What was changed is well documented in the Xbox docs, various books and even the kernel source code leaked.
@ajjr1228
@ajjr1228 2 жыл бұрын
@@robwyatt I'm aware what was launched was far different. The comment was about Alpha 1. The Alpha 1 software was very much still Win2K (with what seems to be a slightly modified or just 'beta' DX). When the switch happened to Alpha 2 that's when 'we' saw it finally start to deviate. Strings in the later A2's imply that you guys already had /some/ support for NV2A in there even if the hardware wasn't available to developers at that point (the string being a flag NV20 vs. NV2A). How close is Xbox's MCP to just a normal nForce 1 chipset? Either way, thanks for the fun console that I still tinker with 21 years later. The kernel source is really sad to see so freely available, makes people lazy and stifles good and clean RE.
@Tech10x10
@Tech10x10 2 жыл бұрын
Hearing MS moved away from this process, it makes so much sense now why Windows has felt unfinished since 8/10. I used to work in IT and I ran into too many bugs that broke workflow until an update was rolled back or, in the case of a particularly bad one that I remember caused boot looping, a restore/re-install was done. I knew I was supposed to see updates as important security patches or bringing new features, but the whole experience had me feeling like every update as a roll of the dice away from ruining my day or week. It wasn't a constant, but it only takes a few bad bugs to ruin trust. I'm so glad I don't have to deal with that anymore.
@McGhinch
@McGhinch 2 жыл бұрын
I'm more sarcastic here: To me it seems that MS products are developed by amateurs, apprentices, and interns. They develop something that is good, but then they leave MA and the knowledge is gone and the next version doesn't have the cool feature anymore. I could write a long list of features once available...
@petrowi
@petrowi 2 жыл бұрын
MS has not moved away from the process but there's so many opinions on how to do it, it's a mess
@arnox4554
@arnox4554 2 жыл бұрын
@@petrowi Windows used to give the user the OPTIONS to change what they needed while STILL being pretty easy to use and at least mostly reliable. That's what made it so insanely dominant. The old control panel is a perfect example here. There were TONS of options within that panel that allowed the user to do anything from changing the taskbar style to changing the speaker balance. Microsoft used to give control to the USER and then simply made it as easy as possible to implement whatever changes the user saw fit, so maybe besides the OS themes they would go with for the next release, there was no need for any designer to fight for their opinion of what the OS should do, because the OS let the user decide. Nowadays, Microsoft has this Apple mindset of, "We know better, you don't." Except they don't even know better, are so out of touch, and often implement completely garbage changes, with this Windows 11 forced always-online install being the latest bullshit.
@arnox4554
@arnox4554 2 жыл бұрын
As bad as the UI for Windows 8/8.1 was, at least you could fix it super easily with just one third-party program and never have to worry about it ever again. Also, this is very anecdotal, I know, but it does seem like 8.1 is even more reliable than Windows 7, and that's saying something. I run a version of 8.1 Pro with a VERY modified UI and I love it. But yes, Windows 8 was definitely the start of the decline.
@Tech10x10
@Tech10x10 2 жыл бұрын
@@arnox4554 Yeah I didn't have many problems with bugs in 8.1. it was way more stable than where 10 started off. I used third party software to revert the garbage UI changes immediately, but I always thought the config being split between the settings app and control panel was silly and made it feel like they gave up transferring to the settings app half way through. Printer management was a particularly annoying task without the pro version, as I remember. It's a small thing, but I absolutely hated that the setting app could only run one instance at a time. If you had it open and tried to open a different configuration window from the start menu it wouldn't just let you have multiple windows opened and focused on different settings.
@daveball3081
@daveball3081 2 жыл бұрын
I'll never forget the thrill as a tester in a WinHelp code review finding an uninitialized pointer. There were a bunch of programmers in the review who I admired greatly. I'd like to think I moved up a notch in their evaluation that day. I remain friends with one of them to this day.
@garygough6905
@garygough6905 2 жыл бұрын
Changes on review! Reminds me of the ugliest hardware I ever did. Embedded controller with a single task, picked a processor, designed the board, wrote the code and had it working better than specified. Used all the I/O lines and available RAM. "That is great! Now can you add a keypad, printer and have it share the serial communications? "
@buddytoups1129
@buddytoups1129 Жыл бұрын
Sorry, That intro is absolutely mint. PLEASE bring more Garage and sub optimal accent into Daves Garage. LOVE IT
@Hanneth
@Hanneth 2 жыл бұрын
I have this one personal favorite feature I worked on where I currently worked. *sarcasm* I was given a feature with a very vague description of what they wanted. The JIRA title was all I had. I was going to be provided the full design later, but this was supposed to be finished in 5 days, so needed to start on it right away. I managed to get it working, with bugs, in 5 days, then it took about another half day to fix all the bugs. It then took me another 1.5 days to get it through code review and merged. Most of the code review time was trying to get someone to look at it. Then there were some minor style changes, and it was hours trying to get the person to look at it to approve it for merging. 3 days after I had merged the code, I got the details of what the feature was supposed to be. Fortunately my guess of what was wanted matched the design. Yes, 5 work days after it was supposed to be done, I got the design. I sometimes wonder if the designers did't just look at what was being tested on QA and thought, ya, that's what we want, and wrote the details to match my implementation.
@CallousCoder
@CallousCoder 2 жыл бұрын
I refuse to start a feature when the design isn’t there! And I’m willing to escalate to the top of the organization. Because if it goes wrong, you get the blame! And nobody in a critical branch would even get it into their thick head! Star designing a landing gear! What are the specs? You get those when we finished designing the plane. But you get started… wait what?! No specs no development! No good story no development! A single description line isn’t a story. Manage the manager (or PO)
@hewhohasnoidentity4377
@hewhohasnoidentity4377 2 жыл бұрын
@@CallousCoder that is why I decided very early on that network administration was the path for me and not anything involving code. First, I have no creative abilities. I could make code perform it's function but I don't believe IBM designed mainframes to look appealing. Programming should result in a task being accomplished. Nothing else. Nobody is going to convince me that the fluff and vulnerabilities introduced for cosmetics is necessary. Second and more importantly is the logic of being employed or contracted to somebody compensating you for producing code. The entity paying the programmer is paying for what they want developed. If you are being told what to program and how it should look and behave and the code you create can be evaluated to verify the code works as expected...... How long of a career do you think you will have? Will the last programmer please turn the lights out. In network administration there may be several methods to perform a task, but there are undisputable binary evaluations of any situation. Either it works or it doesn't. Either the person has access or they don't.
@CallousCoder
@CallousCoder 2 жыл бұрын
@@hewhohasnoidentity4377 I used to do some network design and implementation in the late 90s early 2000s, primarily with Cisco and it was fun. But it didn’t change a whole lot. And with programming there’s always new frameworks and new protocols. I personally also only like system development and integration. No frontend stuff. And yeah when you are a wage slave you do what your boss demands. I’m a freelancer and I represent myself, so when the customer is wrong I will explain why that is and if they demand to do it their way, I can do two things. Say: “it was nice but I’m not willing to associate my brand with such a solution.” Or “okay guys, you pay me by the hour, but I won’t take any responsibility for that solution.” Usually my customers opt for option 2 and then I’m happy to do what they want and get paid by the hour. I never liked it as a wage slave where you do something you know is bad and have to do over again, and only get paid your own market rate salary. Now I earn twice 🤪 for my customers stupidity. And this customer is like: “we do it the way that Ray wants it. Unless the organization is blocking us.” That’s a luxury position. But I guess it helped that I also worked for an other department there. And despite not renewing my contract for health reasons, they gave a raving review.
@Hanneth
@Hanneth 2 жыл бұрын
@@CallousCoder I used to work for a company where I could do that. I was even one of the lead programmers because of it. Then we got bought out. Now if I required actual requirements, or spend proper time testing, I get bad reviews. We have bonuses and promotions tied to our reviews. I've watched a few people get promoted over me where their code constantly fails code review because of serious bugs. My code reviews sometimes need changing because of needing better descriptive variable names, or there there is an existing helper function I didn't know about, or I missed a space in the code formatting. I've had to just stop caring. That being said I still try to properly test everything. Our company wants everything done quick, cheap and of high quality.
@CallousCoder
@CallousCoder 2 жыл бұрын
@@Hanneth quick and cheap with software (or all engineering) is mutually exclusive. Why do most manager don’t see that?
@conordally1284
@conordally1284 2 жыл бұрын
Dave I work in an engineering office and I must say it’s incredible how many parallels there are between what you are describing and our work. I don’t have a lot of coding experience but with HVAC design & CAD drafting it’s so important to collaborate with likeminded colleagues to QA projects before issue. And in saying that, you need to be clear about the standards you are working to first, and you need to be even clearer about what the client wants before that. Thanks for sharing
@MrPhred
@MrPhred 2 жыл бұрын
Preach, Dave. PREACH! I could not agree more on the virtues of code reviews.
@mikus4242
@mikus4242 2 жыл бұрын
Amen!
@2600lifestyle
@2600lifestyle 2 жыл бұрын
I’m an accountant for my day job….coding enthusiast as a hobby. I spent 16 years in public accounting and another 10 in corporate accounting producing the same type of reports. It’s uncanny how much of these code review insights and principles are present in what an accounting firm refers to its system of internal control. The work may be far different and the terms may be different, but the principles of quality control and the hilarious stories and characters are nearly the same. Great vid.
@CitEnthusiast
@CitEnthusiast 2 жыл бұрын
Years ago I insisted on testing new code revisions, and thorough testing at that, with a plan and all! But I was told I didn't trust my engineers, by an engineer! Code was deployed and didn't work, so was rolled back. A week later my boss did it again, again without my approval (I was the Change Control Board chairman), and they broke the entire system for the agency we supported resulting in a full day of lost work. I left soon after, despite pleas from my boss and offers of more money. Code review? Hah, as you can see I could not even get them to test properly. Keep preaching Dave, code reviews and testing are critical elements of software development.
@five-toedslothbear4051
@five-toedslothbear4051 2 жыл бұрын
Thanks for the great stories, Dave! I like your tips for code reviews. On the subject of things like tabs/spaces/braces and the like, those things can, and should, be automated. They can be trapped and corrected by Git pre-commit hooks or automated testing. And for things that can't, one should ask if they really matter. There's no bigger waste of time or frustration than having formatting become part of a review, where the reviewer has to hand check that code, and the developer has to go back and correct it, making another build/test/review cycle.
@jparky1972
@jparky1972 2 жыл бұрын
I worked as a programmer for a company who's "testing" of a module was literally a 10 minute procedure. Those mostly being.."Can a letter be put in this number box?". So when the customer complained, I mentioned that we should be at a point where we could offer a customer a bottle of champagne as an "Oops! Sorry." My managers response to that? "If we did that, we would quickly be bankrupt". The point lost on him.
@jpaugh64
@jpaugh64 2 жыл бұрын
I'm afraid you haven't made the point very clear to me, either. Did you mean that you should have much fewer bugs because of .... the age of the project?
@maxstripeGaming
@maxstripeGaming 2 жыл бұрын
@@jpaugh64 cuz of the number of bugs it would seem
@MikkoRantalainen
@MikkoRantalainen 2 жыл бұрын
Code quality and software quality is always a balancing act. When I write software, I'd prefer it to be totally perfect. However, in many cases the management wants code so fast that changes are high that some unknown edge cases remain in the codebase. I think many managers consider software done when testing cannot find any errors and you can push software out faster by reducing testing (because "if testing cannot find issues, it's perfect"). If your code looks nice and it has been tested for 10 hours without errors, is it ready for production use? I would say it depends on the software. If it's going to run cancer treatments on human patients, control airplane or a nuclear missile, then the answer would be absolutely not. If the code is some kind of simple game, it's probably ok to publish as-is.
@cowboyfrankspersonalvideos8869
@cowboyfrankspersonalvideos8869 2 жыл бұрын
I've been developing web sites since 1995 and I still write in HTML and CSS. Anytime I'm developing a new informational or instructive page I always ask someone who knows nothing about the subject to read it and tell me if it makes since and is understandable. If they find it confusing or just don't get it, I go back in and rewrite what needs fixing to make it clearer. I've read your book and want to thank you personally. I've known for years I have dyslexia, but after reading your book and doing a lot of further research, I find I also am high functioning autistic, and also present some features of ADHD. Just as in your case, I now know why I have had many of those problems which I had been trying to attribute to the dyslexia which didn't seem to fit there. Your book is both educational and entertaining. Last night I began reading it again. Thank you.
@DeclanMBrennan
@DeclanMBrennan 2 жыл бұрын
One other nice side effect that you omitted is the social one. It helps build professional relationships improving cohesion and is a way to get to know colleagues when somebody is new in a company.
@joelbrighton2819
@joelbrighton2819 8 ай бұрын
IFF done the 'right' way. Otherwise it causes resentment and leads to dysfunctional teams. Sadly, I've seen this occur more often than not. I suspect one reason might be the lack of training in how to be an effective reviewer.
@fabianmerki4222
@fabianmerki4222 2 жыл бұрын
i often rejected too long code changes for review to teach people to make incremental changes, i even had physical markings with a whiteboard marker on my screen for that. :-) it did change the culure in the right direction
@mikus4242
@mikus4242 2 жыл бұрын
I worked for company for a year. My direct supervisor told me to quit testing my code so much. “That is what QA is for.” I kept testing. I figured it was better to find the bugs early than later. Left after a year when the company canceled our project. It was the right decision. It was the right decision on both: canceling and leaving.
@grahamclark7483
@grahamclark7483 4 ай бұрын
Your knowledge Dave is overwhelming, we need more uncensored videos like this!
@BrenIrwin
@BrenIrwin 2 жыл бұрын
Great video (as always) Dave. I'm going to share this video around the office. It might just change some opinions on code reviews... Or make them a more appealing idea.
@DavesGarage
@DavesGarage 2 жыл бұрын
Please do!
@MikeBramm
@MikeBramm 2 жыл бұрын
I can only imagine the number of times the same function was written by every programmer before the Internet. I've been writing software since the late 70's, and I remember reading every book and magazine I could get my hands on just to find code samples and learn how someone else would do things. I used to highlight sections of code and keep magazine pages to build my bag of tricks. It used to take several days to figure out how to achieve some specific function after reading a number of articles and piecing together different techniques. Now, it's just a matter of Googling what you want to do and seeing hundreds of results appear in an instant. Google usually completes my sentence for me. That's when I know I'm not the first one to ask about the topic.
@RBLevin
@RBLevin 5 ай бұрын
Or having AI write it for you ... based on ripped-off Stack Exchange code.
@ShALLaX
@ShALLaX 2 жыл бұрын
This is such a healthy way to view a code review. Too many people see them as negative criticism against their work. Similarly, the people asked to do the code reviews often see them as a pointless chore. I learn a lot by having people with more knowledge and experience than me review something. I also learn a lot by reviewing other peoples code (either learning tricks or gaining experience in spotting mistakes). I wish more people took this part of the discipline of software engineering seriously.
@deansmith4752
@deansmith4752 2 жыл бұрын
Having just spent an hour going through outlook to turn off all the folder preview panes, the group should also do a usability review.
@DePistolero
@DePistolero 2 жыл бұрын
I so much appreciate him looking straight into the camera.... thanks, actually means a lot!!!
@brucewilliams6292
@brucewilliams6292 2 жыл бұрын
This was really informative! The items you discussed in things to do and not do during the code review are very instructive in many other fields. I just wish lawmakers would do a "code review" before putting out some of the laws that we've seen. I loved the "truck talk" too; that was really well done.
@rjmunt
@rjmunt 2 жыл бұрын
After working solo for years I see having code reviews as a privilege.
@shaunhw
@shaunhw 2 жыл бұрын
In the old days, when the code was to be frozen in ROM or expensively duplicated on floppy or CD rom disk, a lot more code evaluation and diligent testing was done. Nowadays they just think pushing an update over the internet is good enough, without regard to the suffering of users who have to live with the issues in the mean-time. I wonder when MS will fix Windows bugs I've seen since the release of Windows 98? The main one which irritates me the most, being the bottom of windows covering up the taskbar, after using the desktop for some time, despite having "Always on top" enabled for the task bar. This remains now, at least in Windows 10.
@sageinit
@sageinit 2 жыл бұрын
Get "7+ Taskbar Tweaker". The advanced options have a fix for it.
@TesterAnimal1
@TesterAnimal1 2 жыл бұрын
That’s still there? I remember that from 15 years ago! That’s pathetic!
@shaunhw
@shaunhw 2 жыл бұрын
@@TesterAnimal1 Yes it's definitely still there. It plagues me almost daily when I have lots of windows open and want to do something on the task bar. Usually finding a spot on the task bar to click on brings it back to the top for a short while until it happens again. Another bug is the way Explorer holds on to file pointers (fixed by restarting Explorer), occasionally shows the old name after an Explorer rename operation, and in another the OS insisting on making any particular USB drive used as a boot device, permanently "seen" by the OS as a fixed disk forever, rather than just transiently just for the duration of the device's boot. All from the firm who wants to tell the world how good software should be written. There are also others like ones in the file copier in Explorer, when it suddenly gives up copying and just hangs inexplicitly, though I've not seen this recently so it might have been fixed.
@anotherfellasaiditsnunya
@anotherfellasaiditsnunya 2 жыл бұрын
What a legendary intro!! Good onya Davo!
@P-G-77
@P-G-77 4 ай бұрын
Hi Dave, thanks for all your awesome "video-history" about your Microsoft work, i find all this very interesting as all various info about network, programs etc... thanks!!
@jasonwarnes
@jasonwarnes 2 жыл бұрын
Ah! Being born in Saskatchewan I laughed out loud when I saw Gainer the Gopher @9:50. Thanks Dave for the laugh. :)
@flashdy
@flashdy 6 ай бұрын
The most intense code-review exercise I ever was involved in was working on NT in the early 2000s. After some fairly bad publicity around a buffer-overflow exploit in Windows, the order came down to pause all development and review NT code for security flaws. The entire NT codebase was divided up and we reviewed literally every single line of NT before development could restart. Some truly gnarly bugs were discovered - many in user code due to the awfulness of the win32 API (those APIs are incredibly inconsistent about whether string length parameters include the null terminator, so it was easy to make mistakes), but there were many bugs in core libraries as well.
@carlossneto
@carlossneto 2 жыл бұрын
Do you have a style to share with code example? I looked some of your GitHub projects, but because they are small projects, I couldn’t get the style of a real legend like you and Microsoft of that time
@cleavage2697
@cleavage2697 2 жыл бұрын
Hello Dave! Few suggestions about future videos: - famous "eat your own dog chow", could be very informative and inspiring - secrets around (un)success of particular Windows versions Maybe you could be even doing some "Dave's specials"? Like, talk about coding while driving your truck in a mud? :-)
@DrewNorthup
@DrewNorthup 2 жыл бұрын
Wow, a solid read lock on the shared repository! Even CVS didn't have that problem! (Ok, it had shitloads of other ones. Guess how I know...) Having done code reviews before (not at MS) I can say that this is a solid overview of the subject.
@rickercss
@rickercss 2 жыл бұрын
Cutler was one of the reasons my friend Rick Dill retired. As you know, Rick was ‘granddaddy Windows’.He came back as an online manger for me at MSN from 1994-1998….
@BigRic68
@BigRic68 2 жыл бұрын
Good stuff, Dave... Any chance you could cover the Trusted Installer process and how/if it validates update that are being made to the OS?
@dbingamon
@dbingamon 2 жыл бұрын
I've been the sole programmer, circuit designer, user manual writer, etc, at the same company for 36 years. I wonder if It would be hard to function in larger environment.
@stilldreamy5181
@stilldreamy5181 Жыл бұрын
This is the first time I heard about your book. It sounded interesting and peaked my interest. I purchase many books every year and usually there is a very short gap between me becoming interested in a book and purchasing it. In this case, that didn't happen because it is not on audible. I only listen to books now while driving or walking or exercising or doing chores. It also makes things much simpler for me to keep everything in one app. I have the highest annual subscription where I get many credits at the start of each year, so that is part of why I buy interesting books almost on reflex, I already have a credit for it anyways.
@agentsam
@agentsam 2 жыл бұрын
Thank you. Another excellent episode. I will take these tidbits of information and apply them as best I can.
@javabeanz8549
@javabeanz8549 2 жыл бұрын
Another great video Dave! I did buy your book, but have not started reading it yet.
@jaysmith3495
@jaysmith3495 2 жыл бұрын
I do MS D365 implementations as a developer/tech lead and we still do code reviews for every mod we check-in. Its mostly to identify best practice issues, but a good tech lead can identify performance issues and errors.
@ViorelMocanu
@ViorelMocanu 2 жыл бұрын
Excellent work as usual, Dave! Thanks for the gems of insight!
@CodeCharmer
@CodeCharmer 2 жыл бұрын
DUDE! Love your logic and stories. Would have loved to work with you!
@retroandgaming
@retroandgaming 2 жыл бұрын
I mostly remember the "triage" sessions closing in on launch of a specific product in Microsoft. This was code that was code reviewed but where all product owners voiced in what to let through at this time as every change might break the product even if it's reviewed. I'm sure they where in place when you where at MS as well and it would be fun to see your thoughts about that!
@rothn2
@rothn2 2 жыл бұрын
I love this so much. Looking for an opportunity to casually share this with my team, with a focus on the entertainment value of course ;)
@CoolJosh3k
@CoolJosh3k 2 жыл бұрын
Modern Windows feels like every customer is a beta tester and problems found get put in a lottery machine. No matter how severe or easy to fix, the chance of getting a bug fixed before a new Windows release is very hit & miss.
@CoolJosh3k
@CoolJosh3k 2 жыл бұрын
@@crono102 While clearly a bad idea, what makes it really awful is that it takes so long for some serious bugs to get fixed.
@arnox4554
@arnox4554 2 жыл бұрын
And now you're forced to sign in to a Microsoft account for the privilege.
@Plasmacore_V
@Plasmacore_V 2 жыл бұрын
@@crono102 Sounds like game development today. But instead of listening to the feedback, it's as if they're Principal Skinner asking himself if it's him that so out of touch, and deciding it's the children who are wrong.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 2 жыл бұрын
In Fred Brooks’ _The Mythical Man Month_ ‡, he discussed the possibility of a piece of code getting so complex that nobody could really understand it any more, and any attempt to fix a bug would only introduce a new one. Looking at some of Microsoft’s recent patches, which too often had to be followed by patches to the patches, it seems clear that Windows has reached that point. ‡Coincidentally, a video about this book appeared on the _Computerphile_ channel just a couple of days ago.
@CoolJosh3k
@CoolJosh3k 2 жыл бұрын
@@lawrencedoliveiro9104 Indeed it is quite possible. However when considering the scale and what they offer of their product this should never happen. If some game with an expected life span of 5 years turns to spaghetti code then, while bad, it is not a big deal. Windows however has used much of the same code for a rather long time with the expectation that what they sell will be supported for a rather long time too. For example, there are major issues in Windows 7 that never got fixed before the end-of-support deadline, that now will exist in Window 11. I can’t think of any off hand, but I know there are plenty. If such an issue exists it really should be fixed, even if that takes a whole lot of work. Untangle the mess now before it just gets so tangled that it creates even more work and bugs.
@RossYoungblood
@RossYoungblood 11 ай бұрын
Loved the Archie comment! Years ago we did an Archie search on code metrics. Found a paper on McCabes cyclomatic complexity.
@cpuuk
@cpuuk 2 жыл бұрын
Oh, I remember the Chicago 'Daily build', spent many an hour scooping out of 'Foodbowl' 🙂
@JoshuaRosaaen
@JoshuaRosaaen 2 жыл бұрын
I love the insight you provide. Thank you for the stories. Maybe a series of best practices and how to create style guides. Thanks
@briankowald6465
@briankowald6465 Ай бұрын
I like the laugh track - lightens things up.
@JesseHires
@JesseHires 2 жыл бұрын
OMG, I can still hear the SLM "dooo dooo dooo" notes playing in my head.
@muddyexport5639
@muddyexport5639 11 ай бұрын
Not only the code review but also the design review which, for us ,was as or even more important in minimizing the rework cycle.
@paulantoine1696
@paulantoine1696 5 ай бұрын
In my experience too, code reviews are an excellent way to promulgate the kind of culture you want your team to have. They also readily expose any flaws in that culture I have found. I once placed a few of our devs into an outsource situation, on a project being run in a company trying for ISO9001 certification. The comment from the ISO certification team was that my devs were more closely following the quality proceedures than any of the team in which they'd been placed. And yet they'd never read them. This is an example of the culture of quality being far more important than any procedure manual... and can only be instilled through co-operative work such as code reviews.
@KaosPCtech
@KaosPCtech 2 жыл бұрын
I love the your videos, I am not no programmer. I just love computer tech. I started out building my first computer just over a year ago and haven't really stopped tinkering, now I have over 10 computers ranging from 1998-2020. I want now to learn as much as I can and just have a personal understanding of how computers 1s and 0s work, programs work and just be able to learn as much as I can whether it be networking servers - building my own basic computer. once again, I LOVE COMPUTER TECH!
@Shogoeu
@Shogoeu 2 жыл бұрын
I'm glad that development is very different from the 90s - sounds like it was super hard.
@arelenas
@arelenas 2 жыл бұрын
Thanks for this great video Dave! It was very interesting and I’ve learned a lot that will help me in my work.
@MrRubikraft
@MrRubikraft 2 жыл бұрын
Great video! Thank you! I really wish code reviews were a thing were I work...
@craigyoung8008
@craigyoung8008 6 ай бұрын
The top 5 reasons to do code reviews overlaps with reasons for doing pair programming. I love to know your thoughts on where pair programming falls short, versus when it’s appropriate to be used instead of code reviews.
@GHutchOrgan
@GHutchOrgan Жыл бұрын
"Drywall short-cut" Love it
@andreaschiavinato
@andreaschiavinato 2 жыл бұрын
Hi Dave, Thanks for your videos, I find all of them very interesting! Could you do a video about Windows Me? Did the Windows team expected that negative reception and the issues it had. By the way, in my PC windows Me was pretty stable and I liked it!
@2600lifestyle
@2600lifestyle 2 жыл бұрын
That unsubscribe problem hit me. I thought I did that. Fixed now!
@molivil
@molivil 2 жыл бұрын
you're right. for some reason my subscriber status was scrubbed.
@petergeorge3574
@petergeorge3574 2 жыл бұрын
As a fellow stubble jumper, I loved the Gainer cameo :)
@DeviousMalcontent2
@DeviousMalcontent2 2 жыл бұрын
I was looking at writing a quick and dirty Gopher server using PowerShell, I wasn't around when it was popular, but I'm interested in the technology, and I think that’s what Dave was referring to at 9:50, maybe an idea for a future video?
@brwainer
@brwainer 2 жыл бұрын
I hope you will have an audiobook soon, and I know they take a huge cut but I hope to see it on Audible.
@DaveKeyes73
@DaveKeyes73 2 жыл бұрын
Dave, I noticed that your source control software was never the one that Microsoft sells, Source Safe and Team Foundation, which I used both back in the day. Did Microsoft have a problem using either of the two products?
@NullStaticVoid
@NullStaticVoid 2 жыл бұрын
good call on the subscribe. I've noticed this for other channels like Fran Lab and EEVBlog.
@ShadowTronBlog
@ShadowTronBlog 2 жыл бұрын
Ah, SLM and SD, takes me back to my early days at MS.
@radman999
@radman999 11 ай бұрын
That was a great Bobby Boucher impersonation
@traestorm
@traestorm 2 жыл бұрын
You saly me, Dave! Great opening!
@WardCo
@WardCo 2 жыл бұрын
Ah, your video reminded me of the "Spontaneous Assembly" x86 assembler library. 3rd party product, but very well done. And TASM ".ideal" mode that nicely fixed all that crap in MASM.
@Sup_ERS_Tar
@Sup_ERS_Tar 2 жыл бұрын
Many years ago, when I was working on a "Software Development Methodology" for Lockheed Martin Energy Systems, which ran the three Department of Energy plants in Oak Ridge, Tennessee, we were told that we didn't know what we were doing by the "experts" at Lockheed Martin who built spacecraft, who claimed that they had much better software development procedures than we did because they did line-by-line code reviews in which every member of the review team had to sign off on every line.
@kibe2134
@kibe2134 2 жыл бұрын
I wonder how long people would work for a company like that. I mean, you already have the name Lockheed Martin in your resume and when asked you can just tell the truth and say that you have quit because of stuff like that. I once worked in a place like that, and on the first day I had to have my superior sign a form so that I could download an IDE on the computer. I literally lasted two days.
@McGhinch
@McGhinch 2 жыл бұрын
@@kibe2134 We did not have to sign off every line, but the review sessions were all done in a spirit of delivering an error free software. I forgot the number, but back then statistics showed that a programmers made "x" errors per 1000 lines of code. If we didn't find the appropriate errors the verdict was always: If you don't find "x" errors in a 1000 lines of code, then it is not because the programmer is good but the tester is bad, While code review in all stages of software development is tedious work, it is also very satisfying to know that the final product is productive for the user, not the software maintenance team. Edit: / The positive side is: when everybody knows that a programmer makes that number of errors, then finding them is not programmer-bashing. He is expected to make that many errors, and if he does he works up to the expectations. ;-)
@SianaGearz
@SianaGearz 2 жыл бұрын
@@kibe2134 mind you the single-letter checkmark channels and other of these comment-only verified channels are bots that steal comments; best not to participate in discussion, scroll down and find the original poster. The way these channels work is they steal or buy a channel with like 200k subs from some random part of the world, like indonesia or thailand or russia or wherever from, via brand-transfer system; then they rename it, run it through a verification process, and subsequently delete videos. Then they run the bots to keep the channels afloat before they resell them.
@hoej
@hoej 2 жыл бұрын
@@McGhinch sounds like the article "They write the right stuff" on Fast Company.
@imensonspionrona2117
@imensonspionrona2117 10 ай бұрын
d3d code was my entry to the adv stuff. Whom ever wrote those total legend. The coder's code comments were the best.
@AiOinc1
@AiOinc1 2 жыл бұрын
Had a real good laugh when you said a former executive bugged you into making the video - How many years on and they're still breathing down your neck!
@dalegeddes492
@dalegeddes492 10 ай бұрын
Hi Dave what about a episode on the creation of dos 6.22 and Windows 3.11 and the history behind the two?
@nickwallette6201
@nickwallette6201 2 жыл бұрын
From a consumer perspective, software distribution these days is a complete disaster. You used to be able to buy a software package or game cart or CD and use it, as-is. Yes, I know, software is way more complex now than it used to be. But, you also have WAY more exposure to sift out bugs in underlying libraries and frameworks, infinitely more sophisticated tools to find bugs and profile code before it leaves the dev shop, and decades of experience in development patterns being taught to emerging developers that were just winging it 20, 30 years ago. Why, then, can I not go four hours from my last app update before something else needs to be patched? Either updates are WAY too twitchy now, and getting pushed for the smallest, most insignificant fixes, or security and performance of released code is critically broken, perpetually. If it isn't going to set my computer on fire, maybe just wait until a few other fixes come along before requiring a 500MB download to even start my app to do the thing I bought a computer / phone / tablet / watch / pair of earphones / toaster oven to do.
@CallousCoder
@CallousCoder 2 жыл бұрын
Software is easier to make now than 20-40 years ago. Back then you had to develop everything yourself. And that would mean you got a firm grasp on everything. But the output was far less. And like you said it was sold in a physical format. That would cost a lot, so there was no time for complacency. At the small software house I worked at. We had an extensive, what now is know as CI/CD process. We even created own specific hardware to simulate actual user input. We had hardware connected to RFID and blood test LCD screens to check the actual test output. So everything was tested. Because doing a 400 customer floppy run was costly for a 25 person company. And we caught a lot of bugs during dev phase. True we only developed one or two updates a year. But our customers knew that they were safe to load.
@jamesrbrindle
@jamesrbrindle 2 жыл бұрын
facebook messenger for desktop being a case in point - an update nearly every day.
@hewhohasnoidentity4377
@hewhohasnoidentity4377 2 жыл бұрын
@@jamesrbrindle I've never had a problem with Facebook Messenger wanting to update. But then I never knew that Facebook Messenger had an app for the desktop. Is it so hard to go to the Facebook website that you needed an app to make it easier than 1 click to get to the Facebook Messenger? What does Facebook offer you to convince you to allow them use of your thoughts in order for Facebook to be relevant enough to you to bring them up in a comment thread about Microsoft coding completely irrelevant to Facebook? I recognized in 2015 that Facebook was an uncontrollable parasitic disease when I observed the interactions brokered through their products and historical interactions with the same people without a corporate profit seeking entity being involved. I'm not surprised that in the course of 7 years people have lost any sense of self worth and don't think to ask what a corporation is providing you in exchange for your contribution to the corporation. I did not realize that in the reality of the parasite that is Facebook vs mankind, Facebook has advanced so far as to convince people to download an app to use Facebook Messenger, and apparently provide updates to said app.
@deadliaski
@deadliaski 2 жыл бұрын
@@hewhohasnoidentity4377 TL;DR I hate FB and have zero use case for it and the whole world must share my point of view or they are simply dumb.
@philrod1
@philrod1 2 жыл бұрын
I learned for to write Javascript by code review. I am proficient in several languages, but Java was my main. I was hired as a Java developer by a large multi-national corporation and put to work on a full-stack project that used multiple languages, none of them Java. I would pick up an issue from Jira, write code until it worked and submitted for review. The lead developer would read my code, pat me on the head (not really) and then explain the correct was to write Javascript. She was also very patient when I was reviewing her code. I wasn't affraid to ask what a piece of code was doing, or how it was doing it, and she would happily explain it to me. Not so much ping-pong, more of a tick-tock cycle.
@RogerHammond
@RogerHammond Жыл бұрын
12:00 code ownership - I used to sign all my code with (ZD) after my name. 15 years after I left that company one of the managers found me in the steam room at the local city club and he said it had been a hotly debated question for many years what it stood for. Nobody knew. ZD = Zero Defects, a nod to QM programs of the 60's and 70's.
@ashfagg91
@ashfagg91 Жыл бұрын
I recently read “Showstopper!” by G Pascal Zachary. I’d love to hear more David Cutler stories.
@MoseleyJaguar
@MoseleyJaguar 2 жыл бұрын
Glad to see another person on the spectrum who's in I.T.! I struggle most days in I.T. mgmt.
@bobbyjarsulic862
@bobbyjarsulic862 Жыл бұрын
A year later and I don't see any comments about the genius inconsistent title for Not-To-Do #3: Inconsistency!
@bpfurtado
@bpfurtado 2 жыл бұрын
Awesome content, as usual.
@MrCptjsparrow
@MrCptjsparrow 2 жыл бұрын
So I was just trying to delete an entire table from an email I have to forward. The methods to do so were incredibly unintuitive. Selecting the table created a contextual ribbon option, but if you clicked or right clicked into the table and didn't see a way to delete the table then clicked out you'd never see this. There is also a contextual right click option, something I've never seen before and therefore my eyes weren't primed for it. Some examples of strange non-standard or unintuitive Windows behavior along with why there are those edge cases could be interesting.
@southilgurl2003
@southilgurl2003 2 жыл бұрын
I miss the days of doing code review. Only two programmers in the shop worked in the language - myself and the lead programmer. Fortunately it was the practice to write "self-documenting" code, so things were pretty easy. If something was unclear, I would tag it, leave comments, get feedback...maybe suggest changes for conditionals. My code, when it came back from review almost always had recommendations for streamlining; better breakouts of methods - usual noob fixes. Still work with the lead programmer, but for various reasons, I no longer code... but I still enjoy skimming to code on commit just before a new version build.
@southilgurl2003
@southilgurl2003 2 жыл бұрын
Heh, a little further into the video - yeah, ownership of the code. It's a bit mindbending when I see my code still in use over 10 years later. Also it's kind of funny, these days, I know more of how the program works and where than the lead programmer. Guess that's why I am now lead support for the software...
@ashergreen3732
@ashergreen3732 2 жыл бұрын
This video was very interesting for sure. But I am curious, can you talk about the thought process when you are initially assigned a project to work on? Such as Pseudo code or any other methods you use to organize your thoughts on how to approach the problem to eventually code the solution?
@LanceMcCarthy
@LanceMcCarthy 2 жыл бұрын
You mean passing around a floppy isn't agile source control and code review? I have had the honor of Raymond Chen review my code. I've also been lucky enough to be the first non-MSFT person in history to have thier code merged into an in-box Windows app.
@pleappleappleap
@pleappleappleap Жыл бұрын
At the company I work for, every single line of code is reviewed before deployment. **EVERY** **SINGLE** **LINE**
@colinmaharaj
@colinmaharaj 2 жыл бұрын
1:45 Dave you just made a case to have a code review of KZbins code.
@MikkoRantalainen
@MikkoRantalainen 2 жыл бұрын
I think the single most important guideline for code reviews should be for the reviewer to think that he or she is going to get ownership of all the modified code half a year from now. Would I like to see the offered code in the code repository as-is at that time? That obviously covers code style, security, understandability, sensible variable naming, sensible public APIs etc. I actutally think that code should be reviewed by two people in your team: one with very good skills and lots of experience and the another being the least skilled in the team. The high skill reviewer is going to check lots of important stuff including security whereas the less skilled (junior?) developer will test if the readability and understandability is in good order. For a good test, neither should be briefed by you but the should only receive the commit message and the actual diff (basically git commit or commits - I personally like to deal with branches with lots of small commits), because that's the only thing that will survive in the long run so the code must be understandable and reviewable given only those clues.
@paulneilkearns
@paulneilkearns 2 жыл бұрын
Actually, having worked on build teams at Microsoft (though not the NT build lab), I can say that SLM was actually a wrapper over RCS, much like CVS was. In fact, I believe that SLM was a port of CVS, which is why it was never a "real" product like Source Safe or Team Foundation Server -- it already existed, on Unix machines anyway.
@makinbacon21
@makinbacon21 2 жыл бұрын
LineageOS and some other organizations use a system called Gerrit, which works over top of git and provides a web portal where each commit must be reviewed and verified by a qualified team member. I think this is great because it stops breaking mainline stuff.
@Niosus
@Niosus 2 жыл бұрын
Only in theory. There is still plenty that can go wrong. You can have 2 branches that separately work perfectly fine, merge them and have all the tests work fine, but still end up with a broken product. You can write more integration tests of course, but you'll find that there is always a gap you didn't think about. Not to bash Gerrit of course. Having Gerrit will already find most of the big issues. But it's just not a magic bullet.
@makinbacon21
@makinbacon21 2 жыл бұрын
@@Niosus well yes but neither is having someone review your code themselves. I fail to catch things constantly. I just mean as a form of code review for the modern age it is pretty great.
@Arienne
@Arienne Жыл бұрын
today MS's perspective on code review seems to be that the bugs will be found by the end user. There are controversies surrounding them using not just insider build members but retail users to encounter and report bugs so that they don't make it to the slower enterprise ring
@KingSlimjeezy
@KingSlimjeezy 2 жыл бұрын
Dave you are precious! Keep on keepin on!
@SK83RJOSH
@SK83RJOSH 2 жыл бұрын
Raymond Chen? He's one of my favorite folks at Microsoft due to his amazing blog posts. Such a guru... any chance you could interview him? 😇
@sageinit
@sageinit 2 жыл бұрын
I feel upset with Raymond Chen since noticing that he left two bugs KNOWINGLY (and even BLOGGED ABOUT IT) in the documentation for RestartManager which Microsoft devs use, too
@sageinit
@sageinit 2 жыл бұрын
(and the bug is still there)
@taytaymon
@taytaymon 2 жыл бұрын
That is some next level reverse psychology 1:46.
@zzzzUS
@zzzzUS 2 жыл бұрын
Even though I'm not a programmer per se, I think Agile is what makes everything (OSes, software, hardware) so buggy. Everybody's pushing for new bells and whistles, without stopping and taking a look back. That's why I think that even if code reviews are treated as something archaic, they'd bring much value in current landscape.
@nickwallette6201
@nickwallette6201 2 жыл бұрын
I mean... the bare concept is probably good -- let's take manageable bites and try to complete them, rather than getting bogged down in a laundry list of features. But this turns into a rush to implement features so they can be checked off to move on to the next one. "It's agile! It shouldn't take more than a couple days to do ANYthing!" It seems to lend itself to a culture of "eh, good enough -- next item."
@todortodorov940
@todortodorov940 2 жыл бұрын
No, it's not Agile. It's the increased complexity and interdependency of code. Software used to be simpler and less complex (less functions and fewer obscure functions). More rigid tools like the Waterfall model and complete code reviews did the trick. The reason being that it involved fewer people and the humans could grasp almost the entire "problem" they were working on. Fast forward, things have evolved so much and are so complex that the old tools are insufficient. Also, we are solving problems that are less technical and more human oriented, and in nature, more chaotic and less well defined. We need new tools for this, and this is where Agile comes into the picture. It is less precise, but it allows us to work on a small part of a much larger solution, where a developer or a team only understands their own part of the work and not how the rest of the ecosystem functions. This may sound suboptimal, but choosing a different non-Agile approach may require all the people working on solution to have to sync constantly. Imagine Windows team working that way. The people responsible for WordPad are not finished and everybody has to wait for them. Finally, I will give you an example where the lack of Agile process was a disaster costing $200.000.000. The agency that handles unemployment registrations and unemployment payments in Denmark needed a new system. So, in 1996 a contract was signed and designed specification started. The system was finished in 2000 and fully deployed in 2003 - all as specified. All sounds good. Unfortunately, the world changed in the 4 years since the design was made and the system went into production. For example, the design chose OS/2, but IBM discontinued OS/2 during development. Politicians did not stop making new laws while the system was developed, so when it came out, a system that was supposed to know "the rules" related to this domain had a snapshot view of the legislation from 1996-1997. It is not possible here to tell IBM not to discontinue their products or to tell the politicians to stop making new laws in the 2-3 years while the system is being developed. The solution is Agile development, where you can act quickly in the chaos that the outside world imposes on you. The system was discontinued in 2008.
@Hacker_lyx
@Hacker_lyx 2 жыл бұрын
never worked on an professional dev team but I've worked close enough to them, qa, to know about those red lava lamps.
@matthewcaron3319
@matthewcaron3319 2 жыл бұрын
I once worked at a place whose (unwritten) coding spec prohibited comments and including them would cause an immediate review failure.
@SirenMan2000
@SirenMan2000 2 жыл бұрын
Excellent video! I'll be starting my first job as a software engineer in a few months so hearing your experienced opinion on such an important topic is invaluable. Thanks Dave!
Bill Gates' Easter Egg!
23:39
Dave's Garage
Рет қаралды 217 М.
哈哈大家为了进去也是想尽办法!#火影忍者 #佐助 #家庭
00:33
火影忍者一家
Рет қаралды 115 МЛН
My Daughter's Dumplings Are Filled With Coins #funny #cute #comedy
00:18
Funny daughter's daily life
Рет қаралды 25 МЛН
Я сделала самое маленькое в мире мороженое!
00:43
Кушать Хочу
Рет қаралды 2,7 МЛН
How To Get Married:   #short
00:22
Jin and Hattie
Рет қаралды 31 МЛН
The Dark History of Zip Files
14:29
Dave's Garage
Рет қаралды 305 М.
HACKED!  How a Buffer Overflow Exploit works, plus Code Red!
25:50
Dave's Garage
Рет қаралды 196 М.
HAL 9000 and the Sexadecimal Mystery - Finally Explained!
22:11
Dave's Garage
Рет қаралды 327 М.
Microsoft Security: Breaking the Rules - Stories from Employees
14:59
Dave's Garage
Рет қаралды 149 М.
Object-Oriented Programming is Bad
44:35
Brian Will
Рет қаралды 2,3 МЛН
Computer Stuff YOU Should Know!
21:47
Dave's Garage
Рет қаралды 98 М.
Blame Me: The INSIDER Secrets of Windows Product Activation!
21:23
Dave's Garage
Рет қаралды 610 М.
FOUND: A Super-Rare Commodore D9090!
29:36
Dave's Garage
Рет қаралды 124 М.
why is it always rubidium?
19:40
Angela Collier
Рет қаралды 153 М.
Harder Drive: Hard drives we didn't want or need
36:47
suckerpinch
Рет қаралды 1,7 МЛН
哈哈大家为了进去也是想尽办法!#火影忍者 #佐助 #家庭
00:33
火影忍者一家
Рет қаралды 115 МЛН