This is fucking dumb. People learning how to code don’t know how to start. They don’t know what to start writing or where to start on it. This is akin to telling a depressed person “just don’t be sad”.
Exactly. If you know nothing about a topic, you don’t even know, what exactly to google, except “how to make computer do stuff”.
The initial hurdle of incompetence can be extremely frustrating and almost impossible to climb, if you don’t have guidance.
My best motivator is having an issue and a need to solve it (e.g. room is cold after work but I’d like it warm -> automation or “I hate how netflix is taking away my movies” -> Media library). This resulted in me getting a smart home thermostat and jellyfin.
If you want to learn how to code, can’t you just google “coding tutorial for beginners” or something similar? Probably you would need to pick a language, but that would similarly be solved with “recommended coding language for beginners”. Then it’s very easy to find a resource that starts with hello world and gradually introduces new things. And I’m sure if it moved beyond a browser toolbox, a guide for setting up whatever IDE would be included.
Learning to code is by no means easy, but it’s possibly the best type of thing to learn when it comes to having a wealth of free, easily discoverable guides. The main obstacle is choosing to put in the time, and this comic removes that obstacle by forcing them to not put it off.
Well, put yourself in the shoes of someone who knows nothing about programming and googles what you described. They’ll be flooded with information that they can’t really make sense of. What language do I choose? I want to make games! So is C++ the right one? Can I learn another one?
Look at the questions in beginner forums. The naive, seemingly stupid questions. Many beginners struggle to understand what a language is, and how languages are related. To many a programming language is a series of magic incantations that make the computer do stuff. They treat it like spells.
Then, if you do manage to get over that hurdle, you’ll have to put in quite some time to get anything useful out of your code. You’ll have to bang your head at many hard surfaces, read tons of unrelated crap because, once again, you don’t even know what to google.
I don’t know, if you ever worked with complete novices. People who want to learn, but know next to nothing. Where I live, you can do apprenticeships for software development, and I had to guide a few of our apprentices. At that point I had been programming since 14, had programming classes in school, master’s degree in CS and several years of work experience. So I was very much removed from being unknowing. Being confronted with the utter incompetence and lack of any context of these guys was extremely eye opening to me. Those were bright, motivated younglings, but everything that seemed obvious to me, was completely beyond their capabilities.
In short: you may underestimate the difficulties to learn without guidance.
I’m sure its different now from when I started - because coding is very popular, and the internet is a thing… But I can tell you, that it took a long time before I knew what a programming language was, or ‘coding’… these words were just not familiar to me.
I learnt stuff by just opening random executable files in notepad to see what they look like… mostly it was just garbage that no one can understand - but some of them were readable, and I replicated and learnt from them. (they were .bat files.) I became a bit of an expert in making very fancy batch files. I made customisable menus, and a little adventure game. Then my parents helped me out by buying me a programming book. It was about programming in Visual C++. I was pretty excited - until I quickly worked out that Visual C++ was something you had to buy before you could use it.
Anyway, my point is that it is easy to see what you need from the point of view of an expert; but from the point of view of a novice, you don’t know what you don’t know. You don’t know which words are important, or what anything is called. The first steps are not hard except that you don’t know which direction you are meant to be stepping in, or where the starting point should be.
No because most tutorials will start from “write print(“Hello World”)” and the like without mentioning compiling or where to write it or with what…
I didn’t really get into coding until someone guided me through the basics of python, which is an easy language that doesn’t even require compiling. One of the reasons was precisely not knowing where to start.
It’s gotten a lot better in recent years tbf in terms of those kinds of resources. Beginner recommended languages like Python are still a pain because it’s super easy for a beginner to bork how they set it up, but on the whole there’s plenty of online code sandboxes and other ways to get started.
Your point is definitely valid though. Why on earth would we want someone who’s just showing an interest in programming to write their own compiler??? Wtf? If someone wants to get into baking you don’t send them out into the fields for 6 months to grow some wheat.
When I was a kid I mucked around with html and css to make some GeoCities sites. I decided I wanted to learn how to code so I got a book from the library called “how to code games for beginners” or something. The thing never told you how to set up an IDE or compile the game. So I was just frustratingly typing out the code examples into notepad without a clue as to what to do. I think this was during the dialup era so it wasn’t like there was a wealth of info online.
I ended up abandoning programming for quite a few years. It just seemed like nonsense because writing graphics libs for C in notepad does feel like nonsense to a child. I wonder what life would be like if I had some better resources at that moment in time and decided you continue pursuing it.
I did not choose to start with VB.net - It was the first thing youtube came up an I think was interesting, because I could start with something GUI.
Today I make enterprise factories go brrr.
The initial hurdle of incompetence can be extremely frustrating and almost impossible to climb, if you don’t have guidance.
Can confirm. 15 years in industry, still incompetent.
When I’ve spoken with people who say they ‘want to code, but don’t know how to start,’ dollars to doughnuts it’s the same problem as wanting to learn hacking, artistry, or science. (I think the original comic was drawing.)
There isn’t a solid reason for why they want to learn X, the wanters just think it would be cool to *be an X-er", and want anyone to hand it to them.
The people who want Y, and need to learn X to accomplish it will take the first step. Though many won’t follow through if goal Y is too high. I’ve pointed people to the resources to learn X countless times. It’s only the people who want Y, and are willing to learn X to achieve it, that succeed. Hacker, Coder, Engineer, Artist-er, and on and on. You can lead a horse to water, but not teach it how to drink.
At least for me the most learning to program happened because I had something specific in mind I wanted to achieve and just go for it.
Yes, the code sucks (And I rewrote it 3 times originally, it still sucks), but it’s not really something I particularly care about now as it mostly works as designed.
I’m physically incapable of doing code “for the sake of it” something has to piss me off enough to want it automated. It’s stifled my theoretical knowledge but I can do a thing if I need to.
It’s a good thing I have a big project to occupy my time. No shortage of problems to solve there.
I think some people view it as “if you’re meant to be a coder your natural curiosity towards how things work will probably lead you to writing code naturally.” But it’s a pretty gatekeepy point of view.
I think we can safely say that programming is the least gatekeeped profession in the history of professions. Programmers are literally goving their code away for free, I never saw an open source plumbers movement.
Its a good litmus test for people who are genuinely interested versus people who just heard “Lern 2 Kode” from a hustler on YouTube and thought they could bullshit their way through it.
But also, you’ll notice the cartoon character getting handed a nice looking laptop and keyboard. How cool is that? A cartoonist handing you a few hundred dollars worth of hardware plus presumably an always-on internet connection. Imagine if everyone had those kinds of resources just tossed to them at the asking.
But they aren’t asking for tools they’re asking for guidance. What’s the point of all that expensive hardware if they have no clue what to do with it and where to start learning?
What’s the point of all that expensive hardware if they have no clue what to do with it
I mean, if you straight up don’t know how to use a computer at all then that’s fair. But I don’t think the suggestion is that you learn how to code before you learn how to work a mouse. Hell, the whole target audience for the joke is people who are already online.
It’s like trying to make a person learn how to play the flute by just handing them a flute. If they don’t know how to assemble it, clean it, hold it, press the keys, and proper embouchure, they’re never going to learn how to play the instrument.
I interpreted this as a criticism of the sort of people who make posts for the ‘brain crack’ of maybe learning to code one day in place of putting the actual work in to learn.
We learned to do it in the 90’s before search engines existed. Could always get a book…
Not everyone learns in the same way. If someone learns better by asking others for guidance and you tell them to just read a book I hope they spank your arse with that brick of paper smh.
Learn to learn, then. People can’t just magically hand you knowledge.
Rolling up and getting started is a great way to find some really sloppy ways to do some initially very fascinating tricks. Like, its not a terrible idea on its face.
But there’s a huge difference between learning some javascript tricks or python commands to macro with and professionally designing a full stack. Really depends on what you’re trying to accomplish.
Best thing in the world is a fresh faced young developer who is eager to learn everything you put in front of them. Worst thing in the world is someone who only half-knows how to code but thinks they can do a proper mobile app from first principles. Every time I see a mile of copypasta spaghetti code sitting inside a single oversized Main() function, I die inside.
Ironically that is how to fight depression, changing your mind. Any technique that has proven effective has been exactly: stop being sad.
I’ve tutored at least a few people that have needed me to put their hand on a mouse and show them how to navigate an IDE.
I feel like “just” is doing a lot of heavy lifting.
it takes daily practice but it can be “just”.
of course, any recommendations given to people can be abstracted absurdly in order to dismiss them if they’re motivated to do so.
Medication helps a lot of people, and CBT is very effective for others. I’ve never heard of a “technique” that’s effective against depression that can be reasonably described like that, but I’m not an expert. Would love some concrete examples.
deleted by creator
Nah, ditch the mouse. Give them a machine with Arch, BSPWM, and Vim.
Arch? You’re way too nica. A bare Debian netinstall and a link to linuxfromscratch. They have wget, so they can get started.
Here. 150,000 transistors. Get to work.
I just use homemade integrated circuits on a huge self-built circuit board, myself. I guess some of you need a lot of hand holding.
And you have bootstrapped an B compiler on that?
I recently sat in a call with someone ~50 y/o helping someone ~25 y/o…
“Open vim and change xyz” met with “What’s vim…?”
I don’t think I’ve ever laughed so hard while feeling overwhelming sadness at the same time 😖
I mean… Young people don’t know things yet… Isn’t that normal?
I get feeling existential about the passage of time, but… Sad? Laughing? Maybe I’m imagining it wrong, but I dunno. Maybe I’m just the young person in this occasion.
I mean… Young people don’t know things yet… Isn’t that normal?
Depends on the context I guess. If this is a professional IT context in which the 25yo is expected to be proficient enough on a Linux system to edit a text file, not knowing that vim exists is kinda sad.
… I don’t know if I’d call it sad, as much as kinda baffling. Vim was on every package manager list I’ve seen, under text editors… Big stylised letters, how does one miss that?
I feel like it’s someone who only uses Linux specifically for (and because of) their work, and has probably never tinkered and casually browsed around in it.
Yeah, I can see how that can be sad, like a person who doesn’t actually share your culture/hobby after all.
Nono, make them build linux from scratch while staring deeply into their eyes
BSPWM
What if that’s not my kink?
It’s slightly less painful than having a beautiful woman walk on your testicles with high heels.
Oh, is that supposed to be a mouse? I thought it was a hand grenade.
If anyone genuinely feels this way and wants to get started in coding, I highly recommend doing one of the mooc.fi courses. Codecademy is fine as a taster/refresh but don’t waste money on the premium when something like mooc is available for free.
I’m a systems administrator but I’m always looking for ways to expand my skill set, thanks for pointing me towards these awesome courses.
Never heard of that site but looks cool, thanks!
I am actually, this is exactly what I was looking for! You’re a saint
I’ve tried to run the ide twice, once years ago on windows and once in fedora, where I needed to install snap to be able to install the ide and neither time I was able to get it to work.
Alright, smart guys. I know how to code. How do I make these variables into a an app?
Honestly I’ve been trying to learn coding for a while, and there’s a huge chasm between knowing a language and doing something with it that I can’t go over. I want to make an app to create ttrpg character sheets… Alright how do I make my code into something with an UI? How do I turn it into an executable? How do I turn these lines into SOMETHING?
As stupid as it sounds, you build small blocks and put them together.
In your case, build a console app, that (for example) creates basic sheets. Then you build a small text only interface to plug actual values into the file, then you can think about a GUI.
Many beginners (myself included) want to go from 1 to 100 immediately, but that’s almost impossible. You tackle small problems first and then step by step go further.
You may have heard of startups building MVPs, minimum viable products. The basic core of what functionality you want to have. That’s where you start.
This has always been my issue with programming. I can visualize how to build a chair, I know what I need to build it and I know what it needs to do. I know how screws work, and I understand when glue is applied.
But with programming it’s like i know what the word wood is and I know what the word fabric is, but I haven’t the slightest idea how I use any of it to make anything useful. I can’t even start to build a plan because I don’t even know what’s needed for any specific thing.
At least you have an example of what you want to make, I don’t even know what I want to make so it makes “figure it out” even harder lol
That is a really good point, and there isn’t a one answer first all. If you’re looking for a mobile app, then you could do Android studio or Swift for IOS. If you only want to develop one app for both, then maybe you should just do an electron app that is essentially just a website.
These tools will either have a visual interface editor, markdown language (like html), or a way to define visual components in code. After programming an app you can build, which will give you the appropriate executables for the different platforms.
If you’re looking to start simple, then use something like pygame to learn the basics of using a visual interface.
What OS do you run? Are you planning on sharing this app with others? Should it be a web app?
Happy to help!
Look for some UI libraries. They provide functions and classes that you can call that will draw things to the screen. As for the executable part that varies per Language. If you want help dm me and maybe we can do a discord call!
this is where branches of coding splitoff, as learning the fundamentals of coding doesn’t stop there, its a field where you have to pick up new skills on the go because not everyone needs it.
some people never touch apps because they might work backend or engineering, some people might not touh databases because they arent the ones dealing with CSV files. some people never touch web development (because its not engineering in some jurisdictions /s)
If i have to make a crude comparison, think of it like driving. basic driving knowlege is knowing how to drive a car. Knowing how to drive a car doesnt imply they know how to drive a boat, formula vehicle, big truck, forklift and such, so you need to go into further training for those, but you never should expect someone to cover all usecases.
Then what’s the class C passenger vehicle license of coding that everyone needs to survive in the modern world from teenagers to grandparents? I just want to drive a sedan from point A to point B, maybe pick up a piece of furniture from Costco or a litter from soccer practice in an SUV once in a while.
the basics of coding is less the language, but more the algorithms and pracices.
knowing concepts like object oriented programming is language agnostic. how you learn OOP can be done with several languages, usually most commonly with Java or Python, but it fundamentally doesnt matter for the common languages for the most part.
OK but that still doesn’t help me go from “I know the difference between integers and floating point variables and how to make loops” to “Hey Mom here’s a new house I bought with my stock options from my startup”
hemce, in your case, you trained for a job which is something you do to get money.
if you want to write an app, go lool up guides or classes on the type of app you want to write. not everyone takes said class because it may be irrelevant to their field of programming.
the only thing they will typically all share is basic understanding of variables and object oriented programming.
Literally C/C++. Most used out there. Now if you want to do everything with it, you’re in for a long ride. You can do everything on every platform with C. But learning the language is the easy part. The hard part is learning good coding pratices, which library to use and how. Only guides and practice will help you there
Assembly
Libraries. If you had to write everything from scratch, nothing would ever get done. You pick a UI library/framework that meets your needs and is supported in the language you’re using, and go from there.
You can use a Web interface, it’s absolutely hideous but it gets the job done. I hear QT is pretty easy to develop for and it’s cross-platform.
-
Turning into an executable is compiling as far as C goes. For Python, there probably is something somewhere to wrap a script into a .exe.
-
For the UI: what matters is the data you generate, not the fluff around it. As the other commenter said, start with a CLI program. You can easily nest several levels of menus if that’s your thing. This allows you to have user input. Then for outputs you can do it to a .txt or .md file. Use simple text-based formats. Then once you’ve got that down you could build a GUI? But tbh I have never built a GUI and I’ve been programming for 10 years at this point so I can’t help you out. There are simple cross-platform libraries you can use out there
-
There’s pretty much only two ways you can go about it in my experience:
-
Fail forwards and try cobbling something together, constantly using search engines to fix errors or finding libraries or getting help with those libraries. One thing you’d have to figure out is an order of operations - what do you code and in what order, which might be tough for someone new but I’d say it’s well worth it.
-
Find some tutorial to a project and try following it (those that have step by step guide on what you should do without letting you copy paste code), then using the knowledge you gain to do the way #1 above to hopefully have an easier time figuring out the order of operations, plan out your program and what you’re gonna be coding.
Don’t think you can avoid getting hands-on and coding something up by yourself. General coding tutorials can only get you so far and are often harmful if abused too much (aka being stuck in tutorial hell).
-
What platforms would you like your app to run on? Then, which UI framework supporting those platforms would you like to use? Then, look at the framework’s documentation to find a sample starter project that you can run as an app, and modify it from there
Actually this is the biggest hurdle in leaning how to code. You can blame the huge numbers of “learn to code in 24 hours” articles and videos online and the the influx of “5 day bootcamp” courses. Its like teaching someone the basics of how to drive a car but never teaching them the road rules and never taking them on the road.
A better analogy might be learning a foreign language. It’s like teaching someone all the words in Spanish, but never putting them together in a conversation.
I’d argue that if you say “I know how to code, I know what variables are and how to print text to the console, how do I make an app?” Then actually you don’t know how to code. You might know the basics of a programming language, and that is the first step in learning coding, but there are many steps after that.
I identified this gap a few years ago after seeing a couple of my friends (one finished a boot camp, and one finished a software development major at Uni) both were in this same situation. I determined there is a big gap between “knowing a programming language” and “knowing how to make software”. It’s like going from “I know how to write words” to “I know how to write a novel”. It’s not something that comes easy. It’s something that can take time (often years) to get good at. This is the reason you see requirements like “3 years software development experience” on entry level programmer jobs. The number of people in your situation is incredibly high. The coding bootcamps churn them out by the hundreds every month.
A couple of years ago when I was between jobs, I created a Gumtree ad advertising “post-bootcamp” courses, that aimed at bridging this gap. It was a series of private 1on1 lessons aimed at teaching someone to go from “knowing how to code” to being “software developer” job ready. Lots of people have many different learning styles and different paths they took to this point. The key is focussing not on the giving them the missing information, but teaching the person how to identify what steps are missing and how to find resources to learn them (because that’s the real missing knowledge wink).
Unfortunately I found some people didn’t want to learn how to learn for themselves, and just wanted me to hand them the “secret missing parts” on a platter.
When I learned python it was bugging the crap out of me when I was learning the basics in the terminal they give you. Other tutorials were worse, telling you to use Spyder or the other one I can’t remember. It wasn’t until I wrote standalone scripts that would actually do things on the computer that I started to understand the concepts. I seems like there’s a camp of people using scripting languages inside of a segregated black box environment, which is super annoying to me since everything is obfuscated.
Harvards cs50 I believe has"the missing lecture" that talks about deployments and other activities surrounding programming.
If you want to learn how to make web apps you want to make sure the course includes deployments. Or get a specific course on the cloud platform you want to learn.
If this is not a meme…
You know how you have to look up… errors when you don’t know what they mean?
That.
Figuring out how to do something specific, like UI, works just like that. All the time. It’s “looking up how it works”, then “messing around with it until it does” all the way down.
If you are just starting out, coding something in HTML and javascript might be intuitive, because you can see and run it right away. Otherwise you will have to figure out how to use some kind of UI framework in the language you’re using. Because they’re all different. Yeeeaaah…
I think it’s harder for compiled languages and easier for interpreted ones.
Wtf, don’t tell the plebs how it works!! They’re going to figure out how easy it is!
Keyboard for coding, mouse for games.
Seriously? A mouse for coding?
“Computer? Computer? Hello, computer?”
“Just use the keyboard!”
"How quaint "
I’m not sure I get it. Is there a significance to him holding the mouse in front of him like that, instead of having it on the table like normal people? It seems to me that if you want to learn to code you should have your hands on the keyboard more.
No, on screen keyboard only!
The comic was originally about how to draw.
As people said, for coding you want to put his hands on the keyboard, not the mouse.
Draw… with a mouse??? Now I’m possibly more confused.
No he was holding a pen. Now he’s holding a mouse
I never noticed before, but it looks like DeForest Kelley is struggling to keep a straight face in that scene…
Programming is self-harm that has positive outcomes.
Step 1: Google
Step 2: Copy
Step 3: Paste
Step 4: Go to Step 1
For me it’s:
Step 1: Google
Step 2: Open stackoverflow link
Step 3: Read a bunch of people yelling at OP about why their question/issue is dumb and that they need to Google more.
Step 4: Find what might possibly be an answer to the question but it is written in a way that leaves out half the knowledge I would need to correctly interpret the answer because this person just assumes I know everything there is to know about programming already. Meaning I would never have need to ask the question in the first place, duh.
Step 5: Leave computer in disgust and maybe try rubbing two sticks together to make a fire that I can use to burn everything down…
I had that exact same problem and this website fixed my issue perfectly.
I knew what it was going to be and I still clicked it, you sonnova…
More like :
- Open github
- Search cool project that you wanna tried
- git clone
- Open your downloaded project in your favorite text editor
- Install required dependencies
- Compile
- ???
- Run
- Profit
- Repeat to step 1
Obligatory link to the wizard book, aka learn programming the proper way. Never mind the language this is about principles and fundamental concepts. Yes by the end of it you’ll have written a compiler, that’s the equivalent of a smith forging a hammer and tongs. Flank with HTDP if you need a bit hand-holding putting programs together, SICP is rather pinpoint-focussed on the concepts so doesn’t contain much in terms of design. If you want a stand-alone implementation of the language (with the first link you can run all the code boxes in the browser, fancy newfangled stuff I approve of) racket is the way to go, just add
#lang sicp
in front of your files and you’ll have the exact dialect the wizard book uses.The wizard book has been the standard recommendation for like 20 years now, the only reason other tutorials exist is because newbs insist on “how to move cube in unity without programming” type of hand-holding. It’s not actually helping them, on the contrary I see much learned helplessness in the young’uns.
From those basics you can dive into whatever concrete you need for whatever you want to do, you’ll have the necessary background to not be lost at sea. To further build that background knowledge it’s a good idea to have acquaintance with a broad selection of standard data structures, algorithms, and their properties. No need to go in real depth but you should have an at least intuitive understanding of why they have the properties they have, like, don’t be surprised if your game stutters if you’re using hashmaps. O(1) and amortised O(1) are not the same thing.
Last, but not least, never write your own datetime or unicode handling code.
Can’t I just take a magic potion?
I mean, coffee can help
Alright, I learned graduated harvard and learned how to code, now how do I center a div?
Source: the actual harvard university website