Author Topic: Code Academy Learning Path?  (Read 25003 times)

0 Members and 1 Guest are viewing this topic.

unreadPostsSinceLastVisit

  • Guest
Thank you for your input. Say I wanted to extend that interest to something like... bts...

Should I just pick a language, pull up the source code for a version of graphene that can be released freely, and get to rewriting at my lack of skill level, just researching every single new thing as I go and pestering reddit relentlessly for advice? What sort of project do you suppose would be a good start?

Good questions.  Learning how to code by rewriting Graphene is akin to learning construction by recreating the Burj Khalifa.  It is possible, but the process will be extremely slow, difficult and fraught with peril (think more, "learning bad habits" and less, "plummeting 2.7km to your death").  No one will disparage your ambition, but there may be more effective ways for you to build your skill set.

Instead, think of the Burj Khalifa as the foundation that you will build upon (e.g., set yourself to the task of constructing a helipad at the top of the building).  The existing tower will provide structure that you can use to support your creation, and you can reference aspects of the building for inspiration and best-practices.

This may sound anti-climactic, but starting small grants you many benefits:

  • You can complete the project more quickly.
  • You can publish your code more frequently and get valuable feedback from other developers.
  • Other developers will be more inclined to review your code if there's less code to review.
  • A smaller project has fewer moving pieces, which frees up head-space for learning and retaining new concepts as you go.
  • A smaller project is easier to refactor if you realize that you made a mistake in a critical piece of code.

And, you can always expand the scope of the project later, when you're ready to work on v2.0.

If you'd like a starter app that you can use as a PoC, try this:

  • The application runs via command-line.
  • When started, the application will prompt the user to enter a BitShares account name and press return.
  • If the account name is blank, the application will exit.
  • Else, output the corresponding BTS balance.
  • When finished outputting the balance, the application will prompt the user to enter another BitShares account name.  Continue until the user enters an empty account name.

@xeroc has published a fantastic library on GitHub that you can use in a Python application to interact with the BitShares blockchain.  The code is incredibly well-documented, and it includes several examples that you can look at and run to see how it works.

This may seem like a trivial application, but keep in mind that your primary goal at this point is to learn, so you want to design the requirements of your first application around that goal.  Once you get the hang of it, new ideas will start to flow, and you will start building momentum to tackle larger and more complex projects.

If you have any questions, need help understanding how something works, run into a bug that you can't squash – even if you need assistance getting started – do not hesitate to post on BitSharesTalk/StackOverflow/Reddit/etc.

Great idea! The Burj Khalifa comparison gave me a good hearty laugh.

Your project idea sounds very plausible for my skill level, but I'm going to have to learn how to make a programming language interact with the internet, so it also sounds challenging.

I accept your homework.
You should take a look at 'airsign' in my github repo. It is a cli wallet tool that talks to bitshares network ..

Thank you xeroc, I will. I've already installed the repos that 7 linked, but I haven't had a chance to sit down and think about coding yet. Got both jobs tomorrow and job #1 sunday.
« Last Edit: June 18, 2016, 08:19:04 pm by merockstar »

Offline xeroc

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 12922
  • ChainSquad GmbH
    • View Profile
    • ChainSquad GmbH
  • BitShares: xeroc
  • GitHub: xeroc
Thank you for your input. Say I wanted to extend that interest to something like... bts...

Should I just pick a language, pull up the source code for a version of graphene that can be released freely, and get to rewriting at my lack of skill level, just researching every single new thing as I go and pestering reddit relentlessly for advice? What sort of project do you suppose would be a good start?

Good questions.  Learning how to code by rewriting Graphene is akin to learning construction by recreating the Burj Khalifa.  It is possible, but the process will be extremely slow, difficult and fraught with peril (think more, "learning bad habits" and less, "plummeting 2.7km to your death").  No one will disparage your ambition, but there may be more effective ways for you to build your skill set.

Instead, think of the Burj Khalifa as the foundation that you will build upon (e.g., set yourself to the task of constructing a helipad at the top of the building).  The existing tower will provide structure that you can use to support your creation, and you can reference aspects of the building for inspiration and best-practices.

This may sound anti-climactic, but starting small grants you many benefits:

  • You can complete the project more quickly.
  • You can publish your code more frequently and get valuable feedback from other developers.
  • Other developers will be more inclined to review your code if there's less code to review.
  • A smaller project has fewer moving pieces, which frees up head-space for learning and retaining new concepts as you go.
  • A smaller project is easier to refactor if you realize that you made a mistake in a critical piece of code.

