Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How many of you non-tech people wanted to learn to code and gave up
71 points by sathishmanohar on May 30, 2016 | hide | past | web | favorite | 82 comments
I'm wondering what makes people give up on learning to code even when they know the value in it. Why did you give up on learning to code even after you started highly motivated.

I didn't give up but I have to admit I felt quite useless after finishing higher education.

I understand that higher education isn't there to teach you VB or Java but to teach you the principles... but IMO it certainly wouldn't hurt if there was some connection to real life.

I came in as someone who had already coded a while. I was best in class in several subjects IIRC, helped others but felt like I could never have a career in Java.

The reasons?

We were never taught how to work efficiently. Or rather: teachers actively restricted access to sane environments.

Code was supposed to be written in an old unsupported text editor.

For many of us this very smart idea teachers has about teaching things "from ground up" has the nasty side effect of demotivating many of the best students to the point where you consider doing something else.

I never even dared to apply for a Java job and only started after being picked up. I remember telling my first boss the truth: yes, I have been coding since I was a kid and yes I have passed Java in school but I cannot program it. Luckily he gave it a try and with good colleagues Java soon became my personal favourite.

I'm a Canadian with no Bachelor's and I started to learn how to code over a year ago to work in the field.

I learned the fundamentals of Ruby on Rails with Michael Hartl's tutorial and built an e-commerce application on Heroku from scratch (html/css/js/jquery/postgresql) It featured an admin panel, inventory management, user accounts and a reasonable RSpec test suite. It took me about 3 months of plowing 90hours+/week. I used it as a portfolio application to start looking for jobs. After blasting hundreds of resumes (>600), I got about 20 interviews. None of them worked out except for two unpaid internships which I financially could not accept.

I gave up Rails, but I didn't give up coding, so I asked the internet what was more likely than Rails to land me a job? iOS was probably more niche and more in demand. So I spent a month learning the basics of iOS development with Swift and released 2 apps on the App Store over the following 6 months (build-learn-build-learn cycle), both using Parse, Firebase and a panoply of 3rd party APIs. They were well architected (imo) using fundamental OOP principles, as well as the classic iOS patterns, singleton, observer etc.

This time I sent over 3 thousand resumes over the course of 5 months, all over the world: Canada, USA, Mexico, UK, Australia, Netherlands, Germany, Argentina... you name it.

I got 2 remote pair-programming sessions, which I nailed, I also got about 8 coding assignments, which I completed within hours of receiving the instructions (4 of which never even had the decency to respond or give feedback). All in all response was the same. I even got a couple of absolutely ridiculous contract offers such as building a full fledged real time web and iOS landlord/tenant management system for 2000$, solo.

Without trying to start a pity party, I am now doing manual labor on a curtain assembly line, going door to door after my shifts trying to sell Wordpress websites, which are easiest to setup and sell.

I guess I had to stop coding because I couldn't find a job, because it takes up time I don't have and even though I am passionate about it, passion doesn't pay the bills.

One year isn't enough time to reach a professional level. I wouldn't even talk to anyone in your position who didn't have significant experience (years) working on real world projects with others and delivering results; and I was in your position at one point, so I'm probably about as biased as you might encounter in your favor.

If you really want to code, you need to figure out what libraries/frameworks/tooling/etc are popular in your area, and spend at least a year or two working on open projects which use them; learning them inside out.

The good news is that it's possible. I, and others, have gotten jobs without a degree. The bad news is you need to be damned good to do it.

It's a marathon. Not a sprint. You're looking at 2 to 5 years spending 20 hours a week on this. It will most likely not make you money during this time; so you need to love doing it.

Yeah. I spent in that year on average 10 hours a day coding. And some days I would just blast way past that.

So if you consider that (1yr)x(70hrs/week)=3640hrs falls right into the (2-5yrs)x(20hrs/week)=2080-5200hrs bracket, then in theory I have 'paid' my dues.

Otherwise if you're the kind to factor in the notion that "it takes time for the concepts to sink in", that's another story.

Yep, been there and done that. You're looking at investing that much time again. On top of what you've done already. But do it! It sounds like you really care about programming.

Specifically focus on working with others. Find an OSS project you like and contribute to it significantly. Or, better yet, find an OSS project that companies in your area want experience with and start contributing to that.

If I saw "Active contributor to Angular/D3/Entity Framework/SignalR/Mono/Whatever" on a resume, I'd definitely be interested in talking to that person.

I really don't have the time to contribute to OSS, and I have no shame in saying I don't have any interest either. I don't know how people find the time to. I really think you either have to be <20 years old living at your parent's house, or lacking your own ideas, or have enough disposable income to have time on your hands to do it (which is probably the majority). And then you need to really be interested in doing it. It's for a very, very small subset of coders.

I went totally broke learning to code. Now I have to donate my time to OSS? Something is backwards

If I had the time to be writing code, I would be building out a backlist of ideas I personally have.

Thanks for the input though

It's not about OSS,it's about maintaining and understanding other people's code and revision control.

If you don't have kids at this point, then I'd go with the Pat Rothfuss method: http://blog.patrickrothfuss.com/2010/02/fanmail-q-advice-for...

If you do have kids at this point, your situation is significantly harder.

That said, if you don't have kids, are you really working/commuting 90 hours a week and don't have 20 to spare?

Sorry but your advice (that link) is good for an absolute antisocial geek who strives to live on the cheap in order to fulfill the ultimate goal of contributing to OSS. This is not advice for someone who wants to find a job fast.

You're essentially suggesting that I recluse myself even more than I did in the past year, in a low rent city (which in Canada will definitely have 0 tech scene) or far away in the burbs where the commute is long enough that I could code on it. Essentially, to become a full fledged renegade of society.

I prefer the more rational approach that involves being a city, and going to meetups, conferences and hackathons to meet other engineers that are actually working in tech.

Really sucks man. Most times companies are looking for people with experience, most self-taught programmers like myself built up that experience over the year(regardless of what language)s through side projects in college and stupid stuff for fun. It pays to build up your portfolio while doing your 9-5. One can't just take tutorials within a year, build a test app and get a job, am not sure if the tech industry works that way.

Sorry but I have to take offense to this. Whatever side projects and stupid stuff (your words) you did in college for fun 100% pale in comparison to the full fledged Rails app I built over 3 months 90 hours/week for work, and the other 2 iOS apps I built and released on the App Store, which took an order of magnitude more time than the Rails app.

Not fair on your part to downplay these efforts by condescendingly calling apps I built "test apps" (what just because I read a tutorial? How did you learn????). You maybe don't realize it, but the only reason you're able to get a job as a self-taught developer is because you're in the US and you have a Bachelor's. That is the way the tech industry works.

I'm really sorry if you took my words the wrong way, I guess it came out wrong. I'm not downplaying your efforts, on the contrary I think they are great, most people give up after 3days of debugging. IMHO I'm just saying that sometimes companies look for experience not just from apps, but also from years of programming. For the record, I'm not in the U.S (never been there before), but I've worked for U.S(New York) based companies as a remote developer. I currently work as a remote developer for another startup in Germany. I've never left Africa before. I taught myself to code, learnt the hard way(I mean epileptic power supply, no/poor internet service) and I don't really value my degree, I'm not sure if it has helped in any way, ironically I don't have it(have not gone back to get it) and have never applied for a job with it. I admire your efforts and wish you good luck in all your future endeavours.

