Author [EN] [ZH] [ES] [PT] [IT] [DE] [FR] [NL] [TR] [SR] [AR] [RU] [EN] [ZH] [ES] [PT] [IT] [DE] [FR] [NL] [TR] [SR] [AR] [RU] [EN] [ZH] [ES] [PT] [IT] [DE] [FR] [NL] [TR] [SR] [AR] [RU] Topic: Looking to become a programmer, insight appreciated!  (Read 1065 times)

0 Members and 1 Guest are viewing this topic.

Offline xh3

  • Full Member
  • ***
  • Posts: 90
    • View Profile
    • Bit-Cents
Looking to become a programmer, insight appreciated!
« on: April 11, 2015, 08:04:44 PM »

Hi community :-)  I've recently decided to renew my study of computer programming, and I'm looking for some opinions to help guide my way. 

Which languages are worth learning?

Do I need a degree to land a job in the field?

if so, what type of program is best?

which ones are crap?

and to the devs of bitshares, what path did you guys take to become programmers?

Thanks in advance for any responses.  :-)

Offline rgcrypto

  • Hero Member
  • *****
  • Posts: 557
    • View Profile
    • Cryptoctopus Blog
Re: Looking to become a programmer, insight appreciated!
« Reply #1 on: April 11, 2015, 08:53:08 PM »
That's awesome dude, we have a bunch of great dev here and will follow the answers as I am also interested in jumping in.

Offline luckybit

Re: Looking to become a programmer, insight appreciated!
« Reply #2 on: April 11, 2015, 11:08:23 PM »
Learn any language, practice daily until you get good. Start with small apps, work your way up to contributing to projects.

For Bitshares you want to learn C++ .
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline tsaishen

  • Full Member
  • ***
  • Posts: 55
    • View Profile
Re: Looking to become a programmer, insight appreciated!
« Reply #3 on: April 11, 2015, 11:10:05 PM »
Speaking as a full-time professional programming manager, I read this as...

Quote
Hi community :-)  I've recently decided to renew my study of computer programming, and I'm looking for some opinions to help guide my way.
I am looking to get into construction, and would like your opinions on...
Quote
Which languages are worth learning?
Which tools are the best for new construction workers?

Quote
Do I need a degree to land a job in the field?
No but it helps, especially if you want to ever be anything more than entry level.
A better idea is to actively contribute to open source projects you actually care about.  If you have any actual talent or skill, it will help you land a better job that way.  You'll probably surprise yourself on that front.

Quote
if so, what type of program is best?
Whatever makes you happiest.  If you want to move into management consider MBA track.  If you want to actually know what the hell you're doing look to engineering, especially EE.  If you want to be a code monkey the rest of your life (some people are really happy with that choice by the way), just go modern CS.  Some of the better candidates I've seen recently seem to be coming out of www.wgu.edu

Best programmer I ever met had a Masters in Philosophy with a B.A. in Art Appreciation, though I'm still scratching my head on that one.

Everyone's story is different.  I myself started as a code monkey mostly C/C++, used the money from that job to cover a degree in finance and then got the MBA for employability reasons because I kept seeing programming jobs get farmed out overseas.  Honestly the code coming out of India and China is improving to the point that it does make sense for a company to send work there as long as they have a solid project plan. 

So keep in mind you're now competing against people that can live on the same amount of money you might spend on a meal at McDonalds (US centric view here).

When I actually need to write code myself it tends to Java or Golang anymore.  I got over myself and tend to use the tools with the best turn around time when I need to build anything more than a toy project, but I'm not doing a lot of coding myself anymore either.
YMMV.

Quote
which ones are crap?
Any which promise you that the degree will translate into employability.  Any "for profit school" especially.  As I said before, I see some solid candidates are coming out of wgu.edu, but that's probably because you need to be completely self motivating to finish up there and that is the #1 skill a good programmer really has.

The degree will just get you past HR drones in Fortune 500 companies.  The ones who actually make decisions about who to hire or not, probably don't care what your degree is in.  Or even that you have one, if you can present a compelling enough case to them.
I once interviewed a candidate who disclosed that the degrees on the resume didn't exist and were there solely to get past the resume filters.  B.S. in Human Information Tech or something like that.  Hired them on the spot for their honesty.  Company downsized the entire department 2 years later, he was still there.

