nicky

i'm literally nicky

musician, image maker, BBS sysop, game boy user, pretend meteorologist, baseball watcher...

Was (@)yiffpolice on twitter (RIP 2013-2023)
Will always be @nicky from cohost (2022-infinity)


new music forever!
nickyflowers.bandcamp.com/
i love to make film & video!
www.youtube.com/@NickyFlowers
i do stream sometimes, it's fun!
www.twitch.tv/nickyflowers
i even make games WOW!
nickyflowers.itch.io/
e-mail, why not!
hello (at) nickyflowers.com

the thing with programming and me is like... i know about most of the basic concepts. your ifs and thens, your for loops. variables and such. but i don't know how to Think like a programmer. i have no clue how to solve the problems i want to solve. i'll get inspired to try to code again and hit a wall and not know how to climb over it and give up for a few months. i kind of just assume i won't ever be good at it because i'm bad at math and they're basically the same thing. basically


You must log in to comment.

in reply to @nicky's post:

the thing about game programming specifically is that not only do you have to understand the programming language you also have to understand all the libraries that you are using and there are oh so many quirks

speaking as a software engineer, most of what I do in that situation is search reddit and stackoverflow and pray that someone else had a problem like mine in the last ten years. and usually it works! it does take some practice to learn what words to search for, but usually the trick is something like "<context> how to turn <thing> into <other thing>"

for instance

javascript firefox how to get list of microphones

or

python how to convert file to string

I think this is where the math comparison comes in, honestly-- knowing what the desired state is and having a hunch about how to get there is also part of writing a proof or finding a derivative or whatever. I'm a pretty instinctual person so I tend to treat it more like a mystery that I'm solving? But that's not a "method" or anything, just throwing out how I work with my brain to do it

the only reason I survived the required college-level math for a CS degree was because my partner (still-partner, we met in math class) was a math major and she basically tutored me. by the time I had graduated, it wasn't really necessary to have a degree, oops

just as a datapoint, I was always terrible at proofs and math and treat code a lot more like, say, garage woodworking. I'm learning tools and materials and all my math is baked into my tools, or in terms I can understand with the computer doing the complex part.

I can't do calculus any time soon, but i do know some things where I need an integral(because web search said so), and I can simply have the actual math done by anyone but me. I just need to plug things into the formula the woodworking pocket reference already created for me

the advice I usually give for that is to like... imagine what you would do if the problem were already solved, and try to identify one specific thing that has to change between those two points.

like right now I'm programming a tool for converting data into audio and I want it to work with multiple speeds, and I've decided "okay, if my feature existed, then at some point future me is clicking a box marked 'go fast', so I know that that box has to exist." and so I'm adding that box to my user interface. how does it work? dunno, I'll figure that out when I get there, but I know at some point I have to display a little box on screen that you can click on.

hopefully this isn't out of place, but I think some of the issue might be that you think "like a programmer" in general, and because of that you might be looking hard for something that doesn't exist.

you already show in your post writing that your like, web search skills are there and your descriptive skills are there, and you know how to break a problem into smaller more manageable pieces.

the profession of programming, laid bare, is simply researching a thing, looking at each of the parts one can see, then looking at those parts for their parts, all the way down until it's just a series of things one does know (or found in their research and know how to apply)

the more advanced programmers have just seen more problems, more breaking them down (themselves or people they learn from), more tools, more solutions. At least, in computer languages.

computing is like learning to draw, it's not that you're getting better in any truly physical sense (outside of like, hand muscles) but your knowledge of what you can tweak any given part to make it go closer or further from some midpoint keeps increasing.

one way to learn is get increasingly in over your head so you're doing even more googling and breaking it down and learning on the fly

the other one is to do problems that are just a bit unknown but you can see how you could solve them if you sat down for it.

libraries are great, frameworks are great, but if you look at their source code they're just built out of, essentially, if/then, loops, and the ability to change variables.

You don't need "good" code if you are running it on a modern machine. some parts of games can need it, but there's plenty of examples of just giant "case" statements (basically a chain of if statements on the same input). ignore most of the advice about not repeating yourself, and just solve things with whatever you can grasp, literally and metaphorically. search to see if they're an easy way you can understand how to do, and if not, you go slower but you're not missing out on much. That comes when it comes.

once you get annoyed repeating yourself typing a lot, you can pull the repeated part into a function. if you hate remembering what an equation does pull it out into a function that describes what it does so you don't need to trust your memory.

functions are just a YCH

to further help illustrate, you hear people using projects to "learn a new programming language" and this is ofc slow, but not as slow as learning an entire language before trying to start coding a thing. don't think you need to be fluent to put the Legos together, fluency can come from the journey. it's just using a new brush style for the same drawing, you know what the pieces are and just need to figure out how they need to be changed for the new task

Yeah it’s tough like everyone’s said. The actual first step is always to see if someone else has solved your problem. And you always have to verify and modify someone else’s solution for your own context.

You might find this YouTube channel helpful: https://www.youtube.com/@TheCodingTrain. It’s focused on creative coding, as opposed to game dev, but it has tons of different problem solving exercises.

i learned half my programming skills from years of scratch, my big main tip: learn to find even the smallest most pedantic problems with your code, and never consider it "good enough" in a way that gets you to not try and fix it. every "good enough" is a thing you didn't learn, and if you're a beginner that's a very important thing you didn't learn.

you don't have to fix them all right away, but notice them and keep them in mind as things you could do.

also please git commit. you do not need to use github or any online thing to use git. you can just make a repo on your system and then upload it to however many places you want later or never

if you happen to ever want random code review i am incredibly pedantic if there was pedantry contests i would win them