[HN Gopher] Ask HN: What projects did you build to get better as...
___________________________________________________________________
Ask HN: What projects did you build to get better as a programmer?
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?
Author : debanjan16
Score : 26 points
Date : 2023-03-20 14:49 UTC (8 hours ago)
| headline wrote:
| 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.
| ipunchghosts wrote:
| Anytime i learn a new language, I write and http server.
| strangelove026 wrote:
| 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.
| kidd0 wrote:
| Thanks a lot for this. Your response is appreciated by someone
| and I want you to know it <3
| noud wrote:
| 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
| jleyank wrote:
| 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.
| smarri wrote:
| This is a nice response, what were those bits of code that made
| you smile?
| jleyank wrote:
| 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.
| smarri wrote:
| Very cool, these are nice moments to be able to remember.
| Thanks for sharing
| xiaolingxiao wrote:
| Writing a full CRUD todo app on both web and iOS helped me
| understand things a lot better. The most important thing is to
| keep it simple, and by going across platforms you can see the
| importance of good data representation design.
|
| The idea is to start off by making bad decisions, and slowly
| refactoring your way to good abstraction, this helps you intuit
| the reason for abstractions.
| johncoltrane wrote:
| > When do I start learning more about other things like systems,
| algorithms, databases, etc?
|
| At work.
| _adamb wrote:
| 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, ...
| 11235813213455 wrote:
| That's one way to learn time schedules, efficiency, but not
| necessarily the rest of a programmer skillset
|
| I had the most prolific time of my life, when out of work for 6
| months, and I did completely random projects, a 2048 solver (it
| was trendy at that time), a connect-four adversary and many
| others ideas https://caub.github.io/misc/, just imagination,
| learning the algorithms, also some leetcode for future
| interviews, still then this moment helped a lot building myself
| brutus1213 wrote:
| This is an excellent topic and I was hoping to find a set of
| great ideas here (really love the http server example). I was
| thinking of the concept of Katas in martial arts. What would be
| the Katas for programming I wonder.
|
| Some thoughts:
|
| 1) Build your own database. Not a SQL db. Just something that
| takes records on a cli and enables retrieval. Persist the data.
| Support better queries/
|
| 2) Maze solver.
|
| 3) Snake game
|
| 4) Helper/Solver for something like Wordle.
|
| 5) Chat server (but I like the HTTP server idea. Annoying thing
| is newer HTTP versions have gotten complicated).
|
| I think there are twenty to fifty of these little things we have
| all done in our career, and either forgotten them or it felt too
| natural to register. Wish someone compiles a list of such
| projects some day. It would bring back joy in some of the coder-
| at-heart folks lives.
| kaveh808 wrote:
| My journey as a software developer began in the 80's at MIT by
| writing 3D graphics code on a Symbolics Lisp Machine. Some fond
| memories:
|
| https://kaveh808.medium.com/late-night-lisp-machine-hacking-...
|
| One big difference between then and now was that back then you
| wrote mainly from scratch and were in charge of most parts of
| your software, whereas today it is mainly about gluing various
| toolkits and frameworks together.
| ineedausername wrote:
| 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 :)
| rubenGit wrote:
| gfd
| eterm wrote:
| I found the trick was to get a job in software development. That
| solved the problem of trying to find things to do, other people
| do that hard work and bring me requirements.
|
| They even pay me for it too!
|
| I don't know what you're after, but if your aim is to go into
| software development as a profession then read on. Otherwise skip
| the rest.
|
| Honestly, if you have the fundamentals down you can probably find
| an entry level job and learn the rest on the job. No tutorials
| will prepare you for real experience in software development.
|
| Programming is only about 20% of software development in my
| experience. It's a critical 20% that you can't do without, but
| the rest is hard to prepare for and best just to get real
| experience of.
|
| There's no point spending forever learning to be the best in the
| world at that 20% without discovering if you even enjoy the other
| 80%. There are even far too many who hate that 80% and often will
| not be scared to share this disdain freely.
|
| The trick is to ignore them, fully engage with the whole job and
| you'll quickly out pace them in career development, and you'll
| likely enjoy your job a whole lot more too.
| kyoob wrote:
| I built automated tests and frameworks. You can get pretty far in
| a career in test automation while still learning and getting
| better because people perceive the code as important but the
| whole company doesn't (usually) fall apart if you mess something
| up in your code.
|
| More important, in my experience, is to find someone tough but
| super knowledgeable to review your code. Try to anticipate what
| kind of notes you'll get if open you a PR with your code as it
| is, and then fix that stuff before you open the PR. Write a
| checklist of stuff that keeps getting picked on by better coders
| than yourself, print out the list, and tape it to your office
| wall.
| GOATS- wrote:
| I personally find writing apps for myself to be a fun and
| practical way to learn. That way you might get introduced to a
| few libraries you've never used before - and get new codebases to
| dive into and learn from. I have friends who started programming
| with writing tools to mod games and IRC/Discord bots.
|
| I've benefited a lot from the apps I've written to improve my
| day-to-day life.
|
| Just to give you an example: I wrote a tool to sync my uni
| timetable from the proprietary system they're using to my Google
| Calendar - that way I have all my events in one place and I'm
| also notified of classes early enough so I can get to campus in
| time.
| st4lz wrote:
| > What projects can I start with?
|
| It's like asking people on the internet what you should eat for
| dinner or who you should marry. Unless you don't learn
| programming just for the sake of it (assuming that's true based
| on the question you are asking), you either haven't learned
| enough yet to broaden your horizons to get ideas, or don't have
| enough geeky hobbies to put your new skills in motion. Have fun
| finding out what it is.
| partyguy wrote:
| I rebuilt MySpace... and it got quite popular
| JohnFen wrote:
| The projects that made me a better programmer when I was new to
| the field were all games written for my own amusement.
|
| If I had to single out a single project that I think advanced my
| understanding the most, it would have to be building a computer
| from scratch and writing the OS and a C compiler for it.
| janpot wrote:
| https://github.com/kanaka/mal
| felipellrocha wrote:
| I found things that people told me were too difficult for a
| singular person to tackle and tackled those.
___________________________________________________________________
(page generated 2023-03-20 23:02 UTC)