Becoming proficient as a developer


#1

I’m a self taught developer (I’m using that title very loosely) who started building apps for fun about 18 months ago. I’m at the point where things are starting to make more sense and I’d like to take the next step in coding to become more proficient. I’ve been using meteor and react with mongodb.

I’d like to become more proficient, to be able to code without having to rely on documentation as much. I assume that requires me commiting more to memory.

So as a discussion point can I get some ideas from some solid coders on where I should start and what I should focus on memorizing to get the most improvement in my coding ability?


#2

I think if you use a specific library often enough, you’ll begin to just remember different parts of it. Otherwise, I’m not sure there is any harm in checking out documentation or referring to old projects of yours for code snippets. Even if you’re dan abram (or whatevs his name is), you’re still going to need to read the docs when you use a new library or npm package.

Others can chime in, but I’d guess all you can do is keep coding and read books on 'high level" concepts. Stay up to date on the latest specs… understand the full stack (testing, back, front) and to also be able to work outside of meteor (regular node, webpack, react).


#3

I’m in a similar situation, but I think it’s hard to give general advice because each person’s needs and abilities vary. I think the best way to learn to just to code every day on challenging projects. You could memorize everything about lodash or mongodb aggregate queries, but maybe there are other things to learn which you’d use more for your specific projects.

I’ll add that reading other people’s code is a good idea. It can be a big boost to your confidence when you start to see ways to improve other people’s approaches :slight_smile:


#4

Don’t worry so much about memorisation. I have docs for things I regularly use saved offline with Dash, so I can get to the right place in the docs really fast instead of trying to memorize it.

I definitely recommend looking at higher level concepts and design patterns now. I recently picked up Computer Science Distilled and found it a great intro to data structures and algorithms


#5

Thanks for the advice. I’ll look at dash and the recommended book computer science distilled. What do you mean by higher level concepts and design patterns?

My question has come from watching people code online (youtube). The way they talk about it and just seem to be able to write it is really impressive. Having not worked as a developer before, I’m not sure if that is normal or if professional developers really rely on documentation.


#6

I’ve been coding big JS projects for years and I still find myself doing things like Googling “remove first character from string javascript” and using the first Stack Overflow hit as my docs.

I don’t think you need to know how to do a whole lot of things, just that there’s usually a way of doing what you want and it’s usually on S.O. Like @a.com said, once you’ve used your base libraries enough, things from the API will start to stick. I reckon just keep coding, keep solving problems with code, and use Google liberally as soon as you can’t see your way forward.

One thing I would say, though, it’s useful to know what your current libraries are capable of. You don’t have to remember the syntax of how to send an email in Meteor, you just need to know that you can; the syntax will always be there in docs.meteor.com when you need it. (If you’re not aware that Meteor can send emails for you, you might end up wasting time/LOC duplicating functionality that already exists.) I find this particularly true of libraries like Moment, Underscore/Lodash - well worth a read of their docs; not to memorize the API, but to be aware of all they can do for you.


#7

There are a few golden rules on how to become a proficient coder. But, it varies a lot from person to person, mainly depending on his/her background. Which has got to do with what a person knows already.

If you ask me knowing all the subjects (specially software subjects) of Computer Science is like your golden standard. Typical Engg. stuff. Invincible, stable, reliable, always there to guide you. Programming experience, Debugging experience is also vital. This you already have a little.

I did my major from Delhi College of Engg., Delhi University. '1999.

The more you study diverse related areas of Computer Engg. (focus more on software engg.), the better. Now that might be a little tricky at your standpoint.

There is nothing like good amazing books. They are your greatest asset. Memorizing is something you need least. You might have to refer tons of articles, docs etc. even after a lot of memorizing.

Taste is also vital, style, likings. Design Patterns, Architecture Patterns.

For web development HTML/CSS, Javascript, node.js/ExpressJS, Angular, React, MongoDB, MySql, Handlebars/Scpaebars, Jade, OS, Data-Structures, Networking, Laravel/PHP, (may be even ASP, SQL, C#, Java, Spring). The areas that don’t concern you directly are good-to-have/optional, depending on how much time you have.

It’s not simple, straight-forward, trivial. Ideally it takes years to master all of various items I have talked about from beginning. I have spent 18. Out of which 12 yrs. are in Software Development.


#8

Thanks for all the insights. I’ll just keep on playing and I’ll look at some of the books suggested. Thanks agian.


#9

watch FunFunFunction! :wink: