How to become a competent coder? - I was advised to cross post here.
-
[email protected]replied to [email protected] last edited by
-
[email protected]replied to [email protected] last edited by
When I first started out, I was working on things I found fun like a damage calculator for a game I was playing or a simple habit tracker that just incremented a number for a particular chore or task.
Eventually things got more and more complex until I did enough to impress the first company that hired me.
From what you wrote, it sounds like you're off to a great start already. Just keep at it!
-
[email protected]replied to [email protected] last edited by
If you want a headstart, I'd recommend looking into other kinds of languages, such as lisp, assembly, smalltalk and prolog. You will probably have classes on those in college (at least I did have mandatory ones), and it can take a while to wrap your head over such different programming styles.
And it also helps wonders to make you into a versatile programmer - since you would be vaguely familar with most of the different styles of languages there are, picking up a any new language will be a lot faster, since it will probably be similar to one of the above mentioned.
-
[email protected]replied to [email protected] last edited by
How did you determined that your coding skills are "absolute shit"?
If you plan to study CS having qualifications and personal projects and stuff, you're very likely already ahead of the curve; you already have the head-start you want.
In general,
- invest into what interests you or has use for you; code a tool you use or need, look at a project you use or you have interest in; personal investment drives you forward with interest and motivation
- smaller projects are easier to read and get into than larger projects
- [many if not most] public (same as private projects) may be in a bad or awful state, but you can still learn from them
- nothing is as good for learning as working on a project with a good mentor
- prefer official resources, tutorials and guidance over third parties, if available; they will more likely be more up-to-date and more likely better than the other way around
- studying computer science can teach the leap from coding to software engineering; mentoring can too
- experience, both amount and variance, drives all you do
- there's a lot of resources for many things to read and learn
You listed algorithms first, I think that's a well scoped, reachable goal, with many resources available. Increasing that scope, meaning also effort and risk of giving up, you could combine algorithms with a visualization, e.g. drawing on a HTML canvas. Now you have a well scoped project, where you visually see progress, and meet two of your learning goals of algo and web.
-
[email protected]replied to [email protected] last edited by
Work on your own projects and it will come naturally, it's the best way to thoroughly learn a language (probably JS in your case). Try to really understand the basics (like OOP), it's knowledge which will both translate to other languages and help you learn frameworks/libraries. Instead of relying solely on tutorials, try reading the documentation, it will give you a more thorough understanding (if it's good), also stack overflow isn't cheating, you can't always remember everything. Trust me, you are already way ahead of others if you plan to take CS.
-
[email protected]replied to [email protected] last edited by
Unironically this.
The entire IT world is held together with spit and sellotape.
-
[email protected]replied to [email protected] last edited by
Chill, hatred is too strong for this. Jokes are rooted in reality but that doesn’t mean that they describe the full reality.
I’ve been programming and tinkering with computing systems for a long time. Every time I start a new project with some new tech, I end up with 1000 tabs open in various mixtures of docs, AI, stackoverflow, reddit; and discord, slack; etc. hunting for answers or resolutions to similar situation to some particular nuanced problem I’m experiencing. It doesn’t mean that I’m an idiot just that I’m trying to do something that I haven’t done before.
It’s taken me many cycles to break myself out of the samsara loops of “I don’t know how to do this so I suck.” Imposter Syndrome is real but eventually we work through it to a healthy perspective of “I don’t know how to do this… yet, but I’m going to have to struggle through it to earn this knowledge.”
-
[email protected]replied to [email protected] last edited by
That’s a rather disrespectful thing to say. But I’ll play and assume you weren’t trying to be a jerk.
Sounds like you're just still in the same boat as op.
I disagree. It’s a natural part of the cycle of learning new things, and when is software development not about learning new things?
-
[email protected]replied to [email protected] last edited by
You'll learn algorithms on college, there's no rush to that.
If you want to learn how to read code, well, the best way to learn that is by doing. The same applies to web development and UI design. Make something, and read your dependencies.
-
[email protected]replied to [email protected] last edited by
The idea is to develop keen instincts so your code comes out nice on the first try, without needing rewrites. To do that, you have to start out by rewriting a lot. You are after a fluency of style, which is somewhat independent from deep thinking. Compare being a profound musical composer who sweats blood over every note, with being a competent (not necessarily great) improviser who, given any request, can bang out something listenable immediately without too many bum notes, without thinking too hard.
Ideally you want both. Computer science education gives you the profound compositional knowledge. Improvisation needs lots and lots of practice at the basics. So code a lot. It makes everything else easier.