Stories
Slash Boxes
Comments

SoylentNews is people

posted by takyon on Sunday July 26 2015, @11:55AM   Printer-friendly
from the pity dept.

Stumbled upon this blog entry:

One paragraph from the OP instantly stuck out to me.

I don't want to [be] a typical "code monkey". I want to go deep into low level, even to clear math when we talk about computer science, but at same time, I want to have a job in shorter period of time than let's say 3 years. I was switching so many times between Python, C++, Java and I'm nowhere. I know it's bad practise, it's worst, but I don't know, I'm just confused.

...

Web development has an extremely low barrier to entry in comparison to, say, systems programming. Setting up a Wordpress blog takes significantly less knowledge and effort than building an operating system.
As a consequence, being a web developer does not carry the same prestige as being a software engineer (whatever that is). God have mercy on your soul if HN or /r/programming learns you implemented some common functionality in NodeJS for fun. (Expect the words "web scale" to show up in the comment thread somewhere).
...
As I became more involved in online communities, the narrative became increasingly clear that my confidence and sense of accomplishment were unwarranted. PHP was a terrible language, and PHP developers were terrible programmers. JavaScript was a terrible language, and JS developers couldn't perform asymptotic analysis to save their life. Web developers don't have degrees and it shows in their code. Drupal/Wordpress developers are an absolute joke. Web developers never took a compilers course, so they don't understand just how easy their "jobs" are. Web developers are overpaid for how little they know. Web developers have everything handed to them. Web developers have never had to manage memory or make hard decisions. Web developers have no knowledge of data structures or algorithms. Web developers are not real programmers.

Armed with impulsive spending habits and a sense of urgency, I went to Amazon and purchased just about every programming book not related to web development I could find. Cryptographic protocol implementations in C, Embedded Systems development, Linux Kernel Development, etc. I wanted to learn things that real programmers knew. I wanted to learn the hard things. I bought an Arduino, started hanging out in ##c on freenode, began reading through implementations of the C standard library.
I never fully read any of those books. Most of them I never even started. I didn't do anything substantial with the arduino. I never made it passed analyzing "assert.h" in the C standard library (which I was planning on progressing through alphabetically.)
...
When you hate what you do, you stop caring about it. When you stop caring about something, you aren't going to bother learning more about it.
For a period of nearly 3 years, I was stuck in a terribly unproductive mental state. I hated web development, but I didn't know how to do anything else. Web development was all I knew. Bills needed to be paid, so CRUD apps needed to be made.

And thus arose my main cognitive dilemma: I hated web development because it was easy, but it was never actually easy to me. Instead of concluding "maybe web development is actually hard and those people don't know what they're talking about", I concluded that I must be a terrible programmer.

Question to SN fellows: have you had moments like this (doesn't matter if in relation with Web development or not)? Have you crossed over them? If true, how?


Original Submission

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 2) by microtodd on Sunday July 26 2015, @10:12PM

    by microtodd (1866) on Sunday July 26 2015, @10:12PM (#213996) Homepage Journal

    Starting from scratch you're probably better off with Scala or Clojure if you want to do functional

    So this is totally an n=1 sample size, but for me, I tried to pick up Lisp and Haskell more than once. Set up the compiler/interpreter, find an intro tutorial, jump in. Three or four times, and I never really "got it".

    So I come across this Perl book, it starts with standard procedural perl. Start adding some recursion on a pragmatic example (walking a directory tree). Start adding lambdas and stuff in to your method calls and algorithms. About 7 chapters in, suddenly the author is like "Surprise! I just taught you lambdas!". And it then all clicked.

    So maybe its not academic ivory tower. I'd probably still just get a "C" in a functional programming class. But it made me a better programmer.

    Starting Score:    1  point
    Karma-Bonus Modifier   +1  

    Total Score:   2  
  • (Score: 2) by VLM on Monday July 27 2015, @11:39AM

    by VLM (445) on Monday July 27 2015, @11:39AM (#214240)

    Start adding lambdas and stuff in to your method calls and algorithms.

    There's a guy named Eric Normand who did some (non-free) training videos for Clojure along that general path, although his thing was abstracting cooking stuff in the kitchen, so start with super procedural, then lambda it up. Good videos, well designed and produced, although medium price.

    Unfortunately I remember that one of "The Little (wtf)" series of books also worked up a similar path but I don't remember which.

    Anyway those are some specifically LISP things that are like the path you describe.

    Typical for the "Modern Perl 2014" book there is a technically correct section on anonymous functions and how to do them right and the limitations, but theres little explanation why or what it is, and somehow the book makes it thru the entire section without using the "L word". If you already know what they are and why you'd use them, and there's a way to write anon functions without the sub keyword, but temporarily forgot, then here it is. I think thats bad code because I can't search for "sub" in the source code while debugging if there is no "sub" notation. Anon functions are generally not fun to debug in perl code if the source gets wild and wooly and huge and spread all over. The definition of hilarious is using multiple anon functions in one block of code and the error messages all claim to be from __ANON__ , or whatever it is exactly, and good luck figuring which without stepping thru with a debugger. Well, it is kinda intended as a reference book not a textbook anyway. Its a great reference book.