Quote
and to the devs of bitshares, what path did you guys take to become programmers?

I'm not a bitshare dev.  I can't speak for them, but here is what is working right now speaking solely as someone who's job it is to hire, train and manage new code monkeys for a living.

Get involved right now with something you feel passionate about.  You're here right now, so my guess is you'd like to work with something bitshares or at least crypto related.  I don't know about what the backend code needs right now.  It seems to work well enough for our purposes.  So we never really questioned it too deeply.  The core devs should probably chime in on that.

But your question is broad enough that I think you might make a better UI person than core anyways.
One thing I do know is that the easiest language stack to learn right now is probably Javascript/HTML5 & CSS. 

My advice, for what it's worth, is that if you really don't have much background and want to contribute right away go here...
www.w3schools.com go through the HTML, CSS & JS stuff. 

Then dip into angular & node.js for a bit.  Once you feel like you've got a handle on that, come back and help the guys working on wallet.bitshares.org , it's a great little project but they need a lot of UI/front-end help. (I'm not affiliated, just a customer).

If you want to get into serious coding, back end, systems programming etc.  Learn C, then Java, then Go.  I recommend Java because at this moment in time it is the highest paying language in the USA and has been for a number years.  Followed by C# which is actually a Java variant.  Despite people who managed to contract a case of Mono.

At this point I would recommend skipping C++ for a newbie.  There is no compelling reason for it anymore.  The pay scale compared to Java & C# isn't worth it, and the pain of dealing with it's quirks is not a path I recommend for anyone who is not a masochist.

Sadly, the language has devolved to monstrous levels of complexity.  The learning curve for that language and the use cases for it will probably never lead to a higher paying career than the same amount of time spent on Java & C# will.

I have yet to see anything done in C++ in the last 10 years that in my opinion couldn't have been better done with either Java, Go or C.  Pretty sure bitshares itself is written in C++ though, so if you want to contribute to the core and become an actual core dev.  You will probably need to gain C++ skills in the long run.  However the BTS project is probably big enough now that I'm not sure they really need more core devs.  But they might want to chime in on that.

Python is a good control language, i.e. for scripting other stuff, but I personally don't feel much love for it.  Lua seems to be smaller and faster in the rare cases where I just need to bind quickly and expose scripting to something.

The other use cases for Python seem to be getting sucked up by Javascript especially with the release of Nashorn. Which honestly a few years ago I would have probably just marched you out the door for wanting to get people already confused with Java & Javascript.  Avatar stack is proving me wrong though. 

Golang has removed all the use cases I would have had for a Python/C stack except driver development and bit banging, both of which are really rare anymore anyways.

Avoid Perl, PHP unless you have a compelling reason to learn them such as supporting a legacy code base.
PHP has been making strides lately, but I've seen too many people bitten by it's absolutely shitty security track record and the fact that despite the documentation being excellent, the sample code still shows you the absolute least secure way of doing things.

Yet in our case the company website is built on top of PHP/Wordpress.  However we don't put anything mission critical there either.
Still that was never my call.

If you're interested in your first shot as a dev, drop me a PM.  I've got enough space to mentor one more complete newbie coder and I'll be honest you sound to me like you probably have competency already and just aren't sure of direction and/or lack confidence.  Let me know.

Offline Stan

  • Hero Member
  • *****
  • Posts: 2862
  • You need to think BIGGER, Pinky...
    • View Profile
    • Cryptonomex
  • BTS: Stan
Re: Looking to become a programmer, insight appreciated!
« Reply #4 on: April 12, 2015, 02:46:49 AM »
Speaking as a full-time professional programming manager, I read this as...

Quote
Hi community :-)  I've recently decided to renew my study of computer programming, and I'm looking for some opinions to help guide my way.
I am looking to get into construction, and would like your opinions on...
Quote
Which languages are worth learning?
Which tools are the best for new construction workers?

Quote
Do I need a degree to land a job in the field?
No but it helps, especially if you want to ever be anything more than entry level.
A better idea is to actively contribute to open source projects you actually care about.  If you have any actual talent or skill, it will help you land a better job that way.  You'll probably surprise yourself on that front.

Quote
if so, what type of program is best?
Whatever makes you happiest.  If you want to move into management consider MBA track.  If you want to actually know what the hell you're doing look to engineering, especially EE.  If you want to be a code monkey the rest of your life (some people are really happy with that choice by the way), just go modern CS.  Some of the better candidates I've seen recently seem to be coming out of www.wgu.edu

Best programmer I ever met had a Masters in Philosophy with a B.A. in Art Appreciation, though I'm still scratching my head on that one.

Everyone's story is different.  I myself started as a code monkey mostly C/C++, used the money from that job to cover a degree in finance and then got the MBA for employability reasons because I kept seeing programming jobs get farmed out overseas.  Honestly the code coming out of India and China is improving to the point that it does make sense for a company to send work there as long as they have a solid project plan. 

So keep in mind you're now competing against people that can live on the same amount of money you might spend on a meal at McDonalds (US centric view here).

When I actually need to write code myself it tends to Java or Golang anymore.  I got over myself and tend to use the tools with the best turn around time when I need to build anything more than a toy project, but I'm not doing a lot of coding myself anymore either.
YMMV.

Quote
which ones are crap?
Any which promise you that the degree will translate into employability.  Any "for profit school" especially.  As I said before, I see some solid candidates are coming out of wgu.edu, but that's probably because you need to be completely self motivating to finish up there and that is the #1 skill a good programmer really has.

The degree will just get you past HR drones in Fortune 500 companies.  The ones who actually make decisions about who to hire or not, probably don't care what your degree is in.  Or even that you have one, if you can present a compelling enough case to them.
I once interviewed a candidate who disclosed that the degrees on the resume didn't exist and were there solely to get past the resume filters.  B.S. in Human Information Tech or something like that.  Hired them on the spot for their honesty.  Company downsized the entire department 2 years later, he was still there.

Quote
and to the devs of bitshares, what path did you guys take to become programmers?

I'm not a bitshare dev.  I can't speak for them, but here is what is working right now speaking solely as someone who's job it is to hire, train and manage new code monkeys for a living.

Get involved right now with something you feel passionate about.  You're here right now, so my guess is you'd like to work with something bitshares or at least crypto related.  I don't know about what the backend code needs right now.  It seems to work well enough for our purposes.  So we never really questioned it too deeply.  The core devs should probably chime in on that.

But your question is broad enough that I think you might make a better UI person than core anyways.
One thing I do know is that the easiest language stack to learn right now is probably Javascript/HTML5 & CSS. 

My advice, for what it's worth, is that if you really don't have much background and want to contribute right away go here...
www.w3schools.com go through the HTML, CSS & JS stuff. 

