Live data from Hacker News

Challenging projects every programmer should try (2019)

austinhenley.com

81–90 of 346 posts

Re: Challenging projects every programmer should try (2019)

#81
>So whenever I don't know what to build or I want to learn a new programming language or framework

While the mentioned have some merits if you learn how to program, doing them once might be enough. Not sure how implementing a text editor the nth time will help you learn language X.

If I am learning a new language, I try to implement what interests me at that time, from small to big. It might be a small game, it might be an AI algorithm, it might be an authentication system, it might be an ORM. Doing thing that I like or need helps.

So unless you fancy text editors, I wouldn't churn one after another.

Re: Challenging projects every programmer should try (2019)

#82
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…

>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.

To me learning the engineering part is easiest. And also not terribly valuable if you don't know CS fundamentals.

Re: Challenging projects every programmer should try (2019)

#83
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…

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.

Re: Challenging projects every programmer should try (2019)

#84

Doing some 2D game dev without an engine was the most humbling experience that showed me just how ridiculously fast computers have become. You do things that you swear are far too slow to work, and yet it works even on a Game Boy because it’ll do a million operations in a second and a million is apparently a big number. “Wait… so I’m looking up and drawing every sprite every time? There’s no clever diffing happening…

well, there ARE some very interesting tricks back in the old days on both the application and hardware side to help out with these exact problems (for one thing, this is exactly how a SpriteAtlas as a data structure is utilized. Why waste time uploading a dozen sprites that usually render in a predictable way when you can upload one big image and sample parts of the image?).

But in terms of today, yes. You can certainly brute force render 99% of anything from 15+ years ago on modest commercial hardware (i.e. not even gaming PCs) by drawing and re-drawing a scene.

Re: Challenging projects every programmer should try (2019)

#85
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.

>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.

Same for me. While I strive to do stuff fast, in a way that is easy to maintain, modify and extend for work, see the big picture, take the right time of shortcuts, understand business and customers, there is not were the fun is.

I enjoy the time when I am alone with the PC, far from user stories and scrums.

I love to program, to convince the PC to do the trick I tell it to do. What I enjoy also is CS, algorithms, data structures, abstract thinking.

Re: Challenging projects every programmer should try (2019)

#86

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.

Re: Challenging projects every programmer should try (2019)

#87
post #67
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…

I think those who deal with OS kernel, compiler etc on daily basis also understand those points. They use various tools to make code review, time management etc easier. Not all hackers are overly obsessed with the most efficient Big O and various low level (sorry pun intended) details.

>Not all hackers are overly obsessed with the most efficient Big O and various low level (sorry pun intended) details.

A NAND gate is low level. Big O is just theory that anyone should know if he's worth something as a programmer.

Re: Challenging projects every programmer should try (2019)

#88

I wish every dev would try projects and things completely unrelated to computers. I enjoy being outside. These headlines “projects every dev should try” really annoy me. I try to put in enough effort at work, and that’s tough. But I have been messing with computers for over 20 years now.

We're on Hacker News. Do you go to a fitness community and say "I wish every gym bro would put down a dumbell and pick up a book?"

But if you're curious, I hike, am learning Japanese, and want to eventually clean up and pick back up my saxophone once I can get the money to get it fixed. Tech is a big but not the only part of my life.

Re: Challenging projects every programmer should try (2019)

#89

I wish every dev would try projects and things completely unrelated to computers. I enjoy being outside. These headlines “projects every dev should try” really annoy me. I try to put in enough effort at work, and that’s tough. But I have been messing with computers for over 20 years now.

Agreed. This site selects for people who have made computers their entire life. Consider this an unsolicited reminder to touch grass.

>This site selects for people who have made computers their entire life

isn't it the other way around? The site allows anyone to post on nearly any topic, but the longest standing audience veers tech. there still is quite a few topics on medicine, transportation, economics, and politics as well.

Re: Challenging projects every programmer should try (2019)

#90
post #55
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…

There is a need for both "solving complex problems alone" and "learning how to work as a team developing a complex project within a timeline". The Software Engineering part is best learnt in industry under a mentor.

The tooth extraction skill is fundamental if you are a dentist. You learn it in school. Knowing how to market and sell that skill is valuable but you can learn it while working.

CS I learned in school, engineering I learned while working.

Post reply on HN