And, you can always expand the scope of the project later, when you're ready to work on v2.0.

If you'd like a starter app that you can use as a PoC, try this:

  • The application runs via command-line.
  • When started, the application will prompt the user to enter a BitShares account name and press return.
  • If the account name is blank, the application will exit.
  • Else, output the corresponding BTS balance.
  • When finished outputting the balance, the application will prompt the user to enter another BitShares account name.  Continue until the user enters an empty account name.

@xeroc has published a fantastic library on GitHub that you can use in a Python application to interact with the BitShares blockchain.  The code is incredibly well-documented, and it includes several examples that you can look at and run to see how it works.

This may seem like a trivial application, but keep in mind that your primary goal at this point is to learn, so you want to design the requirements of your first application around that goal.  Once you get the hang of it, new ideas will start to flow, and you will start building momentum to tackle larger and more complex projects.

If you have any questions, need help understanding how something works, run into a bug that you can't squash – even if you need assistance getting started – do not hesitate to post on BitSharesTalk/StackOverflow/Reddit/etc.

Great idea! The Burj Khalifa comparison gave me a good hearty laugh.

Your project idea sounds very plausible for my skill level, but I'm going to have to learn how to make a programming language interact with the internet, so it also sounds challenging.

I accept your homework.
You should take a look at 'airsign' in my github repo. It is a cli wallet tool that talks to bitshares network ..

Offline fuzzy

You know lil jay this initiative makes a heck of a lot more sense now that steemit exists..

I've only just casually used steem... how do you mean?

People upvoting team efforts to learn code together would pay the entire team as well as those who organize these sitdowns.
:)
WhaleShares==DKP; BitShares is our Community! 
ShareBits and WhaleShares = Love :D

unreadPostsSinceLastVisit

  • Guest
Thank you for your input. Say I wanted to extend that interest to something like... bts...

Should I just pick a language, pull up the source code for a version of graphene that can be released freely, and get to rewriting at my lack of skill level, just researching every single new thing as I go and pestering reddit relentlessly for advice? What sort of project do you suppose would be a good start?

Good questions.  Learning how to code by rewriting Graphene is akin to learning construction by recreating the Burj Khalifa.  It is possible, but the process will be extremely slow, difficult and fraught with peril (think more, "learning bad habits" and less, "plummeting 2.7km to your death").  No one will disparage your ambition, but there may be more effective ways for you to build your skill set.

Instead, think of the Burj Khalifa as the foundation that you will build upon (e.g., set yourself to the task of constructing a helipad at the top of the building).  The existing tower will provide structure that you can use to support your creation, and you can reference aspects of the building for inspiration and best-practices.

This may sound anti-climactic, but starting small grants you many benefits:

  • You can complete the project more quickly.
  • You can publish your code more frequently and get valuable feedback from other developers.
  • Other developers will be more inclined to review your code if there's less code to review.
  • A smaller project has fewer moving pieces, which frees up head-space for learning and retaining new concepts as you go.
  • A smaller project is easier to refactor if you realize that you made a mistake in a critical piece of code.

And, you can always expand the scope of the project later, when you're ready to work on v2.0.

If you'd like a starter app that you can use as a PoC, try this:

  • The application runs via command-line.
  • When started, the application will prompt the user to enter a BitShares account name and press return.
  • If the account name is blank, the application will exit.
  • Else, output the corresponding BTS balance.
  • When finished outputting the balance, the application will prompt the user to enter another BitShares account name.  Continue until the user enters an empty account name.

@xeroc has published a fantastic library on GitHub that you can use in a Python application to interact with the BitShares blockchain.  The code is incredibly well-documented, and it includes several examples that you can look at and run to see how it works.

This may seem like a trivial application, but keep in mind that your primary goal at this point is to learn, so you want to design the requirements of your first application around that goal.  Once you get the hang of it, new ideas will start to flow, and you will start building momentum to tackle larger and more complex projects.

If you have any questions, need help understanding how something works, run into a bug that you can't squash – even if you need assistance getting started – do not hesitate to post on BitSharesTalk/StackOverflow/Reddit/etc.

Great idea! The Burj Khalifa comparison gave me a good hearty laugh.

