Live data from Hacker News

Challenging projects every programmer should try (2019)

austinhenley.com

181–190 of 346 posts

Re: Challenging projects every programmer should try (2019)

#181
post #24

While writing a text editor, a compiler, an operating system, or a raytracer might make you a better programmer, it won't make you a better software engineer. In fact, it might make you worse at software engineering, because it embodies the disastrous "Not Invented Here" doctrine. Hackers like to obsess about Big-O, data structures, HoTT, and other high-theory stuff, yet the following skills, essential for software e…

Notice it said programmer , not software engineer . Speaking for myself, software engineering is something I do because I have bills to pay. Programming is something I started doing because it’s fun. The projects in this article are the types of projects I would do for fun if I had the time.

> Software engineering is something I do because I have bills to pay. Programming is something I started doing because it’s fun.

Sudden clarity.

I feel like printing it and putting it next to my workstation, so that I remember this both when doing something fun and when having to work so that my bills get paid.

Re: Challenging projects every programmer should try (2019)

#182
post #130

Earlier quoted context omitted.

> If you are only using ready-made building blocks, there is a lot of great software you just cannot write. And I think we all see that, because there isn't much great software around. I claim that the opposite is true: The reason there are so few software projects that are really great is because high-level skills, not low-level ones, are in short supply. Every CS graduate can implement Paxos. The number of people w…

I guess it all depends on your definition of low-level. High-level can also be low-level, just with different building blocks, if the building blocks are based on well-specified abstractions. I am actually currently writing a novel text editor, and I can guarantee you, my requirements mean that an AI cannot help me with that directly, because the underlying mechanisms I need don't exist yet. The AI is still helpful t…

You have to be pretty smart to even think of an idea that can't be done with existing building blocks.

It seems to show up more in hobby stuff, or in cutting edge projects.

I'm always excited whenever I see any kind of algorithm work, because it's such a novelty. Most everything I do is just a UI around a few libraries.

Re: Challenging projects every programmer should try (2019)

#183
post #107

Earlier quoted context omitted.

> Literally all of the listed projects, text editors, compilers, operating systems, and ray tracers, can exercise the exact same activities. In the linked article, these projects are all explicitly described as opportunities to learn about low-level stuff like how to efficiently store editable text. The difference with a web search engine is that nobody today can build such a thing completely from scratch, therefore…

I enjoy reading your discussion and just wanted to add that some people write a big scale software from scratch nowadays - for instance Marginalia for web search and Andreas Kling and team for operating system and web browser

Marginalia, which I'm a big fan of, is not "written from scratch" (it would be stupid to do so). Check the project on GitHub, it has lots of third-party dependencies.

Re: Challenging projects every programmer should try (2019)

#184
post #24

While writing a text editor, a compiler, an operating system, or a raytracer might make you a better programmer, it won't make you a better software engineer. In fact, it might make you worse at software engineering, because it embodies the disastrous "Not Invented Here" doctrine. Hackers like to obsess about Big-O, data structures, HoTT, and other high-theory stuff, yet the following skills, essential for software e…

Is not this the main point of the editor war? programmers built tool for enhancing programming abilities, but they argued with which tool is best one...

Re: Challenging projects every programmer should try (2019)

#185

What’s with many programmers’ obsession with writing their own text editors? In part a rhetorical question, but it still boggles me. Not that many people that are obsessed with manufacturing their own hammers and nails, for example, hence why I’m asking.

Well you would normally use hammers and nails for woodworking but you wouldn't be able to use woodworking to make hammers and nails... But I guess with a text editor it's a weird recursive thing where the programming tool is itself a programming project. I think people just do it for fun and because they can. You'll probably never make something you can productionize but maybe you will learn some cool things along the way.

Re: Challenging projects every programmer should try (2019)

#186
post #107

Earlier quoted context omitted.

I don't understand why you think a search engine requires the use of "real engineering skills" like picking and choosing libraries and identifying which opportunities will yield fruitful optimization. Literally all of the listed projects, text editors, compilers, operating systems, and ray tracers, can exercise the exact same activities. I'm more inclined to think that your comment is really more revealing about what…

> Literally all of the listed projects, text editors, compilers, operating systems, and ray tracers, can exercise the exact same activities. In the linked article, these projects are all explicitly described as opportunities to learn about low-level stuff like how to efficiently store editable text. The difference with a web search engine is that nobody today can build such a thing completely from scratch, therefore…

A simple search engine is certainly doable from scratch in a matter of weeks, complete with most things expected from a search engine.

Similar to compilers or tiny OSes, one can go as hardcore as necessary, or just stick to basic stuff.

Of all the typical personal challenge style projects, databases are probable the hardest to build, and even that is not impossible.

Re: Challenging projects every programmer should try (2019)

#187

What’s with many programmers’ obsession with writing their own text editors? In part a rhetorical question, but it still boggles me. Not that many people that are obsessed with manufacturing their own hammers and nails, for example, hence why I’m asking.

The same reason as all the other projects mentioned, because it teaches you many useful concepts that show up elsewhere when writing code. A carpenter likely won't learn much by manufacturing their own hammer that they can apply in their own workflow, a blacksmith on the other hand might.

Re: Challenging projects every programmer should try (2019)

#188
post #107

Earlier quoted context omitted.

> Literally all of the listed projects, text editors, compilers, operating systems, and ray tracers, can exercise the exact same activities. In the linked article, these projects are all explicitly described as opportunities to learn about low-level stuff like how to efficiently store editable text. The difference with a web search engine is that nobody today can build such a thing completely from scratch, therefore…

Back when online learn-to-code courses like Codecadamy and Udemy were a fad, I remember that one of them (and unfortunately I don't remember which, and Google, ironically, turns up nothing) taught how to build a search engine in Python from scratch as a first project for complete beginners. I thought it had a reasonable level of complexity for this task. You can still find search-engine-from-scratch courses on Udemy,…

was it udacity's cs101?

Re: Challenging projects every programmer should try (2019)

#189
post #108
post #105

Earlier quoted context omitted.

Yes a software engineer understanding data structures and runtime complexity is akin to a violin player understanding the physics of acoustic dispersion.

Is it not? I can't tell if you're being sarcastic or not.

The analogy would be a software engineer having to understand resistors and capacitors and transistors.

Also, I don’t think you’ll find a single conductor on this planet who is not skilled in at least one instrument. Terrible analogy.

Re: Challenging projects every programmer should try (2019)

#190
post #102
post #83

Earlier quoted context omitted.

This is like telling a student learning an instrument never to practice scales or études because there are other skills necessary for playing in an orchestra. Those other skills are important, but you have to develop your chops at some point, and being a better a programmer will certainly help with basically all those skills you listed anyway.

> This is like telling a student learning an instrument never to practice scales or études No, it's like recognizing that an orchestra conductor doesn't need to play every instrument (or even any instrument!) in order to make music. Or alternatively, that a violin player doesn't need to understand the physics of acoustic dispersion in order to be the best in the world at playing the violin.

Are you an orchestra conductor or a professional violin player?
Post reply on HN