Get the top HN stories in your inbox every day.
todd8
pragmatic
I’d love to hear more about this. What happened to this guy and the debugger?
I’m guessing he got fired and moved to a cabin in the woods. No way talent of that level can exist in a corporate environment too long. Too much jealousy, etc and the higher ups usually can’t stand someone who won’t play by their rules even if the results speak for themselves.
Hope I’m wrong.
todd8
He continued to be a very highly paid contractor. The last time I communicated with him was many years ago. He had married another friend of mine, and they relocated overseas. He was doing contract programming for high performance network hardware back then.
zmmmmm
Such a joy to listen to Carmack talk about just about anything.
Not sure if it's an age thing but there is a particular feeling common to contemporaries of that era, growing up in our formative years as computers grew from their humble beginnings to the incredible machines we have now. At that time, each new improvement brought astounding differences in capability. In the space of 10 years we went from 8k to 64k of memory, 4 colors to 256 colours to 16k colors to 16M colours. Resolution from 320x200 to 640x480 to 1024x768, which was close to photo-realistic (for the time, an amazing capability). I remember how revolutionary it was when I first got a computer that could render 80 columns of characters - rather than 40. Storage went from tapes to floppy drives storing a hundred kb of data to MB to hard drives storing GB of data. Every time one of these changes happened, a vista of opportunity opened up to explore and innovate and figure out what you could do with the new capabilities. Writing code in those times was all about deeply understanding the internal capabilities of the machine you had and how to get the most out of them.
Something about that process forged a deep appreciation for the fundamentals of hardware and software that I don't know how anybody could get these days.
agumonkey
Era aside, Carmack is a special guy, he can talk articulately and gently for hours. He did a talk few years ago (quakecon ? .. I forgot), basically a 3h long monologue about thinking while coding, there was only a single 5min pause to sip some water, incredible.
epolanski
His expertise over a very wide array of objects is also extremely impressive.
I know spectroscopy very well, and yet hearing him talk about light-matter interaction was still very educative for me at the time and I was impressed by the depth and sheer knowledge he had on the matter, learned many things I didn't even know existed from him.
Same applies to many other topics related to physics, engineering and mechanics, not just computer science and programming.
Whoever says that you need a degree to get depth in several topics has never knew people like Carmack who simply study and try to understand.
boppo1
I can speak just like that. Problem is I'm an uninformed idiot. But people who don't know that seem to think I'm pretty smart.
*this post does not contain an implication about Carmack. He is actually real smart.
agumonkey
Any uninterrupted and coherent hours long monologue is impressive to me.
noufalibrahim
He was a hero of mine when I was in engineering school but i only see pictures of him mostly at the time and thought of him (probably due to his specs) as an archetypical geek. However, reading about him more and listening to his talks over time has really made me appreciated how well rounded, low drama, and high impact he is.
Arisaka1
I'm a 40 years old guy who taught himself and got his first gig last year and he's also my hero. I'll sound "kids nowadays" but it's surprising how many young developers never even heard of Carmack.
russellbeattie
I remember seeing that video, and others like it at Oculus. The variety and depth of his knowledge is truly astounding, as is his ability to talk about it without rambling. Every time he switched topics, you knew there was so much more he could have said.
When I was a technical evangelist, I regularly gave hour long technical presentations to relatively large ballrooms and it's ridiculously hard to maintain focus. The fact that Carmack gives a detailed talk rather than a presentation or speech is already a distinction, but mostly off the cuff, for hours, non-stop, to a packed conference hall? Impressive doesn't describe it.
jdm386
Does anyone recall which talk specifically this is? I'd love to give it a watch.
kajecounterhack
One generation removed from that, folks got their start programming on the web. Some similarly developed great understanding about the internals of web browsers and how to get the most out of them. I don't think that's less beautiful :)
Each generation will forge deep appreciation for stuff higher on the stack. And there will always be folks working at the embedded boundary, forging deep appreciation for the folks who blazed the trail you described before them.
Also, to be fair, it's easier to learn stuff today than it was 20 years ago. You don't need to invest as much time and the resources are a lot better (yay for YouTube!)
loup-vaillant
Current stacks are much bigger and much more opaque than the 90’s hardware was. On top of that computers are fast enough that the need to go lower lever is significantly lessened. Because of this, it is likely a much smaller proportion of current programmers will get to learn about low level stuff, despite the much greater availability of learning material.
Cutting corners is not the only reason why software slows down as hardware speeds up. Many people just have no idea how fast their computer is supposed to run, and their "fast enough" is often much slower than it could be. And in some cases that’s the difference between "fast enough to make a smooth animation", and "slow enough that I need a spinning wheel".
undefined
62951413
On the flip side, if only had the teenage me had a computer at home my last year in school. Or more than a single book on Turbo Pascal (with OO support in v5.5!) I was reading again and again. Forget about the Internet, had the college-age me had access to just Wikipedia :(
It's _really_ painful to remember how scarce information was in the early 90s and how prohibitively expensive the hardware. I guess it was a better filter when only the people who really loved computers were getting into the industry though.
zmmmmm
> It's _really_ painful to remember how scarce information was in the early 90s
I think that scarcity of information has helped me quite a lot. I often see others giving up on problems where they lack sufficient information, but I have an ingrained ability to sniff out the information - whether it's reverse engineering, gleaning subtle hints from what is available in the documentation I do have or just "thinking like the computer" to intuit things, I can very often make headway where others have failed.
SergeAx
1024×768×16m was my default settings for a long time despite higher resolutions were available - I disliked the need to play with font sizes to have a comfortable layout. With Windows 7 and its awesome scaling feature I finally jumped to 1920*1080. I moved to 4k HDR less than a year ago and had some wow-moments in the process.
interfaced
There was such a magic to ega games, then vga, that I think was lost a bit in the transition to 3d engines. I count myself lucky to have experienced the surprise he mentions about doom and a monster jumping out at you, the land unfolding worlds of sierra games, and quirkiness of Lucas arts stories. It's a good reminder that graphics capabilities can change, but our human software can be entertained by all the old tricks.
georgewsinger
> At that time, each new improvement brought astounding differences in capability.
Yes! There's a post we wrote on precisely this phenomenon with John Carmack as the main character that you might find interesting.[1]
TLDR: There was a time when people were willing to spend (literally) tens of thousands of dollars on ultra-premium hardware in order to compute on hardware a few years ahead of the market.
For example, John Carmack spent $23K for a NeXT workstation on which he made Wolfeinstein 3D, Doom I & II, and Quake. He also spent ~$10K on the world's first 1080p monitor, which he used to program the Quake trilogy.
psadauskas
>in 1995, Carmack spent $9,995 on one the first 1080p monitors… It provided a 28" screen with 1920x1080 @ 85Hz… Essentially, Carmack was able to trade $9,995 of 1995 money for a monitor that put him decades into the future.
“Decades” is a bit hyperbolic. I got a 22” that would do 1920x1440@80 for under $1000 in 1999. I’m also skeptical of that non-4:3 resolution quoted.
hed
I've seen pictures of his desk of what in the '90s we would have called "goofy looking CRT", I'm pretty sure its native aspect ratio was not 4:3.
baby
I've been trying to listen to the whole thing (it's 5 hours!), and there are some really interesting moments. Albeit, a bit too much talk on old video games that aren't from my generation, but I'm sure this will be interesting to some people to.
What I found interesting:
* he has insane hours and has never burnt out. He says that if you want to achieve big things in your life, you need to work a lot. He also says that as long as he's working, and making progress (and he always makes progress when he keeps trying, reminds me of Linus), then he can withstand his hours and pressure.
* he learns a lot through reading computer science books
* he is really big on simplicity, seems to appreciate Golang and its design, and he's not into metaprogramming on C++. I really like that he's focused on building things that work, and can be maintained, and not that interested in theory and advanced concepts that don't seem to bring him much. He also says he spent some time on the functional side, and that probably made him a better programmer, but he's back doing C++.
* he talks about the sort of hacking community he felt part of, where you just wrote code and shared it and reused other people's code. It really feels like open source is something else, made me feel bad about all these patents, and weird licenses (even Apache 2 or MIT) and academic people whining about credits. Wish we could just share and use whatever and be happy with it :(
* Agree with him, VSCode is THE IDE. It's much better than emacs IMO (I've tried using vim many times but couldn't).
* 8-9 diet cokes a day. Holy fuck. That's a lot of caffein (and I'm guessing not good for the teeth)
jillesvangurp
I listened to the first two hours on a train yesterday. I'll likely finish it later.
The discussion about tools and languages was particularly interesting. You might expect John Carmack to be pretty old school and dogmatic on using e.g. C and instead it seems he has a very broad taste and experience with different languages and tools. Just a very pragmatic person that switches between doing C, python, Go and other languages. For someone that is into hyper efficient graphics code, admitting that for the vast majority of code, using a garbage collector is perfectly fine is IMHO a very pragmatic and mature attitude. He doesn't have to prove anything to anyone anymore on that front of course.
VS Code is indeed a very popular IDE. The Jetbrains ecosystem is also pretty interesting. I found his comments on debuggers to be pretty striking. GDB is so hard to use that programmers avoid using it. Having a proper debugging UI changes that. He was talking about how he just runs most things in the debugger by default to see if things work as he expects.
In the same way having static code analyzers tell you that, no, actually your code wasn't perfect and is full of little time-bombs that could go off at any moment is a great argument against just pretending you are Buddhist monk that only requires a pen and paper to produce perfect code. Exaggerating here of course but I know some people and that on purpose avoid using, or even learning about tools that would allow them to be more productive and better engineers.
baby
There really is a learning curve to using these tools, and the investment might not be worth it. I use GDB so unfrequently that I have to re-learn it every time I want to do something. Coupled with the fact that it's not integrated with the language (I can't run `cargo debug` or `cargo gdb` or something) and not the default on Mac (why should I relearn lldb), I end up just printing stuff instead of using it.
jillesvangurp
I don't know; I'm only a few years younger than John Carmack. IDEs with decent debuggers were a thing from the mid nineteen eighties already. They were widely used and you can learn to work with them in a few afternoons. And decent IDEs are available for many languages. Including Rust, C, and C++, etc. Also on macs.
Not using tools that are there is a choice that a lot of people seem to insist they need to make. I've heard all the excuses on this front and it usually boils down to people believing in their super skills, discipline, and intelligence to the extent that they believe they don't need those tools. Some people actually feel threatened by a tool telling them they are doing stuff wrong. They get annoyed and frustrated by that. It's irrational.
doikor
> You might expect John Carmack to be pretty old school and dogmatic on using e.g. C and instead it seems he has a very broad taste and experience with different languages and tools.
He has been using various programming languages for a long time. Basic, assembly, (turbo) pascal, etc. In my experience most old school dogmatic C programmers started with C and never even tried to use any other programming language halfway seriously.
He especially gives a lot of praise to Borland for making turbo pascal and how far ahead it was of its competition back in the day when it comes to developer tooling (IDE, debugger, etc)
jhauris
About GDB: I really like using KDevelop on linux, and they have a pretty good GDB front-end built in. It's pretty similar to VS debugger, with a panel showing local variables and their values, etc. It's definitely not as full featured as VS, and IIRC there was some instability, but if you're on linux and using C or C++ I highly recommend trying it.
bigDinosaur
He's previously done one of the fairest analyses of the state of functional programming (specifically Haskell) and its pros/cons particularly with respect to building games I've seen as well. It's very refreshing.
royjacobs
I think Carmack was mostly talking about regular Visual Studio as his IDE of choice, though. Not VSCode.
brtkdotse
Visual Studio is to VSCode what car is to carpet.
rfrey
So, one is too heavy to lift and the other one flies?
(agreed though. VS has been a beacon of light inside MS even in its darkest periods.)
pm3003
Yeah, he meant VS. He even mentioned using an older version (6) as it is much faster on modern computers. Maybe he was referring to a friend of his, I don’t remember.
Most Windows programmers I know (not a lot) use VS for the ease of integration with all things .NET and Microsoft.
badsectoracula
He doesn't use VS6 himself, he was most likely referring to Sean Barrett (aka "nothings") who worked on the original Thief as well as at RAD Game Tools and made the stb_ single header libraries. He has mentioned several times that he sticks with VC6 since he prefers the UX it has.
bjconlan
Yeah when he said this it I couldn't help but think of Sean Barrett/nothings.org coding videos. I was always shocked by people using VS6 post 2003 but it provides 50-75% of what people want from an ide these days. (A big proponent is inline debugging as mentioned) but I don't recall intellisense on this version, only keyword colouring and non trivial header exploration... Makes everything look bearable these days (even if run from a browser UI)
dleslie
VS 6 is great, honestly, if you're just hacking c89 or a narrow subset of c++98. Look out, though, the compiler isn't fully standards compliant.
imron
VS6 was such a great product.
dmitriid
Obligatory Casey Muratori rant about modern Visual Studio, complete with Visual Studio 6 running in a VM: https://youtu.be/GC-0tCy4P1U
jbverschoor
Visual studio has been a great IDE from the early 90s when I used it. (Also game/graphics dev)
bogwog
I’ve never had anything but a terrible experience with it when doing C++
Either the whole thing freezes and becomes unresponsive, or intellisense stops working, or (often) both.
Sublime Text + GDB + RR is my no-bullshit setup right now and I love it. A mouse interface to GDB would be nice, but I can live without it.
gitfan86
Yes and he is talking about coding in c++
Arisaka1
On the subject of books, there's an advisory email Carmack wrote to a kid years ago, telling him that his methods may be outdated compared to the modern advances in learning, but when he studied books he would read multiple resources describing the same thing because sometimes one resource may not transmitting information in a way that clicks to him.
I remember how insane it sounded to me that someone as talented as Carmack would look up for a second or a third resource describing a concept just because he couldn't clearly understand it on first try because, contrast to how we react when a student fails to grasp pointers. Our kneejerk reaction to someone not understanding a concept on first try would be "You want to re-read that again? Guess you're not talented. And you keep making mistakes after an hour? Sigh you're a lost case".
And here you have literally Carmack himself not caring how many books he has to reference, because all that it matters is that it will eventually click, he will own it, he will make progress and that's all that matters.
VogonPoetry
I think that a lot of technical books are written from the perspective of already knowing the material or expecting a particular learning path. A lot of important details or framing get left out. The technique of reading multiple sources is very clever because it can fill in these defects - I think I might have subconsciously done this in the past and not fully realized why it worked.
drbojingle
The talent was realizing his challange and finding a way to deal with it.
mariusmg
>Agree with him, VSCode is THE IDE.
Lol, he said Visual Studio is THE IDE, not VSCode. Compared with VS, VSCode is a toy.
jack_pp
> he has insane hours and has never burnt out
I think there's two major things you need in order to do that. Work on what you love/want and have no/little need for socializing.
jillesvangurp
I think the point he made was rather the opposite. He works 10-12 hours a day, 60 hours a week, 6 days a week. He needs seven to eight hours of sleep, like a normal person. He specifically mentioned that he never was much into doing all-nighters and that he experimented with working different times of the day. So he'd start in the afternoon and then continue until deep in the night when he was younger whereas having kids and a family caused him to shift to having an early start instead and run a more normal schedule.
That sounds like an intense schedule for sure but not really that insane. He's not super human and just staying in shape, and well rested is what has allowed him to do this for decades on end. Work life balance and taking care of his family is just part of that deal as well.
I notice that the quality of my own work is simply much better when I'm well rested and that beyond a certain point, the most productive thing is for me to simply take some rest or do something non work related. The rare case that I need to work on something late, I pay the price the next few days. It all averages out in the end in terms of productivity.
Grinding away at a problem for hours is simply draining. Often those problems melt away the next morning after I sleep a bit. Your brain doesn't stop working when you do. The hard work is immersing yourself in the problem and absorbing all its facets and then calmly reflecting on all the assumptions you are making. Generally, if you are stuck you need to find out which of your assumptions it is that is wrong. I've woken up with fully formed solutions in my head for seemingly unsolvable issues or bugs that I fought with the previous day so often that I actually rely on this happening a lot these days. So, I generally stop working around 6-7 pm and I'll park harder issues until I'm well rested in the morning or after a weekend.
I don't work on the weekend. The weekend is for resetting my brain. Just as important as sleep is. The most productive use of that time is allowing that brain reset to happen. Getting frustrated and stressed is counter productive. It leads to poor sleeping patterns and stuff just piles up. Take a break, relax.
baby
> That sounds like an intense schedule for sure but not really that insane
I'm not sure what disqualifies that as insane, but it pretty much precludes any social life. I'm on-and-off doing these kind of hours (sometimes work takes over life, sometimes life takes over work), but when I do these kind of hours even when I'm not working my brain is still thinking about work. I can't imagine doing this for decades at a time, this is truly a life dedicated to work. But I agree that you can't achieve great things without sacrificing your life.
balfirevic
> He works 10-12 hours a day, 60 hours a week, 6 days a week
> Work life balance and taking care of his family is just part of that deal as well.
I don't judge anyone for how they like to spend their time (and certainly admire Carmack), but what work/life balance? There isn't much except work there.
snowpiercer
How is it possible that Alexander Grothendieck was able to work for 12 hours everyday for many years, same with Nikola Tesla studying for almost 20 hours while in the University and also Newton Comes to mind ..how did these men do it if I may ask?
undefined
dev_0
I read Carmack post in Hackernews before. He mentioned that he didn't perform deep work for 12 hours. Within that 12 hours, he will perform maintenance work as well
ramraj07
Many if not most productive academics have such insane schedules. They’re not necessarily asocial. I think the important distinction is in what I’d call “bullshit socializing.” A lot of what regular people do in the name of socializing is probably not helping them in any way. Academics get trained to not need this to relax necessarily.
I did my PhD in a lab that demanded it: we were expected to put 6 days, 12 hours a day. It’s possible for maybe 30% of population maybe? Especially if you’re privileged and don’t have to worry about other things in life (like kids, parents, money, physical health, chronic issues, mental health, etc). So in some ways the ability to train and be able to adopt this more “productive” life is a bit exclusionary and even discriminatory. In the end I chose not to continue in academia primarily because of this demand, I just didn’t feel like it was worth it.
Now I’m in tech and I do get bored, but happy that I have the choice to set my hours.
baby
> bullshit socializing
damn, I can only feel bad for people who use that term :( it seems like simple human interaction are being optimized out.
coutego
And a very good health. Doing this sedentary job for long hours and not getting issues is very difficult, unless you use most of your free time doing some sports or other intense physical activity or you have very good genetics.
huntoa
It's not that much caffeine, his 3 liters of coke contains about the same as 1 liter of brewed coffee.
1 standard can of diet coke (375 ml) contains 48 mg caffeine -> 128 mg/liter. So 3 liters (8 cans) contains 384 mg caffeine. Brewed coffee contains ~400 mg/liter.
LAC-Tech
I feel like one litre of brewed coffee is a lot of caffeine!
ahartmetz
It is! I drink one 300ml mug of strong coffee (or two of thin coffee) a day and that feels like enough for sure.
baby
I think I would probably die if I drank 1 liter of coffee
ycombinete
400mg is the suggested daily limit. It is a lot of caffeine.
justinlloyd
I should probably rethink my 8 to 14 espresso shots per day then.
justin66
> 8-9 diet cokes a day. Holy fuck. That's a lot of caffein (and I'm guessing not good for the teeth)
It's not that much caffeine and it won't do anything to your teeth.
> Agree with him, VSCode is THE IDE.
Nothing in that interview suggests he's ever used VSCode.
Ciantic
> It's not that much caffeine and it won't do anything to your teeth.
I'm sorry, but diet coke (and most sugar free drinks) causes dental erosion. It's not the sugar that causes it, but usually the citrus acid. Even some flavored sparkly waters have citrus acid in them.
justin66
Ah! That’s interesting. I guess my only knowledge in this area (other than the big thing - sugar and corn syrup are really the enemy, I would have thought) is that the magic ingredient that differentiates Diet Coke and Coke Zero is citric acid. I never thought about the tooth decay angle of that.
fantod
He does discuss VSCode towards the end of that clip.
mikedelago
Why wouldn't it be bad for his teeth?
It's my understanding that soda is typically acidic, and after you drink it the soda coats your enamel, in turn wearing it down.
baby
I once read that soda is one the worst thing you can do for your teeth, hope I'm not helping propagate a falsehood
faeriechangling
Not having sugar helps a lot, but drinking Diet Coke means literally drinking diluted acid. Not exactly the healthiest thing for your teeth.
pzh
The quantity of artificial sweeteners (aspartame, sucralose, etc.) in that many cokes, many of which were shown to be carcinogenic in experiments with rats, can’t be good for him…
undefined
Barrin92
I'm one of the people he talks about who moved from diehard Emacs use slowly to more and more VSCode use largely due to the better UI experience around debugging and integration of a lot of modern tools. His point about features not being used when they're complicated to reach despite people claiming that they'll use them is a true observation in particular. You always can set up a lot of those features in your unix-style environments, but you're just not as likely to use them if the experience is somewhat scuffed.
As a sidenote I wonder if he's ever used Pharo, it seems like the kind of thing he'd like.
iforgotpassword
I tried VScode twice and despise it. Cold never get it to be much more useful than a text editor with syntax highlighting. Tried setting it up for java and even with fiddling and tweaking it didn't work nearly as well as the default eclipse setup regarding code navigation and maven integration. It felt just like trying to get vim to be modern and useful. Maybe possible, but a lot of effort when there is other solutions that work right out of the box. Second try was for PHP, and that was even more futile. For PHP it actually seems like jetbrains is the only one providing an ide that doesn't make you lose your mind with that language, so not necessarily a sign that VScode in particular is bad.
For C++ I never even tried it because I'm usually content with qt creator.
lostmsu
Java, C++, and C# have best in class IDEs. But for other languages, especially dynamic ones, VS Code is close or better than a dedicated IDE.
kuxv
Qt creator is awesome for C++ development. It is so crazy fast, especially when compared to Visual Studio.
heynowheynow
VSCode is based on Electron, a glorified hack/resource hog of Chromium than even Github largely abandoned. It maybe "great" and mildly "popular" here and there, but it's built on a foundation of mud. Build native apps that work and are performant.
With enough effort and care, a frictionless experience can be made with a TUI should some "Jetbrains" come along and try to make a commercial product out of it.
marmada
This is the most "just use rsync instead of Dropbox" HN-style argument I've ever heard.
It's sufficiently comical to be satire
sgt
That's an interesting counter argument. I would think that for the target audience on HN, rsync would absolutely be preferable to Dropbox. We are developers, not regular consumers. Same would apply to IDE's and editors.
loup-vaillant
Yet I’m seriously considering moving away from Emacs solely because it does not boot instantly. Sure I could set up an Emacs server and all that, but come on: it’s a text editor. It should not take more than 200 milliseconds to boot on a modern machine.
If I care about that, I’ll probably care about Electron using hundreds of megabytes of RAM I shouldn’t even have to buy in the first place. It’s thinking like this that make people say sad things like "16GB of RAM is a bit tight nowadays, maybe you should go up to 32".
(Edit: to people who think buying a bit more RAM is no big deal: remember that our resources are finite, that computers are one of the most polluting industries out there, and the climate clock is ticking.)
Volt
Seems more to me like saying "someone should make an rsync that's more like Dropbox".
stjohnswarts
I'm thinking "use rsync instead of github" myself lol
robenkleene
> It maybe "great" and mildly "popular" here and there
VS Code is not just mildly popular, it's significantly more than twice as popular as any text editor has ever been in the modern era.
Source, it's currently used by 74% of programmers (https://survey.stackoverflow.co/2022/#technology-most-popula...), the next highest text editor, since the survey started in 2015, was Sublime Text in its prime (2016) at 31%.
It's fair to call VS Code's popularity unprecedented and historic. And it's already being used to shape the future of the industry. E.g., we're watching the decline of local development right now (outside of specialized use cases) largely through VS Code's support for remote development features.
This is most likely just beginning of how VS Code will leverage its position to shape the future of programming.
cxr
> it's currently used by 74% of programmers
74% of the respondents to the latest Stack Overflow survey, you mean.
pjmlp
Ironically the main architect is Eric Gamma from Eclipse fame.
rascul
Github didn't abandon Electron. Github created Electron for their editor called Atom. Microsoft later used Electron for VS Code. Microsoft bought Github. Github is sunsetting Atom (not Electron) to focus on VS Code.
nkzd
Mildly "popular"? Which editor is more popular than VSCode?
smolder
By number of installs, maybe vim :)
pm3003
Notepad++?
d_tr
Why should I prefer a strict grid of characters based on technology from more than half a century ago to a GUI for something with the functionality of a tool such as VSCode or Sublime Text?
jasonm23
> "Technology from more than half a century ago"
I think you are missing out the part where it's technology developed continuously for almost half a century.
VSCode is very nice, but I quickly become frustrated by it's lag in comparison.
It does beats the pants of every other GUI IDE out there, with JetBrains IDEs coming a significant second place.
But Vim or Emacs with LSP are extremely capable IDEs and have unmatched speed compared to any GUI IDE you can name.
d0mine
«it lists different values that each tool prioritizes, and how "Core values are self-reinforcing. They attract like-minded people, who will then defend them."» https://news.ycombinator.com/item?id=29159433
overtomanu
It is useful in corporate setting when you have to edit files over ssh on some random machine and you already have terminal open. VS code has remote option but you have to set it up and navigate again etc
mpeg
I agree that electron apps are unnecessarily wasteful but if there’s something important enough to deserve the resources is a code editor.
The underlying problem with Electron is that browsers are also massive resource hogs and I don’t see people switching to elinks anytime soon.
Maybe I’m stuck in a cycle of consumerism - accepting slower software and buying faster hardware - but I value convenience a lot and in the grand scheme of things vscode using up like $5 worth of RAM is not enough to look for alternatives.
simonh
>Build native apps that work and are performant.
The ‘native’ there is redundant. The only thing that matters is if VSCode works well enough and is performant enough to be a viable option.
Often native apps will win on the ‘works well enough’ criteria, due to superior OS integration and familiarity, but that isn’t a given. If you use multiple platforms then having a solid cross platform option also has advantages in that area.
osigurdson
It will be interesting to see if Microsoft's Maui effort will be able to compete with Electron using a somewhat more native approach. I suspect that it will not.
pier25
> I suspect that it will not.
I agree. The reason Electron got popular is because front end devs can quickly build a desktop app for use cases where a web app will not work.
And I say that as a web dev who has worked on probably a dozen apps with Electron. Mostly internal tools, but also stuff in production for end users.
For the end user projects we ended up replacing Electron with native apps using the native web view. Each app had a tiny native layer for stuff like downloading files, etc. I don't remember the exact numbers but our macOS app went from +100MB to about 5MB download. Memory usage was also great reduced. The macOS app barely used something like 15MB of RAM IIRC. That was in 2018. Today there are projects that already do this.
I think Maui will rather compete with Flutter and QT, not Electron.
pjmlp
For that Electron users would need to learn C#...
Asooka
I've used IDEs, but just keep ending up using vim. With fzf, ctags, clangd and YouCompleteMe, it's a very productive tool for C++. The two things I really miss from Visual Studio are the easy project setup - writing cmake by hand isn't very fun and debugging why it isn't generating what you want is a pain ; and the great visual debugger - nothing I have tried on Linux is as comfortable as GDB's TUI, which isn't very comfortable to begin with, though the capabilities unlocked by the python bindings are unmatched. I've used GDB's python features to great effect to continually monitor the program and stop when it reaches the invalid state I'm interested in, while logging back traces of interesting points.
triyambakam
You should check out some of the new plugins that use the LSP - it's the same thing used by VS Code but available to any editor. Conqueror of Completion (Coc) is what I use and is very popular. It's even better than YCM
baby
Same here, sort of. I've been using like 30 IDEs throughout my life, and chose emacs over vim during the period I was trying to stay within the terminal, but VSCode is the best IDE I've ever used period.
wiseowise
Have you tried IntelliJ products?
girvo
I have, and previous to that I was a big fan of Komodo IDE. One weird feature that I love from both VSCode and Komodo is the ability to open a folder as a project, no need for an actual project file or other IDE specific handling of it that older style IDEs always seemed to a require. The feature set of the IntelliJ products are quite excellent of course, but for whatever reason my need for some weird IDE-editor hybrid where the filesystem is what matters, not the project, always meant I bounced off them.
baby
Yeah, half of my coworkers used to be on CLion (for Rust). TBH I couldn't get past the fact that it reminds me of Java IDEs with too many things going on. What's better compared to VSCode?
reillyse
Yes me too. I started with basic and then up through Microsoft products, swore off them for emacs for years and am now on vs code cause it works so damn well. That in itself says how well it works.
d0mine
30 IDEs seems like a lot. Could you share why have you switched between so many? Could you list several specific points that make VSCode preferable over emacs.
baby
I guess I’ve been programming since I was very young, so I went through a lot of horrible things like frontpage, dreamweaver, notepad++, and then a number of them per language (phpstorm, and other php IDEs, java IDEs, etc.)
The biggest selling point for me for vscode is good defaults (I like vanilla configurations to get started fast on new machines) and discoverability. I want to be able to install 10 plugins and try all of them in a few minutes, and learn shortcuts as I use the plugin (with emacs each extension is an investment)
koonsolo
I ended up with the best of both worlds (subjective of course!).
I use VSCode with a Vim plugin. I get all the best keystrokes from Vim, and the GUI of VSCode.
For me, going to Vim would be worse, and going to plain VSCode would be worse.
bregma
VS Code with a vim plugin is in the uncanny valley of text editors. It doesn't work quite right and a lot of functionality is missing. It's enough that there's more frustration and less productivity for no advantage.
madog
Try the vscode-neovim[1] plugin instead of the more popular vscode-vim plugin. It runs an actual neovim instance in the background and works so much better than vscode-vim, which I also found was "not quite right" and very laggy. It really is excellent, pretty seamless and can't recommend it enough.
1: https://marketplace.visualstudio.com/items?itemName=asvetlia...
koonsolo
Works fine for me. Can you give an example?
One thing I have issues with is autocomplete and using . to repeat the last edit (which includes the autocomplete). Other than that, all fine.
Edit: all the vim commands give me a huge advantage on productivity when editing. All the GUI with plugins gives me a huge advantage on project navigation. Would love to see anyone do better using either one or the other.
ctvo
The majority of my movements are moving around files and making minor edits that the vim plugin supports well. It saves me from reaching for the mouse in many case, and that's the entire goal for me.
tingol
I went the other way, as soon as VSCode-like language server protocol was available for neovim I dropped VSCode. Now I have the same speed with modern features too. In the end it's what's best for you that counts, having quality options helps a lot.
koonsolo
> In the end it's what's best for you that counts, having quality options helps a lot
I agree. I just can't stand the git CLI, and love the GitGraph plugin in VSCode. But like you say everyone has their preferences.
robenkleene
Do you have debugging setup in Vim? (If so, I'd love to hear what that looks like!)
jalino23
except macros doesnt work! and the multiline editing from vs code doesnt work anymore.
unless you got both to work?
koonsolo
For me I don't use macro's that much. I remeber they worked fine in the Visual Studio plugin, but not sure VSCode. If I really need it for a file, I can always quickly open gvim itself. If you use it in your daily workflow, then it might be an issue indeed. But I don't see a reason why a plugin couldn't offer that (like the Visual Studio plugin).
Vim multiline editing works fine :). Not sure what the VSCode offers thoug (maybe I'm missing out)
FPGAhacker
They both work fine for me most of the time.
There are edge cases but I can’t think of a specific right now. When I run into one, which isn’t that often anymore, I’ll open vscode’s terminal panel and do a quick edit in nvim there.
mark_l_watson
I found myself using VSCode instead of Emacs when browsing a lot of files. Just recently I added treemacs to my Emacs setup so my use of VSCode is much reduced. I also took the small effort to setup GitHub Copilot to work with Emacs - for some types of work, Copilot is a real time saver for Common Lisp and Python work.
I would also like his take on Pharo, which I like and many years ago released an open source NLP library for Pharo.
NGRhodes
Linus Torvalds likes the fact Kernel debugging is not user friendly so that it does not detract from good programming practice, making sure you really understand your code and what it should do before having to resort to a debugger.
vlovich123
That note always struck me as pride in self flagellation. Having been around many talented kernel developers, most are perfectly happy with a debugger or any other tool they can use to debug something.
mdp2021
> pride in
Not really: the linked text shows it is a costly strategy to avoid later «self flagellation»: it is meant to avoid the practice of mindless coding - of overly fast feature insertion, blowing amounts of low quality code to maintain. Torvalds: «I'd rather not work with people who aren't careful».
Also: «I happen to believe that not having a kernel debugger forces people to think about their problem on a different level than with a debugger ... that mindset where you know how it behaves, and then you fix it from there. [...] It's that you have to look at the level _above_ sources. At the meaning of things. Without a debugger, you basically have to go the next step: understand what the program does. Not just that particular line».
teddyh
“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”
— Brian Kernighan
koonsolo
Yes, he also worked his entire life on his own codebase. Reality for most programmers is not like that.
inglor_cz
Nokia's Symbian OS was notoriously hard to debug, too. Half-baked emulators and the real device debugging was even worse.
I wonder to what degree this contributed to the eventual downfall of the platform. The learning curve was so steep and the IDE and tools placed so many mines under your feet so relentlessly that it must have driven some talent away.
(An example: you closed the emulator and it left over some running background processes that you had to fish out and kill in the Windows process manager. If you forgot to do that, you could restart the emulator, but breakpoints would stop working. But if you mistakenly killed another important background process, the restarted emulator would freeze and you had to restart the entire Windows.)
On the contrary, I just love working with JetBrains IDEs. The debugging functionality is so great that I feel no one is trying (deliberately or out of neglect) to waste my time. Given that I am 15 years older than I was in the Nokia days, time has become a more valuable resource for me.
secondcoming
That was not the fault of the OS though, but rather embedded dev in general. Techview (the emulator) allowed you to test your code to a point, but because x86 CPUs were more forgiving than ARM ones you still had to test your code on ARM reference boards (H2 and H4). There were only a handful of Lauterbachs floating around since they were so expensive. Only one team got to see the actual phones being developed, and that part of the building was off-limits to everyone else.
We went through several IDEs, Visual Studio, CodeWarrior and finally Carbide.
I’m not saying the OS itself wasn’t complicated though.
tomxor
Don't both perspectives make sense?
If you are working on a relatively small or modular codebase for a long period of time Torvalds perspective makes sense, since the codebase will also benefit from that kind of introspection (ok Linux is not exactly small but excluding drivers is on the order of ~100k AFAIK, which is small relative to the time it's been active); id games are on the order of millions of lines of code (according to Carmack) and while the different engine generations are related they still draw a line under each one after a certain point and move on so they are also very time limited.
I enjoy playing computer in my head in fine detail on small code and find a lot of joy in small code. But I can also respect that on a large and unwieldy enough code base where it's necessary, it's going to make more sense to lean on a debugger and other tools more often.
physicles
There’s an important reason to keep up these computer-in-your-head skills: you don’t have an interactive debugger in production, or on customer devices. If you can’t reproduce the problem, then all you have is code and (hopefully!) enough logs to figure out what’s going on and make a fix.
zo1
It's all well and fine if all that you see is what will run. These days so many frameworks and layers are below and on top of your code that it's hard to know how your (relatively) simple code will behave at runtime. We've become on some level config and package install warriors.
stjohnswarts
that works for him, and he is intimately familiar with his software, also he's a programming savant. I find as a consultant I often get dropped into poorly documented code to fix it and a good shell environment and IDE/debugger are invaluable especially for spaghetti python code with references that are nonobvious until you can hit a breakpoint and decipher where the hell an object is coming from.
mongol
Yes I also thought about that. Two programming gurus on opposite sides of a spectrum. I find it refreshing.
jbverschoor
Anyone who says a tool is better when it’s shittier is just insane or has a huge ego to protect
lmedinas
I have a similar experience, I started to use Emacs with my first Linux installation way back in the late 90s together with pico (later nano for fast editing). A few years ago i came to know about sublime text and I was astonished how much can be done with it and how quick it was compared to Emacs. Sure it does not contain all the goodies Emacs has but i after getting sublime text i realized how much time i saved and focusing on code. Recently i stop bothering and moved to VSCODE and its pretty damn good.
I miss sometimes Emacs but i prefer to use VSCODE nowadays as its a much modern environment and brings me directly to the point of comfort. I also tried Neovim but i was not convinced to replace VSCODE, i mostly use it on the console for quick and dirty editing.
avl999
Using a JetBrains IDE (or whatever IDE) + Vim plugin is the best of both worlds. Writing code is composed to two tasks:
1. Pure Raw Text Editing: This stuff like jumping around within a single file, making edits. Vim really shines here with keybindings that become muscle memory & are portable cross platform- for example I am forced to use a Mac for work but use Linux for my personal stuff, the keybindings for the exact same tool are often different between mac and linux. Vim really shines here
2. Work that requires you to consider the language AST: Stuff like refactoring- renaming something through the entire codebase, jumping to definitions and implementations, auto-completing symbols. This is where I fall back to IDE features as they are unambiguously better at it than Vim. (Yes I know you can get this type of stuff kinda working in vim but it has never worked well enough to my satisfaction... you have a to install dozens of plugins, often a plugin for each language that you want syntax support for which adds bloat and in my experience I have never gotten them to work quite right in a reasonable amount of time)
rvdginste
In 2000-2006 I implemented garbage collectors in C on Linux. I used Emacs and GDB, and likely also DDD and GDB from within Emacs. I don't think there was anything better back then.
It's been a long time since I used C, but I wonder whether VSCode really gives a better experience than Emacs. Nowadays you can use Emacs with an LSP server, which is likely also what VSCode is doing. And there are Emacs distributions like Spacemacs and Doom Emacs that take away the configuration pain. As someone who has used Emacs for a very long time, I'd be tempted more into looking at CLion from JetBrains instead.
Regarding the comment about the debugging. For me personally, I always take the time to study the code first before I start debugging. A lot of times I already find the problem by just reading the code and even if that is not the case, I have a much better understanding about how the code is supposed to behave and that makes the debugging session a lot more useful.
And I say that because I have the impression that it is common for developers to dive straight into a debugging session without a good understanding of what the code is doing or trying to do. It's like they see the sympton and want to fix the sympton instead of fixing the core cause.
But that might just be my background with garbage collectors: in that case the sympton only becomes visible a long time after the actual problem occurred. The sympton was often dereferencing a pointer that failed, while the problem was the garbage collector writing a wrong value for that pointer in one of the earlier garbage collections. And that led to a lot of assertions in the code to catch problems early on.
robenkleene
> Regarding the comment about the debugging. For me personally, I always take the time to study the code first before I start debugging. A lot of times I already find the problem by just reading the code and even if that is not the case, I have a much better understanding about how the code is supposed to behave and that makes the debugging session a lot more useful.
> And I say that because I have the impression that it is common for developers to dive straight into a debugging session without a good understanding of what the code is doing or trying to do. It's like they see the sympton and want to fix the sympton instead of fixing the core cause.
Did you watch the video? He spends a significant amount of time talking specifically about why he thinks what you are saying here is misguided.
rvdginste
I actually did watch the video. Don't understand me wrong: I don't have anything against a good IDE and a good debugger. I currently work with C# and use Rider.
Still, for me personally, I need to study the code and know what to expect before I start the debugger. It makes the debugging session a lot more useful and efficient. And, actually, like John Carmack said that other people told him, in a way, I do "replay" the code in my head while reading it. And a lot of times, I already figure out what the error is when reading the code. But, I will often still debug the code to verify that what I'm thinking is true: I do trust the debugger more than my brain.
Aside from that he also mentioned that nowadays software systems tend to be complex and too big to completely fit into one's mind. I agree with that, but IDEs make it easier to isolate the code in the system that is relevant for the issue at hand: you can find the call sites of a method, the use of results, the origin of input values and so on. I don't know how good IDEs are currently for C/C++, but those things are standard for C# and Java. And with those tools, it really is not that hard to get a rough view on where and how a piece of code is used in a big system. Obviously, this will be easier in a well-designed system than in a spaghetti-code system.
It is important to know all the contexts in which the code you are debugging is used. Often people are focused on the one specific context in which a user saw a bug, and they focus on that, start a debugging session for that, fix the code for that and break the usage in the other context... because they do not take the time to read and understand the code. And that is also where unit/integration tests come into play.
So, nothing against the use of good IDEs and debuggers, but always be sure to understand the code you are changing.
alkonaut
> Regarding the comment about the debugging. For me personally, I always take the time to study the code first before I start debugging. A lot of times I already find the problem by just reading the code and even if that is not the case, I have a much better understanding about how the code is supposed to behave and that makes the debugging session a lot more useful. And I say that because I have the impression that it is common for developers to dive straight into a debugging session without a good understanding of what the code is doing or trying to do.
I don’t understand this sentiment about “modern” (interactive, user friendly) debuggers.
Simply because you have a tool doesn’t mean you have to skip the step of trying to understand the code. Is the suggestion seriously to avoid having tools that are objectively better because there may be a temptation to use them too early, whereas having only more primitive tools would do better?
I have seen the same argument about syntax highlighting. That pretty colors makes for sloppy code reading and monochrome text means you read slower and thus more thoroughly…
BlargMcLarg
>That pretty colors makes for sloppy code reading and monochrome text means you read slower and thus more thoroughly…
On the contrary, I get quite annoyed losing track of indents and scoping. VSCode finally adding colored brackets has been a blessing in navigating legacy code with way too much nesting in the face of developers still unable to keep their code from scrolling horizontally and dividing methods / using different paradigms to prevent overnesting.
Also helps to just not have to spend the limited amount of focus on things that an IDE can cover for you. Programming has become far more complicated (no, not complex) in many ways, and we as a species haven't magically gotten a lot better at understanding it while we seem awfully good at writing things even more complicated.
noisy_boy
> I have seen the same argument about syntax highlighting. That pretty colors makes for sloppy code reading and monochrome text means you read slower and thus more thoroughly…
The amount of times color change has indicated syntax error to me makes it a no brainer. Sure, some systems may have an older editor that doesn't have color highlighting, but that's a rare scenario for me. I'm not going to give up the huge benifit just to "train" my mind for such rare cases.
rvdginste
> Simply because you have a tool doesn’t mean you have to skip the step of trying to understand the code.
Exactly. Maybe that was not clear from my comment, but my point is basically that using the most fancy tools is not gonna help a lot when you don't start with getting an understanding of the code.
badsectoracula
> In 2000-2006 I implemented garbage collectors in C on Linux. I used Emacs and GDB, and likely also DDD and GDB from within Emacs. I don't think there was anything better back then.
Around 2003-2004 or so i used Anjuta on Linux which provided a Visual Studio-like environment with integrated debugger, C++ code completion, project management, etc. I used it for all my C and C++ development as it was both fast and featureful.
Sadly the developers decided to rewrite some core part (probably my first brush with the GNOME approach to software engineering) and the rewrite was so buggy that crashed pretty much all the time, forcing me to move elsewhere.
omegabravo
Language Server Protocol (LSP) came from the VSCode team.
undefined
noisy_boy
Couldn't agree more on the monitor real estate - the difference is day and night. Also, I am one of those developers who rely a lot on log statements. It is probably a combination of old habits (having getting started coding with shell scripts which don't have the kind of debugging support full-fledged languages have) and past difficulties troubleshooting as a production support person (you always remember those painful moments so now that I'm a developer, I want to make my logging as helpful as possible to my fellow support folks). Great point on debuggers though - I need to use them a lot more.
undefined
jstx1
There's so much interesting stuff in the full interivew - talk programming languages, how software is written in big companies, games and history of games, AI, VR etc. It's always interesting to hear about how Carmack thinks and works. He had some very pragmatic takes too (not liking lisps for large projects, wanting to write more Go if he has the opportunity, nice things to say about JavaScript...)
The original HN post got derailed into talks about Lex, and I don't think that most people had even watched / listened to a 5-hour podcast at the time of the discussion.
pm3003
I only listen to two long podcasts regularly (and the occasional Lex Friedman or JRE, though they’re usually shorter):
- Alles Gesagt from German newspaper Die Zeit (almost half of them are in English). These are interviews that go on until the interviewee says a magic word. They usually do them at the interviewee’s home.
- Dan Carlin’s Hardcore History, my favourite on long drives.
labrador
John Carmack expressed exactly how I feel about having a good debugger. I've never heard anyone say that or comment on that, so it was nice to get confirmation from a master programmer.
mrweasel
Around 15 years ago I worked as a .Net developer, using Visual Studio, and I loved having the debugger available. I might be less clever than others here on HN, but the debugger helped me locate so many stupid mistakes extremely quickly. Sure you could just read the code an reason about the flow and structure and find the bugs that way, but that takes me much longer.
After the .Net jobs I pretty much switched back to Vim, TextMate and other text editors, and frequently forgot that debuggers are available. As Carmack points out, if they are difficult to use, you'll find yourself using them much less. For some reason I've found myself in environments where IDE are seen as second rate. Like training wheels for less skilled developers, but you know what: I want a debugger, I wanted integrated into my code editor and that's good enough for a guy like Carmack, then it's good enough for me.
labrador
Like he said, our brains make mistakes interpreting the code and running it our heads. Sometimes you need a debugger to see what's really going on, especially as the system becomes more complex
redthrow
Another master programmer Linus Torvalds seems to have the opposite attitude though
https://lwn.net/2000/0914/a/lt-debugger.php3
Wonder if there's a difference in average attitude between people who do creative stuff (e.g. games) vs people who do infrastructure type stuff (e.g. Linux kernel)
meitham
I think his views are understandable in the lights that most games developments targets Windows platform, and text editors with GDB were for a long time not as mature on Windows compared to Linux.
His comment on not keeping code in your head also aligns with the fact that most games development prefer object oriented approach to model characters and other entities, and that lends itself less toward reasoning about code in your head as opposed to FP.
laumars
He’s done plenty of work in FP too. His point wasn’t that good programmers couldn’t work the way you describe but rather “why wouldn’t you want to make programming easier for yourself by using these tools?”
It’s a really pragmatic opinion and shows a real maturity and lack of ego. Something a lot of self-proclaimed “rock star” developers could learn from.
badsectoracula
GDB can work as a backend for an IDE and even in mid-2000s you had VS-like IDEs like Anjuta that provided a very decent interface. A little bit later Eclipse/CDT did a great job and IMO in terms of features it was better than VS around late 2000s / early 2010s. It did eat up all the system resources though (i used to have "only" 1GB of RAM on my midlate-2000s PC and until i added another 1GB i had to choose between Eclipse/CDT and Firefox if i wanted to avoid constant HDD noises :-P).
I remember working at a gamedev studio around 2007 and while almost everyone else used Visual Studio 2005 (i think, i don't remember exactly), i used Eclipse/CDT with some makefiles that another developer (who used Vim) had written and always felt VS was more limited overall.
(it has been almost a decade since i used Eclipse/CDT though, i don't even remember why i moved on from it)
KerrAvon
Xcode tried to use gdb as a backend for a long time and it was awful. It only got better when they moved to lldb.
klohto
Most game dev is OOP because most games are C++ for performance and graphics, not because of reasoning.
axelfontaine
Amen. Good powerful IDE, debugger, static typing, static analysis and 3 monitors as opposed to a text editor with random plugins, random log statements, dynamic typing and a small laptop screen. Couldn't agree more!
georgewsinger
An underrated John Carmack factoid is how he leveraged ultra-premium workstations (several years ahead of the rest of the market) in order to create the Doom & Quake series[1]. In 1991, before embarking to work on his early FPS game titles, John Carmack spent $11,000 ($23,219.85 inflation-adjusted) on a NeXT workstation. The story of his purchase is chronicled in Masters of Doom:
> On a cold winter day, Carmack laced up his shoes, slipped on his jacket, and headed out into the Madison snow. The town was blanketed in the stuff, cars caked in frost, trees dangling ice. Carmack endured the chill because he had no car; he'd sold the MGB long before. It was easy enough for him to shut out the weather, just like he could, when necessary, shut Tom and Romero's antics out of his mind. He was on a mission.
> Carmack stepped into the local bank and requested a cashier's check for $11,000 [$23,219.85 inflation-adjusted]. The money was for a NeXT computer, the latest machine from Steve Jobs, cocreator of Apple. The NeXT, a stealth black cube, surpassed the promise of Jobs's earlier machines by incorporating NeXTSTEP, a powerful system tailor-made for custom software development. The market for PCs and games was exploding, and this was the perfect tool to create more dynamic titles for the increasingly viable gaming platform. It was the ultimate Christmas present for the ultimate in young graphics programmers, Carmack. – Masters of Doom, pg. 93
Carmack also shelled out $10K to use the world's first 1080p monitor, which he used to create Quake I, Quake II, & Quake III:
> [In] 1995, Carmack spent $9,995 on one the first 1080p monitors: the Intergraph Interview 28hd96. This monitor was gigantic, but the extra screen space and image quality surely came in handy during the creation of the Quake trilogy. It provided a 28" screen with 1920x1080 @ 85Hz, a resolution not unheard of on today's hardware. Essentially, Carmack was able to trade $9,995 of 1995 money for a monitor that put him decades into the future.
Get the top HN stories in your inbox every day.
I've programmed for a long time. One of the best programmer's I've known actually had his own debugger. He was an OS kernel developer and carried the debugger with him from job to job; we were working on the new operating system at IBM that would become AIX. He was a bit of a nuisance in the large development organization because he would wander around the kernel in his debugger fixing code before others had even noticed the defects.
We were working on a distributed file system, and I had complained that we couldn't be expected to finish on the same deadline as the hardware device driver teams and the network stack teams. How would we even develop our software if we didn't have any working communication between machines? Well, my friend came to the rescue and wrote the kernel support for the NIC and a comm stack up to the level of UDP (having a debugger helped).
Eventually, the managers of the other departments that wouldn't cut my team any slack on our schedule started coming around to ask us for help because they were falling behind schedule. They were responsible for the official development of the network device drivers and networking, and it turned out they didn't have a working kernel debugger like we had (thanks to my friends personal one), so they had fallen behind schedule while we were already making good time on our distributed file system running on top of the our own hacked together temporary device drivers and networking code. I had to lend the teammate and his debugger to the other two teams to help them with their schedules.