this post was submitted on 29 Jan 2025
53 points (92.1% liked)

Ask Lemmy

27799 readers
1451 users here now

A Fediverse community for open-ended, thought provoking questions


Rules: (interactive)


1) Be nice and; have funDoxxing, trolling, sealioning, racism, and toxicity are not welcomed in AskLemmy. Remember what your mother said: if you can't say something nice, don't say anything at all. In addition, the site-wide Lemmy.world terms of service also apply here. Please familiarize yourself with them


2) All posts must end with a '?'This is sort of like Jeopardy. Please phrase all post titles in the form of a proper question ending with ?


3) No spamPlease do not flood the community with nonsense. Actual suspected spammers will be banned on site. No astroturfing.


4) NSFW is okay, within reasonJust remember to tag posts with either a content warning or a [NSFW] tag. Overtly sexual posts are not allowed, please direct them to either !asklemmyafterdark@lemmy.world or !asklemmynsfw@lemmynsfw.com. NSFW comments should be restricted to posts tagged [NSFW].


5) This is not a support community.
It is not a place for 'how do I?', type questions. If you have any questions regarding the site itself or would like to report a community, please direct them to Lemmy.world Support or email info@lemmy.world. For other questions check our partnered communities list, or use the search function.


6) No US Politics.
Please don't post about current US Politics. If you need to do this, try !politicaldiscussion@lemmy.world or !askusa@discuss.online


Reminder: The terms of service apply here too.

Partnered Communities:

Tech Support

No Stupid Questions

You Should Know

Reddit

Jokes

Ask Ouija


Logo design credit goes to: tubbadu


founded 2 years ago
MODERATORS
 

I would like to code for a living and to contribute to open source projects and things, but my coding skills are absolute shit after taking online courses and watching video tutorials. How can I learn to code for real?

What I would like to learn is algorithms, web development ("full stack"), how layouts work (both in like kotlin compose and HTML) and how to read other peoples code. Maybe thats more than I can chew, but its probably good for me to try out many things before getting settled on one.

Now I have been coding for a while already (~ 4 years), but I kind of feel like I need more guidance to be able to actually create code that works as intended intentionally, and not through trial and error / stack overflow. As for what level i am at, CS50 is probably my only qualification, I have played around with APIs (I.E. making discord bots), and made some html "apps" (horribly made, but things like the "genius" game and a calculator) and "prototype" react websites (as in, really bare bones, barely working).

I do plan on taking CS or something similar, but i'm not yet in college, and I would like to have a good head start before getting there.

Sorry for my bad English, and any help is appreciated.

you are viewing a single comment's thread
view the rest of the comments
[–] ThePowerOfGeek@lemmy.world 15 points 2 days ago* (last edited 2 days ago) (2 children)

First off, the fact that you are aware of your shortcomings and are interested in addressing them is awesome. That shows real growth potential and wisdom.

I'm no rockstar developer, but I've been doing it professionally for over 2 decades. And I've been told by multiple bosses that I'm pretty good at my job. I've worked with a lot of other developers. Including some less experienced ones. Here are some thoughts on pitfalls and hurdles I've seen, both in myself and truth other developers:

  • Don't get too fixated on the technology. I know that sounds weird at first blush, but there's a whole layer to software development that involves analysis and critical thinking, and that layer is completely agnostic of technology. Make sure you work on your analytical skills, because they are the foundation that will allow you to excel with actually writing code.
  • Sometimes newer isn't better. It's tempting to chase after the latest approach or platform and think that will be perfect and last for many years to come. But they seldom last more than 5 years before they start getting vilified as old and outdated. Yet there's a lot of wisdom and tried-and-tested reliability in older approaches and seemingly stale design patterns.
  • Related to that, many of the concepts in software development are cyclical to a degree. What's considered passe and wrong today can often be returned under a cool new name in 5 or 10 years time and suddenly find popularity and use again. So be prepared for that.
  • Get to know design patterns, but don't treat them as set in stone. Two mistakes I've seen people do (and I've done myself) is assume a) a design pattern fits into more scenarios than are actually applicable, and b) think that design patterns are immutable and must be followed completely. But really they are like a buffet where you can take often a bite or two from one, and where also every trip to the restaurant is different, so your menu of choice will change.
  • Practice software development from the ground up. Where the ground is reading business requirements, then converting them to system requirements, then designing your a system, then implementing it, and then working through the subsequent challenges.
  • Related to that, it's extremely rare that a developer creates a complex system with perfect code right out the gate. It's okay to make mistakes and work around them. It's just part of the process and something we all do.
  • Don't get too caught up on writing code "the right way". I think coding is more an art than a science. And with that in mind, have some fun with it. Keep in mind things like performance and scalability, obviously. But if you stick to a rigid approach to writing code you will struggle to evolve and adapt and build your skill set.
  • Also, I bet you are a better coder than you think. So many developers I've worked with think they are poor at writing code and have imposter syndrome. But most of them are solid.
  • And lastly, in my opinion don't get caught up on certifications. I've worked with devs who had lots of certificates and who were okay. But I've also worked with devs who had no formal training and no certificates, but they were amazing at writing really innovative, well designed, and high performing code. Like I said earlier, it's all about the state of mind.

Hope this helps.

Edit: fixed some typos.

[–] hendrik@palaver.p3x.de 5 points 2 days ago* (last edited 2 days ago)

I agree, though I'd like to add that it really helps to learn it properly. I've also met people who learned everything by themselves in an unstructured way, and sometimes they struggle with the underlying concepts. And yes, it's art. But sometimes you want your customer data not to be stolen, and your software not to have any bugs and leaks. I think sometimes it't that kind of art that requires effort, dedication and deep knowledge about a topic.
It's really fun though, at least in my opinion. And it's a broad field. Some software needs mathematical precision and be provable and secure, other things are more design, there's so many different things...

Yeah and I agree, you can just try lots if things on a computer, and if it's not right, you just correct it. Mistakes are cheap while learning... And that's not the case in other professions. So you can just try and figure out things pretty much as you like.

[–] ChilledPeppers@lemmy.world 3 points 2 days ago

Thank you for the response, I actually was with the opposite position as to being an art. I was literally just thinking "there is a correct way to do things, if you don't use it, your code sucks", and things like that. (Im watching a Linus Torvalds interview, and he was just talking about good vs bad code lol).