Author Topic: Why Learning to Code is So Damn Hard  (Read 10056 times)

0 Members and 1 Guest are viewing this topic.

Offline Fury

  • The Curmudgeon
  • 213
Why Learning to Code is So Damn Hard
Why Learning to Code is So Damn Hard
Be sure to also read the article linked to in the second paragraph. :)

Reading those two articles hit me like wet rag in the face, they were so right.

 

Offline BirdofPrey

  • 28
  • Help! I see GIMP in my sleep
Re: Why Learning to Code is So Damn Hard
Sounds about right.
I figure that can also apply to a couple other areas of development past just the code (graphic design, sound design, interface design, etc.) to certain degrees

I invite all of you to take a look back at some of the first things you did after you got off the tutorial rails.
Look upon them with lovecraftian horror at how terrible they are.
The Great War ended 30 years ago.
Our elders tell stories of a glorious civilization; of people with myths of humanity everlasting, who hurled themselves into the void of space with no fear.

In testing: Radar Icons

 
Re: Why Learning to Code is So Damn Hard
I write a lot of code for my job and I can confirm that this article is right on point, especially this image:



Although, having said that, there is always more to be learned about "architecture," best practices, optimization. I would say you're job ready well before that, at least for more entry level jobs. The way I had to do it is start trying to code in high school, get frustrated with how difficult and seemingly weird it was, give up, then come back to it years later after I got a college degree in something different entirely.

 

Offline Mongoose

  • Rikki-Tikki-Tavi
  • Global Moderator
  • 212
  • This brain for rent.
    • Steam
    • Something
Re: Why Learning to Code is So Damn Hard
I once had to spend almost 3 full days wrestling with a coding project for a college class before I was able to get the damn thing to function properly.  That's about the time I determined that I wouldn't be involved in any sort of career that required programming.

(****ing...segfaults...)

 

Offline Kobrar44

  • On Suspended Sentence
  • 29
  • Let me tilerape it for you!
    • Steam
Re: Why Learning to Code is So Damn Hard
Having read that... maybe I should go back reading through that sexp code ._.
Oh guys, use that [ url ][ img ][ /img ][ /url ] :/

 
Re: Why Learning to Code is So Damn Hard
I once had to spend almost 3 full days wrestling with a coding project for a college class before I was able to get the damn thing to function properly.  That's about the time I determined that I wouldn't be involved in any sort of career that required programming.

Honestly, usually at least half a day of every week I go to work consists of frustration and not figuring something out. Some weeks the entire week is spent on one tiny problem. Just depends on what you're doing. As a career, it ends up being to where certain projects are really easy where you have gotten experience in a certain area before and have done the basic function of whatever it is you're creating while other projects become nightmares of complexity, or building out some thing you have zero experience with and do not really understand.

As a result, every tiny little thing is highly rewarding once you get it to work. To me, that makes the whole process kind of addictive.

 

Offline Rheyah

  • 28
  • Will release something one day. Promise.
Re: Why Learning to Code is So Damn Hard
I have been scientific coding (which as we all know isn't real coding) for around 4 years now.  The biggest barrier to my learning more code practice is that I simply do not know the capabilities of the machine I am using and that any such knowledge is buried behind five years of jargon.  Reading StackOverflow for example is like reading another language written by people who are wanting to make themselves as impossible to understand as they can.

Throughout my battles I have grown comfortable with Python, C++, C, Fortrans 77-95, some Javascript, Java and a few other languages with MPI in F90 (F77 MPI is a *****) and C++..  I can't pretend to be an expert on any of them.  In fact I am probably far, far below the coders who work on the SCP.

This is on top of doing theoretical plasma physics.  The result is that I am an expert on precisely **** all.

I sometimes hate my life.  Most of the time though, I just sleep it off :)

 

Offline potterman28wxcv

  • 27
  • Just a fan player