Then dip into angular & node.js for a bit.  Once you feel like you've got a handle on that, come back and help the guys working on wallet.bitshares.org , it's a great little project but they need a lot of UI/front-end help. (I'm not affiliated, just a customer).

If you want to get into serious coding, back end, systems programming etc.  Learn C, then Java, then Go.  I recommend Java because at this moment in time it is the highest paying language in the USA and has been for a number years.  Followed by C# which is actually a Java variant.  Despite people who managed to contract a case of Mono.

At this point I would recommend skipping C++ for a newbie.  There is no compelling reason for it anymore.  The pay scale compared to Java & C# isn't worth it, and the pain of dealing with it's quirks is not a path I recommend for anyone who is not a masochist.

Sadly, the language has devolved to monstrous levels of complexity.  The learning curve for that language and the use cases for it will probably never lead to a higher paying career than the same amount of time spent on Java & C# will.

I have yet to see anything done in C++ in the last 10 years that in my opinion couldn't have been better done with either Java, Go or C.  Pretty sure bitshares itself is written in C++ though, so if you want to contribute to the core and become an actual core dev.  You will probably need to gain C++ skills in the long run.  However the BTS project is probably big enough now that I'm not sure they really need more core devs.  But they might want to chime in on that.

Python is a good control language, i.e. for scripting other stuff, but I personally don't feel much love for it.  Lua seems to be smaller and faster in the rare cases where I just need to bind quickly and expose scripting to something.

The other use cases for Python seem to be getting sucked up by Javascript especially with the release of Nashorn. Which honestly a few years ago I would have probably just marched you out the door for wanting to get people already confused with Java & Javascript.  Avatar stack is proving me wrong though. 

Golang has removed all the use cases I would have had for a Python/C stack except driver development and bit banging, both of which are really rare anymore anyways.

Avoid Perl, PHP unless you have a compelling reason to learn them such as supporting a legacy code base.
PHP has been making strides lately, but I've seen too many people bitten by it's absolutely shitty security track record and the fact that despite the documentation being excellent, the sample code still shows you the absolute least secure way of doing things.

Yet in our case the company website is built on top of PHP/Wordpress.  However we don't put anything mission critical there either.
Still that was never my call.

If you're interested in your first shot as a dev, drop me a PM.  I've got enough space to mentor one more complete newbie coder and I'll be honest you sound to me like you probably have competency already and just aren't sure of direction and/or lack confidence.  Let me know.

Egad!  There is some high-octane good advice in there.  I'll give you 3 credibility points.
(But you had me from the beginning when you all but conceded that EEs are the Highest Life Form.)

As a result, I'm tentatively adding you to my official "What, Me Worry?" List just below my hrair limit cutoff at position #16.

Rabbits can count up to four. Any number above four is hrair, “a lot,” or “a thousand.” —Watership Down


Anything said on these forums does not constitute an intent to create a legal obligation or contract of any kind.   These are merely my opinions which I reserve the right to change at any time.

Offline Thom

Re: Looking to become a programmer, insight appreciated!
« Reply #5 on: April 12, 2015, 05:26:12 AM »
SHIT! That was an extraordinary reply! Long and thorough.

Take it from a 30 year veteran programmer  who learned by doing (autodidactic) you have just been given a huge shot of useful info, especially the part about letting your passion fuel your efforts. That's what I always did and still do. When you follow that model it will never feel like work and your motivation will be at it's best.

Dang that was a monstrously comprehensive post.  Saving it in my archives. His advice is spot on IMO, and I agree that the javascript / coffee / HTML / CSS is the easiest to learn and in very high demand. Also one of the most interactive programming environments to work in, with a short feedback cycle. Very important to reinforce what you learn and to rapidly become proficient.

I learned C early in my career, never picked up C++. tsaishen's info really highlights why it was never worth the investment of time required to learn all it's nuances and confirms why my choice to instead focus on Java and the UI stack was the right path for me.

One last piece of info I didn't learn early enough: become sensitive to exactly how you contribute value to the the company's products, and learn to measure that with metrics which are easy to understand. That is how you demonstrate your worth and how you can correct mistakes that could derail your career goals. It helps you to stay focused make wise decisions about where your career is heading.
Injustice anywhere is a threat to justice everywhere - MLK |  Verbaltech2 Witness Reports: https://bitsharestalk.org/index.php/topic,23902.0.html

Offline bytemaster

Re: Looking to become a programmer, insight appreciated!
« Reply #6 on: April 12, 2015, 05:43:17 AM »
As a veteran c++ developer I can say that the language is not dead, but is certainly something you must love and fortunately for me I love it.

I believe that quality c++ developers can earn significantly more because they are much harder to find.   Considering you are starting out you wouldn't be a quality c++ developer and thus your earning potential is similar to any generic programer. 

So I would say that c++ is only worth it if you are willing to become an EXPERT and rake in the high pay.   

For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline rgcrypto

  • Hero Member
  • *****
  • Posts: 557
    • View Profile
    • Cryptoctopus Blog
Re: Looking to become a programmer, insight appreciated!
« Reply #7 on: April 12, 2015, 05:47:45 AM »
This entire thread should be a blogpost about how to become a programmer.  +5%

Offline betax

  • Hero Member
  • *****
  • Posts: 808
    • View Profile
Re: Looking to become a programmer, insight appreciated!
« Reply #8 on: April 12, 2015, 07:43:34 AM »
Speaking as a full-time professional programming manager, I read this as...

Quote
Hi community :-)  I've recently decided to renew my study of computer programming, and I'm looking for some opinions to help guide my way.
I am looking to get into construction, and would like your opinions on...
Quote
Which languages are worth learning?
Which tools are the best for new construction workers?

