What should I learn/do next?


#1

Hi all,

I decided I want to learn programming. I think my progress is okay, but I don’t know what should I do next.

Here’s my past:

I had basic HTML/PHP background. Really simple code whithout any objects or OO. Only small tools for my work (not as a developer of course), mostly without any interface at all (mass download images from sites, etc).

Courses:

  • Codeschool’s JS roadtrip 1-3, jQuery and Angular courses
  • Udacity’s Front-end Nanodegree
  • Discover meteor
  • Kadira’s Bulletproof meteor (~80%)
  • 30% of the Eloquent JS ebook

I played a little with angular (after codeschool), then with angular-meteor, then I dropped angular and only played with meteor and blaze.

I think I know the main concepts (variables, functions, loops, function (and block in ES6) scope, etc. With a little time I think I can understand most of the codes I see (what they do, what they call, callbacks, etc). But my problem is that I don’t feel I could be able to build a project on my own. If I were in my 20s I could work as a junior developer somewhere to learn, but I have a job, so it’s not an option. Also, most of the JS courses are focusing on the frontend, but meteor’s node part is backend.

For example I know the reasons of OOP, I know how prototype chains work, and why it’s good for a game to represent the player and the enemies as an object. But what’s an object in a facebook timeline page? The posts? The postlist? The users? Then I read about functional programming and they say OOP is not the best thing, you should use functions instead. Great…

I think three things would be great.

  • Some kind of online study group, where we can comment on each others’ code, so I know I’m doing it right.
  • Or something like a mentor, to whom I can show my idea and he can guide me what to do next (what’s first: design schemas, design objects, create the layout?). I’ve found services like this, but I don’t know how much time is necessary from the mentor.
  • Or a page where I can solve simple projects and then I can compare my result with other’s code.
  • Or stop learning and do something? But how will I know if it’s good or not?

What do you recommend?


#2

I was in a similar boat as a ‘hobbyist’ and tinkerer - yes, I have a strange idea of fun - but eventually I find a use case. For instance, I’ve been inspired by and learning from Sam Cocos Ionic/React example (you’ll find it on the forum) to publish an app for a very short-term UN campaign my wife is running…

I found that formal tutorials really only get me so far - so perhaps start from the other end. What are you doing it for: what do you want to achieve - a project? a profession?..

Consider starting/contributing to a mature open source project that takes your fancy (Telescope for instance - I wish I could give it some time) - helping out with docs to begin so you get to work through the code. This could be a gift that keeps giving to you: contact with developers, real world project experience, and a tangible testable output to get you over the Dunning-Kruger curve…

“Always be learning” - but don’t let widening your perspective distract you from strengthening your core skills set too. I wouldn’t worry too much about being left behind on the latest functional/react/riot/elm etc unless you long to be a ‘rock star’ that needs to differentiate in the global job market/avoid commoditization.
I’m happy to develop my little craft in its time. I avoid Hacker News/Product Hunt etc like the plague and to focus on Meteor/JS I drill down on that one problem at a time through dev tools. Then I have this forum, SO, great blogs, etc. There are deeper tutorials that I intend to do when I have time: Evented Mind, Kadira, Josh Owens come to mind. A solid understanding of Meteor will offer a good base to delve into NodeSocket/Cordova/Electron/Ionic/React/whichever…and theres plenty of direction here. But let that be driven by your needs and use case, not by external fads :slight_smile:


#3

But my problem is that I don’t feel I could be able to build a project on my own.

Why exactly?

The answer to this question is crucial in order to help you.


#4

Should I learn velocity or skip testing at first? Should I use simpleschema or astronomy or skip schemas? Thinking about MVC*… M is mongo (with or without schemas), V is Blaze (or react or angular), C/* is the template helper? Or is it the iron router? When I pass data to the template through the router, then the router is the controller? But then I update the data through the template helper… Or should I use Methods and skip direct updates? But I’ll use latency compensation with methods…

And where are the objects? I can’t seem to find basic object oriented meteor tutorials, and since OO is also new to me, it’s not an easy task to put them into the right place of the meteor-puzzle. There are collections, templates, helpers and methods (not to mention packages - should I use the “everything is a package” approach?), but where are the objects? Yes, everything is an object in JS, so the collections are objects… and thats it? Or should I write objects that handle other objects? And where to put these objects, to the template helper? But they’re not template specific… And then you google tutorials about OO and JS and you find an article about functional programming, stating that OO is outdated…

I can read a lot of stuff and it’s hard to decide what is necessary from the beginning and what’s not. It would be great to have a tutorial which doesn’t include the code itself, just the things you should do and the approach you should follow. Tell me what objects to write (and about the process to find out what to write), but don’t show me the actual code, so I can try to write them.


#5
  1. Stop worrying about unimportant things
  2. Write an app. Make it simple.

Yes you can. If you don’t trust yourself at this very moment, even learning 10000000 packages won’t make you believe you’re ready.

When you finish these two assignments, you can think of learning additional packages like Astronomy or Collection2 or choosing between method calls vs clientside updates.

Then, repeat step 2 with different approach.


#6

I think @brajt has spoken the truth. There are people that did not even go through what you have gone through in terms of books, courses. Discover meteor is more than enough to get you started. People have found jobs after finishing a Udacity nano Degree.

start making an app right now, please.

If you want to find a mentor try Codementor.io


#7

I would recommend the last option: “go ahead build something”, but don’t stop learning. You will learn the most when you actually try to create something useful.

Pick something that bothers you. Something where you ever thought there should be a better solution. Make it open source and talk about it in the communities (here for example).

You have different options, though:

Pick some framework, you know or find interesting, that has some bugs or missing functionality. Clone it and fix those bugs (or add the functions), make a pull request. The original author will generally guide and help you (teach you the oo/functional style they use). Don’t be upset when the author isn’t very cooperative, though. Many people do that as their hobby and don’t have the time to instantly handle pull request and such. But there are great examples on the other hand, I recently contributed to nvd3 (https://github.com/novus/nvd3/pull/1271) and they were extremely nice.

Make some package to enrich the community and make it open source on GitHub. Promote it (here, and elsewhere) and if others find it worthwhile they might dig into your code and give you feedback (you will get the tickets and pull requests).

Create a real product and promote it, similar to how they did it: Join Huqoo - a meteor project. You will get feedback about what others think about your app, but not on the code level.

For feedback on code level you have to make it open source, like Telescope.


#8

Thank you guys! I should have mentioned that I don’t want to find a job, so my goal is not to learn the minimum skills required for that ASAP. But if you say that the fastest way to become an “advanced” developer is to code, i believe you :smile:
I’ll definitely try @crenshininbon 's tips.