Your project idea sounds very plausible for my skill level, but I'm going to have to learn how to make a programming language interact with the internet, so it also sounds challenging.

I accept your homework.

Offline 70231f697a2b3c2b

  • Full Member
  • ***
  • Posts: 61
    • View Profile
Thank you for your input. Say I wanted to extend that interest to something like... bts...

Should I just pick a language, pull up the source code for a version of graphene that can be released freely, and get to rewriting at my lack of skill level, just researching every single new thing as I go and pestering reddit relentlessly for advice? What sort of project do you suppose would be a good start?

Good questions.  Learning how to code by rewriting Graphene is akin to learning construction by recreating the Burj Khalifa.  It is possible, but the process will be extremely slow, difficult and fraught with peril (think more, "learning bad habits" and less, "plummeting 2.7km to your death").  No one will disparage your ambition, but there may be more effective ways for you to build your skill set.

Instead, think of the Burj Khalifa as the foundation that you will build upon (e.g., set yourself to the task of constructing a helipad at the top of the building).  The existing tower will provide structure that you can use to support your creation, and you can reference aspects of the building for inspiration and best-practices.

This may sound anti-climactic, but starting small grants you many benefits:

  • You can complete the project more quickly.
  • You can publish your code more frequently and get valuable feedback from other developers.
  • Other developers will be more inclined to review your code if there's less code to review.
  • A smaller project has fewer moving pieces, which frees up head-space for learning and retaining new concepts as you go.
  • A smaller project is easier to refactor if you realize that you made a mistake in a critical piece of code.

And, you can always expand the scope of the project later, when you're ready to work on v2.0.

If you'd like a starter app that you can use as a PoC, try this:

  • The application runs via command-line.
  • When started, the application will prompt the user to enter a BitShares account name and press return.
  • If the account name is blank, the application will exit.
  • Else, output the corresponding BTS balance.
  • When finished outputting the balance, the application will prompt the user to enter another BitShares account name.  Continue until the user enters an empty account name.

@xeroc has published a fantastic library on GitHub that you can use in a Python application to interact with the BitShares blockchain.  The code is incredibly well-documented, and it includes several examples that you can look at and run to see how it works.

This may seem like a trivial application, but keep in mind that your primary goal at this point is to learn, so you want to design the requirements of your first application around that goal.  Once you get the hang of it, new ideas will start to flow, and you will start building momentum to tackle larger and more complex projects.

If you have any questions, need help understanding how something works, run into a bug that you can't squash – even if you need assistance getting started – do not hesitate to post on BitSharesTalk/StackOverflow/Reddit/etc.
« Last Edit: June 16, 2016, 05:28:22 am by 70231f697a2b3c2b »

unreadPostsSinceLastVisit

  • Guest
do you have any advice regarding my dilemma on getting started and over the hill, as described in this thread?

