What do beginners not even know that they don't know?
Posted by twistmyroll@reddit | learnprogramming | View on Reddit | 140 comments
Things that they don't even realize they need to learn about
RagingGods@reddit
How to debug/troubleshoot. Quite a few problems posted on the different subreddits could have been solved if they just added a few print/output statements to trace the program execution.
Monster-Frisbee@reddit
Or God forbid use an actual debugger.
TechyTrailSwede@reddit
Cries in stdout
Monster-Frisbee@reddit
fprintf(myCup, “u/TechyTrailSwede’s %s”, tears)
Super_Preference_733@reddit
When I started interactive debugging was a dream. Today there is literally no excuse.
tacticalpotatopeeler@reddit
I’m fairly certain god does in fact forbid it
IamImposter@reddit
Yup. Debuggiah 3:12
Kad1942@reddit
"And I bless the printers, and the consolers, and the variable outputters, for it is their labours which hold the truest of man high; yet do I scorn the debuggers, for they pollute and sully with their break statements, expectant of glory rather than beholden to it." You're right it is a beautiful verse
Confident-Item-2298@reddit
blessed are the loggers and keepers of stdout, for their records gide the lost.
florapocalypse7@reddit
it’s nice seeing a coder who took a humanities course
Todo_Toadfoot@reddit
Everyone reads it out of context, make sure your read until Debuggiah 3:14
MetaphoricMenagerie@reddit
Deguggiah 3:16 says I just debugged your ass!
mrrobottrax@reddit
So true. Barely anyone knows how to use them.
csabinho@reddit
And for instance in PHP barely anyone sets them up.
Print debugging has its fields where it's excellent and even better than step debugging, but they are rare.
rshook27@reddit
Multithreading is where I use it the most
AgitatedFly1182@reddit
Is there anything wrong with Visual Studios integrated debugger?
mtotho@reddit
In my experience and after a while, stepping through code becomes the slowest but sometimes surest way to troubleshoot issue. I’m often just happier when the logs and stack trace point me to the issue in a fraction of the time. Huge slowdown if I have to start the application locally and hit a break point and step through
mlnm_falcon@reddit
Yeah, I tend to use prints when I know I probably just did a stupid thing, and break out the debugger when there’s some weird stuff going on that I need to actually understand.
Like I know how if statements work, but it’s helpul to just have a debug print of “yep you’re in the right spot” to catch when I typed something dumb.
Shot_Strategy_5295@reddit
Sometimes I feel like throw the whole code into Jupiter notebook and break them into cells and check values this way, instead of stepping into and out
Svorky@reddit
No, they meant actually use that instead of console writelineing all over the place.
Diligent_House_5818@reddit
Is there such a thing???... Good to know. I should stick around. 😄
Equivalent-Piano-605@reddit
I think not using debuggers is a weird holdover (tbf, I was taught this way a decade ago so not that big of a holdover) from back when beginner programming was taught in C with Vim and make. GDB absolutely works, but it’s just not beginner friendly in the way modern tools are. I think the curriculum may have moved on from the language, but not the tools. I wasn’t really exposed to debugging until we got to OOP. But yeah, debugger’s should be the default at this point.
Monster-Frisbee@reddit
I also think using print statements to debug is pretty intuitive for a beginner even if you’re not explicitly taught to do it.
It makes sense—if someone told me they had a squeaky brake on their car, for example, I’d probably look at the brake pads before I checked whether the caliper had seized (the caliper being a potential source of brake issues that’s hard to immediately diagnose visually, like a bug you’d use a debugger for).
It’s hard to know exactly when to introduce the concept of using a debugger to a beginner. You start out knowing too little about program architecture to really benefit from a debugger(understanding memory addresses, etc), then one day a switch flips, and now you’re experienced enough to just be expected to already know how to use one.
Hugo1234f@reddit
cries in gdb
Cloud_Matrix@reddit
Man, do people really not think of this??
It took me all of a couple days of starting my journey to realize, "Why won't this work? Maybe I should just put some print statements at the major points in my code and see where they stop printing. That should give me a hint where the logic is falling apart". 6 months in, I still do it whenever I hit a snag and nothing obvious jumps out at me.
throwaway4rltnshp@reddit
this is my debug method. been programming since 2010, professionally since 2015, and nothing gets me more clarity than simple logging. I've worked in companies where other programmers would insist I use the IDE's debugger/step through the code with break points, but for me those just add a lot of fluff and distance me from the problem.
iOSCaleb@reddit
Debuggers are vastly more powerful than the printf/caveman debugging that you’re doing. Don’t get me wrong, you should do whatever you’re comfortable with and what you find effective. But someone skilled with a debugger will run circles around you. A few examples:
Breakpoints can be equivalent to your print statements. You can set a breakpoint to take some action, including printing a message, and then automatically resume.
You can set breakpoints while the program is running, making debugging much more interactive than it is when you have to change the code, recompile, and run every time you want to check some new idea.
Breakpoints don’t modify your code, so there’s less chance of side effects changing behavior. And you don’t have to go back and remove all your breakpoints when you’re done. Unlike print statements, there’s no chance that a breakpoint that you forgot to remove will make it into production.
You need to know where to put your print statements. Often, though, the question that you’re trying to answer is “why is this variable changing?” Debuggers let you set watchpoints, which can pause execution whenever the watched variable changes, getting right to the answer without multiple iterations of inserting checks.
Being able to see the stack and the current state of all variables is vastly more informative than any print statement could be. Hitting a breakpoint shows you not only where execution is, but how it got there, along with the entire state of the program at that moment.
A debugger can show you not just how a crash happened on your machine, but how it happened to someone else. If someone sends you a crash log, you can often symbolicate the log and see what was going on when the crash occurred, as though there were a breakpoint at the point where things went south.
These only scratch the surface of what a debugger can do. They’re the easiest features to use, and the ones that most programmers rely on for 99% of their debugging needs. But there are also more exotic features like scripting and remote debugging.
Debugging is an important skill for any programmer, and developing that skill and being comfortable with the right tools makes you a much better, faster, more effective programmer. And it’s definitely something that beginners don’t even know that they don’t know.
zzaannsebar@reddit
I love being able to step through the code with the debugger. But print statements have their value when you need to test things that you can't run locally, like a website in one of its hosted environments (dev/stage/prod) vs getting to run the code yourself. I always yearn for being able to step through the code with a debugger whenever something isn't working in dev or stage or whatever but works locally.
iOSCaleb@reddit
Logging certainly has its place, I’m just saying that a debugger is a better, more powerful tool once you know how to use it. If there’s some reason that you can’t use a debugger, then you go to the next best available tool. But someone who says a debuggers “just add a lot of fluff and distance me from the problem” is telling us that they don’t know how to use a debugger.
zzaannsebar@reddit
Yup yup, 100% agree.
When I run into an error, step one is either google the error or step through the program with the debugger, depending on what the error is. It's such an important tool to know how to use.
elementmg@reddit
What don’t you use breakpoints and an actual debugger?
Cloud_Matrix@reddit
If im being honest. Its because I'm only 6 months in, and I didn't even know about the existence of debuggers until I stumbled across the option in eclipse 2 days ago. Now that I know of them, it's on my very long list of things to look into.
elementmg@reddit
Ah well fair enough in that case. It’s a bit of a pain to learn and get used to debuggers. But as a full time dev, I’m telling you it’s important to learn and is an incredibly powerful tool
Mignonion@reddit
I recently decided to take up programming and finished my first personal project this week using request.get() on a Google Calendar. Debugging never even crossed my mind until I finished the rough version... After that, I somehow had a dream in which I added exceptions into my code and made a mental note to look into that once I woke up.
Yesterday I spent a few hours adding some of that into my code. And it's definitely tough knowing what's missing when I don't know what's missing, but I guess discovering that for myself is part of the learning journey (or waiting for the answer to come to me in another dream, I guess 😭)
Maleficent-Ad-9754@reddit
I think most people who never had a developer job think a software dev is building something. They never think about the time spent on fixing bugs and tracing bugs.
zeocrash@reddit
It's not even new Devs, I know seasoned Devs who have their minds blown every time I fix their code by stepping through it line by line in the debugger and mains sure that the values of all their objects are what we expected them to be.
Debugging is a crucial, yet weirdly overlooked, skill.
elementmg@reddit
Is…. Is this a joke? Because print statements is not how to properly debug lol.
RagingGods@reddit
They're beginners, print statements are more than enough for most of their basic functions/programs.
KittyEevee5609@reddit
So many bugs I was able to fix using simple print statements to A. See what my code was even doing and B. Seeing where it all went wrong
Nojopar@reddit
Honestly, 'great code' gets axed quicker than 'functioning but shippable code'. It needs to work. It doesn't need to be elegant. That's a major bonus, but it isn't a necessity. Few users care if your code is elegant as long as the system works and does what they need done.
JacobStyle@reddit
I think one of the biggest I see, at least online, is newbies getting hung up on what language to start with.
The truth is, it doesn't actually matter much. Most popular languages do 80% of the same things as all the other ones, so wherever you start, it's easy to pivot if you need a different language for something. Look at something like classes, for example. If you go through the trouble of learning how to make a class in one language, say, C++, and you set up public and private members, constructors, and methods that take arguments and also work with the members in the class, later if you are learning C# or Python or something, you can just be like, "okay, I know what to do, just not how to do it in this specific language." Maybe the syntax is a little different, but the functionality is very similar. You don't have to learn classes (or any other common programming concept) from scratch every time you pick up a new language. My advice to brand new folks is always, "Python is a good language to start with because you can get set up and start making programs that do interesting things quickly, but if you are curious about some other language, then start with that other language you are curious about, even if it has a reputation for being a hard language."
Nojopar@reddit
I've programmed in so many languages over the years I often have to look up basic syntax stuff because I can't be arsed to remember how this specific language does 'if-then' vs that other one. But I know my algorithms and patterns. The language doesn't matter as long as you've got the logic down.
Sea-Advertising3118@reddit
I remember when I first learning C/C++ I didn't realize that when you finish "learning the language", then it's time to learn and use really complicated API's with generally poor documentation and even worse reference material.
nomoreplsthx@reddit
That technical skills are, on average, lower value than soft skills.
Specific technical skills are volatile. Tech changes fast. They are also comparatively easy to learn.
Almost all of the hard work in software engineering is figuring out who, what, when and why. How is by far the easiest question to answer in most cases.
A pretty good coderr who is good at listening, relationship management, persuasion and explanation will out perform a stellar coder any day.
serverhorror@reddit
Nah, the four Ws' are in just about every audit log :)
mr_seeker@reddit
100% agree. Another soft skill that is not talked about much is being able to explain issues/designs choices with different levels of understanding. If you are not able to explain what you are working on with simple and clear words to your direct coworker (same level knowledge), a guy from another team (programmer but not knowing the project), a manager (non technical knowledge), etc. And adapt your level of details. Then you will not be viewed as a good person to work with. Nothing pissed me off more then someone saying « yeah nevermind you would not understand » because they are unable to look at the bigger picture
kugelbl1z@reddit
A few months ago I had this hit me hard during one of our team meetings.
We were debating something and suddenly I realised that it does not matter in the slightest how good or bad my idea is if I don't have the necessary skills to convince the right people.
I found it very scary
nomoreplsthx@reddit
Yep. It turns out good ideas don't naturally win. If you need evidence, look at the USA
UbiquitousAllosaurus@reddit
This is correct and sometimes people get pissy on programming subreddits about pointing it out, but it's completely true. Every successful developer I know has great social and communication skills. Pretty much everyone would rather work with someone that's easy to get along with as opposed to someone who's snarky and/or weird, regardless of skill level.
xrufio13x@reddit
This gives me a bit of hope actually. Thank you
roddziuk@reddit
This ++
Milkshakes00@reddit
We can't give the output without knowing what you assigned to This.
serverhorror@reddit
Mostly the things that experienced people forget were hard and therefore never tell anyone about...
Dull-Measurement-655@reddit
It’s the stuff that your code uses to interface with external components that can be the hardest things to grok. Think build systems (CMake) and getting things to run on other people’s machines (using docker properly).
GauntletOfMight1425@reddit
Creating software is worthless. Create software people actually want to use. To do that, you have to talk to them. Most of your time should be spent figuring out what your users need and not pounding away at the keyboard.
FanAccomplished2399@reddit
Learn how to read code. It will take you far in any tech company.
heroyi@reddit
might wanna expand on what you mean by this. Like understanding the logic and/or following the callbacks?
TBF this is pretty hard depending on the code base. At my current job there is so much deprecated shit and a lot of junk code (including 5+yr old commented out code) that my eyes just start glazing over those shit areas
True-Release-3256@reddit
This is where having a good IDE is important. The IDE shouldn't only help you write code, but analyzes them as well. Especially with code base that has a ton of abstraction.
pilows@reddit
I think that’s exactly what they mean. Imagine how valuable one would be as a developer if a senior asked how did this old logic work, and instead of your eyes glazing over you can spend 10 to 30 minutes reading through the code, and then give them a summary of how it works or description of how to reimplement it in your new project
ThanosDi@reddit
I'd say learn how to read other people's code.
partyinplatypus@reddit
That writing code is the least important part of software engineering.
ToThePillory@reddit
I'm always surprised how resistant beginners are to looking things up. I had a junior where I work a year or so again and I was always surprised how little he tried to look things up. He'd ask me what an error message meant and hadn't even attempted to Google it.
I see it over and over on Reddit, people asking stuff they could easily be looking up. I know people say it's about conversation, but lets be honest, it's not. If it was about conversation people wouldn't be asking basic Googleable questions for answers, they'd be Googling those questions then discussing the answer.
Mignonion@reddit
I'm surprised when people don't feel the urge to 'ask better questions' out of sheer social pressure, lol. I've had instances where I ask peers questions where it turns out I could fix it with a quick Google search or a bit of (internal) rubber-ducking, and it embarrasses me to no end when I realise how incompetent I must look. If I'm gonna admit to feeling dumb, at least make me approach it in a way that looks smart damnit.
I guess people focus more on easy solutions and saving their own time in the short term, but man do you waste potential by avoiding any attempts at self-reliance. And honestly, it makes people less inclined to help so it's not so effective either.
ToThePillory@reddit
Yes, that too, doesn't it feel weird to ask such easily Googled questions?
greenslime300@reddit
Ironically, Reddit is in the first 3 results for most questions asked on Google these days. Those threads with answers to basic questions end up being what people go to now.
Mignonion@reddit
Best recommendation if you're trying to get the answer to a question after all: type in your question and paste 'reddit' at the end, lmao. In that case, I count it as a blessing when there are multiple threads answering the same question in different ways, when I need more than one perspective haha
adelie42@reddit
Wtf? Coders look things up more than librarians. Not even embarrassed any more, I open the docs for nearly every function and keyword in different tabs. I'll "struggle" to remember syntax for about 3.5 seconds staring at the screen before I'm opening documentation.
Let me know if you disagree, but it isn't about memorizing syntax, it's about envisioning the bigger picture and the patterns necessary to get there.
squabzilla@reddit
Meanwhile, I'd rather spend 8 hours googling something then 2 minutes asking for help...
Hziak@reddit
Had a brilliant professor in college who gave talks at large tech companies, was written about in books and wrote lots of pretty groundbreaking software in his day. The single more important thing I learned from him was when I had a question about DF vs BF searching and he refused to answer me. Told me to just try it myself and figure it out…
I was completely outraged because nobody had ever told me to just figure it out for myself at school before. I mean, what’s the point of teachers if I have to teach myself??? Anyways, I learned more from that one question about programming, self confidence, the importance of experimentation and how failure is growth from that than I think I learned from the rest of my college experience. Came out swinging my diploma and have had a pretty solid career based almost solely on what I learned from that moment.
Thanks Bill!
toroidthemovie@reddit
Yeah, that's much more general than programming learners.
I am often baffled by people asking me to solve problems, which are literally one google search away. No special knowledge needed: just literally type in your problem into google, and the first link is gonna be an answer. Often, I also don't know the solution, until I google it.
I guess people just have an aversion to looking up information for some reason.
redradagon@reddit
My problem is that I get stuck in a sunk cost fallacy because I spend so much time trying to figure out an issue in my own rather than googling it right away, that by the time I give up I feel guilty for googling the answer. How often/long should I be trying to figure out problems on my own?
toroidthemovie@reddit
> How often/long should I be trying to figure out problems on my own?
Ehm, zero seconds? Try to google it first, and if that fails, figure it out on your own. Just try to actually understand and internalize the knowledge you found.
SlipperyBandicoot@reddit
It never fails to amaze me how useless the average person is that solving their own problems under their own initiative.
You think simply googling something is just basic common sense, but many people literally cannot function without a teacher hand holding them.
Milkshakes00@reddit
Tbf, this isn't just in coding - This is everywhere. I deal with Sys Admins and Engineers who don't do the bare minimum of googling or looking at internal documentation before coming to just ask me for an answer every day.
People do not want to be self reliant for some reason, and I really don't get it.
csabinho@reddit
I was the other extreme. I tried to look up things for way too long. But to be honest: a junior usually isn't a beginner. At least if you're not looking at it in the career sense.
ToThePillory@reddit
No, a junior isn't the same thing as a beginner, but I've been surprised how close it can be.
tacticalpotatopeeler@reddit
This right here. At the very least, post what you’ve tried so far, which would also open up the conversation as to why you didn’t find the answer and where to look instead
Yoowhi@reddit
Flexibility of your code lies within its simplicity and not in the heavy use of interfaces and abstract classes
moriturius@reddit
This deserves more recognition! Beginners tend to learn principles and patterns. They build complex generic solutions. They go around talking about SOLID, DRY, KISS. Then DDD, hexagonal architecture, CQRS etc. At this point they think they are senior devs.
But true senior dev knows all this yet writes simple code that gets the job done. Senior knows that less code is less maintenance, and maintenance is what gets you.
Junior writes simple code because he doesn't know any better. Senior writes simple code because he knows better.
dem219@reddit
To be pedantic, KISS, means keep it simple stupid. The one acronym they should be paying attention to.
csabinho@reddit
Isn't that rather an intermediate thing? Or do you mean beginner in a career sense? Because beginners usually don't even know about design patterns, SOLID, DRY and KISS. Especially DRY definitely isn't a thing for beginners. They are copy-pasting their own code a lot. And SOLID isn't even in the scope of beginners.
heroyi@reddit
I think they are more talking about people who just INSTANTLY jump into do abstract things. It is pretty rare to immediately know when you need to create an interface/abstract class because of foresight that it will be repeatedly used.
People THINK they know what will be repeatedly use but erroneously just jump into thinking this has to be an abstract class. when in reality all it did was create an inflexible module/object that introduced more complexity that wasn't necessasry
you can argue that the design was flawed and xyz. But why not just do it simple at first and if you actually do get to the bridge of 'yea we need to abstract this' then go do it afterwards.
moriturius@reddit
Yes, I confirm that that was part of my point as well :)
Yoowhi@reddit
Yes, why bother if the next ticket will destroy your expectations anyway and you'd have to rewrite it.
That said, sometimes it is necessary. Abstraction for several payment methods is classic example IMHO.
heroyi@reddit
100 agreed
moriturius@reddit
Yeah, I was writing on mobile and didn't want to explain too much around it. I was just laying out the regular growth path of a beginner. You are right that by the time they are talking about the advanced stuff they are more intermediate but they think they are senior at this point :)
biskitpagla@reddit
That repls exist for many languages. You can try out code, import and test other code, read docs on demand, and so on. You don't even have to google or come on reddit and ask people about most of the issues you might face. I find it strange how very, very few python tutorials introduce the repl.
ZlunaZelena@reddit
Because REPL in python is not so useful. My take on this is - if REPL can do a magic, everybody uses it (LISP languages), if it can’t - IDE tools and debuggers gets you further.
biskitpagla@reddit
yeah python's repl game is nowhere near as strong as the average lisp. but pdb is just part of the suite, i think a lot of beginners would benefit from learning the fact that you can just pause the execution of any program and jump on to a repl with the program's state. ipython and everything else that's based on it are also excellent teachers because you can just take any chunk of code from any py file and run it in a kernel with a single keypress in most editors.
dwe_jsy@reddit
How to google/ask AI LLMs the right question
Ffdmatt@reddit
Time and complexity.
I was self-taught, then took classes. The one most glaring thing I never thought to consider was how my functions were impacting speed and cpu load, etc.
It's probably not something you need to concern yourself with at the beginner stages, but definitely remember to look it up eventually if self teaching.
CrossScarMC@reddit
How to use Google and not just ask every question on Reddit or ask ChatGPT.
polymorphicshade@reddit
How to do their own research.
csabinho@reddit
Or "How to know what they are actually looking for".
fangeld@reddit
So what you're saying is, beginners need to learn to what they don't know they don't know? It's a good answer to the question being asked I guess.
Cyhawk@reddit
The sad part is, if they just put their text into google, or even a GenAI these days it'll come up with an answer.
mosqua@reddit
Ay it's say RTFM
heroyi@reddit
this is the one downside I saw with gpt and the like. I am supportive of the said tools IF you know when/how to search on your own and verify things.
couple of days ago I had to work on some API that had very little documentation for a popular storage company. I must have spent like 1hr pulling out my hair trying to coax a working solution with gpt.
Finally I said screw it and just forced myself to read their shit api documentation to get my solution. So yea. If you dont know how to research then you are so screwed
Miserable_Double2432@reddit
How to stop.
Sometimes the reason why you’re can’t find that issue is because you’re tired and you can’t think. Take a break, go outside, or take a nap. The answer will come to you
_stellarwombat_@reddit
Diffuse Thinking carried me through my CS Degree.
shutupimrosiev@reddit
You need to be incredibly specific when assigning and working with variables. More specific than many realize.
aamoguss@reddit
Documentation. There's an entire industry around distilling it. If you aren't being pointed towards documentation, your attention is being monetized.
ViolaBiflora@reddit
I’ve been learning C# for about a year now and this is true. I bought a Udemy course at first to „motivate myself” and turns out they’ve been doing what is in the documentation - step by step.
Udemy was easier at first because the documentation seemed more complex, but once I had a solid foundation, it turned out that seeing IEnuemrable is not as scary as it used to be.
Is it simple? Yeah. But as a beginner, seeing something like this was INTIMIDATING.
angrynoah@reddit
Reading error messages is a skill. Work on it.
DidiHD@reddit
your daily job contains so much more outside of classic code writing.
Docker and Kubernetes, how to setup up an environment, AWS cloud, secrets management, testing and testing environment. the vast majority of my daily business is not writing code
Alienfader@reddit
It's all a trap, and by the time you realize it, it's already too late. 😆
geeeffwhy@reddit
that the programming language and “coding” are a distant second in importance to the computer science of it all. if you can express your problem in data structures and algorithms you can implement the solution in any language or runtime.
learn about the fundamental techniques for trading between space and time. pay attention to the patterns in kinds of problems and the coding will follow easily. pay attention to the syntax and you’ll end up lost in the tall grass.
Frogfish9@reddit
When to and how to choose the right abstraction. A lot of beginners are still learning DRY principles and how to write an abstraction so they don’t grasp how many possible abstractions there are and just do the first one they think of. A lot of times it’s better to delay choosing your abstraction until you have repeated yourself a few times.
autostart17@reddit
HTML and css.
dialbox@reddit
I figure those out as I run into problems that I don't now how to even approach.
TheGrumpyGameDev@reddit
The primary purpose of code is to communicate with future developers.
guiltsifter@reddit
A mistake a beginner may make is building things for just in case features.
For example, let's say i make a project that prints documents to the screen, while tempting, you might also make it able to print images to the screen. If you decide to add this feature, then you may be wasting your time if the project never intended to print images.
Building for the future is great when a project has a very wide scope from the beginning, but it's easy to over build for the "just in case" future features.
I personally did this alot and over modularized my projects when they were intended to be simple programs. As tiring as it can be to have to go back and make things modular later, scoping the project out appropriately first can help save hours of over doing it or having to go back and re do it.
mikeyj777@reddit
I see both sides to this. If it's something you're going to have to long-term support, sometimes those little add-ons help. If, however, you're turning this project over in a reasonable timeline, then meeting spec and shipping are the most important.
mikeyj777@reddit
The biggest thing, whenever you copy-paste, you're going to mess something up. Just write a new line. Think about what goes there.
Next, when you're writing more than 20 lines in a module, it's time for a new module. Trying to debug something 100s of lines long is impossible.
Finally, when you're testing something, think of the entire range of all inputs it will see. Make test cases for combinations of the extremes for each input as well as in the middle of the expected range. Test as you go, don't wait until the end.
Oh, get reasonably good at git. Use GitHub repos for each of your projects.
ProbablyBsPlzIgnore@reddit
Ha I remember this from my first day of work as a Java developer. I passed the SCJP with an almost perfect score, so I was pretty confident in my understanding of the programming language. I thought I knew at least 90% of what there was to know.
Even though I'm now better at everything, I've never again in my career managed to reach that same level of confidence in my abilities.
CodeTinkerer@reddit
What they learn from online content doesn't come close to what they should expect in the real world.
Here's an analogy I like to use. If you were hired to work at Starbucks, you'd get some training. You would learn how to make various coffee drinks like lattes and such. You'd be asked to learn all about coffee to show you're a knowledgeable barista. For the most part, a month or two of training would be enough to get you started, and then it's mostly just practice after that. Sure, some baristas know how to make nice patterns in the foam of a latte, or they can draw people's faces. That takes some skill, but then you're mostly good to go.
When you learn programming, you are learning the basics, as vanilla as can be, but you focus, not surprisingly, on the basics. In reality, at a job, you might have to learn the following.
You have to deal with emails and calendar events and going to meetings. Unlike classes, you won't have all the answers available somewhere, so you have to look stuff up. Also, each company does things in a certain way (workflow), and you have to deal with that.
Some companies are badly run with poorly written, poorly document code. There are office politics where you may try to do the "right thing" but there are others preventing you from doing that (e.g., code reviews). You have to wade through a codebase. There's really little you can do to prepare for that, and most codebases aren't exactly picture perfect examples of how code should be written.
Senior devs might not want to help. Or the senior devs up and quit due to their dissatisfaction with how things are run, and as the junior person, you have to do their jobs without their experience.
Of course, I am sketching out a worst case scenario. Most likely, it's a mix of good and bad.
In particular, you have to learn how to adjust to your environment and figure stuff out.
Oh, back to the analogy. Unlike a barista, who is good to go after a month or two and can go to any Starbucks to work, it doesn't work like that at a software company. Each company you go to, you have to adjust. The best employees are those that learn to adapt and figure out how things work.
A programming course is just the tip of the iceberg.
throwaway4rltnshp@reddit
Beginners often fall prey to the glamour and novelty of various frameworks and/or libraries, to the point they can't write code without their favorite go-tos. I had one friend recently express to me how he wished that, when writing HTML, he could add a css class to an element by writing
class=
instead ofclassName=
, since the former is how it's reflected in the DOM. Turns out, he had gotten started in React pretty much from the get-go and didn't realize that he'd been writing JSX, not HTML.There's a generation of front-end web developers who never realized they didn't need to start every project with Bootstrap (or these days the cursed Tailwind). I had a coworker in a React project - a senior full stack engineer - who added jQuery as a dependency in our project to make a simple ajax call (we were using axios project-wide).
Do you know how many programmers will pull in a game or rendering engine to perform a single task they could have written themselves? I don't, but I know it's a lot.
I just started contributing to a project where the team pulled in various plugins to perform the simplest of tasks such as rendering an audio player, a feat which would have required about 1/5 the effort of configuring the plugin.
I adopted a practice fairly early in my journey of trying to understand the various libraries/frameworks I used, to the point I could build it myself. this isn't always efficient, and in a professional setting I often don't have the luxury of doing a deep-dive into the tools, but this mentality has yielded a deeper understanding of the tools that we use on a daily basis.
sopita0208@reddit
You never stop learning
GrannyGurn@reddit
How vast and endless and endlessly permutating the theoretical and practical landscapes are that they are stepping into. Learning doesn't end. As they head deeper into the thick of specialization, they will encounter more and more opportunities for discovery, or learning about things that aren't yet documented.
Beginners: start building your ideas immediately.
ThanosDi@reddit
That Dunning–Kruger effect applies to all, I love seeing junior developers getting cocky knowing what is coming for them.
Fantastic-Zone-6540@reddit
I am a fresher because I failed many times approx 13 to 14 times to learn web development.Now I started again.
I think from my experience a beginner should need a plan for learning a skill and ⛳where to exit ,how much is good enough for building a website
If anyone doesn't have an exit plan then he might fall in tutorial hell or in an infinity loop where learning will never end. Later he will fade up and end his journey like me.
Now I learn 30 min and give time in developing small projects and I am happy now 😊
about7beavers@reddit
Chasing the latest and greatest technology is a fun hobby from time to time, and if you're lucky enough to be starting a project from scratch it can be useful. But having dealt with a large project (500k+ lines of code across 250+ separate files), having the same problem solved 6 different ways in the same project is a goddamn nightmare. Just pick a way that works cleanly today, learn it thoroughly, and stick with it. Writing code that other people can easily read is 1000x more valuable than a clever solution that will leave people scratching their heads. And by the way, other people includes you in six months. Something you basically by definition can't learn in school is how to maintain the same project over a span of years. And yet that's most likely what you'll be doing in your career.
aqua_regis@reddit
blind-octopus@reddit
Theres like a common list of things you need to be thinking about when it comes to server stuff. I wish I could think of the whole list, but it's stuff like
Monitoring
Deployment
Etc
codescout88@reddit
What beginners don’t know is: coding is like running a marathon.
You’re not training to remember the route — you’re training your legs.
Same with coding: You’re not memorizing answers, you’re training to find them.
Practice, practice, practice.
Environmental-Cup310@reddit
I'm a supreme hypocrite saying this, but, perseverance
shine_on@reddit
They think that programming is all about learning syntax, but in fact it's more about learning logic and concepts. You'll learn the syntax as you go along, using it to implement the logic.
There's more than one solution to a problem. You can use different logic and different concepts to get from A to B.
Code doesn't have to be elegant or compact. The most important things are that it has to work, and be easy to read and understand when you come back to it later.
Complex programs aren't written top to bottom. They're written from the inside out. What I mean is that you start with a simple piece of code, a loop or whatever, then you realise you need to do some preparation to your data or variables so you put that before the loop, then you realise you're doing the same thing over and over again so you split it out into a user defined function, and so on. The point is, you didn't know when you started writing the code that putting it into a function would be the best solution.
DigThatData@reddit
how to read never before seen code
Veurori@reddit
You cant find jobs in first couple of months just because you can understand basics right away. I feel like 9 of 10 beginners go into single course with mindset of ''Ok now I will learn as much in 3 months so I can become a software developer by summer'' (I was one of them xD).
Sihmael@reddit
How to use the terminal, and, more broadly, how to interact with your OS. A lot of the time you can partially hide these things away, using your IDE to set up and run projects, and blindly following instructions you read online for how to install things when needed. That said, understanding what those instructions are actually doing to your computer under the hood can both save you loads of time debugging errors that are happening outside of your code (eg. a file permission issue, or using the wrong version of Python for a particular project because your PATH variable wasn't set to point to the right one), and will also give you much faster ways of handling certain tasks when compared to using GUIs. Also, it ensures that you aren't just blindly taking random StackOverflow solutions at face value when they pretty frequently give solutions that can create security risks (something like giving admin permission to something that can communicate with other devices) or cause issues with your computer (messing with things in a way that breaks your other apps/utilities).
Luuso@reddit
Would say the reason they use the frameworks and libraries they do.
random_ruby_rascal@reddit
Understanding why they are building things and for who and how all of that is valuable from a human perspective. I've had developers put the emphasis and time on the wrong part of a requirement because it was interesting from an engineering perspective, rather than focusing on the areas that are impactful from a human perspective and getting those parts right.
coded_artist@reddit
Your job isn't managing programs, it's managing people.
yousephx@reddit
You don't , you only do as long you keep asking questions , being curious , and eventually keep on falling in the rabbit hole!
nullptr023@reddit
Learn how to research, read documentation because not every solution has tutorial specially with libraries not very popular. Don't memorize syntax, it will come eventually. Even after long time of coding, I still look for syntax from time to time. Also, when trying to solve something, try to break down in multiple pieces and make an attempt to solve it rather than just asking straight solution.
drake22@reddit
How to test well.
heroyi@reddit
so far all great advice by others here
I'll add that try to keep things simple as possible at first. This does not mean to put everything into one file and call it a day ie dont be a slob. But dont be obsessive about future proofing. Just work on it until the basic works THEN go ahead and branch out if need be.
In other words, really value proof of concepts. It is one thing to not know how to bridge two concepts in a sw project and another to get a proof of concept that is a shell of the proper answer. If you can create the proof of concept then that means you have confidence and understand the fundamental of what is going on and can easily apply logic or whatever real solution you need to flesh out your product.
sobaer@reddit
That software development is way more than syntax and pattern of the day.
AdministrativeFile78@reddit
Literally everything
lqxpl@reddit
The power of make