Live data from Hacker News

Ask HN: What projects did you build to get better as a programmer?

news.ycombinator.com

1–10 of 48 posts

Ask HN: What projects did you build to get better as a programmer?

#1
What projects to start building after learning fundamentals of programming to get out of the tutorial and MOOC rabbit hole? It's more like taking the training wheels off at some point while learning to ride a bicycle.

I know the suggestion is to build what I like. But what if I don't have any problem at hand because I don't know the space much. What projects can I start with? Things that can operate as standalone projects and can be used.

I find most university courses are also limiting in this aspect. They only ask to implement part of the project (only a few functionalities). Maybe I haven't looked into many. I am not saying university courses or books are useless. They have their place. They can be very useful to fill in the gaps of our knowledge. But they are not all in all. We have to build tangible concrete things and get things done. They may be small projects. Atleast that's what makes a great designer or in general engineer. They make things in their garage or workspace even if they are tiny projects.

What type of projects (guided or not) can I build so that I can get an idea of the space and they start getting ideas of my own to build. Along the way I have to read up stuff e.g: unknown datastructures or algorithms to fill in my knowledge bucket.

And also I have doubts regarding how far can I go with that rudimentary knowledge of programming? When do I start learning more about other things like systems, algorithms, databases, etc?

Re: Ask HN: What projects did you build to get better as a programmer?

#2
I once build a machine learning library from scratch in rust. No external libraries allowed. It could do linear regression, lasso, and ridge. It also contained some statistical inference features, like p-values, AIC, feature selection. Basically chapter 3 of Hastie [1]. It's more difficult than you might think, as you have to figure out how to do efficient matrix manipulations, deal with floating point overflows, multi-threading, unit testing, bench marking, etc.

[1] - https://hastie.su.domains/Papers/ESLII.pdf

Re: Ask HN: What projects did you build to get better as a programmer?

#3
In ancient times, one had to do something interesting or perceived as difficult to build credibility. This involved taking something from blank paper to working program. Yeah, the work was usually overly large and inefficient but people who came out of such “approved” projects were considered (new) members of the community. This was totally separate from coursework and grades, of course, as creation was far more important.

This was usually a super Star Trek game, or an implementation of Life (which led to a fair number of language wars), or a 4x4x4 tictactoe or chess program. One hacker won his spurs making the best checkers program going. More complex projects were binary file editors, system utilities (magtapes pretending to be DECtapes!) or OS mods. Some were lucky to get to an hacking Mecca - these are the ancient heros. Acceptance could not be purchased, only earned and poseurs were ridiculed.

I assume things are similar now, with GitHub replacing card drawers and net based communities replacing f2f. “Because I could” was an amazing goad, particularly when you didn’t know the limitations. Cracking, while useful, wasn’t anywhere near as worthy or honourable. Hackers make neat things. It’s the making not the knowledge itself, and whether the thing is used is a secondary but satisfactory gain.

Decades on, I’ve written miles and miles of code, but very little of it was neat. Useful, commercially successful, yeah, but only a few things here and there made me sit back and smile - these things would have passed muster back then. I hope others get to experience such feelings a few times in life.

Re: Ask HN: What projects did you build to get better as a programmer?

#4
I believe you're in the middle of two points, on one end, you don't want to write something trivial. On the other, you don't want to write something too new or cutting edge, as you're solo. Finding great projects to work on somewhere in the middle can be difficult.

I'd suggest that while you're finding your feet programming during this time, focus on software engineering, design patterns, and other SWE principles (SOLID for example).

As far as project ideas go, it really has to be something that aligns with your interest. I see you're aware of the suggestion "to build what (you) like." Your inexperience in this domain does not preclude you from building software adjacent to your personal hobbies.

I'll use myself and my own interests for example. I am a fan of the highest level of the US' legal system, the supreme court. I regularly listen to oral arguments presented before the court, along with keeping up with the SCOTUS via blogs and such. I can check to see if there is any public data available for me to play with, which there is. From there it's all about seeing what's available for me to use and coming up with a project idea using this resource.

I use this example to try and express that "what I like" does not have to pertain the software development discipline itself.

What I actually started with was video game modding for games I liked to play, along with Discord compiler, a project that allows folks to compile code on Discord. Both followed my interests pretty closely, both required lots of extracurricular learning.

Re: Ask HN: What projects did you build to get better as a programmer?

#6
post #3

In ancient times, one had to do something interesting or perceived as difficult to build credibility. This involved taking something from blank paper to working program. Yeah, the work was usually overly large and inefficient but people who came out of such “approved” projects were considered (new) members of the community. This was totally separate from coursework and grades, of course, as creation was far more impo…

This is a nice response, what were those bits of code that made you smile?

Re: Ask HN: What projects did you build to get better as a programmer?

#7
I have a suggestion. Instead of trying to figure out what to build, why don't you start reading the source code of what others have built?

For example, interested in blockchain and know some Golang? Why not start reading the Ethereum main repo source code and documentation? This is just an example to make a point, but you get the idea.

Good luck :)

Re: Ask HN: What projects did you build to get better as a programmer?

#8
post #6
post #3

In ancient times, one had to do something interesting or perceived as difficult to build credibility. This involved taking something from blank paper to working program. Yeah, the work was usually overly large and inefficient but people who came out of such “approved” projects were considered (new) members of the community. This was totally separate from coursework and grades, of course, as creation was far more impo…

This is a nice response, what were those bits of code that made you smile?

Two come to mind quickly: Spending a night or two trying to tune 2D chemical matching code to gain 10-20% and ending up with a factor of 3x. Bought the group lunch for that one. The other was creating an application that hung together well and was easy to use. Took several iterations of the GUI to have something that did more than cause confusion... They say the best GUI's aren't memorable because they're not in the way. This was too complex for that, but it was considered obvious.

Re: Ask HN: What projects did you build to get better as a programmer?

#9
Could build a vue js SPA frontend that dynamically renders a table of things (fake pet food sales?) based on a call to AWS dynamodb.

Could use AWS Lambda to implement a server side auth layer.

Would get some decent AWS exposure (deploying vuejs with S3 and cloudfront, possible serverless lambda experience plus API Gateway), some nosql experience, would learn the request response lifecycle and how frontends actually work. Could do some terraform to deploy the AWS stuff.

Years ago my experience was that I knew AWS and devops stuff. I wanted to do something more substantial with golang, and I wanted to make a frontend for an API I had made (but had never done so before).

Starting with a simple idea (a dynamically rendered table) was simplistic enough that it was doable but still complicated enough that I needed to spend a couple hours for a few days after work to get it working. I had a great feeling once it was working and I really ended up learning quite a bit as a result.

Re: Ask HN: What projects did you build to get better as a programmer?

#10
The best way to learn is to build something for someone else. When someone else sets the requirements you have to engage in real problem solving and research the best tech to solve the problem. This keeps you from following just the easiest path as well as exposes you too new ideas.

You can do this at work, for a local non profit, for your friend's weird startup idea, ...

Post reply on HN