Great to see that. There's plenty of "you should learn how to code" posts, Codecademy, Treehouse etc, but there are very few case studies of people who seemingly A) used these tools and/or B) actually ended up being able to wing it learning to code mid-to-late-stage in their career. Not sure if this post really qualifies as either of those, as well. If there's more examples of this that I'm missing, please let me know.
I had a different trajectory, but a similar end point (biology -> freelancing -> full-time web dev).
The biggest similarity I noticed between myself and the OP is that you have to put yourself in the way of opportunity. For me it was building side projects and hosting Startup Frontier. For the OP it was ruby meetups and send out an email to the list.
It takes a lot of guts to cold-email people like that, I have a lot of respect for the OP. Good work!
Not really a case study but my sister went from never having coded, middle-school math teacher to junior consultant at ThoughtWorks in 5 months via DevBootCamp. TW may be a bit unusual though in that they are willing to train you for a year before actually making money on you.
Our industry needs a lot more of this. Many industries expect that new hires are in apprenticeship mode and will be learning on the job. In our industry people are expected to walk in and know exactly what and how to do things.
I don't think that's true at all - every organization I've worked with has planned for a 1-2 month ramp-up program. Generally you start off doing trivial bugfixes until the codebase makes sense and move on from there. Hell, learning on the job extends past this phase and is essentially neverending.
You just need to have enough background to make it through the ramp-up phase and start teaching yourself. That holds true whether you went to college or are self-taught.
(Former ThoughtWorker) TW does have a very solid training program. Before the program ends, the trainees are often contributing bug fixes and features to production codebases, pairing quite a bit with experienced devs and so on (at least in the version in place when I used to work there).
TW is a great company to work for (if you are working on enterprise software, and you don't mind some agile/oo rah rah ism) but for someone with no experience, it is an absolute no brainer. Its training program is the most effective I've seen in my career.
You really did a great job! I took longer than you, but I followed a similar path. In hindsight, I can't imagine taking any other path, its been a blast! If I could emphasize one of your points, it would be to MAKE stuff, don't pick out problems out of thin air, MAKE stuff you want! I really happy for you, and I'm really glad you wrote this. I haven't agreed with someone so much in a while! Also, I would reinforce your point about git and github, that is as absolute must in my experience. It is your resume and one of your main tools.
I've been using IRC to talk to people who built some of the tools my company uses in our technology stack. This has been an amazing opportunity and a learning experience. You also learn a lot when you hang around and help more novice users with their questions.
I'd say if you don't start talking OT in a IRC channel dedicated to a piece of software/tech, it has a direct positive influence on your skills, which in turn directly influences your job seeking chances. Also, you can meet prospective employers that way.
the python channel was incredibly useful when I repeatedly missed no brainer things when i was first starting out. Any library's irc will probably have at least one person who knows the library inside and out, and can help you with a problem. It's really incredible you can do all this for free!
I would also reinforce the github point. It is as important a point especially when you are working on a start-up idea alongside a regular day-job.
Git pushes really give an indication the progress, skills, "actual work" and ideas to re-prioritize or launch.
Sorry if it sounds obvious but I really feel in a resource crunched situation the best one can do is to push out as much as possible to git and take them further to push to the real world to get some real feedback!
Back to the topic .... if the start-up doesn't stick on ... surely it can get a great job with a great employee!
Funny seeing Aubrey & Gavin mentioned on an HN post. Both are great guys and also attend the iOS meetups here in Tampa. You're welcome to join too. We're meeting Aug 30th next: http://www.meetup.com/Suncoast-iOS/events/77862782/
Gavin actually talked about you in one of the past meetups, saying how he knows one smart-cookie from his Ruby group who taught himself coding over a few months and got a job through sheer persistence. He mentioned being impressed by the progress in your code at day 1 vs day 30 vs day 90. Great to see you're sharing your lessons here.
I don't mean to be a mood killer but that has to be taken with a grain of salt. Ruby/Python/Perl are awesome language for beginner because it abstract so much that they think they know how to code after a day, and when they have to learn a new language like C they are completely lost and produce spaghetti code. That might be ok for web development where you can hack here and there (with JS/CSS/HTML) but I really challenge someone that follows that guide to be a embedded device developer or a software engineer using C or even C# or Java.
Anyway good read but again it should be really emphasize that this is an ok road for a web developer.
Totally want to learn C, but I wouldn't even have thought to try if I hadn't tried ruby first. I got my first look at C digging through the Ruby source code, trying to figure out how it implemented Array.sort.
Ruby opened me up to the world of programming and I look forward to exploring the rest!
If you're looking at how ruby implemented Array.sort you are definitely on the right track !
I'm not sure that's how all people who started with Ruby/Python are evolving but that's good. However I'm not too comfortable trying to lure people to believe that you can write a web client in 2 lines :/
PS: Got downvoted for making a usefull comment ? Seriously guys you can't give a different opinion than the crowd...
OT: Up until maybe two months ago, the moderation on my posts might not have always been what I wanted, but it at least consistently made sense. Since then, moderation has gotten increasingly erratic. Yay Eternal September?
If you want to learn C check out the CS50 from Harvard. It gives you the basics of programming (which you obviously already know), but focuses on C, and will teach you a lot of the basics. Watch the videos and do the problem sets, it will give you a broad understanding of algorithms, sorting, and C
https://www.cs50.net/lectures/
Right, because you never see bad code in java applications... StringReflectionFactoryInterfaceBean()
If you follow a couple of the OP's points (read a ton, write a ton, talk with people more experienced than you) you can write in basically any language for almost any application.
Read/Do/Talk, isn't that basically what school is, anyway?
I'm not saying that you can't get it wrong if you do Java, please don't make a caricature ;)
I agree with you the Read/Do/Talk is the same for any language my point is it requires much more read (theory/understanding of computers internal) if you do something else than ruby.
Indeed, I did ever worked. Of course you need some breadth of knowledge, but unless the place was absolutely tiny, your low-level developers writing VHDL weren't going to be asked to optimize a SQL query or tweak CSS.
Problem 1: I can't get this damn div to float to the right of my content.
Problem 2: My network card firmware stops acknowledging commands from the driver after 3 days of high utiliization.
If you think you would assign the same person to "solve these problems with code", you're being silly. People specialize and gain expertise in their areas. Use the right tool for the job.
In my opinion, there's a certain set of core rules, you need to learn, after which it's relatively easy to transfer your knowledge between programming languages and domains. I'm fairly sure you can get this fundamental toolbox in any language.
Btw. I don't agree with the sentiment that it's somehow easier to learn web development than writing device drivers or other closer-to-the-metal stuff. On the contrary - web development is chaotic and complex. Low level stuff is much more straight forward. It might be less accessible, but I don't believe it to be fundamentally harder.
My first thought reading through was "heh, but now that I'm in NYC... I wonder what my chances are..." and then bam... there ya go! I'm glad to see stuff like this, and totally agree with the points– especially the whole git-like-a-boss bit.
The problem with self-learning is one of discipline and motivation. I started a learn-to-code startup and iterated 7 times (now profitable). It's nearly impossible to keep someone engaged without having a human involved. When I think back to how I learned to program, it wasn't alone. I surrounded myself with CS students. And I had a lot of intrinsic motivation before I started.
Join a program like Dev Bootcamp. You'll save an enormous amount of time by working alongside other people with similar goals, and the social pressure will keep you on your toes.
I haven't been through as a student, although I know many students would say it was worth it. I've watched two classes graduate, and I'm impressed with the curriculum.
90% of Dev Bootcamp's previous class got offers of $80k/year, compared to a college education where 50% of graduates will be underemployed or jobless. The $12k tuition feels too low if it's certain that you'll get 6x the return in the first year.
I've tried to learn Ruby and don't think it is for me. Too hard to deal with setting up my environment and the language just does not come easily to me.
Can you recommend a program like yours that is of very high quality that focuses on Python, JavaScript (possibly with HTML/CSS) or Objective-C?
What problems did you have with the Ruby environment? I went through this several months ago, and maybe can help you get set up, if you're still interested in Ruby.
...then don't use rvm..there is a version of ruby that comes pre-installed on your Mac, use it. Get one ruby book and read through it, don't worry if you don't understand everything the first time, by the second time you read it, things will make more sense. Also work through the examples in the book.
Any kinds of loans/financial aid for people who can't afford it? I came to SF with the goal of becoming a good programmer, but have a net worth of about 3.5k, one of which is this computer.
While I absolutely applaud the effort and tenacity of this individual, at the same time, I feel a substantial amount of trepidation regarding the current state of the tech / start-up industry.
Virtually every hot new startup I see on blogs, it just takes a few minutes of basic penetration testing to find gaping security holes. Everything from simple XSS or CSRF to blatant leaking of sensitive user data. Obviously he was hired at a "junior" level but I've interviewed plenty of "senior" candidates who, 5 years ago, would have been "junior" with their skillset and this guy would probably be a coffee-fetching intern. We keep lowering the bar (due to the crazy imbalance of talent vs. jobs right now) in hiring practices and the long-term impact of this practice has me worried.
On the flip-side, seeing all of these amazing ideas being brought to life and fostering such a strong sense of innovation is amazing to see.
When I was hired it was with the very clear understanding that I was to be taught a lot and I was being hired for my desire to learn. Sometimes if you can't find a qualified candidate you have to train them.
You have a great attitude. Reminds me of my start as well ~10 years ago, and now I work on a project that 700+ million people use / month. I think curiosity is the best skill a developer can have, because with it, they can learn just about anything else they need to. Congrats and good luck!
Yes, and that "have to train them" is the truth that's missing from a lot of these conversations: all these startups want "rock star" devs but they don't want to invest anything in training. But no matter what the skill level of your devs, companies should be investing in lots of training anyway to stay competitive.
This is a more pervasive problem than just the tech industry. Many industries in the U.S. have limited to no training and no mentor programs. Training is perceived as an easy cost to eliminate.
Is this a metaphorical point, or do you actually have knowledge of the civil engineering job market? I wouldn't think that civil engineering would find itself in a similar place as the software industry, because civil engineering work seems like it would be more constant over time and less susceptible to bubbles. This would mean the demand for new civil engineers would be relatively time constant.
However, I know nothing about the job market for civil engineers, so if you do, could you please horrify me and tell me that civil engineering standards have actually fallen in recent times?
I've just graduated in Civil Engineering and many of my peers are seeking jobs in the industry (UK).
In terms of market conditions, you are quite right in that although volumes do fluctuate with economic conditions, work is always required (remedial work for example). Also, and I can only speak for the UK here, in tougher economic times the government often tenders large infrastructure projects to boost demand (think HSR).
The other reason civ eng is quite different is due to a high level of regulation and accreditation, in most countries you simply cannot practice (legally) if you are not chartered. This is one of the major factors that drove me away and into an industry where i could move much faster, with more freedom and lesser consequences (most of the time!!).
UK specific: very tight regulation, including audited software, together with economy of scale leading to standardised and 'modular' construction. I don't think people here would like being a civil engineer, it's a very conservative profession.
Construction is notoriously cyclic: demand for civils will ramp up when the next boom comes along.
I was not replying to the point about lowering the bar due to market demand. Though, now that I think about it, if you were a very bright engineer, would you go into a lackluster career in civil that would start out at $45k and only find small increases in salary now that there is little demand for housing, or would you go into software? So clearly there is going to be brain drain. But I was not referring to market economics. See my point above (http://news.ycombinator.com/item?id=4412278).
I will say that my point did not suggest "horror" - as in horrifying you. Leaking sensitive user data is not, in my opinion, on par with a bridge completely structurally failing while traffic is on it. Unless of course the web app is for a bank. Which is the sort of security work that likely does not have the coffee fetching intern designing its protocols. But even then, I think as a society we are clearly willing to have many more cases of ID theft than deaths from bridge failure.
The comparison should be equal: are there bridges that require maintenance more often than is reasonable? Is their lifespan long enough? Are their piers sunk deeply enough to accommodate the scour of the river (we have several bridges here locally that are under restoration efforts because the scour was not adequately considered)? Was the water surface elevation of the design storm of the river accurately predicted to which the answer is realistically always no; there is no such thing as accuracy in backwater analysis - for before one even begins to model the river, one has to assume how MUCH water it could have - and that can vary widely, being a combination of not-always-comprehensive statistical analysis of historical precipitation, stream gauge data, and semi-empirical algorithms - stress on the semi.
Now, see my above comment about how civil plans actually get out the door, and I would say this is not a metaphor. We know from experience that if a "hot new startup" or even a stodgy old site (linkedIn, eHarmony, Last.FM) loses user data, it is not the end of the world, let alone the end of the startup. If a bridge fails and falls, the PE loses his licence. If the bridge fails and requires extra maintenance, the county and the firm lawyer up and the JDs make a lot of money in court.
Before you can design a bridge, you have to graduate with a four year degree in Civil Engineering. Then you have to pass the Engineer In Training (EIT) exam, then work for four years in the industry (helping with, but never actually able to sign off on, designs), then pass the Professional Engineer (PE) exam specific to the discipline you now have 4 years experience with.
Then you get to design your first bridge and put your stamp and signature on the plans.
So, with that knowledge, how exactly does civil engineering have problems with untrained entry level people signing off on designs for bridges that readers here are likely to drive over?
Are you on the ethics review board? Or can one speak frankly here about engineering?
You do not need a degree to be an EIT.
You do not need to have studied engineering to be a PE.
The CAD tech who assists in design (to the review board:"so I've been told by our competing firms") does not even need a high school diploma.
The PE who seals the plan is human. He had four projects going, they all have deadlines, and he trusts his staff to get it right. He checks as much as he can, but he doesn't have the time or the skill to check everything. He often cannot even check his own assumptions on many calculations because half his focus and career development is on project management and business development. It has not been on double checking the basis of the formulas his software has implemented.
If you're going for an EIT without a degree, you're required to have 20 years of experience (in my state at least). Any decent engineering firm is going to have a quality control process in place to ensure that someone reviews drawings before they're stamped and signed (maybe not necessarily the person stamping and signing them).
Yes, there is a level of trust involved, but "I had four other projects going" is not going to be an acceptable excuse if a bridge collapses.
Additionally: In AZ one can test for the EIT without a degree after four years of work experience (thus, you can start at 18, work instead of school, and still be at the same point as a college grad at 22: an EIT).
Although I really sympathize with your frustration at the amount of crappy software being written, the alternative is the same software not existing at all; there aren't nearly enough programmers to write everything we need.
In most cases, I would prefer crappy, insecure software to nothing, so I'm all in favor of newbie programmers trying their hand at filling the holes in our world. (Also, newbie programmers working now increases the expected amount of skilled programmers fifteen or twenty years from now.)
Oh I agree with you. I'm extremely ambivalent on the situation.
Except for the abundance of "Share thoughts/messages/pictures/music with your significant other/close friends/social network/professional network/the world on our exclusive app!". We have enough of that software.
We sort of have enough (for me, zero of those is enough) but I think more is still better than less, since individual applications of that type might come up with some useful ideas that get adopted by others.
I suspect that's the result of over-hiring (giving a $150K senior position to someone who should be junior). I think it's less a matter of experience than laziness: I've met too many CS majors and/or devs with 10 years of experience who write this code. They get lazy, complacent, and confident, and never grow.
On the other hand, the OP has a hunger: I suspect he'll continue to grow if he stays hungry. You don't magically write better code by sitting in a desk for 5 years: you write better code by seeking growth.
Just a heads up, that fixed position element makes for a verrry annoying mobile experience, especially when someone taps to zoom in. This is probably the most common source of my frustration with the mobile web--those annoying social share sidebars that are position-fixed are the primary perpetrators.
I noticed you're using onswipe though which helps, but if someone is using some third party Hacker News reader, onswipe won't load.
Having derailed this thread enough, I love everything about this. Ill never get enough of hearing people's success stories.
Yay, that's exactly what our industry needs; more cargo cult programmers writing terrible software! Let's just be glad that this RoR guy isn't building anything safety critical.
TLDR If you work your ass off you can get a job doing what you love in a relatively short amount of time.
I wasn't claiming that I am an awesome programmer but I got good enough to put myself into a position where I could learn from awesome programmers, on the job, while getting paid.
Bravo, and if you keep working your ass off you will be an awesome programmer.
I did the same thing, by the way, though it was ages ago, so no Github or anything like that. The only thing I'd change, looking back, is that having got that first job I allowed myself to get stuck. I was doing one kind of work using one set of tools and even though I got good at it and made money at it, it constrained me mentally. A lot of programmers fall into this trap. It's insidious because you don't know you've fallen into it. Something ends up having to shock you out of it and that is not a good place to be. Perhaps if I had studied CS I would have started out with a broader sense of the field. In the end it took quite an effort to maneuver my boat into larger (and deeper) streams.
ok then. I guess the party pooper comments come from a different view on what is learning to program, and that different view comes from a different experience. Many people forget that today self-learning is much easier than, say, 12 years ago; yet knowing theory on 'how stuff works' is no less important than back then. Good luck on your job.
Learning to program is learning to program is learning to program. "Programmer" isn't a protected title, it's not a title you earn, it's a description of a thing you do. Farmers farm, birdwatchers birdwatch, programmers program. There's no interpretation available in the phrase "learn to program."
not sure if you realize I agree with you. programming is such a broad occupation that even among programmers themselves there is a lot of discourse often tending towards 'no true scotsman' fallacies (usually comming from low-level to higher).
How very positive and encouraging of you. Exactly what our industry needs, elitist developers who don't want to grow the industry. You know, there is a shortage of strong developers available and you were a beginner too at one point.
Our industry already contains far too many "engineers" who don't understand what their code is doing at a basic level. I have absolutely no problem with people teaching themselves how to program (I did). I have a problem with said people expecting a job after six months of practice. If you want to work with people like that then feel free to hire them, I won't.
I tend to think that the success of "this RoR guy" has more to do with the Brand Equity and Mind Share that Ruby on Rails has amongst Management/Recruitment than anything else really.
It's alot easier to call for Rails devs since it's so ubiquitous at this point; as opposed to, "We need a Python dev with Django/Flask/Webapp2/Pylons/Tornado experience", the Ruby on Rails echo chamber -- because of its "singularity" feeds itself...
We've been talking a lot lately about the decline of quality commentary on HN, and the increase of negativity and snarkiness. Parent is a great example.
OP, I enjoyed the post and forwarded it on to some friends. Nice work!
I have been reading HN for years, my account creation date is irrelevant. However, I agree with you; my comment was terse, snarky, and didn't allow for any real debate.
However, I my stance doesn't change one bit. Six months is not enough time to learn enough to be a good software developer, period. I am a self taught software engineer, but it took a long time before I was capable of writing production quality code (certainly more than 6 months) and I am of course still learning.
We don't need more people like this in the field. I interview enough of them and I can't stand it. Great, so you can write a basic website propped up by a massive framework.
Do you know how to troubleshoot performance problems? Can you diagnose non-trivial issues, perhaps relating to the underlying hardware? Is your code maintainable? Does it account for edge cases properly? Is it robust enough to withstand serious use?
Probably not. I am 100% behind anyone who wants to learn how to program. I am not behind hiring them at the size month mark. I used RoR in a pejorative manner because it is kiddie stuff. Anyone can teach themselves to use it pretty quickly, but that doesn't make you a good engineer ("programmer", whatever.)
Our industry is full of incompetent people, we don't need more of them. I work in a systems group and I don't see this problem in mechanical or electrical engineering. Sure, there will always exist people who are in the lower ranks of their respective field, but in software we are inundated by people who simply have no clue what they are doing beyond the most basic of tasks.
This is a problem, so when I see "How to get a developer job in six months" it makes me cringe. It trivializes what we do and no one is ready for prime time after six months.
Really awesome to see a self-taught success story like this. Love the dedication Jeff!
A side point of advice for anyone wanting to learn programming and still in college: DEFINITELY take an introductory programming class. There's endless amounts you can learn online, but learning the fundamentals through languages like C and Scheme gives you great perspective when you do pick up web code.
I'm guessing my blog couldn't handle front-page HN traffic either. Yeah, it's easy enough to fix and I can think of a dozen different ways to do it in under an hour, but as the OP said in another comment, the site gets so little traffic it was never a concern. Same with mine.
It's really frustrating reading all the negative comments here. What happened to positive support for people in our community? This guy had a passion, worked his butt off and got a good result... I'm sure he'll go on to many more good things in the future. We should applaud and celebrate this, not knock down how he's not a senior developer yet. Congratulations Jeff!!
It is great to see these posts and I absolutely applaud him for what he has achieved.
Programming, like any other profession takes time to master, how would you react to "How to become a brain surgeon in less than 6 months"?
If you were to have a brain surgery would you choose the guy who was unemployed 6 months ago, or the other one who has been performing these surgeries for the last 20 years, every day?
My point, comparing the two, is to highlight that both of these professions affect us, one a bit more dramatically than the other.
If every medical student got to be a brain surgeon in less than 6 months we would have many more tragic accidents costing lives or making someone permanently disabled but there are many barriers in front of them that prevents this kind of thing and gives the patient some confidence.
I argue that there should be something similar in place in the field of development/programming.
In the same way that I would prefer the more experienced surgeon, I'd prefer the websites I use to be programmed by more experienced programmers, how about the cars we use? the airplanes?
It's perfectly fine for a company to ask for a developer with more years of experience. However, the post mentions a junior developer position, which means they do not expect him to know things that developers with 20+ years experience (according to your surgeon example) do.
The comparison you draw is intellectually dishonest.
Many of the articles submitted to HN that frame programming as a craft get a lot of support. And just as traditional crafts are taught through apprenticeships, I believe that the same holds true for programming. Software shops can easily find a place for enthusiastic candidates with aptitude and commitment (as demonstrated by the OP). There are plenty of tasks that the new apprentice could help with until fully trained. This is how bricklayers (a fairer comparison than brain surgeon, you'll agree) are trained, and you don't see many houses falling down.
So I take it you'd never hire someone who is just graduated either, based on your argument? Of course there is a learning curve to anything, even brain surgery. If he has basic ability, why not hire him? It seems the company knows what it is getting itself into. As someone else pointed out, it's a junior position -- they're not looking him to be a project manager or anything.
Not to mention that the consequences of hiring a noob programmer vs. hiring a noob brain surgeon are on totally different levels ....
This is great motivation. I've been doing much the same as you, just over a longer period of time, but I've been a little too intimidated to put myself out there so to speak. It is great to know others are getting results in return for their determination.
Awesome write up; thanks for sharing. I'm a self-taught developer too, although it took me more than 6 months to get my first job.
One technique I'd add to your list is, "Find online programming communities and take part in them." I learned an incredible amount from development-oriented mailing lists over the years, and I still do.
I got some of these same bitter, angry, defensive responses when I posted my "how I became a developer" post a while back. I dunno what it is about programmers here but for some reason "programmer" is considered some sacred title you have to earn. Whatever.
If you read past the title you'll notice that the guy got a job as a JUNIOR developer. The email he sent out was looking for an internship/apprenticeship/junior programming position open in the area. Doesn't look like he is trying to run before he can walk...
Right on! The nerve of some programmers to think their profession is in the same league with the big boys that need college and university degrees! Who do they think they are, some kind of scientists or engineers?
I know plenty of programmers without degrees, I was extremely surprised some of them didn't because they were so bloody good! The thing is with having an IT degree, this industry moves so quick how much of what you learnt is still relevant (aside from the OO and SQL)... You have to be CONSTANTLY re-learning new tech otherwise you're not going to be a very good/relevant programmer for long!
You're projecting. I have no degree. I've taken the time to teach myself the fundamentals. Dueling anecdotes here obviously but we all know plenty of people with CS degrees who are worthless when it comes to tackling a problem, and plenty of people without who are credits to their profession.
Programmers program. If someone programs, they're a programmer. My daughter uses scratch to write software. She's 8, the software is not sophisticated but it's software. She's a programmer.
This sounds as serious as claiming your daughter is a civil engineer because she builds LEGO buildings or she's a biologist because she knows to feed her goldfish. At the end of the day we need some terminology that distinguishes the guy that took a semester to learn MS Access from the one that took 4 years to study CS in university.
It's an unfortunate common theme in HN but I can't think off the top of my head other white collar professions with such contempt for degrees and formal education. Are all the other fields doing it wrong or is programming so much easier than everything else that justifies the constant pat on the back for roll-you-own education?
But I've met plenty of people who come out of uni with a CS degree and don't know squat. I totally get the distinction, and there needs to be a distinction between someone playing around, someone who is a junior and someone who is truly brilliant. But it doesn't require a degree to reach that top level.
I only took some CS modules at uni, I learnt everything I know either on the job or off my own back, including OOP, JavaScript/OOJS, advanced HTML and CSS. They didn't teach you the difference between browsers either (I started back in IE4/Netscape days).
What this guys daughter decides that at 18 years old (and now having programmed for 10 years) it's not worth going to uni because a) it'll cost too much and b) might as well get a 4 year head start over everyone else. So by that time she'll have 14 years experience. I think that would count for a hell of a lot more than a formal education. There's nothing magical about programming that a google search will not reveal.
I'm almost afraid to tell you this given how important the title "programmer" seems to be to you... but the barrier to a stable, enjoyable, productive and well-paid career as a programmer is very, very, very low. Much lower than any other science or engineering field that I can think of.
Jeff, not to criticize but your site is near-unreadable to me (Windows 7, both in Chrome and Opera). Here is an image: http://i.imgur.com/4wXrQ.png
The text is too light at #666 on a white background, which is pretty light on windows (although chrome renders it a bit thicker, it's still pretty light). Also it would look much better if I didn't have Adobe Caslon Pro, as Cambria is pretty normal.
In six months you did more than other hackers I know do in a year. In code, time is relative to effort/motivation. You have both, work will gravitate to you. Now, wait until you start contracting, and find your inbox full of work after posting a for hire ad in HN. Crazy.
To give you some perspective of the relativity of effort/motivation, I know people who have been "learning" for years who just don't sit down and push through. Sure, like others say, your code will have security holes the size of the titanic, but you are still learning. And learning is about finding out what doesnt work. Good luck, and keep hacking.
I should probably do a write-up about how a year later I still do not have a job doing development. Jeff touches on a few things I am pretty sure I would do differently.
I think the most important thing is working on visible projects and seeing them through to completion, as opposed to acquiring more depth through study.
Additionally, I would have went with Ruby instead of Python. Python jobs and internships seem to fall more within an area where people demand a CS degree background, at least in this region. With RoR the demand tilts heavily toward webdev, which doesn't require 4 years of CS to be productive.
I definitely still think it's possible for motivated and tech-savvy people to do what Jeff has done.
I'm debating whether to learn Python or Ruby. And the initial post as well as this one has me leaning towards Ruby despite all the good things that have been said about Python.
Are there non CS majors out there that picked up Python as a first language and had doors opened for them?
I majored in Economics and taught myself Python starting my Sophomore year of college. I am now gainfully employed in a job creating modeles (economic and otherwise, essentially R&D) for the rail industry. My day to day activities consists of writing Python code, and my ability to rapidly prototype ideas with Python was one of the major reasons I was hired.
That being said, don't debate, just pick one and go with it. For every person who tells you that Ruby is better at X, or Python is better at Y, you'll find another person doing X in Python or Y in Ruby. The best advice I can give you is to find a book/tutorial that works with your learning style and go for it. Then grab a fun project as soon as possible and work on it.
If one is starting to learn on their own in their 2nd or 3rd year in college, I think Python is definitely a good place to start. You will have more doors still open to you as a college student as far as internships go.
I also think people who are still in college might as well take the intro classes so they can take the more advanced data structures and algorithms classes, in addition to extra maths.
It's also good to be around other people who are studying CS while in university. The networking benefits shouldn't be underestimated. And making friends with people who are also passionate about the topic is great for many other reasons.
If you're from more of a math background (with maybe a little MATLAB knowledge). Python's a great language for machine learning and natural language processing tasks. Great glue language, lots of libraries, prototype quickly, scale with multiprocessing or Hadoop streaming or pycloud. Build your own analysis stack or classifier then display the results on the web with Bottle or Flask.
These are true statements about Python's strengths. I don't realistically see how those are going to help you get a job unless that job also takes an advanced degree, or at the very least a BS touching on a field you have specialized knowledge of.
I've been stuck in this exact same place for the last one year or so. I wanted a job in machine learning or possibly NLP and python is my language of choice, while the language is an excellent tool for these tasks I have not been able to find jobs in ML or NLP possibly because both of these fields involve quite a bit more than the programming related work.
To top this off I live in India and it has been difficult to find quality jobs here; the ones that will hire a less experienced person like me, of course :-)
Good point. I'm perhaps generalizing too much from my own experience (which is admittedly of having an advanced degree in mathematics and being a recent Silicon Valley transplant).
I think every minute spent thinking about which one to pick is a minute you could have spent learning either of the languages, I think it really doesn't matter which. Once you master one the other one will be a lot easier to learn as they're so similar. Just flip a coin, pick one now! :)
The two are about the same with regards to employment and educational purposes. If you happen to like one, go with it, otherwise you can just flip a coin and get to the real problems!
Python is great in itself, but it seems to me that there are significantly more jobs for junior Ruby coders than junior Python coders... there is no reason you can't learn one after learning the other, though
I used to hire in a shop that did a lot of Ruby and if we were hiring for a junior position, Python was perfectly acceptable as a language to know. Knowing a dynamic language, being the type of person who teaches themselves, and being able to have visible code was what really mattered.
We found that we could drop capable juniors in a project that has some senior leadership and they were able to pick it up quickly.
182 comments
[ 2.7 ms ] story [ 163 ms ] threadThe biggest similarity I noticed between myself and the OP is that you have to put yourself in the way of opportunity. For me it was building side projects and hosting Startup Frontier. For the OP it was ruby meetups and send out an email to the list.
It takes a lot of guts to cold-email people like that, I have a lot of respect for the OP. Good work!
You just need to have enough background to make it through the ramp-up phase and start teaching yourself. That holds true whether you went to college or are self-taught.
TW is a great company to work for (if you are working on enterprise software, and you don't mind some agile/oo rah rah ism) but for someone with no experience, it is an absolute no brainer. Its training program is the most effective I've seen in my career.
Edit: Dont forget about IRC!!!!
I'd say if you don't start talking OT in a IRC channel dedicated to a piece of software/tech, it has a direct positive influence on your skills, which in turn directly influences your job seeking chances. Also, you can meet prospective employers that way.
Git pushes really give an indication the progress, skills, "actual work" and ideas to re-prioritize or launch.
Sorry if it sounds obvious but I really feel in a resource crunched situation the best one can do is to push out as much as possible to git and take them further to push to the real world to get some real feedback!
Back to the topic .... if the start-up doesn't stick on ... surely it can get a great job with a great employee!
Gavin actually talked about you in one of the past meetups, saying how he knows one smart-cookie from his Ruby group who taught himself coding over a few months and got a job through sheer persistence. He mentioned being impressed by the progress in your code at day 1 vs day 30 vs day 90. Great to see you're sharing your lessons here.
Anyway good read but again it should be really emphasize that this is an ok road for a web developer.
Ruby opened me up to the world of programming and I look forward to exploring the rest!
PS: Got downvoted for making a usefull comment ? Seriously guys you can't give a different opinion than the crowd...
OT: Up until maybe two months ago, the moderation on my posts might not have always been what I wanted, but it at least consistently made sense. Since then, moderation has gotten increasingly erratic. Yay Eternal September?
I just want to feel free to express an opinion that is not mean but is a change from: "great post, that's the way to go !"
If you follow a couple of the OP's points (read a ton, write a ton, talk with people more experienced than you) you can write in basically any language for almost any application.
Read/Do/Talk, isn't that basically what school is, anyway?
I agree with you the Read/Do/Talk is the same for any language my point is it requires much more read (theory/understanding of computers internal) if you do something else than ruby.
There's more than enough work out there, why must a web dev know or care how to twiddle bits, or vice versa?
Honestly it's almost a requirement to be able to adapt to other languages or at least read and understand what it does.
Not that they couldn't, but why would you?
We don't code, we don't write code... we solve problems with code... there's why.
And if you're not eager to learn all of these... you should think about a change in careers
Problem 2: My network card firmware stops acknowledging commands from the driver after 3 days of high utiliization.
If you think you would assign the same person to "solve these problems with code", you're being silly. People specialize and gain expertise in their areas. Use the right tool for the job.
Btw. I don't agree with the sentiment that it's somehow easier to learn web development than writing device drivers or other closer-to-the-metal stuff. On the contrary - web development is chaotic and complex. Low level stuff is much more straight forward. It might be less accessible, but I don't believe it to be fundamentally harder.
Best. Quote. Ever.
I am re-motivated to continue learning programming.
Nice work sir. Congrats.
Join a program like Dev Bootcamp. You'll save an enormous amount of time by working alongside other people with similar goals, and the social pressure will keep you on your toes.
I ask because it has quite a large upfront cost... perfectly reasonable if it really is that great.
90% of Dev Bootcamp's previous class got offers of $80k/year, compared to a college education where 50% of graduates will be underemployed or jobless. The $12k tuition feels too low if it's certain that you'll get 6x the return in the first year.
Here are three student reflections on Dev Bootcamp:
- http://douglascalhoun.tumblr.com/post/26059106238/beautiful-...
- http://newbietoruby.wordpress.com/2012/03/30/devbootcamp-ref...
- http://mehulkar.tumblr.com/post/18897643140/devbootcamp-test...
And here is a Quora thread with a lot of relevant responses: http://www.quora.com/Ruby-on-Rails/Should-I-quit-my-job-and-....
Please feel free to ask any other questions!
I've tried to learn Ruby and don't think it is for me. Too hard to deal with setting up my environment and the language just does not come easily to me.
Can you recommend a program like yours that is of very high quality that focuses on Python, JavaScript (possibly with HTML/CSS) or Objective-C?
Virtually every hot new startup I see on blogs, it just takes a few minutes of basic penetration testing to find gaping security holes. Everything from simple XSS or CSRF to blatant leaking of sensitive user data. Obviously he was hired at a "junior" level but I've interviewed plenty of "senior" candidates who, 5 years ago, would have been "junior" with their skillset and this guy would probably be a coffee-fetching intern. We keep lowering the bar (due to the crazy imbalance of talent vs. jobs right now) in hiring practices and the long-term impact of this practice has me worried.
On the flip-side, seeing all of these amazing ideas being brought to life and fostering such a strong sense of innovation is amazing to see.
However, I know nothing about the job market for civil engineers, so if you do, could you please horrify me and tell me that civil engineering standards have actually fallen in recent times?
In terms of market conditions, you are quite right in that although volumes do fluctuate with economic conditions, work is always required (remedial work for example). Also, and I can only speak for the UK here, in tougher economic times the government often tenders large infrastructure projects to boost demand (think HSR).
The other reason civ eng is quite different is due to a high level of regulation and accreditation, in most countries you simply cannot practice (legally) if you are not chartered. This is one of the major factors that drove me away and into an industry where i could move much faster, with more freedom and lesser consequences (most of the time!!).
Construction is notoriously cyclic: demand for civils will ramp up when the next boom comes along.
I will say that my point did not suggest "horror" - as in horrifying you. Leaking sensitive user data is not, in my opinion, on par with a bridge completely structurally failing while traffic is on it. Unless of course the web app is for a bank. Which is the sort of security work that likely does not have the coffee fetching intern designing its protocols. But even then, I think as a society we are clearly willing to have many more cases of ID theft than deaths from bridge failure.
The comparison should be equal: are there bridges that require maintenance more often than is reasonable? Is their lifespan long enough? Are their piers sunk deeply enough to accommodate the scour of the river (we have several bridges here locally that are under restoration efforts because the scour was not adequately considered)? Was the water surface elevation of the design storm of the river accurately predicted to which the answer is realistically always no; there is no such thing as accuracy in backwater analysis - for before one even begins to model the river, one has to assume how MUCH water it could have - and that can vary widely, being a combination of not-always-comprehensive statistical analysis of historical precipitation, stream gauge data, and semi-empirical algorithms - stress on the semi.
Now, see my above comment about how civil plans actually get out the door, and I would say this is not a metaphor. We know from experience that if a "hot new startup" or even a stodgy old site (linkedIn, eHarmony, Last.FM) loses user data, it is not the end of the world, let alone the end of the startup. If a bridge fails and falls, the PE loses his licence. If the bridge fails and requires extra maintenance, the county and the firm lawyer up and the JDs make a lot of money in court.
Before you can design a bridge, you have to graduate with a four year degree in Civil Engineering. Then you have to pass the Engineer In Training (EIT) exam, then work for four years in the industry (helping with, but never actually able to sign off on, designs), then pass the Professional Engineer (PE) exam specific to the discipline you now have 4 years experience with.
Then you get to design your first bridge and put your stamp and signature on the plans.
So, with that knowledge, how exactly does civil engineering have problems with untrained entry level people signing off on designs for bridges that readers here are likely to drive over?
You do not need a degree to be an EIT. You do not need to have studied engineering to be a PE. The CAD tech who assists in design (to the review board:"so I've been told by our competing firms") does not even need a high school diploma.
The PE who seals the plan is human. He had four projects going, they all have deadlines, and he trusts his staff to get it right. He checks as much as he can, but he doesn't have the time or the skill to check everything. He often cannot even check his own assumptions on many calculations because half his focus and career development is on project management and business development. It has not been on double checking the basis of the formulas his software has implemented.
Yes, there is a level of trust involved, but "I had four other projects going" is not going to be an acceptable excuse if a bridge collapses.
Additionally: In AZ one can test for the EIT without a degree after four years of work experience (thus, you can start at 18, work instead of school, and still be at the same point as a college grad at 22: an EIT).
In most cases, I would prefer crappy, insecure software to nothing, so I'm all in favor of newbie programmers trying their hand at filling the holes in our world. (Also, newbie programmers working now increases the expected amount of skilled programmers fifteen or twenty years from now.)
Except for the abundance of "Share thoughts/messages/pictures/music with your significant other/close friends/social network/professional network/the world on our exclusive app!". We have enough of that software.
On the other hand, the OP has a hunger: I suspect he'll continue to grow if he stays hungry. You don't magically write better code by sitting in a desk for 5 years: you write better code by seeking growth.
I noticed you're using onswipe though which helps, but if someone is using some third party Hacker News reader, onswipe won't load.
Having derailed this thread enough, I love everything about this. Ill never get enough of hearing people's success stories.
I wasn't claiming that I am an awesome programmer but I got good enough to put myself into a position where I could learn from awesome programmers, on the job, while getting paid.
I did the same thing, by the way, though it was ages ago, so no Github or anything like that. The only thing I'd change, looking back, is that having got that first job I allowed myself to get stuck. I was doing one kind of work using one set of tools and even though I got good at it and made money at it, it constrained me mentally. A lot of programmers fall into this trap. It's insidious because you don't know you've fallen into it. Something ends up having to shock you out of it and that is not a good place to be. Perhaps if I had studied CS I would have started out with a broader sense of the field. In the end it took quite an effort to maneuver my boat into larger (and deeper) streams.
It's alot easier to call for Rails devs since it's so ubiquitous at this point; as opposed to, "We need a Python dev with Django/Flask/Webapp2/Pylons/Tornado experience", the Ruby on Rails echo chamber -- because of its "singularity" feeds itself...
Everyone wants Rails guys
Bravo, RoR, bravo.
We've been talking a lot lately about the decline of quality commentary on HN, and the increase of negativity and snarkiness. Parent is a great example.
OP, I enjoyed the post and forwarded it on to some friends. Nice work!
However, I my stance doesn't change one bit. Six months is not enough time to learn enough to be a good software developer, period. I am a self taught software engineer, but it took a long time before I was capable of writing production quality code (certainly more than 6 months) and I am of course still learning.
We don't need more people like this in the field. I interview enough of them and I can't stand it. Great, so you can write a basic website propped up by a massive framework.
Do you know how to troubleshoot performance problems? Can you diagnose non-trivial issues, perhaps relating to the underlying hardware? Is your code maintainable? Does it account for edge cases properly? Is it robust enough to withstand serious use?
Probably not. I am 100% behind anyone who wants to learn how to program. I am not behind hiring them at the size month mark. I used RoR in a pejorative manner because it is kiddie stuff. Anyone can teach themselves to use it pretty quickly, but that doesn't make you a good engineer ("programmer", whatever.)
Our industry is full of incompetent people, we don't need more of them. I work in a systems group and I don't see this problem in mechanical or electrical engineering. Sure, there will always exist people who are in the lower ranks of their respective field, but in software we are inundated by people who simply have no clue what they are doing beyond the most basic of tasks.
This is a problem, so when I see "How to get a developer job in six months" it makes me cringe. It trivializes what we do and no one is ready for prime time after six months.
A side point of advice for anyone wanting to learn programming and still in college: DEFINITELY take an introductory programming class. There's endless amounts you can learn online, but learning the fundamentals through languages like C and Scheme gives you great perspective when you do pick up web code.
Ironic? Yes. Damages credibility? Nope.
Programming, like any other profession takes time to master, how would you react to "How to become a brain surgeon in less than 6 months"?
If you were to have a brain surgery would you choose the guy who was unemployed 6 months ago, or the other one who has been performing these surgeries for the last 20 years, every day?
My point, comparing the two, is to highlight that both of these professions affect us, one a bit more dramatically than the other.
If every medical student got to be a brain surgeon in less than 6 months we would have many more tragic accidents costing lives or making someone permanently disabled but there are many barriers in front of them that prevents this kind of thing and gives the patient some confidence.
I argue that there should be something similar in place in the field of development/programming.
In the same way that I would prefer the more experienced surgeon, I'd prefer the websites I use to be programmed by more experienced programmers, how about the cars we use? the airplanes?
Many of the articles submitted to HN that frame programming as a craft get a lot of support. And just as traditional crafts are taught through apprenticeships, I believe that the same holds true for programming. Software shops can easily find a place for enthusiastic candidates with aptitude and commitment (as demonstrated by the OP). There are plenty of tasks that the new apprentice could help with until fully trained. This is how bricklayers (a fairer comparison than brain surgeon, you'll agree) are trained, and you don't see many houses falling down.
Not to mention that the consequences of hiring a noob programmer vs. hiring a noob brain surgeon are on totally different levels ....
Jeff, congrats from another (ashamed for the moment) programmer.
One technique I'd add to your list is, "Find online programming communities and take part in them." I learned an incredible amount from development-oriented mailing lists over the years, and I still do.
A lot of it seems to be ego. People want the shortest path to claiming a title.
Ignore silly titles and categorizations. Just make good art.
</sarcasm>
Programmers program. If someone programs, they're a programmer. My daughter uses scratch to write software. She's 8, the software is not sophisticated but it's software. She's a programmer.
It's an unfortunate common theme in HN but I can't think off the top of my head other white collar professions with such contempt for degrees and formal education. Are all the other fields doing it wrong or is programming so much easier than everything else that justifies the constant pat on the back for roll-you-own education?
I only took some CS modules at uni, I learnt everything I know either on the job or off my own back, including OOP, JavaScript/OOJS, advanced HTML and CSS. They didn't teach you the difference between browsers either (I started back in IE4/Netscape days).
What this guys daughter decides that at 18 years old (and now having programmed for 10 years) it's not worth going to uni because a) it'll cost too much and b) might as well get a 4 year head start over everyone else. So by that time she'll have 14 years experience. I think that would count for a hell of a lot more than a formal education. There's nothing magical about programming that a google search will not reveal.
The text is too light at #666 on a white background, which is pretty light on windows (although chrome renders it a bit thicker, it's still pretty light). Also it would look much better if I didn't have Adobe Caslon Pro, as Cambria is pretty normal.
I loved the content.
To give you some perspective of the relativity of effort/motivation, I know people who have been "learning" for years who just don't sit down and push through. Sure, like others say, your code will have security holes the size of the titanic, but you are still learning. And learning is about finding out what doesnt work. Good luck, and keep hacking.
I think the most important thing is working on visible projects and seeing them through to completion, as opposed to acquiring more depth through study.
Additionally, I would have went with Ruby instead of Python. Python jobs and internships seem to fall more within an area where people demand a CS degree background, at least in this region. With RoR the demand tilts heavily toward webdev, which doesn't require 4 years of CS to be productive.
I definitely still think it's possible for motivated and tech-savvy people to do what Jeff has done.
Are there non CS majors out there that picked up Python as a first language and had doors opened for them?
That being said, don't debate, just pick one and go with it. For every person who tells you that Ruby is better at X, or Python is better at Y, you'll find another person doing X in Python or Y in Ruby. The best advice I can give you is to find a book/tutorial that works with your learning style and go for it. Then grab a fun project as soon as possible and work on it.
I also think people who are still in college might as well take the intro classes so they can take the more advanced data structures and algorithms classes, in addition to extra maths.
It's also good to be around other people who are studying CS while in university. The networking benefits shouldn't be underestimated. And making friends with people who are also passionate about the topic is great for many other reasons.
To top this off I live in India and it has been difficult to find quality jobs here; the ones that will hire a less experienced person like me, of course :-)
We found that we could drop capable juniors in a project that has some senior leadership and they were able to pick it up quickly.