Damn that sucks :(

IMO I don't think Rails or Swift are the best languages to start out with if you're looking to get a job. Primarily because they are mostly used at Startups or smaller companies and those companies generally want senior coders (as they don't have time to train juniors).

I think the best languages to easily get a job are Java, PHP, C# or C++. There are many enterprises, banks and governments who can't get enough coders for those languages because the jobs are boring and routine and most coders tend to stay away from them, or quickly move on to more fun things after they've gained a few years of experience.

The fact that you know Rails or Swift too won't be a waste. It's still a huge asset to you because hiring managers at these big boring companies are used to seeing resumes of recent graduates who have taken programming for the money, not for the passion. Seeing that you've learnt languages that they don't teach in college puts you above the rest of the field.

Banks, governments and big business in general is the most demanding in terms of degrees unfortunately...

That really sucks! Without anything else to go by, something that strikes me is that you are sending out a huge number of resumes and your conversion from resume to interview is low.

As most resumes are screened initially by an HR person, your resume is probably being binned before anyone from engineering sees it because you don't have a degree. This completely sucks but is the reality.

Therefore, your best bet if you're looking to change strategy could be to narrow how wide you cast your net a bit and focus more attention on each individual application. Sounds like you've got passion by the bucketloads and engineers love people who love what they do. So try and find some engineers - are you going to meetups?

Meetups are a great way to get some informal time to meet people from the local community and learn what's in demand and what opportunities are going. More importantly, they're great places to learn a lot of information rapidly for free.

Yeah I definitely agree with your points. I was using a machine gun instead of a sniper. I definitely know better now.

I also just recently started going to meetups. The engineering centric ones are much more scarce where I am than the 'startup business networking' ones unfortunately, but... doing my best!!

I really want to attend a hackathon at some point and really have high hopes that that could be my shot. Maybe I'll save up and try and sneak my way in to one in a big city....

Did you ever ask friends or trusted professionals in the field if there was anything about your resume or interviewing that might have been ruining your chances? It seems absurd that you wouldn't have gotten a job after what you've done.

Actually, after a while I started asking every company who rejected my candidacy to explain why I got refused. Obv I got even less responses for this but I did get some kind enough people to help me tailor my cv.

Did you use recruiters or apply direct. Being new to the field recruiters could be very useful in trying to sell you to their client and give cv tips.

I also suggest apply to fewer targeted companies and tailor your cv to their job spec. Staying honest of course!

Also learn technologies that are easier to market albeit less fun such as Java, JS and C#.

Get a friend who is in the industry to review your cv or attend meet ups and get people there to have a look and give honest feedback.

Having a blog, a github and giving talks would help too.

I started out with Codecademy and gave up lots of times (over about 6 months) before I decided to commit to learning full time.

My plan was to lock myself in a room for 3 months and teach myself Python, I ended up doing an in person course in Javascript (one of the rare free ones). Learning with peers and some support made the whole thing a lot less gruelling. Before that I would get stuck on very simple things for hours and hours not knowing what to google to find the way out of it.

I wrote about this in article a little while ago if you're interested in the full process I went through. Note (I didn't choose the title for this) - http://www.gadgette.com/2016/02/19/how-i-learnt-to-code-in-a...

I think it takes a certain kind of person to teach themselves something they have never done before without much in-person interaction. Many times programmers will have at least a few other people around that can give them a second perspective and then it becomes a symbiotic relationship where both people benefit.

Some people can learn everything they need to on their own simply by knowing what they need to look for, if you don't know what you're looking for, the search becomes infinitely more difficult.

Edit: When I say a few other people around, I don't mean in person although that is common. Even just having people who respond quickly to messages or posts on websites will help tons.

While this learning style certainly suits more people than others, it is definitely a skill that can be improved.

For a lack of a better term, I'd call it researching. Expressed in another way, it is the ability to state (and constantly restate in new ways) a problem you are facing. The rest comes from pure grit in refusing to give up.

A few things I noticed from my own journey...

1. Jargon matters: Learning the "nomenclature" (see, the jargon term for jargon) makes your life so much easier when researching. I recall reading a paper which sought to bridge the gap between biology and computer science, the author's first task was to instruct the reader on the "language of the space" and it was assumed the reader should otherwise be able to learn the concepts quite quickly. Being able to phrase your problem in the language of the field will give you much better leads when looking things up. When you encounter a new term, try to appreciate that term for what it is, avoid trying to constantly translate it back into your own terms, though this is definitely useful for gaining an understanding to begin with. A parallel to learning languages it to "learn like a baby" and to avoid translating a new term back to your mother tongue.

2. All learning is good, no time is wasted. From experience learning and teaching others, there is a mental trap that time spent "looking for a solution" is time wasted - you're not learning your solution and you're not progressing through whatever learning materials you're trying to work through. This is not a constructive mental feedback loop as it breeds frustration. As mentioned above, research is a skill and time spent researching is practising that skill. You could even argue its more useful as its a far more general than knowing how to solve specific problem X in front of you.

Everyone has been in that stage where you were lost because you had no idea what a "mutable object" was or you read your first null pointer exception and had no idea where to start. Or worse, reading the poorly explained and formatted docs of some unfamiliar software, in an unfamiliar programming language trying to do something for the first time.

My advice to the people who are still struggling in this phase: stick with it, don't be disheartened if other people are seemingly picking it up faster or easier than you, everyone goes at their own pace and as long as you're learning, you're moving forward. Sometimes finding your way to the answer is the bigger lesson than knowing the answer itself.

Engineering grad student here:

1. Learned to code some C# in an attempt to distribute some of my simulations to other computers. Had a great time and managed to get something good enough up and running.

2. Tried to pick up Haskell because I liked some of the ideas, and had a few projects I was interested in trying to do in a functional language. Had a bad time and quit after ~2 weeks. The environment and tools were garbage. I thought the old by-engineers-for-engineers software I used to build research models was user-unfriendly, but I guess that was just because I had never tried to work with the software programmers build for each other.

Haskell is mainly developed and used by academics in the field of programming language theory, and occasionally such academics who do some work in industry, so it's not really the whole story to call it "software programmers build for each other".

I'm talking about things like Emacs and Vim, not just the core Haskell packages.

Yeah, many programmers don't user them either (though some of the best ones do). Those tools are not beginner friendly. Actively resist GUI usage patterns, and are less useful to newcomers than a simple text editor.

They also include alot of cool timesaving features and are very customizable.

I think the reason that many smart people don't stick with programming is because a fundamental part of the job is struggling with intellectually trivial incantations specific to some configuration/OS/Language/Tooling.

I am a programmer and I have a lot of patience for that stuff. But I don't why I do, because objectively speaking it's crazy to spend hours ingesting this kind of ultra-specific, non-reuseable information.

"...incantations specific to some configuration/OS/Language/Tooling"

This is one of the things that I struggle with, much more than actually learning the programming language. I'm embarrassed to admit it because it's part of the DNA of programming environments, and it feels like no-one will take you seriously if you don't love or master the command line to perform tasks in your environment.

But I'll say it, I (mostly) hate the command line for the endless, excessive configuration/installation/tooling/updating tasks that are such an intrinsic (and unfriendly) part of "modern" programming setups. It also feels like there is zero interest in ever changing these things.

Anyone else want to admit they struggle or dislike this state of affairs? Or am I the only one?

I'm possibly the only one in my office who is comfortable on the command line. Most of this may be that we're in a Windows environment, but they all seem to use an IDE more than anything else. I feel like for web stuff at least, the command line is easier because you know exactly WTF it's doing instead of having it hidden behind layers of useless and arbitrary UI.

But if the IDE or other tools is good enough for what you need to do, then I don't believe it makes a difference.

>> I think the reason that many smart people don't stick with programming is because a fundamental part of the job is struggling with intellectually trivial incantations specific to some configuration/OS/Language/Tooling.

Along with this, I believe there is a certain amount of curiosity required to continue pursuing programming after a certain point. At first it might be fun, teaching a computer to obey commands, but once a tough enough obstacle is met, does that person want to find the answer and do they take satisfaction once that obstacle is overcome? If the satisfaction doesn't surpass the stress it took to find the solution (for most problems, not all), it seems unlikely that the programmer would like to continue when the next problem appears (which is inevitable).

I agree. I'm a self-taught programmer, and I think the learning curve was reduced quite a bit because I had been using Linux on the desktop for years, and I was already familiar with the shell and many of the system concepts.

My new-grad coworkers have more trouble with the build systems, version control systems, deploy systems, and servers than they do with writing code. I think it would be beneficial if more CS programs had a course focused real-world tooling as it is used in the workplace.

I imagine your work does web dev - node maybe? In which case, the tooling/deployment/dependencies are now the hardest part.

All that cruft, wiring, and arcane commands/configurations piled like infinite turtles one on top of the other.

I can't imagine just now jumping into web dev. It must be like archeology. You'd need to go one era-layer at a time to understand what and why things are this way.

It wasn't like this in the bad old days - we created a monster.

Very good point that you rarely hear mentioned, supporting all of this stuff is going to be an absolute nightmare. Companies thought supporting end-user created Access database apps were bad, wait until it's time to deal with these rube goldberg web apps people have created using hundreds of different toolsets.

I had an interview a few years back where they wanted to know not just what is was the state of the art (latest JQuery features etc.) but what was added and when historically! They wanted someone who was totally on the ball with the stacks going back in time (and with presumably a better memory for that stuff than me!)

I do backend software in Java. I hate web dev.

Which makes sense, because the methodology used in building applications is lead by people who invest all their time into developing. Simplicity costs you power, and most people crave power when they spend all their time doing something. That, and meeting requirements written by people who assume they're gods.

I don't find the struggle intellectually trivial at all. Over time you learn many ways to deal with it, and sometimes even get it right on the first try.

Those skills can be fundamentals about computing, architectures, programs, libraries or languages. Sometimes your knowledge of tooling, methodologies or coding styles get you there. After a while you can even apply some profiling to the author(s) something you're using, because "this kinda guy probably did this", "they always do that".

To me reverse engineering things, on every level, is very interesting, and part of the path to being a great (practical) engineer.

Not to mention, if there were a proven stack where everything clicked easily, and stuff just implemented itself, we'd have heard about it.

There are integrated platforms where anyone can get something up with ease, but if they added all the features you'll eventually miss, you'd end up with something as complex as starting from scratch!

I used to work in spreadsheets all day, or at least, 70% of the time, I'd have to collate 50x spreadsheets information into a singular summary page, etc.

I worked through ~20% of "Learn Python the Hard Way", then later, the intro CS 101 of Udacity which has a Python intro, as I wanted to be able to do more then vlookups and complex workarounds for Excel sheets.

My new career is in marketing automation, so I did some tutorials online, and bought a SQL book to pull PL/SQL queries for data segmentation. I also picked up HTML/CSS, but don't have any reason to really use Jscript. I can read it, and trouble shoot in some landing page uses, but I don't need it.

Learning to code was always a supplemental goal for career growth, and I find it fun. I was that IRC guy who loved scripting simple tasks like a music player/displayer, k/b wars, etc.

However, when I'm actually diving into learning actual code, I don't enjoy it. I don't think I'm built for it, just as I don't grok statistics, yet my sibling is a actuarial scientist, but he gets confused about things that come naturally to me.

Being in Marketing Automation, its more relevant for me to do "continued" (outside of work) education not in coding, but in platform research (Eloqua, HubSpot, Marketo), more SQL/data management (I am reading "Object Technology: a Manager Guide), and certifications in these platforms.

Your experience rings true to me.

I don't particularly enjoy coding other than figuring out a way to automate some boring task for myself or someone else.

I also don't entertain the idea of having to spend most of my free time learning how to comprehend some particular peculiarities of a language syntax and generally keeping track of technology updates.

Also, browsing the internet I realized that with the advent of sourceforge/github/stackoverflow, no matter how hard I try to write some piece of code, it has _always_ been the case that it's already been written and, with minor modifications will solve my problem, whether in the form of a code snippet or a full desktop application.

Coding for coding is irrelevant for non-techies and rightly so: outsourcing is so cheap nowadays. Coding in order to do something relevant within their particular field of knowledge is their main point and may be worth the fuss.

I totally agree with you there. I feel like coding for the sake of coding is like poetry for the sake of poetry. That being said coding is not just about doing a programming job. In my opinion the biggest benefit of learning how to code is it develops the discipline of structured objective thinking.

Which is an inferior way of thinking, in certain situations.

There are many situations where structured thinking, of the sort that makes for good programming, seems a liability. Ever wondered why many programmers are poor at social interaction and big-picture decision-making?

Because they don't practice it.

Seriously, people devote so much time to becoming good at "structured thinking" that they spend less time talking to others, or doing big-picture decision making (the last one is easy - just start making decisions and facing the consequences of your terrible decisions, you'll get better).

Literally everything in the world can be solved through practice. (That's clearly an exaggeration, but its true enough).

I definitely don't think that "programmers" (whatever they are) are any worse at other things by virtue of their talents. They are less good at other things because they have not practiced those things.

I would say it is the other way around: People who are poor at social interaction avoid it, some of those discover programming, and because they spend less time socializing they have more time to practice programming. So in my opinion it is not “Has structured thinking which causes poor social interactions” but “Has poor social interactions, retreats and learns structured thinking”.

You are painting with pretty broad strokes there huh? Not everyone is a stereotype in a tv show.

I had two problems while teaching myself how to code; I'm not that passionate about it, and learning technical disciplines on line is not how I learn.

I viewed coding as a means to an end. Learn to code-->start a business-->get investors-->pay someone else to code. I didn't care much about what I was learning, only that what I was learning could potentially fulfill other goals. That, in and of itself, wouldn't necessarily deter someone from learning how to code, only...

I struggled learning through on-line tutorials (Code Academy et al). It's not how I learn. That was unfortunate, seeing that coding community spearheads this type of learning. I realized that if I wanted to make it work, I'd have to register for a class. Then I became scared that maybe the struggles wouldn't persist past on-line and I'd be financially committed to it. I wasn't willing to take that risk.

I'm working on a video course myself but it takes a different take on things. Could you elaborate on the problems you face with current online tutorials? Why didn't it work out for you?

You mention you decided registering for a class is the only way to go, I would like to know if an online video tutorial teaches you to get the basics in a day and offers 100% money back if you aren't happy would you try it and how much would you like to pay for it?

There is something to be said for in person peer to peer learning.

My biggest problem was, I'd get hung up on a problem in some bizarre way. Often times when I'm learning in teacher to student only environment (or machine teacher and student), the teacher will notice the mistake, but have a hard time identifying the train of thought that got me there in the first place. Students have an easier time identifying mistaken amateur thought processes and fixing them. A typical (or automated) teacher is so far removed from amateur thought processes, they have a hard time empathizing.

Where online learning systems fall short is the peer to peer. Yes, there are usually forums where students can communicate with each other. But it is lacking. The biggest problem students have with each other is misunderstanding. In a classroom, sitting next to another student, that misunderstanding usually only takes a few minutes, tops, to resolve. In an online forum, that misunderstanding could take days, frustrating students and forcing them to drop the class.

I'm not sure if a video would help for someone like me. The problem is you're trying to streamline a process in how people learn. But people learn in all different ways. Accounting for all the different ways is hard. While I'm sure your video would work for some, chances are it won't work for most.

If I was to give you some advice, it would be to find some way to scratch your own itch. For example, if you work in an office job, is there some part of your work that you could automate through scripting? If so, learn how to do that. You'll find doing small projects like this keeps you focused as well as offering a good way to learn the fundamentals of whatever language(s) you use to do it.

So what became of it? Did anything stick?

As it turned out, a lot stayed with me. I got the basics down so I know the general plight of a programmer. I understand how long things can take to fix. I know what it means to be working with someone else's code. I run a linux machine. I hit ctrl-u from time to time. I set up the occasional CRM with ease. I'm not scared of the command line. I can more or less slog my way through fixing my machine through google searches if need be.

So..you know...some.

Classes in Javascript were really hard for me for some reason, and I've never really passed that point. Also, the fact that programming is not solving anything by itself, you need to know the entire stack. After wrestling with classes for a while it's really demotivating to realise you have to know DNS, server-side languages, http_S_ and all sorts of things before you can actually create your app/website. It was just a bit too much for me.

Codecademy did a good job though and http://www.theodinproject.com/ too.

EDIT: Also, the job prospects did not look too good because of the fierce competition. What motivated me was doing my own apps/sites (lego for grown-ups), or at least work on a startup, but the required resumes were really daunting. Sysadmin just didn't have the rockstar flavour to it (I think it's a fine job, just trying to convey the fact that a certain air of adventure needed to be present to lure me to stick with it- i.e. the same reason 13 year olds learn the electric guitar).

I got downvoted for this in a simallar thread, but it's my belief that you need to work backwards to start coding.

Use tools, apps, generators, scripts, whatever, to do as much of the work for you as possible. Use a yeoman.io fullstack generator to literally make you an entire webapp with login and security, and then figure out how to fill in the blanks.

Doing it this way, you won't get bogged down in all the technical bullshit to "make something appear on the screen". Let's be honest, you're not writing code for the space shuttle, you can take lots of shortcuts, and then correct your mistakes on a later project.

I think there's two approaches, and depending on what you are trying to accomplish as your motivator to program, the best approach may be different.

If you are looking to present something to others as an interface, using tools and frameworks can help tremendously. Your success is likely somewhat based on the perceptions of others, and this requires mixing a few disciplines (design and engineering), so getting what help you can to achieve that minimal level required for people to not reject it outright is important.

If you are looking to transform or create something for yourself, just learning the tool is often better. You want to spider some sites and present some stats on what you've found? Learn Python, Perl or Ruby and that will take you most of where you want to go. You want to write a small roguelike game? Learn whatever language you want and get to it. In many of these cases, learning the intricacies of a full stack and then how you have to tweak it to make it work for your needs mught be counterproductive, unless it's aimed specifically at your need.

One of the things that is weird to me is that Javascript is not necessarily the easiest language to learn. With the kind of odd function composition nature of Javascript, I think that Ruby and Python(or maybe Lua) are the much easier languages to learn, and Javascript gets all of the love because it can do front-end development well. I honestly think unless anyone is going for strictly web-development, that they should start with something other than Javascript.

Agreed, JS is more verbose than Ruby and Python and vanilla JS is a strange language for newcomers what with its prototypal object system and functional composition. It doesn't help that a lot of intro materials will try to shoehorn it into the traditional OO mold which it doesn't really fit well in.

Something opinionated like Ruby (which strives to be expressive and terse) or Python (which is very standardised) is a better starting point for new developers.

I've made a couple of attempts and I'm about to make another attempt to learn to code. I think the problem I run into the most is that a lot of the online learning is not project based, or takes too long to get started on a project. For example, I started the TeamTreehouse Flask Track and it takes a while before their tutorials challenge you to actually start building a site with Flask. I signed up for onemonth.com and I liked their approach much better, where you just dive in and start building something from the beginning. However, the OneMonth Python/Django course that I was taking shutdown right in the middle of the course I was taking, due to problems with the course material. It's also been very difficult to choose a language/framework, but I think I've settled on Python/Django. I'm thinking that I will resume my Flask course at TeamTreehouse and also give Code4Startup.com's new Django course a try.

The place to start really depends on what you are interested in. If you already know you want to do a bunch of web programming just start out with javascript.

If you think you might go on to do lots of types of programming then learning python is a great place to start

Check out reddit.com/r/dailyprogrammer if you want interesting things to work on them. A lot of those tasks are not so simple that they can be done in a couple of hours, but not so long as to be crazy hard.

I was a big fan or this one


Thanks for the info. I considered focusing on Javascript and node exclusively, but I'm really only looking to build CRUD web apps quickly, and Rails or Django seemed more beginner friendly for those purposes than node. Of course, I'd still need Javascript for the front-end of these CRUD web apps. I'm still kind of on the fence though between RoR vs Python/Django. I'd like to be be able to create MVPs quickly, so RoR is tempting even though I'd prefer to learn Python rather than Ruby.

I highly recommend reading the Django docs. This is how I got started with web programming, after struggling to get off the ground with PHP and Zope/Plone, it suddenly clicked for me while reading the django docs and I was able to finish a fairly large project in a few months. They're full of useful examples, and the framework is very civilized.

Another cool tool for learning Python is this: https://conceptcoaster.com/course/python-tutorial/

I've given up at many points over the last 9 years. I now program "professionally". I work on full stack web applications, networked desktop applications, and recently embedded applications.

The primary reason I gave up was that I wasn't willing to accept the amount of effort which needed to be put in to get the level of results that I wanted. I just couldn't comprehend that the skills I wanted to have required years of commitment.

The advice that I'd give would be to understand that this is a huge task. You won't learn everything quickly; even if you're very bright; even if you spend 14 hours a day on it. Those things will help, but they aren't the key.

If you want to be a good programmer you need to love learning. It's not about being clever, it's about being persistent. You constantly need to learn new tools and frameworks, and occasionally new languages. You need to understand the technologies you're interacting with and how they work. And you need to take all those tools, frameworks, languages, and technologies and use them daily.

But mostly you need to invest the time.

Don't give up if you let a big project go because it's too difficult, or don't understand something, or spend two weeks on something you thought would take an hour. Be disappointed, sure. But don't quit.

Keep going. Keep learning. Keep on picking up just a small amount of knowledge or skill each day.

In a year things that now seem complex will be obvious. And that will happen again and again every year that you continue learning. Eventually, your failed projects will turn into completed projects, but it could take years for this to start happening depending on how ambitious the projects were. You can't let that stop you. You just have to keep going despite it.

So keep going. But realize it's a long, slow, life-time commitment to constant learning. It's not easy. Even if you've been good at everything else in life, there's no exception for you. Mastery and skill will only come with significant time and effort. But they will come.

Also learn vim. That sh*t is awesome.

I was messing with programming for years now but I can't manage build anything worthwhile, even for my own amusement. I was CS major but I got burned out on high level math and I switched majors.

Through out these years it's always been a struggle to learn to code and finish something. I've done some basic problems, some Project Euler, etc. I did countless tutorials, it just doesn't stick for me. I've been through so many languages that I can't even remember them all, name it and there's good chance that I've read a book on it.

It also seems like there is so many tools and programming today is so convoluted and over engineered that I just get overwhelmed. I also don't have anyone to talk about programming, I am just spinning wheels solo and get frustrated when I get stuck.

Right now I am giving my last chance of learning to code. I found out Lisp and eventually Clojure. It seems more straightforward and simple, there are no 'design patterns' to remember and break my head with. I feel like I can slowly build something from bottom up. I have high hopes for Arachne upcoming framework. I hope it will be accessible and I'll be able to make SPAs sites.

But yeah, I feel like I've burned out on this. I just get frustrated with code most of the time when I can't come up with a simple solution.

I'm a professional programmer and I know the feeling. The amount of things to learn just to seemingly accomplish anything simple is daunting. I actually held off learning web development for a very long time because of this.

Some people just learn better from the bottom-up: you feel like you have a full understanding of the environment you're working with and its much more enjoyable. As you feel like you've mastered one level you can then move up to the next level. Don't feel like you need to rush into building a complete web app using the latest frameworks etc. Once you feel comfortable with Lisp/Clojure, then look into setting up a simple local web server and getting it serving some html. Then add some javascript. Then some dynamic behavior (with Lisp/Clojure). Then add a database. If you dive into it all at once it will drive you mad.

Have you ever worked with a team of experienced programmers?

I ask because I flew solo throughout college simply because it was difficult finding competent programmers at such a small commuter school. I spent some time learning my own things and trying to teach myself. But once I was placed on a solid team at a software company, my rate of learning increased at least by double.

What I'm saying is maybe try surrounding yourself with some folks who have more experience in what you'd like to learn. There are user groups pretty much everywhere for major languages, and meetup.com is a great way to make connections.

My friend got hired at the start up like that and now he is doing fine. The truth is that I am very honest and critical of myself, I just don't have the confidence in my abilities. He also had several years of experience, I don't. I might start hanging out at local meetups again but the tech scene is small.

I am fascinated that someone went to Clojure for simplicity, because that is my way as well. I confess I do not spend enough time on learning, but I have come to enjoy solving little problems (like project Euler). It just takes too much time to get anything done that goes beyond basics. Conclusion: 1) Do not underestimate the simplicity of LISPs for teaching/learning 2) Enjoy the way (maybe there is nothing else out there but solving little problems)

I've dabbled a bit with various online courses, and concluded that coding just doesn't spark my intellectual interest enough for me to get into it fully. Wrote about this, actually: http://sonyaellenmann.com/2015/12/its-okay-to-not-learn-how-...

Thank you for that perspective... from a graying beard. Unfortunately the social potential of the _idea_ of software and APIs is so much greater than its IRL application and usage. But congratulations nonetheless, it seems you have adopted the hacker ethic (re: OSS-as-duct-tape) and that's a great first step even if it's your only one!

Years ago I started coding qbasic with a photocopy of a book given to me by a friend of the family.

I progressed from there to medicore competency in PHP, rails, and c++. Then I went to university to study comp Sci...but almost immediately switched to aerospace engineering, and my coding skills plateaued.

By that I mean I can write basic stuff in all sorts of languages, but I'm miles away from writing a compete program or anything user friendly. Most of my code these days revolves around automating various things in the most sensible language. Where sensible often means something the next non-coding engineer to come along can understand.

I guess I stopped because I knew enough to do what I currently need to do. I'm content that, given time, I could learn to be a better coder. But at the same time I avoid jobs in my industry that are suited to decent coders because I know there are more suitable people for the role.

Every so often try to pick up some "hobby coding" but find that I don't really enjoy it like I did as a teenager.

I'm an artist and since I've always been fairly interested in science in general too, I decided to teach myself HTML and CSS to code up my own site from scratch, for hosting my art (and miscellaneous other things). Am currently going to start learning CSS Flexbox that everyone's talking about, so that all parts of my site can be rendered form-factor independently. My plan is also to teach myself Javascript after CSS although I've no current need for any JS on my simple site. I did teach myself C years before and successfully worked my way through K&R2, but since professionally I was headed in a different direction I saw no reason to go further. Can't say I've given up on coding except for a short attempt at Java (again ~10 years back) which I gave up quickly since coming from the simplicity of C it seemed rather bewildering to me (at that time).

I am having some problems with magic methods in Python. They are defined inside a class using built-in functions and are not directly callable. What are some helpful resources with this topic? Thanks.

Here's my beginner-friendly article on magic methods: https://conceptcoaster.com/course/python-tutorial/magic-meth...

If you have any trouble understanding it, go to the homepage: https://conceptcoaster.com/course/python-tutorial/ and work your way to magic methods.


and you can call them directly:

  >>> (3).__neg__()

The Python docs are high quality.

Word to the wise: avoid anything "magic" when writing code.

Word to the wise. Better to stay silent and for people to think you stupid than to open your mouth and have them know for sure.

Python magic methods are not "magic" but are a very standard part of the language and are well documented.

And you wonder why some people never catch onto programming.

The only online curriculum I have had success with was: http://www.javascriptissexy.com/how-to-learn-javascript-prop...

The reason it clicked was because at the time, a colleague offered to mentor me. This helped since he would assign me cases related to my skill level, show me how to ask better questions, and explain how things worked in context to our tech stack.

First time I stopped, because I got stuck. I didn't have Internet at home, so I had nobody to ask for help. Second time I stopped, because of university exams. I was studying something completely different at the university and when exams came, I dropped the programming and didn't pick it up after. Third time was the lucky one. I made programming my most important priority and I didn't stop. Also, I had Internet, so I could ask for help.

Because it was free.

I tried many of the free options out there but whenever I hit a roadblock I just quit because I had nothing to lose. I paid $30 or so for a swift course and never stopped because I had paid money. It's a tiny amount of money but I felt like I had to see it through since I paid money. I now have 2 apps in the app store, with another on the way this week likely.

Wow! Thanks. I'm working on a 3 hour video series which I'm planning to price at $99. My thought process is exactly the same. people doesn't tend to value free stuff or stuff they got for free. Its counter intuitive but it works.

Obviously people ridicule the idea of charging for basic programming tutorials.

I've started and stopped a number of times. Mostly I don't have an itch to scratch that pushes me to make anything interesting.

I find myself particularly struggling when language walkthroughs get to libraries and code organization. Follow all the paths and dependencies is really tough for me.

I'm a coder. But I often do little side projects for things that I just wonder about.

Today I'm wondering how code is made into binary and how that flows through the processor and how the logic moves data to and from memory. I'm not sure how I'm going to code anything to represent that, but that's half the fun.

Last month I was a bit obsessed with organic tentacles and how to make them move using muscles. I coded this in javascript using canvas. Pretty fun. They make lots of interesting patterns.

Before that it was games like cookie clicker and candy box.

Before that it was neurons and AI - again I just coded little fish in javascript, hooked up a neural net, they gained score depending on how close and how much time they spent near food. Then breed them and repeat. Do this for half a day and they get really smart. It's cool how a few arrays and sigmoid functions turn out to be smart. Even though I coded it all, it still amazes me.

I think the thing is to find something that interests you. Maybe code your own blog. Or online text adventure. Or multiplayer pong clone.

Part of your problem is that you are trying to do too much. Libraries, code organisation, etc are all fixes to problems. You need the problem first (while you are learning) so write spaghetti code and it's not until you go 'OMG this is hard to understand' then you need to look up code organisation and only then use the minimum that is needed to improve your situation.

I learned. Then realized the value of having good ideas for what to work on.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact