• 0

Learning To Code - Best Options, Issues


Question

Hi,

I have started learning to code using a few different websites. I am currently following the "Complete Web Developer Bootcamp with Rails" over on Coder Manual. This course uses Codecademy as their assignments/tests. I am not entirely sure if I am understanding and getting it. What I mean is I am 50% of the way through and many times I need to double check answers, search or ask questions about what I am doing and then in the end not sure if I actually got it, or if I will even remember it. Wondering if I should be getting it quicker if programming is for me?

I am also wondering if there are many better resources out there. I did find Teamtreehouse recently which looks like a very nice place. Just wondering your thoughts, ideas and suggestions.

The overall plan was to learn Ruby and Web Development (the course does go through javascript, and a few others). I then plan on learning Java and possibly other needed items for Android development. If that is all possible for me and I get good at it, then the next idea would be C, C++ or something.

20 answers to this question

Recommended Posts

  • 0

I would start by learning a strict language like java and C, learning languages like javascript and php first made me a lazy programmer(Trying my best to not be a lazy sloppy programmer xD).

Then when you've learned one language you will be fine in most other languages, and yes that includes the casual googling of things like "Objects in javascript" which is totally fine since programming is not about knowing all the functions of a programming language.

Most important thing in programming is being able to program modular, when doing something multiple times consider making it a function and calling that multiple times instead. Also don't be lazy and add comments in your code, you will thank yourself for adding those comments when working with older code that hasn't been touched for months.

  • Like 2
  • 0

Web development is complex. Right from the get go you have to think about different execution environments, learn 2 or 3 completely different languages, and there's just a lot of overhead and confusion with all the different technologies and techniques involved.

If you want to learn programming it might be better not to get specifically into web dev right away. I would suggest writing simple console apps in a easy programming language like Python (Ruby is probably fine, never used it personally though), and focusing on the fundamentals of computer science to get a solid basis. Once you have that you can apply to any domain that you wish, be it games, data, ai, web, mobile, integrated, real-time, etc.

Here are some topics you'll want to cover eventually:

  • Procedural, object-oriented and functional programming
  • Processor architecture - how computers actually execute programs
  • Operating system fundamentals - threads, scheduling, file system, etc.
  • Data structures and algorithms
  • Networking (especially important for web dev!)

I think every programmer should have a solid basic understanding of these topics, regardless of domain. Otherwise you'll not really be able to understand what you're doing or why.

  • Like 1
  • 0

Good stuff.

I don't know if I could/should stop this current Ruby course half way through, but I get learning C or similar first, makes sense. It was always a plan to learn it, just didn't think about doing it first.

You guys have said what you should learn, and in which way, but not really any resources or places to do so :)

  • 0

That page was a great post that I enjoyed reading. It does also list many good resources.

I myself do not believe in traditional schooling, at least not in terms of what it costs still. I also need to move along as fast as possible since I am late to the game.

I appreciate the suggestions.

  • 0

http://www.ybrikman.com/writing/2014/05/19/dont-learn-to-code-learn-to-think/ lists some resources, IMO if you want to make a living from this you should do a CS or SE degree at a reputable university.

Currently doing a CS degree, sadly enough I also have subjects like psychology but yeah that was bound to happen when I chose web science :p

And I got to agree that doing a CS degree really makes me learn programming properly instead of the "it works after a few min of copy pasting".

  • 0

That page was a great post that I enjoyed reading. It does also list many good resources.

I myself do not believe in traditional schooling, at least not in terms of what it costs still. I also need to move along as fast as possible since I am late to the game.

I appreciate the suggestions.

You shouldn't see it as a cost but as a investment, you'll probably earn it back when you get a proper job with your qualifications. And you're never late, a friend of mine who's also a first year is 28 years old and I've even seen older people starting.

  • 0

Currently doing a CS degree, sadly enough I also have subjects like psychology but yeah that was bound to happen when I chose web science :p

Eh, enjoy it while you still have time to learn side topics like that. Once you're working full-time it gets difficult even to keep up with how programming is evolving.

  • 0

Eh, enjoy it while you still have time to learn side topics like that. Once you're working full-time it gets difficult even to keep up with how programming is evolving.