Quote
Do I need a degree to land a job in the field?
No but it helps, especially if you want to ever be anything more than entry level.
A better idea is to actively contribute to open source projects you actually care about.  If you have any actual talent or skill, it will help you land a better job that way.  You'll probably surprise yourself on that front.

Quote
if so, what type of program is best?
Whatever makes you happiest.  If you want to move into management consider MBA track.  If you want to actually know what the hell you're doing look to engineering, especially EE.  If you want to be a code monkey the rest of your life (some people are really happy with that choice by the way), just go modern CS.  Some of the better candidates I've seen recently seem to be coming out of www.wgu.edu

Best programmer I ever met had a Masters in Philosophy with a B.A. in Art Appreciation, though I'm still scratching my head on that one.

Everyone's story is different.  I myself started as a code monkey mostly C/C++, used the money from that job to cover a degree in finance and then got the MBA for employability reasons because I kept seeing programming jobs get farmed out overseas.  Honestly the code coming out of India and China is improving to the point that it does make sense for a company to send work there as long as they have a solid project plan. 

So keep in mind you're now competing against people that can live on the same amount of money you might spend on a meal at McDonalds (US centric view here).

When I actually need to write code myself it tends to Java or Golang anymore.  I got over myself and tend to use the tools with the best turn around time when I need to build anything more than a toy project, but I'm not doing a lot of coding myself anymore either.
YMMV.

Quote
which ones are crap?
Any which promise you that the degree will translate into employability.  Any "for profit school" especially.  As I said before, I see some solid candidates are coming out of wgu.edu, but that's probably because you need to be completely self motivating to finish up there and that is the #1 skill a good programmer really has.

The degree will just get you past HR drones in Fortune 500 companies.  The ones who actually make decisions about who to hire or not, probably don't care what your degree is in.  Or even that you have one, if you can present a compelling enough case to them.
I once interviewed a candidate who disclosed that the degrees on the resume didn't exist and were there solely to get past the resume filters.  B.S. in Human Information Tech or something like that.  Hired them on the spot for their honesty.  Company downsized the entire department 2 years later, he was still there.

Quote
and to the devs of bitshares, what path did you guys take to become programmers?

I'm not a bitshare dev.  I can't speak for them, but here is what is working right now speaking solely as someone who's job it is to hire, train and manage new code monkeys for a living.

Get involved right now with something you feel passionate about.  You're here right now, so my guess is you'd like to work with something bitshares or at least crypto related.  I don't know about what the backend code needs right now.  It seems to work well enough for our purposes.  So we never really questioned it too deeply.  The core devs should probably chime in on that.

But your question is broad enough that I think you might make a better UI person than core anyways.
One thing I do know is that the easiest language stack to learn right now is probably Javascript/HTML5 & CSS. 

My advice, for what it's worth, is that if you really don't have much background and want to contribute right away go here...
www.w3schools.com go through the HTML, CSS & JS stuff. 

Then dip into angular & node.js for a bit.  Once you feel like you've got a handle on that, come back and help the guys working on wallet.bitshares.org , it's a great little project but they need a lot of UI/front-end help. (I'm not affiliated, just a customer).

If you want to get into serious coding, back end, systems programming etc.  Learn C, then Java, then Go.  I recommend Java because at this moment in time it is the highest paying language in the USA and has been for a number years.  Followed by C# which is actually a Java variant.  Despite people who managed to contract a case of Mono.

At this point I would recommend skipping C++ for a newbie.  There is no compelling reason for it anymore.  The pay scale compared to Java & C# isn't worth it, and the pain of dealing with it's quirks is not a path I recommend for anyone who is not a masochist.

Sadly, the language has devolved to monstrous levels of complexity.  The learning curve for that language and the use cases for it will probably never lead to a higher paying career than the same amount of time spent on Java & C# will.

I have yet to see anything done in C++ in the last 10 years that in my opinion couldn't have been better done with either Java, Go or C.  Pretty sure bitshares itself is written in C++ though, so if you want to contribute to the core and become an actual core dev.  You will probably need to gain C++ skills in the long run.  However the BTS project is probably big enough now that I'm not sure they really need more core devs.  But they might want to chime in on that.

Python is a good control language, i.e. for scripting other stuff, but I personally don't feel much love for it.  Lua seems to be smaller and faster in the rare cases where I just need to bind quickly and expose scripting to something.

The other use cases for Python seem to be getting sucked up by Javascript especially with the release of Nashorn. Which honestly a few years ago I would have probably just marched you out the door for wanting to get people already confused with Java & Javascript.  Avatar stack is proving me wrong though. 

Golang has removed all the use cases I would have had for a Python/C stack except driver development and bit banging, both of which are really rare anymore anyways.

Avoid Perl, PHP unless you have a compelling reason to learn them such as supporting a legacy code base.
PHP has been making strides lately, but I've seen too many people bitten by it's absolutely shitty security track record and the fact that despite the documentation being excellent, the sample code still shows you the absolute least secure way of doing things.

Yet in our case the company website is built on top of PHP/Wordpress.  However we don't put anything mission critical there either.
Still that was never my call.

If you're interested in your first shot as a dev, drop me a PM.  I've got enough space to mentor one more complete newbie coder and I'll be honest you sound to me like you probably have competency already and just aren't sure of direction and/or lack confidence.  Let me know.

Interesting.... and this is the reason you are asking for Go developers
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline xeroc

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 12280
  • ChainSquad GmbH
    • View Profile
    • ChainSquad GmbH
  • BTS: xeroc
  • GitHub: xeroc
Re: Looking to become a programmer, insight appreciated!
« Reply #9 on: April 12, 2015, 10:35:28 AM »
I decided to do some python coding gor bts mainly because I wanted to learn python and will never really consider myself a "coder" ..

Disclaimer: I am a communications engineer .. daywork is (almost) unrelated to crypto
Give BitShares a try! Use the http://testnet.bitshares.eu provided by http://bitshares.eu powered by ChainSquad GmbH

Offline tsaishen

  • Full Member
  • ***
  • Posts: 55
    • View Profile
Re: Looking to become a programmer, insight appreciated!
« Reply #10 on: April 12, 2015, 05:03:56 PM »
Quote
Interesting.... and this is the reason you are asking for Go developers

Well the question wasn't "Why is tsaishen looking for a Go dev?" 

It was asking for honest advice for a newbie programmer.  It was the best advice I could give.

For anyone that cares about why I would choose Go.
What happened is that Thompson & Pike (creators of C) moved to google and decided to create a language enough like C that anyone competent in a C variant language could pick it up easily.  They looked back with some 30 years of hindsight on C and decided to re-implement it but better.
They made it very hard to shoot yourself in the foot with it.  Go is C with the really dangerous bits removed and a bunch of modern conveniences added to the stdlib. 

A newbie should probably not get near Go until they have a couple of solid projects under their belt in something else, because the language can get a bit obtuse and the meaning of things isn't always obvious, even to me.  (If they had added parens and semi-colons so it looked more like a general C variant I wouldn't be making this argument BTW).  A really solid IDE would be a huge boost to general adoption as well, but I find LiteIDE does most of what I need it to.

If you have strong C familiarity, Go is drop dead simple to learn, primarily because it was created by the creators of C.  Think C with garbage collection added and auto-initializing variables plus multi-returns. 

Multi-return and Implicit types are what got me all fan-girlish about Go though.
Code: [Select]
    thing1, thing2, err := mylib.DoSomething(var1, var2);
   if err {
       panic("Oh crap!, %+v",err)
   }else{
     mylib.DoSomethingElse(thing1, thing2)
   }
