Author Topic: Looking to become a programmer, insight appreciated!  (Read 5418 times)

0 Members and 1 Guest are viewing this topic.

Offline xh3

  • Full Member
  • ***
  • Posts: 90
    • View Profile
    • Bit-Cents
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 merivercap

  • Hero Member
  • *****
  • Posts: 661
    • View Profile
    • BitCash
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)

Xeldal

  • Guest
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 tsaishen

  • Full Member
  • ***
  • Posts: 55
    • View Profile
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 xeroc

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 12922
  • ChainSquad GmbH
    • View Profile
    • ChainSquad GmbH
  • BitShares: xeroc
  • GitHub: xeroc
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

Offline betax

  • Hero Member
  • *****
  • Posts: 808
    • View Profile
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 rgcrypto

  • Hero Member
  • *****
  • Posts: 557
    • View Profile
    • Cryptoctopus Blog
This entire thread should be a blogpost about how to become a programmer.  +5%

Offline bytemaster

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 Thom

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 Stan

  • Hero Member
  • *****
  • Posts: 2908
  • You need to think BIGGER, Pinky...
    • View Profile
    • Cryptonomex
  • BitShares: Stan
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 tsaishen

  • Full Member
  • ***
  • Posts: 55
    • View Profile
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 luckybit

  • Hero Member
  • *****
  • Posts: 2921
    • View Profile
  • BitShares: Luckybit
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 rgcrypto

  • Hero Member
  • *****
  • Posts: 557
    • View Profile
    • Cryptoctopus Blog
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 xh3

  • Full Member
  • ***
  • Posts: 90
    • View Profile
    • Bit-Cents
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.  :-)