DEV Community

Cover image for Going from Intermediate to Advanced Coding Skills: Changing the way I'm learning to code

Going from Intermediate to Advanced Coding Skills: Changing the way I'm learning to code

dAVE Inden on March 13, 2019

Cover image from John Salzarulo on Unsplash I've been teaching myself to write code for awhile now and like many I often wonder if I am doing it...
Collapse
 
learnbyexample profile image
Sundeep

Then, instead of building the example project I am trying to apply this new knowledge in my current projects. This way I am still using what I am learning, but I'm getting my hands dirty by working in something that I'm not being guided through step by step

That's been my experience too. We have to do our own projects, especially something that'll solve an issue we are currently facing or something that we feel could be helpful to those we interact with (colleagues, juniors, students, etc)

I've also found that I learned a lot while teaching and writing books about topics I'm familiar with. There is a natural incentive in these tasks to deep dive and give it our best shot. And while doing so, we bring out our thoughts in written/vocal form which provides lot more clarity than what we had in our minds alone.

I have some curated links that can help if you are looking for ideas to implement.

Collapse
 
uf4no profile image
Antonio

Same here. I've stopped following the tutorials and now I'm just getting notes and trying to apply the new concepts to my side projects.
Another thing that is really, really helpful is having pair programming sessions with more senior devs although this might not be possible if you're just learning on your own but still dont have a job.
You can also review the code of libraries you use and try to understand why it's build the way it is :)

Collapse
 
daveskull81 profile image
dAVE Inden • Edited

Working with a more senior person is a great way to learn more, especially since they can provide personal notes on their experience which helps a lot in hearing how someone made a real world decisions on how to do something. But, as you said it isn't always an option for some. I have seen some sites recently that offer pair programming with someone online to do that kind of mentoring. It is a neat idea.
I have dug into the code of things I have used too. Mostly I have done it with packages on npm to see how they work and if I can implement it myself without having to install the dependency. But, it is a great way to learn how real projects are structured and see how things work.

Collapse
 
daveskull81 profile image
dAVE Inden

I have been working towards teaching about code as well. I have given some talks and plan on creating more articles here that are technically focused on something.
Thanks for those links. I will definitely check those out. :)

Collapse
 
yaser profile image
Yaser Al-Najjar • Edited

Exactly, I tell every new programmer: please do NOT copy from the tutorial !

You mentioned both reading and writing code, there is also another great way to learn which is teaching other people code whether in write-ups, videos, in-person, or whatever.

Collapse
 
daveskull81 profile image
dAVE Inden

Other folks have mentioned teaching code as a way to learn it more deeply. I think it is a great idea. It gives you the chance to dive more deeply into how something works. I have been working on doing that myself. That is part of why I write posts here to teach others about my experience with coding. As I go I hope to also have more technical focused articles that teach how to use something.

Collapse
 
prithvimp profile image
prithviraj m pillai

The point where u mentioned that you would copy it on your phone and watch videos to learn and implement. Even I used to do that while I was learning to code. I stopped watching series or some movie while commuting and started binge watching tutorials and doing so we get the gist of what the tech stack ur trying to learn.

I had stopped watching it because it seemed very slow paced. maybe ill reconsider and try out your idea.

Collapse
 
daveskull81 profile image
dAVE Inden

I'd be interested to hear how it works for you if you try it again. My intent is basically the same. I want to get exposure to the content, but not following along coding while watching. Then I can take the concepts and apply it to my own projects. Thanks for sharing your approach!

Collapse
 
brburzon profile image
Brandon Burzon

For me, I observed that there are not a ton of difference between the coding skills of an intermediate (SDE II) and advance (SDE III) level engineer at my company. The main difference I see is their ability to solve problems and the impact it has on the team, org, or the whole company.

I would say once you have a pretty good grasp of the fundamentals of the language, framework, or ecosystem where you are trying to get good at, start trying to improve and practicing your problem-solving skills.

One way I do this is by reading research papers and sometimes blogs on my commute.

Here are the reasons why:

  1. Problem-solving - when there is a specific problem I am trying to solve at work such as looking for a fast hashing algorithm, usually someone has already researched about them and written their results.
  2. Context - sometimes I have to work on projects that I have 0 experience in, and reading papers is a good way to increase my familiarity to current best practices which allows me to think bigger when I am designing a solution than if I started without any background on the topic.
  3. Curiosity - some topic are just interesting in general even though they are completely unrelated from what I actually do for work. This is useful because some solutions to problems from other area or fields can be reapplied to my work. For example, it was interesting to see the similarities between microservices and IoT! Some best practices such as circuit breaker pattern are even applicable to both.

Hope this helps and wish you all the best!

Collapse
 
daveskull81 profile image
dAVE Inden

I agree, problem solving skills will take someone very far in learning to code. That skill can be more important than knowing the syntax of a language. I like the idea of reading detailed papers on related topics that aren't specific to something you use yourself. Seeing the methods others used to solve their own problems would be really helpful to better your own problem solving skills.

Collapse
 
rachelsoderberg profile image
Rachel Soderberg

Watching tutorials during your commute then working from it seems like a solid idea, but I'll admit my memory with details isn't always the best... Do you reference back to the video while you work if you have any gaps in what you remember from it, or do you try to force yourself to work completely blind from what you were 'taught'?
I feel like there could be different advantages from either way, so I am curious how you do it.

Collapse
 
daveskull81 profile image
dAVE Inden

I had this happen the other day actually. I tried to pull it from memory and after a bit of trying things out I went back and referenced the video. After reviewing a section I was able to continue working. I can see someone trying to test oneself to remember something without referencing anything. But, this doesn't seem very realistic. In the real world people, including very senior engineers, are looking up references to things all the time to know what to do. For myself I'm not trying to be able to pull tons of information from my head. I'd rather know my resources and how to use them to be successful. This combined with a good understanding of the fundamentals of programming will get the job done if you ask me and that's really what matters.

Collapse
 
nztimkeegan_6 profile image
Tim Keegan

Personally as I've grown more confident (and hopefully also more competent) I have found hello world / build a blog site / simple cars API -type examples to be less useful.

Recently I have started looking at code in open source projects and trying to make sense of what is happening. Seeing how real people write real code that does a real job is ... real useful ;)

My ambition for the next 6 months is to find a project that I am using and understand it well enough that I can make my first open source contribution.

In my work life my team started doing code reviews about 6 months ago. I have learned more from reviewing code and having my code reviewed than in all the books and blogs I read in the 6 months prior. If you can find someone who you trust to look at your work and give you constructive feedback I'd encourage you to go for it!

Collapse
 
daveskull81 profile image
dAVE Inden

That's really awesome you are diving into code of projects you use to eventually contribute to them. That seems like a great way to learn more. Like you said, seeing real world code helps a lot.
I agree that having code reviewed can help the learning process a lot. I've had the opportunity to discuss code with others in the past and it has helped tremendously. I'm hopeful to get the chance to do that again.

Collapse
 
mkrajaci profile image
Mario Krajacic

Great advice.

Collapse
 
daveskull81 profile image
dAVE Inden

Thank you. I'm glad you enjoyed it.

Collapse
 
maycovilefort profile image
Mayco A. C. Vilefort Areias

Parabéns pela post

Collapse
 
daveskull81 profile image
dAVE Inden

Thanks! :)