If you think you need a "factory pattern" to write Space Invaders, there is something wrong. I'm close to absolutely certain no such design concept was involved in the original.
It's the result of 30 years of OOP and design patterns. When your brain gets infected with them you start looking for ways to spread the infection.
Challenging projects every programmer should try (2019)
221–230 of 346 posts
Re: Challenging projects every programmer should try (2019)
#222Discussed at the time: Challenging projects every programmer should try - https://news.ycombinator.com/item?id=21790779 - Dec 2019 (297 comments) Also related: More challenging projects every programmer should try - https://news.ycombinator.com/item?id=25489879 - Dec 2020 (223 comments)
The external link for the second story 404's.
Re: Challenging projects every programmer should try (2019)
#223Earlier quoted context omitted.
Software engineering is whatever definition that allows me to procrastinate and sleep at night knowing I don’t need to learn more.
If you don't want to learn you chose the wrong profession.
Re: Challenging projects every programmer should try (2019)
#224A text editor can use an array as data structure. You only need it to be fast during the typing, where you are only changing one line. But for entering new lines, the extra latency needed for rebuilding the array after pressing enter is not noticeable for several million lines. The more challenging part of a text editor is making sure you only render what the user sees.
And the most challenging part is making a text editor that actually works well from a usability perspective. Which has almost nothing to do with data structures and optimization. I've used dozens of text editors. I have never once thought "man, that thing is slow". But I have thought "man, that thing is a bug-ridden, unintuitive piece of garbage" many, many times.
Re: Challenging projects every programmer should try (2019)
#225Earlier quoted context omitted.
This is also the reason a computer with 4GB of RAM can't run Gmail and Spotify at the same time.
> This is also the reason a computer with 4GB of RAM can't run Gmail and Spotify at the same time. That’s demands for faster delivery of software and ridiculous demands on user experience. Does looking down on higher level devs make you feel superior or something like that?
Absolutely not. It's about bloat. Many times people "just want to code" or eschew optimizing repeating the mantra that "premature optimization is the root of all evil" that you often end up with bloated software.
Re: Challenging projects every programmer should try (2019)
#226Earlier quoted context omitted.
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…
Existing libraries for writing CRUD apps are anything but crap. If we can’t create special libraries that work well for common tasks then as a species we are too dumb.
Re: Challenging projects every programmer should try (2019)
#227Earlier quoted context omitted.
Most of the time, big O is not relevant if you're not writing new algorithm. For the usual CRUD app? Not so much. Heck even for more involved work, you will not touch them because your solution will be called or will call some external tools. The good news is that, while still valuable, you won't have to lose time creating a new broken wheel. The bad news is that this part of CompSci is now mostly fundamental researc…
This is just wrong. Understanding the difference between O(1), O(n) etc is essential for literally everyone who writes code. Every single programmer is better with this understanding than without it. You should know the complexity of the code you write - and most of the time that doesn't even require actively thinking about it. If you know the basics of complexity analysis it's just intuitive.
No it isn’t.
It’s a great thing to learn and understand, and essential for designing and maintaining data-intensive systems, but your statement simply isn’t true.
Re: Challenging projects every programmer should try (2019)
#228Earlier quoted context omitted.
If you don't want to learn you chose the wrong profession.
To expand, the software industry moves fast, and you have to keep learning to stay afloat, or risk stagnating and ending your career early. look at where software was at 5 or 10 or even 20 years ago. There was no react and no rust 20 years ago, nor was there even git! Whatever you know now is going to be out of date in a matter of years. good luck getting a job if that's all you ever want to learn.
It’s not all progress.
Re: Challenging projects every programmer should try (2019)
#229Earlier quoted context omitted.
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.
I do pull a lot of libraries, but an enormous amount of what the search engine does is very much built from scratch. The libraries generally deal with parsing common formats, compression, serialization, and various service glue like dependency injection. I think the number of explicit dependencies is a bit inflated by the choice to not use a framework like springboot, which pulls many of the same (or equivalent ones) implicitly.
What makes the search engine a search engine, the indexing software (all the way down to database primitives like btrees etc.), a large chunk of the language processing, and so forth; that's all bespoke. I think it needs to be. A lot of existing code just doesn't scale, or has too many customizations that would add unnecessary glue and complexity to my own code.
I'm going to echo SerenityOS Andreas and suggest that it's a skill like any other. If you shy away from building custom solutions to hard problems, you will never be good at it; and it will become a self-fulfilling prophecy that these NIH solutions are too hard to build.
At the same time, there's a time and a place and you should indeed be judicious as to when to roll your own solutions, but maybe that time and place is exactly in a hobby project like the ones suggested in this thread (and is how my search engine started out; a place to dick around with difficult problems).
I'd also add that being able to tackle problems yourself, rather than needing a library to do all the heavy lifting at all times, is a great enabler. Sometimes there is no adequate library, but that doesn't mean the conclusion has to be "welp, I guess we can't do that yet..."
Re: Challenging projects every programmer should try (2019)
#230While 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…
This is a really important skill that I find difficult and frustrating. Does anyone have good advice or resources?