This means most of the use cases I would have had for C/C++/C#/Java have been moved firmly into the Go camp as of late.

I wouldn't do anything that needed a UI in Go since there isn't a solid UI lib and the majority of bindings are outdated.  But if you're ok with a webui which is like 90% of the work I see anymore.  Go is a solid choice.

For cross platform GUI work I tend to use QT or Java Swing, or more recently C# & Mono.

I'm asking for Go developers because Go is the tool we decided to use to build our backend middleware product called CASEY. 

Offline Xeldal

Re: Looking to become a programmer, insight appreciated!
« Reply #11 on: April 12, 2015, 05:40:32 PM »
I've been using Go for the last 4 months or so, for my market making / arbitrage bot and can attest to its ease of use.  I had about a year or 2 prior experience in C and I was surprised how quickly I managed to pick it up.

I love the ease of subroutine concurrency, buffered channels and slices.  makes what would have been fairly complicated a breeze.

I'm using LiteIDE also.  One of a few that come with native Go support.  Good stuff.  I like how just by saving the project it tells me everything it has a problem with.

Like you said Go doesn't really have much support for GUI yet, which was a little upsetting but not wholly necessary for what I was trying to do... would have been nice though.

Offline merivercap

  • Hero Member
  • *****
  • Posts: 661
    • View Profile
    • BitCash
Re: Looking to become a programmer, insight appreciated!
« Reply #12 on: April 12, 2015, 06:21:32 PM »
Much realness from the OP.  :P

What do you think of Clojure?
BitCash - http://www.bitcash.org 
Beta: bitCash Wallet / p2p Gateway: (https://m.bitcash.org)
Beta: bitCash Trade (https://trade.bitcash.org)

Offline xh3

  • Full Member
  • ***
  • Posts: 90
    • View Profile
    • Bit-Cents
Re: Looking to become a programmer, insight appreciated!
« Reply #13 on: April 12, 2015, 07:24:43 PM »
Wow, this thread is incredible!  Thanks tsaishen for your reply, it is truly great stuff, and I was able to deduce invaluable insight from it.  :-)  Thank you Thom and Bytemaster for your advice as well.

I am interested in programming AI and will be pursuing that once I've gathered the more basic of skills.  I think C++ is probably the right tool for that application.  I'll check out css, html, and Java per your recommendation

Offline tsaishen

  • Full Member
  • ***
  • Posts: 55
    • View Profile
Re: Looking to become a programmer, insight appreciated!
« Reply #14 on: April 12, 2015, 09:29:28 PM »
Wow, this thread is incredible!  Thanks tsaishen for your reply, it is truly great stuff, and I was able to deduce invaluable insight from it.  :-)  Thank you Thom and Bytemaster for your advice as well.

I am interested in programming AI and will be pursuing that once I've gathered the more basic of skills.  I think C++ is probably the right tool for that application.  I'll check out css, html, and Java per your recommendation

It depends on what you're trying to actually accomplish with AI.  C++ has several good libraries so I wouldn't count it out. 

But the type of AI relevant to cryptos, finance and trading is in my opinion better handled by languages designed specifically for AI.
There are a few, LISP comes to mind which oddly enough someone was just asking about Clojure which is a LISP variant, so maybe that's a good choice.  Never actually used it though so YMMV.

If I were building an automated trading system, I would use machine learning framework with a language I already know.  Hadoop has a sub project called Mahout that provides an excellent basis for building a "smart bot" and it's Java so I don't have a learning curve there and I can acquire talent easy enough.  https://en.wikipedia.org/wiki/Apache_Mahout  The nice thing about building on top of this is instant scalability.  You have a problem that parallelizes well?  Spin up 10,000 nodes and be done in a few seconds instead of a few days.

I wouldn't discount OpenCV though especially for computer vision related AIs, it's C++ but has bindings for a number of languages.

When I select a language for a task I have a little mental flowchart I use so I can limit my choices rapidly and start focusing on the problems at hand.  I'm sure everyone else who has done this for a living follows a similar process.

#1 Identify the problem.  This literally means "Ask questions and break things down until the answers become blindingly obvious."