Re: Why Learning to Code is So Damn Hard
I have been scientific coding (which as we all know isn't real coding) for around 4 years now.  The biggest barrier to my learning more code practice is that I simply do not know the capabilities of the machine I am using and that any such knowledge is buried behind five years of jargon.  Reading StackOverflow for example is like reading another language written by people who are wanting to make themselves as impossible to understand as they can.
It's all math really. When you do scientific computation, you take a look at the total amount of operations you're going to make your machine compute, and you get an idea of how feasible it is.

I am working on an implementation of Alexnet, a neural network to recognize images (I need to port it to an embedded architecture). My boss just asked me how much it would cost even though i didn't start the implem yet. I just computed with pen and paper how many multiply-accumulate (basically doing S = S + a * b) the computations would require (there are a lot of them in convolutions, and there are a lot of convolutions in neural networks), and it gave them an idea of how much time it would take to process an image.

Usually, there are two bottlenecks : either you are not fast enough to compute, either the data does not arrive fast enough to your processor. You need to consider the two aspects to know the capabilities of your machine. If you use MPI (distributed computing and Cie), it's more complex to assess though.

Then there is also all the parallelism issues - typical example, you take a program, you make it parallel, and oddly you realize that the parallel version actually runs slower than the sequential version. So you dig, and you realize that you have assigned too many threads, and that the program spends half his time switching thread..

Evaluating scientific computing performance is a very complex subject, since you need to know how it works under the hood. But this is a great skill to acquire :) Once you got that, computer science is not black magic anymore, and it all makes sense.

 

Offline Mongoose

  • Rikki-Tikki-Tavi
  • Global Moderator
  • 212
  • This brain for rent.
    • Steam
    • Something
Re: Why Learning to Code is So Damn Hard
Reading these descriptions makes me assume one needs a supercomputer for a brain in order to tell supercomputers what to do.

 

Offline potterman28wxcv

  • 27
  • Just a fan player
Re: Why Learning to Code is So Damn Hard
Reading these descriptions makes me assume one needs a supercomputer for a brain in order to tell supercomputers what to do.
Not really - you don't need a supercomputer to play chess, or to take your car and travel somewhere, or to figure out what to buy for dinner.

Just like everything in life, programming a supercomputer has a set of rules that you need to learn - once you got them, and once you're familiar with the environment, it doesn't require much reflexion really. Just like any other job out there.

The only required skills are curiosity and logic.

 

Offline Blue Lion

  • Star Shatterer
  • 210
Re: Why Learning to Code is So Damn Hard
The joy is I just got a job as a developer and have no idea what I'm doing. Yay. My life is this graph.

 

Offline Mito [PL]

  • 210
  • Proud Member of Slavicus Mechanicus
Re: Why Learning to Code is So Damn Hard
Sooooo I'm not even being close to a "coder" or "developer", though I have my own experiences with programming 8-bit AVR microcontrollers (quite successful, but nothing awesome) in Bascom/C++ (even with a tiny bit of Assembly), and Mongoose's post gave me something to think of.

In order to get a supercomputer doing something, you don't need a brain made of one - you just need some basic understanding of what coding is and several ready-to-use procedures with their documentations. That's basically what modern coding is: clamping some building blocks together so that they work as needed... right?
Think of it: a procedure in high-level language is comprised of many others made in a low-level language (if anybody knows about them: Arduino vs AVR C++), a low-level language procedure is made of others in even lower level language (like AVR C++ vs Assembly). Then there is machine code. *Someone* made the machine code, *someone* made C, Java, Python, not mentioning the stuff needed for convenient 3D rendering. Someone designed all of those so they don't collide (too much) with each other. Someone made the compilers.
Let's look deeper. Somebody designed the architecture, the entire system inside a computer, coordinated all of the present devices into a single, coherent, functional system.
You do not need to know everything about computers to code - or to be a good coder. Just feel this: even with the simplest code possible you wave around with decades of tens of thousands' brilliant work. The little #include tag, a compiler, everything you use to make your program going is a result of such incredible brilliance of very many people.
That's why you don't need to know everything: history does that for you.

<Maybe if I would know English a bit better this thing up there wouldn't be so silly>


By the way, it's amazing how many cool things one can do with a single 8MHz ALU. For some time now, I'm thinking of stuff like Z80 with enormous respect instead of being sure that it's a relic and a piece of junk.
:P
How do you kill a hydra?

You starve it to death.

 

Offline CP5670

  • Dr. Evil
  • Global Moderator
  • 212
Re: Why Learning to Code is So Damn Hard
I do a lot of software development but am not really an engineer either, more of a researcher/data scientist. I think increasingly more types of work involve some amount of programming, and it's becoming almost as important a skill as writing. In the figure above, the III and IV stuff is much more important than details of specific languages or libraries, which you can look up quickly online.

Quote
I am working on an implementation of Alexnet, a neural network to recognize images (I need to port it to an embedded architecture). My boss just asked me how much it would cost even though i didn't start the implem yet. I just computed with pen and paper how many multiply-accumulate (basically doing S = S + a * b) the computations would require (there are a lot of them in convolutions, and there are a lot of convolutions in neural networks), and it gave them an idea of how much time it would take to process an image.

Usually, there are two bottlenecks : either you are not fast enough to compute, either the data does not arrive fast enough to your processor. You need to consider the two aspects to know the capabilities of your machine. If you use MPI (distributed computing and Cie), it's more complex to assess though.

Then there is also all the parallelism issues - typical example, you take a program, you make it parallel, and oddly you realize that the parallel version actually runs slower than the sequential version. So you dig, and you realize that you have assigned too many threads, and that the program spends half his time switching thread..

Training convolutional neural networks is actually one of the rare problems that can be parallelized easily, and is the main thing GPUs are used for in machine learning. There are several frameworks like Theano and Caffe that let you set up the model at a high level without getting into the details, although they might not be suitable if you have special hardware it needs to run on.

 

Offline potterman28wxcv

  • 27
  • Just a fan player
Re: Why Learning to Code is So Damn Hard
Quote
I am working on an implementation of Alexnet, a neural network to recognize images (I need to port it to an embedded architecture). My boss just asked me how much it would cost even though i didn't start the implem yet. I just computed with pen and paper how many multiply-accumulate (basically doing S = S + a * b) the computations would require (there are a lot of them in convolutions, and there are a lot of convolutions in neural networks), and it gave them an idea of how much time it would take to process an image.

Usually, there are two bottlenecks : either you are not fast enough to compute, either the data does not arrive fast enough to your processor. You need to consider the two aspects to know the capabilities of your machine. If you use MPI (distributed computing and Cie), it's more complex to assess though.

Then there is also all the parallelism issues - typical example, you take a program, you make it parallel, and oddly you realize that the parallel version actually runs slower than the sequential version. So you dig, and you realize that you have assigned too many threads, and that the program spends half his time switching thread..

Training convolutional neural networks is actually one of the rare problems that can be parallelized easily, and is the main thing GPUs are used for in machine learning. There are several frameworks like Theano and Caffe that let you set up the model at a high level without getting into the details, although they might not be suitable if you have special hardware it needs to run on.
That's precisely the latter on my case. I'm working on porting AlexNet to an embedded system - which requires extending the support in Theano/Caffe/Tensorflow/whatever framework we choose. Which requires in turn to understand what happens underneath the abstraction

 
Re: Why Learning to Code is So Damn Hard
The joy is I just got a job as a developer and have no idea what I'm doing. Yay. My life is this graph.

That's exactly how I started three years ago! Straight out of college, I got a job as a C++ developer - not even knowing the difference between a pointer and a reference... Three years in, I've been teaching others to code, having fun with performance-critical pieces of software (SSE instructions are pretty cool, once you get your head around it), found a (much) better paying job, and still quite enjoy solving new challenges every day :)

Just keep your eyes and ears open, read (and understand) StackOverflow, and learn from your more experienced colleagues - you'll get there. (If I can do it, you definitely can ;) ) Courage!