In my opinion, the best way to learn how to code is by coding.  If you are having trouble finding resources to learn from, or if you are having trouble staying motivated, maybe it's time to jump the formal track and just dive into a project that you're passionate about.  The learning will be less structured, but at least you'll make regular progress, and you'll still learn what you need to know (it'll just take a little longer is all).

Thank you for your input. Say I wanted to extend that interest to something like... bts...

Should I just pick a language, pull up the source code for a version of graphene that can be released freely, and get to rewriting at my lack of skill level, just researching every single new thing as I go and pestering reddit relentlessly for advice? What sort of project do you suppose would be a good start?

unreadPostsSinceLastVisit

  • Guest
You know lil jay this initiative makes a heck of a lot more sense now that steemit exists..

I've only just casually used steem... how do you mean?

he means because people would get "paid" to help others learn to code.

Offline 70231f697a2b3c2b

  • Full Member
  • ***
  • Posts: 61
    • View Profile
interesting! that is not how I would have guessed that works. I perused that discussion, but at the moment that's the only way I could think of to optimize at all, let alone unnecessarily. I'm just not there yet.

No worries.  Let it percolate, maybe come back to it in a few months and see if it makes more sense.

I use this technique from time to time at my job.  By the second or third time I review an article, my perspective and situation have changed, leading to new insights.

do you have any advice regarding my dilemma on getting started and over the hill, as described in this thread?

In my opinion, the best way to learn how to code is by coding.  If you are having trouble finding resources to learn from, or if you are having trouble staying motivated, maybe it's time to jump the formal track and just dive into a project that you're passionate about.  The learning will be less structured, but at least you'll make regular progress, and you'll still learn what you need to know (it'll just take a little longer is all).
« Last Edit: June 14, 2016, 03:31:00 pm by 70231f697a2b3c2b »

Offline lil_jay890

  • Hero Member
  • *****
  • Posts: 1197
    • View Profile
You know lil jay this initiative makes a heck of a lot more sense now that steemit exists..

I've only just casually used steem... how do you mean?

Offline fuzzy

You know lil jay this initiative makes a heck of a lot more sense now that steemit exists..
WhaleShares==DKP; BitShares is our Community! 
ShareBits and WhaleShares = Love :D

Offline lil_jay890

  • Hero Member
  • *****
  • Posts: 1197
    • View Profile
Does anybody know if there is a technical reason magic constants and magic numbers are bad?

In addition to the reasons you cited, I will add one more:  If other people need to read/maintain your code, it may not be obvious to them what the magic value means (even if it seemed obvious to you when you wrote it), and you may run into situations where another developer (or, after enough time has passed, you) tries to "fix" your code because they don't understand what it is supposed to do.

Take a look at http://programmers.stackexchange.com/q/266717/ and http://programmers.stackexchange.com/questions/251540/ for some good discussions on magic constants.

But it's pretty much just for clarity and preventing your code from turning into an enigmatic riddle, and poorly written but logical code that uses lots of them will still compile and run just fine at the same speeds, right (not that I am advocating their use)?

Anyway, I need to try a new book. I don't care what programming language. My only two requirements are that it be a well-written/gripping read, and a consistent, current, and in depth enough book that if I work through it, I'll be at a point where I can write almost anything by supplementing my knowledge here and there independently.

Open for recommendations.

A gripping coding book??? Not sure if one exists lol.

I can't complain about "beginning Javascript"  The examples are interesting and useful and it moves at a good pace.  I actually feel like I kind of no what I'm doing when I write a program from scratch.

It's cool to be able to write the code and then immediately interact with the program through the browser.  The mainstream browsers also have some decent debugging tools to.

I know you wanted to learn C++, but I think if you started with javascript first that it would keep your interest longer.  There seem to be lots of real world examples to either practice on or emulate.

Personally I almost quit because it seemed like I wasn't getting anywhere, but I just kept doing at least 1 or 2 pages each day and eventually I gained some confidence and started to improve.  Doing a little (maybe only 15 minutes or so) each day or every other day definitely helped.

that sounds like a good idea. maybe I'll take a look at javascript. codecademy really did a good job of holding my interest for python but it wasn't comprehensive enough. it basically left me at the same point that I'm at with every other language I've ever tried to study. earlier in the year you mentioned a similar site to codecademy, but oriented towards javascript, how did that pan out for you?
It's an article called "learn JavaScript properly" on the website JavaScriptissexy.com.

It is basically a lesson plan giving specific steps on how to learn JavaScript. It even tells you what chapters of the book to read and when to use codeacedemy as a supplement.  If you are looking for a solid structured plan to learn JavaScript, I think this course is a good fit.  Best of all it's free, other than the 35 dollar text book that i bought off Amazon.

unreadPostsSinceLastVisit

  • Guest
But it's pretty much just for clarity and preventing your code from turning into an enigmatic riddle, and poorly written but logical code that uses lots of them will still compile and run just fine at the same speeds, right (not that I am advocating their use)?

Correct.  The code will still work exactly the same either way (and depending on the language/compiler, the resulting bytecode/opcode may be the same in both cases as well).

interesting! that is not how I would have guessed that works. I perused that discussion, but at the moment that's the only way I could think of to optimize at all, let alone unnecessarily. I'm just not there yet.

do you have any advice regarding my dilemma on getting started and over the hill, as described in this thread?

Offline 70231f697a2b3c2b

  • Full Member
  • ***
  • Posts: 61
    • View Profile
But it's pretty much just for clarity and preventing your code from turning into an enigmatic riddle, and poorly written but logical code that uses lots of them will still compile and run just fine at the same speeds, right (not that I am advocating their use)?

Correct.  The code will still work exactly the same either way (and depending on the language/compiler, the resulting bytecode/opcode may be the same in both cases as well).

Even if the code runs more slowly with constants, the performance hit will be so small as to be negligible*, and since a developer's time is generally more valuable than a computer's time[citation needed], it usually makes sense to optimize for maintainability over runtime performance.

* There are exceptions, but generally you won't know what they are until you profile your code.  See http://programmers.stackexchange.com/q/80084/ for a discussion about what constitutes "premature" optimization.
« Last Edit: June 14, 2016, 03:29:01 am by 70231f697a2b3c2b »

unreadPostsSinceLastVisit

  • Guest
Does anybody know if there is a technical reason magic constants and magic numbers are bad?

In addition to the reasons you cited, I will add one more:  If other people need to read/maintain your code, it may not be obvious to them what the magic value means (even if it seemed obvious to you when you wrote it), and you may run into situations where another developer (or, after enough time has passed, you) tries to "fix" your code because they don't understand what it is supposed to do.

Take a look at http://programmers.stackexchange.com/q/266717/ and http://programmers.stackexchange.com/questions/251540/ for some good discussions on magic constants.

But it's pretty much just for clarity and preventing your code from turning into an enigmatic riddle, and poorly written but logical code that uses lots of them will still compile and run just fine at the same speeds, right (not that I am advocating their use)?

Anyway, I need to try a new book. I don't care what programming language. My only two requirements are that it be a well-written/gripping read, and a consistent, current, and in depth enough book that if I work through it, I'll be at a point where I can write almost anything by supplementing my knowledge here and there independently.

Open for recommendations.

A gripping coding book??? Not sure if one exists lol.

I can't complain about "beginning Javascript"  The examples are interesting and useful and it moves at a good pace.  I actually feel like I kind of no what I'm doing when I write a program from scratch.

It's cool to be able to write the code and then immediately interact with the program through the browser.  The mainstream browsers also have some decent debugging tools to.

I know you wanted to learn C++, but I think if you started with javascript first that it would keep your interest longer.  There seem to be lots of real world examples to either practice on or emulate.

Personally I almost quit because it seemed like I wasn't getting anywhere, but I just kept doing at least 1 or 2 pages each day and eventually I gained some confidence and started to improve.  Doing a little (maybe only 15 minutes or so) each day or every other day definitely helped.

that sounds like a good idea. maybe I'll take a look at javascript. codecademy really did a good job of holding my interest for python but it wasn't comprehensive enough. it basically left me at the same point that I'm at with every other language I've ever tried to study. earlier in the year you mentioned a similar site to codecademy, but oriented towards javascript, how did that pan out for you?

Offline lil_jay890

  • Hero Member
  • *****
  • Posts: 1197
    • View Profile
Does anybody know if there is a technical reason magic constants and magic numbers are bad?

In addition to the reasons you cited, I will add one more:  If other people need to read/maintain your code, it may not be obvious to them what the magic value means (even if it seemed obvious to you when you wrote it), and you may run into situations where another developer (or, after enough time has passed, you) tries to "fix" your code because they don't understand what it is supposed to do.

Take a look at http://programmers.stackexchange.com/q/266717/ and http://programmers.stackexchange.com/questions/251540/ for some good discussions on magic constants.

But it's pretty much just for clarity and preventing your code from turning into an enigmatic riddle, and poorly written but logical code that uses lots of them will still compile and run just fine at the same speeds, right (not that I am advocating their use)?

Anyway, I need to try a new book. I don't care what programming language. My only two requirements are that it be a well-written/gripping read, and a consistent, current, and in depth enough book that if I work through it, I'll be at a point where I can write almost anything by supplementing my knowledge here and there independently.

Open for recommendations.

A gripping coding book??? Not sure if one exists lol.

I can't complain about "beginning Javascript"  The examples are interesting and useful and it moves at a good pace.  I actually feel like I kind of no what I'm doing when I write a program from scratch.

It's cool to be able to write the code and then immediately interact with the program through the browser.  The mainstream browsers also have some decent debugging tools to.

I know you wanted to learn C++, but I think if you started with javascript first that it would keep your interest longer.  There seem to be lots of real world examples to either practice on or emulate.

Personally I almost quit because it seemed like I wasn't getting anywhere, but I just kept doing at least 1 or 2 pages each day and eventually I gained some confidence and started to improve.  Doing a little (maybe only 15 minutes or so) each day or every other day definitely helped.
« Last Edit: June 13, 2016, 07:35:39 pm by lil_jay890 »