#2 Select the problem domain.  Is the project user facing?  Is it a server that needs to run reliably for years?  Is it something just needs a quick run once in awhile?

 I literally found myself stepping into a project once that had 3 years of development time under the previous manager.
It was nowhere near completion but we managed to complete it overnight. 

I was able to do that because up to that point, none bothered to notice the underlaying task could be run as a perl 1 liner on an hourly cron job.  They had built this huge framework with Spring & J2EE on JBoss, but missed something totally obvious.
They were looking for a programmatic Java based solution, when they should have asked the server admin to script the 1 liner and add it to cron.

So make sure you fully understand the problem domain & requirements before you try to look for solutions.

#3 Design a solution.  Again this is asking questions like, what resources do I have? what tools can I use?  There are so few "actually novel" problems in comp-sci.  Someone has probably solved your problem before, you should look to leverage their efforts.  Many time a "glue it and go" will provide a better solution than "coded from scratch".  Furthermore, it's been my experience that the best language for a particular job comes down to "What languages does my team already know".  Unless you are choosing something highly esoteric, most times there's a library out there for any given language that already gets you 90% of where you want to be.  You should just pick the language that your team is most comfortable with and roll with that.  Same with DBs and even OSs. 

I saw a really great company completely and epically fail because they decided to move from MSSQL to PostGres.  It was a cost saving move, but none of their software knew how to talk to it and their DB admins were MSSQL Certified with no clue about how to deploy PostGres.  By the time they caught this, they had already burned bridges with customers due to downtime. 

In otherwords, the most epic flaming sword is of no use to you and might be dangerous if you work in a paper factory.

#4 Create a validation framework.  This means answering the question "How do I know that number 3 solves number 1 without creating new problems?"  For many people this means you start by writing a test harness and crafting individual unit tests.  If you do this before you ever write a single line of actual functioning code.  Your code will self validate.  It either builds and runs, or you get lots of screaming red lights on your build tree.  If you do this, please learn to commit your code for the entire week before lunch time on Thursday. If make your team work late nights on Friday and Saturday you will become a pariah, quickly...

I'll let someone else add their horror story here. 
I tend to take Fridays off and turn off cellphones and emails after 5 on Thursday for this specific reason.

#5 Start coding.  You've identified that there is a programmatic solution to #1 that requires you to either write something from scratch or create some glue code to stick some existing frameworks together.  You've created a way to verify that your solution actually solves the danged problem.  Now you need to do the leg work to finish up.  This is actually these easy part.  Relax and enjoy yourself.

#6 Test, test EVERYTHING.  Check that each function you wrote returns correctly, not only in the common cases, but at ALL the edges. 

Try to imagine the worst possible way your code could fail (probably should have started doing that during #5 BTW), then realize that you are an idiot because you will always miss the obvious.  If you didn't realize that by now, reality is going to slap you upside the head really, really soon.

Here are some reality slaps, just off the top of my head.
Actual things that can really happen...

You have a trading bot that sees a trade of 1 BTC for 0.001 USD.  What happens? 
You need to track BTC vs BTS values, but BTS is now showing less than 1 satoshi, how does your software react? 

You used INTs for your INT values and now you are dividing in a what?
Uhh where the hell is that 0 coming from? (Might be a Java specific issue)   

You used a 32bit float to represent an INT value, now you have 5 billion ints, do you even know if the value is now positive or negative? 
What happens when one or more of your counters roll over? 

Yes test everything!  Also verify that all your assumptions are correct.  For instance if you are pricing from a price feed and the feed goes down, do you suddenly begin to price things to 0, or do you pause until the feed returns or switches over?  Are absolutely sure about that?

If there is a panic, or an exception don't ignore it and
please don't just log it as

"Ok something happened, but it's alright because this can't ever occur" or even worse...
Code: [Select]
//This line of code will never be reached

And for the love of God don't be this guy! 

*blockchain.info I'm looking at you*

#7 Give it to the user, have them help you identify new problems and repeat steps #1 through #6
#8 Maintain it, i.e. GOTO #1

 

Google+