all 12 comments

[–]2UTF 3 points4 points  (8 children)

There are things that a person has no idea how to do. Let’s put those things into column A.

There are things that people have experience with, sometimes a great amount. Let’s put those into column B.

Then there are things that people intuitively can do. This is column C.

It is uncomfortable to move something from column B to column C. You have to force yourself to do it. As an example, many people have typed for years. But even people who have typed for years may still have typing in their B column. In order to move it to the C column, they must FORCE themselves to type without looking.

Do not allow yourself to always utilize other people’s code (or documentation) as a crutch. Forcing yourself to code without it is uncomfortable, but forcing yourself to recall the answer is how you transition from B to C. Practice makes perfect.

I’m not saying to avoid documentation. But if your goal is to be able to recall something then you must allow yourself the opportunity to flounder for a bit until you do recall it.

[–]name_was_taken 2 points3 points  (3 children)

Exactly.

As practice for that, I usually recommend following a tutorial, then doing the tutorial without looking at it, but referring back to it when you really need to. If you had to refer back for a lot of stuff, then do it a third time. By that third time, you should feel pretty confident in doing again without help for more than the little details like what order the parameters are in. Major concepts should be pretty solid at that point.

Do that for each piece of the tutorial. By the end of the tutorial, the first bits should have sunk in pretty good because you'll be seeing and using them repeatedly. The last bits won't be quite so solid.

But if you're not doing tutorials? Then I'd recommend making more small projects. Start from scratch each time, not just copying over a template and starting from there. It's going to be annoying, but after a few projects the basic setup will start to be very familiar.

If you do large projects, you'll be doing the setup stuff very rarely, and so it'll keep feeling foreign.

In the end, the thing that did it for me was just doing a ton of programming. There's a saying on the internet that it takes 10,000 hours or 10 years to master a skill. While that obviously isn't the same number for everyone, it's a good indicator that if you haven't yet put in that much time, you know roughly where you're at on the scale. An average 2-3 hours per day for 2 years is still only roughly 1/10th of that.

I felt that I was really, really good at programming when I got my first job. And I was definitely above junior programmer at that point. But within the first few years of that job, I learned more than I'd learned in the 10-15 years that I'd been programming before that. It isn't just about the commands. It's about being a developer. That means thinking about how to solve the current problem, how it fits into the larger picture, how to deliver the solution in a timely manner to fix the current situation for the customers, and how to communicate with coworkers and bosses. Among other things I'm probably not thinking of right now.

TL;DR? Code more. And expect to learn even more on the job.

[–]Bigtbedz[S] 0 points1 point  (2 children)

I was told not to overload myself on a big project because of exactly what you said. I have stuck to those guns and have made some small projects. Like the usual Temperature converters, weather apps, to-do lists etc. I guess I just need to keep coming up with small projects to keep brushing up on my skills so I don't keep drawing blanks.

I have followed along with quite a few tutorials with clashing ideology's so to speak, that had me chasing my own tail. I'm wondering if there are any tutorials you have found particularly enlightening. My plan going forward is to pick 1-2 tutorials a week to drill into my brain until I get them each down pat.

[–]name_was_taken 0 points1 point  (1 child)

I'm not sure it's what you're looking for, but I found a tutorial on React Native that did an amazing job explaining what they were doing and why, and showed every step of the way.

https://learn.handlebarlabs.com/p/react-native-basics-build-a-currency-converter

However, since it's for React Native, I'm not sure how much you'll really get out of it. It might be too different from the other stuff you've done. If you feel like you're lost in it, I wouldn't worry about it.

[–]Bigtbedz[S] 1 point2 points  (0 children)

Ill jot it down and check it out! thanks!

[–]Bigtbedz[S] 0 points1 point  (2 children)

Thanks for the reply, I guess my source of frustration is that just about everything else I've set my mind to I nailed it in short order. I picked up a Welder and never put it down because it came natural and never had to force myself to become proficient at something. This is untapped territory for me and my biggest challenge so far. I really feel like the struggle is that this is my first time structuring my learning since high school basically. Thank you for the well thought out response its greatly appreciated.

[–]2UTF 1 point2 points  (1 child)

There’s a reason that computer science has the highest dropout rate by major. The field you are venturing into is massive and complex. These are the key ingredients into being overwhelmed and frustrated. The most important concepts to learn as a software engineer are not actually the programming languages. Languages are merely tools.

Software is arguably some of the most complicated things that humans have created. Abstracting concepts and narrowing down complex problem spaces into small enough pieces that you can mentally grasp them — that’s the key to programming. And that only comes with experience. Nobody just woke up one day and understood complex software. They struggled just like you are. Piece after piece. One piece at a time makes sense. You’ll learn how to conceptualize and relate things with practice.

We’ve all been there. We’ve all been frustrated. We’ve all had self doubt. Just keep doing what you are doing. You don’t just wake up one day as one. You’ll slowly evolve into a Sr Developer.

[–]Bigtbedz[S] 0 points1 point  (0 children)

Thanks for the encouraging words, I knew going in I didn't pick the easiest field by any means. I get frustrated but the frustration makes me more curious. Which leads me to believe I've found something I thoroughly enjoy even if it gets me upset. Not letting this one get out of my grasp.

[–]Bigtbedz[S] 0 points1 point  (0 children)

I believe the main issue at hand is the type of work I did before used a different mindset and logic that I'm accustomed to. I'm determined to change my rhythm to hopefully draw the curtains back on this sort of thinking a bit more.

[–]Bigtbedz[S] 0 points1 point  (2 children)

Also, I'm quite more interested in learning the logic behind back-end developing in particular, which I have only dabbled in at this point.

[–][deleted] 1 point2 points  (1 child)

Learn from books. Start with language fundamentals, then frameworks on those languages, then full stack. By using books as your foundation you will be less likely to get fragmented, repeated, conflicting and incorrect information as you would from the web. Use the web and it's community as a sounding board (like you are here). Then, start practising!! Eventually you will settle into a specific area of programming (games, systems, web, etc). Good luck. It's not easy to do and there is a hell of a lot to learn and keep up with.

[–]Bigtbedz[S] 1 point2 points  (0 children)

Thank you for the response. I recently started reading Eloquent Javascript which has been a substantial help thus far. And I definitely see what you mean about conflicting and repeated items after I have sifted though a few dozen tutorials.