No worries, enjoying student life at it's fullest :shiftyninja:

  • 0

You shouldn't see it as a cost but as a investment, you'll probably earn it back when you get a proper job with your qualifications. And you're never late, a friend of mine who's also a first year is 28 years old and I've even seen older people starting.

Sure, if you have the money.

  • 0

That page was a great post that I enjoyed reading. It does also list many good resources.

I myself do not believe in traditional schooling, at least not in terms of what it costs still. I also need to move along as fast as possible since I am late to the game.

I appreciate the suggestions.

Actually if you want to be really great at this a CS degree is almost always an inefficient ratio of BS to useful stuff.

You want to start off by being good, not fast.

You will never really get programming until you "Grok The Machine" - all the crazy BS stuff the industry invents actually runs on silicon chips.

Number one is hack code. Not examples or assignments. Your own stuff you dream up. Open a console. Type code in an editor. Compile it. Run it. Then try to understand how that happened. Read basic intro to compiler. Look at the hex dump of the machine code. Feel the reality of what the silicon is feeling...

Then do some short time with assembly language. Write a tiny console program to input two numbers and add them together and run the thing on Windows or Linux. Be amazed at how tiny the code is.

Rewrite the ASM program in C/C++

Don't take a course or learn any languages I mention. Just enough to make the programs work because learning a programming language is inefficient if you don't understand how programs work.

Once you grok the machine you will no longer be puzzled by all the silly stuff people have added on top of the machine to meet their personal sense of what programming "should look like" - absolutely everything eventually ends up in the same destination of running on the silicon.

Your second step should be to make programs for whaever computer you own. If you have Windows, do some C# that displays pretty colors on the screen.

https://channel9.msdn.com/coding4fun/blog/End-of-Summer-Fun-with-FunSharp

Or use Processing for Java etc.

The important thing here is that you have immediate feedback to changes you make in the code by seeing pixels change on your screen. By now you understand how the silicon is doing this.

Next, like Sir Isaac Newton said, you are standing on the shoulders of Giants. So study great programmers and look at their code. One of the greatest human programmers is John Carmac and you can find lots of his very famous code on GitHub and he has also done many talks and presentations you can find on Youtube.

You might even have reached a point where you are amazed at how BS free John Carmac is. He writes code and makes it work.

All without the crazy Alphabet Soup that the Web industry makes up out of Fairy Dust on a daily basis!

Web programming is very abstract and should only (IMO) be approached after a solid grounding in silicon reality or else you will be sucked into a Reality Distortion Field of huge proportions where the computer is forgotten and programming is an abstract set of social memes running around in an endless circle of who can invent "The Next Cool Hipster Thing"

http://leemart.in/hipster-stack

 

  • Like 1
  • 0

At the risk of oversupplying info, some additional notes:

1. Programming Sucks

http://www.stilldrinking.org/programming-sucks

There is something about how people think it is easy to make somethingout of "nothing" that perverts programming into almost pure weirdness in the real world and you will experience a toned down version of every idiot in that article.

2. Learnable Programming

http://worrydream.com/LearnableProgramming/

Describes how all the online "learn to code" stuff is neither easy nor learning and why.

3. Microsoft's contribution to free online learning:

https://msdn.microsoft.com/en-us/microsoft-virtual-academy-msdn.aspx

http://www.microsoftvirtualacademy.com/

https://channel9.msdn.com/Series/C-Fundamentals-for-Absolute-Beginners

https://channel9.msdn.com/Events/Windows/Developers-Guide-to-Windows-10-RTM

4. Web programming

http://trends.builtwith.com/framework

If you just want empoyment doing web programming, then use some real data.

PHP 40%

ASP.NET 21% (added the two ASP.NET)

Ruby 10% (added the two Ruby)

Java 9%

which leads to learning PHP or ASP.NET except that there is a giant "Sea Change" in the web development world towards "Isomorphic Javascript" which means most of the Web Application code is in the user's browser as Javascript that is then talking to a symmetric Javascript partner running on a Node.js server. This programming model is so different from a server side Ruby or PHP that it needs some serious thinking before investing learning time on something old-school server-side like Ruby.

 

 

 

 

 

  • Like 1
  • 0

Some really great stuff here that I will be going through.

I have been having more trouble learning to code than I thought I would, so some of this might come of major use. Though not all you said is that simple, you say open console and code, but where do you start if you know nothing lol

Anyway, appreciate all the info, I will actually be going through all of it.

  • 0

Some really great stuff here that I will be going through.

I have been having more trouble learning to code than I thought I would, so some of this might come of major use. Though not all you said is that simple, you say open console and code, but where do you start if you know nothing lol

Anyway, appreciate all the info, I will actually be going through all of it.

A few artistic liberties there that google is supposed to fill at least in my imagination.

The idea is to type some simple code, then compile that code so it generates and executable file. The run it to see it work. Then view the machine code on disk to see what the CPU sees out of what you created. To get away from the abstract...

I   didn't suggest specific tools to do this because everybody has their pet prgramming language and that's not important.

On Windows, there are so many language compilers you could download that convert text to code but I just googled it and the variety is complex.

So looking for a super simple thing for a couple of days of exploration, I found two that look like they could be downloaded and used simply:

1. Rust

https://www.rust-lang.org/

2. Tiny-C

http://bellard.org/tcc/

You can use any super-simple editor such as Notepad or

NotePad++ https://notepad-plus-plus.org/

or Github Atom  https://atom.io/ or

VS Code https://code.visualstudio.com/

Save code file to disk from edit.

Then type command to compile it.

Then run it.

I'm not sure how long it will take or how exactly you might visualize it but if you can get a feel for how your text file of code gets translated into binary bits which are loaded into RAM to be fed into the CPU, you reach a milestone that most programmers never seem to get at.

Anyways if this approach doesn't resonate, try the FunSharp I listed before or else Java Processing to make pretty patterns on your screen.

https://processing.org/

 

 

  • 0

Actually if you want to be really great at this a CS degree is almost always an inefficient ratio of BS to useful stuff.

In my limited experience, programmers without formal education tend to have flaky fundamentals. Yeah CS degrees contain courses you might not have chosen but they usually ensure you have a overall solid basis.

Also a lot of employers require it.

  • 0

In my limited experience, programmers without formal education tend to have flaky fundamentals. Yeah CS degrees contain courses you might not have chosen but they usually ensure you have a overall solid basis.

Also a lot of employers require it.

 

In my experience, the degree is just a random factor. Some percentage of people that have a natural affinity to programming will decide to get a CS degree. If they are lucky, they won't have their interest in programming beat out of them by that process.

If you just want a job and and exploring a passion is secondary then you can look for employers that "require a degree" and be very confident that you have found "just a job"

There is the giant category of "web development" where people with and without degrees have bypassed my concept of "grokking the machine" and "flaky" might be too kind a word in an entire semi-technical field of development which defines the word "flaky"

  • 0

 

Actually if you want to be really great at this a CS degree is almost always an inefficient ratio of BS to useful stuff.

 

.... Then try to understand how that happened. .....

That's what a University CS degree is all about, learning to understand how things work. If you just want to learn programming then we're talking about a college programming course ^^ 

And just for the record, you actual need things like procedural, object oriented programming etc to be taught, they're not things you can come up with just by fiddling around with some code...

And web development is a mess, too many developers without any education making wordpress sites with templates that they kind of modify with all sorts of css hacks to make it look like how they client wants... The amount of actual proper developers that make a proper wordpress theme for a client with proper code is too low in my opinion :/

There are just too many developers these days that don't have any educational background of programming and end up creating websites for clients which are not even close to fool proof or secure. A lot of developers don't even tend to care about handling the user input properly and things like sql injections and xss attacks :(

  • 0

And programming seems to have split into 2 categories lately.

The first category is programming code for websites, apps and other programs that don't actually need to be optimized. Instead it's more important that the code is easy to read and documented so it can be updated quickly with new features without too much work. The processing power in these cases are far from limited and in most cases even way beyond the required processing power.

The second category is programming code for specific machines, IOT devices etc. Those require a very optimized programming code that runs as optimized as possible since the processing power is limited in these devices.

So learning machine code is far from required depending on the thing you're developing. The most important thing in my opinion is proper code structuring and documentation, most people still seem to lack at that.

This topic is now closed to further replies.