• 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
  On 24/09/2015 at 21:15, Andre S. said:

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
  On 24/09/2015 at 22:21, bman said:

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
  On 25/09/2015 at 13:45, Seahorsepip said:

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
  On 25/09/2015 at 13:51, Andre S. said:

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
  On 25/09/2015 at 13:48, Seahorsepip said:

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
  On 24/09/2015 at 22:21, bman said:

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
  On 15/10/2015 at 01:31, bman said:

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
  On 14/10/2015 at 19:36, DevTech said:

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
  On 20/10/2015 at 16:51, Andre S. said:

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
  On 14/10/2015 at 19:36, DevTech said:

 

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.
  • Posts

    • OBS Studio 31.1.2 by Razvan Serea OBS Studio is software designed for capturing, compositing, encoding, recording, and streaming video content, efficiently. It is the re-write of the widely used Open Broadcaster Software, to allow even more features and multi-platform support. OBS Studio supports multiple sources, including media files, games, web pages, application windows, webcams, your desktop, microphone and more. OBS Studio Features: High performance real time video/audio capturing and mixing, with unlimited scenes you can switch between seamlessly via custom transitions. Live streaming to Twitch, YouTube, Periscope, Mixer, GoodGame, DailyMotion, Hitbox, VK and any other RTMP server Filters for video sources such as image masking, color correction, chroma/color keying, and more. x264, H.264 and AAC for your live streams and video recordings Intel Quick Sync Video (QSV) and NVIDIA NVENC support Intuitive audio mixer with per-source filters such as noise gate, noise suppression, and gain. Take full control with VST plugin support. GPU-based game capture for high performance game streaming Unlimited number of scenes and sources Number of different and customizable transitions for when you switch between scenes Hotkeys for almost any action such as start or stop your stream or recording, push-to-talk, fast mute of any audio source, show or hide any video source, switch between scenes,and much more Live preview of any changes on your scenes and sources using Studio Mode before pushing them to your stream where your viewers will see those changes DirectShow capture device support (webcams, capture cards, etc) Powerful and easy to use configuration options. Add new Sources, duplicate existing ones, and adjust their properties effortlessly. Streamlined Settings panel for quickly configuring your broadcasts and recordings. Switch between different profiles with ease. Light and dark themes available to fit your environment. …and many other features. For free. At all. OBS Studio 31.1.2 hotfix changes: Fixed an issue in OBS Studio 31.1.0 and 31.1.1 causing Multitrack Video to set the Maximum Video Tracks to 10 if the user had set it to "Auto" [dsaedtler] Fixed an issue in OBS Studio 31.1.0 and 31.1.1 causing Browser Source hardware acceleration to fail in the Flatpak version [reitowo/tytan652] Fixed an issue in OBS Studio 31.1.0 and 31.1.1 where progress bars were styled incorrectly [Warchamp7] Fixed an issue in OBS Studio 31.1.0 and 31.1.1 where spacing around scrollbars was incorrect [Warchamp7] Fixed an issue in OBS Studio 31.1.0 and 31.1.1 where Decklink Output did not work [CyBeRoni] Fixed a freeze in OBS Studio 31.1.0 and 31.1.1 on Linux when using PipeWire capture with explicit sync [YaLTeR] Fixed an issue where Video Capture Devices on Linux could unexpectedly stop capturing video [JiangXsong] Fixed an issue with PipeWire capture on Linux where video filters could cause gamma shift [tytan652] This was done by reverting a fix for white-tinted PipeWire captures in 10-bit or 16-bit color formats, so that issue will return for now. Download: OBS Studio 31.1.2 | Portable | ARM64 | ~200.0 MB (Open Source) View: OBS Studio Homepage | Other Operating Systems | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Sandboxie Plus 1.16.2 / Classic 5.71.2 by Razvan Serea Run programs in a sandbox to prevent malware from making permanent changes to your PC. Sandboxie allows you to run your browser, or any other program, so that all changes that result from the usage are kept in a sandbox environment, which can then be deleted later. Sandboxie is a sandbox-based isolation software for 32- and 64-bit Windows NT-based operating systems. It is being developed by David Xanatos since it became open source, before that it was developed by Sophos (which acquired it from Invincea, which acquired it earlier from the original author Ronen Tzur). It creates a sandbox-like isolated operating environment in which applications can be run or installed without permanently modifying the local or mapped drive. An isolated virtual environment allows controlled testing of untrusted programs and web surfing. Sandboxie is available in two flavors Plus and Classic. Both have the same core components, this means they have the same level of security and compatibility. What's different is the user interface the Plus build has a modern Qt based UI which supports all new features that have been added since the project went open source. The Classic build has the old no longer developed MFC based UI, hence it lacks support for modern features, these features can however still be used when manually configured in the Sandboxie.ini. Sandboxie Plus 1.16.2 / Classic 5.71.2 changelog: Added added toggleable INI key validation to "Edit ini Section" #4915 (thanks offhub) added toggleable per-key tooltip support #4928 (thanks offhub) added option to use the new Qt Windows 11 style on SandMan #4927 (thanks LumitoLuma) Changed ImBox no longer updates container file timestamps when accessing an encrypted box volume Fixed fixed Windows 11 24H2 build 26100.4770 causes Firefox Portable 140.0.4 / 141.0 to stop responding upon starting it sandboxed #4920 fixed leak of encrypted sandbox key during password change (backported hardened ImBox from MajorPrivacy) CVE-2025-54422 fixed Firefox Nightly sandbox hook errors Removed removed obsolete Bullguard Internet Security template removed obsolete Bsecure CloudCare template removed obsolete CyberPatrol template Download: Sandboxie Plus (64-bit) | 23.6 MB (Open Source) Download: Sandboxie Classic (64-bit) | 3.0 MB Links: Sandboxie Website | GitHub | ARM64 | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Indians never sing "I Think Indian" near giraffes.
    • Malwarebytes 5.3.5.204 by Razvan Serea Malwarebytes is a high performance anti-malware application that thoroughly removes even the most advanced malware and spyware. Malwarebytes version 5.xx brings comprehensive protection against today’s threat landscape so that you can finally replace your traditional antivirus. You can finally replace your traditional antivirus, thanks to a innovative and layered approach to prevent malware infections using a healthy combination of proactive and signature-less technologies. While signatures are still effective against threats like potentially unwanted programs, the majority of malware detection events already come from signature-less technologies like Malwarebytes Anti-Exploit and Malwarebytes Anti-Ransomware; that trend will only continue to grow. For many of you, this is something you already know, since over 50% of the users already run Malwarebytes as their sole security software, without any third-party antivirus. What's new in Malwarebytes 5.xx: Unified user experience - For the first time, Malwarebytes now provides a consistent experience across all of our desktop and mobile products courtesy of an all new and reimagined user experience powered by a faster and more responsive UI all managed through an intuitive dashboard. Modern security and privacy integrations - Antivirus and ultra-fast VPN come together seamlessly in one easy-to-use solution. Whether you’re looking for a next-gen VPN to secure your online activity, or harnessing the power of Browser Guard to block ad trackers and scam sites, taking charge of your privacy is simple. Trusted Advisor - Empowers you with real-time insights, easy-to-read protection score and expert guidance that puts you in control over your security and privacy. Malwarebytes 5.3.5.204 changelog: Introduced Deep Scan, a new Advanced Scan type recommended after blocking or removing threats Added new Windows Firewall Control feature preview to the Tools, feel free to try it and provide your feedback Revisited Dashboard layout for free version Minor usability and localization issues Download: Malwarebytes 5.3.5.204 | 397.0 MB (Free, paid upgrade available) Links: Malwarebytes Website | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • let's be honest here, it was in the line of secret doxing app
  • Recent Achievements

    • Dedicated
      ataho31016 earned a badge
      Dedicated
    • First Post
      Gladiattore earned a badge
      First Post
    • Reacting Well
      Gladiattore earned a badge
      Reacting Well
    • Week One Done
      NeoWeen earned a badge
      Week One Done
    • One Month Later
      BA the Curmudgeon earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      652
    2. 2
      ATLien_0
      261
    3. 3
      Xenon
      165
    4. 4
      neufuse
      142
    5. 5
      +FloatingFatMan
      107
  • Tell a friend

    Love Neowin? Tell a friend!