I didn't learn programming when I was 12 - <AUTHOR> http://kennyletran.com/blog/ <comment><USER2> _The people who began at a super early age started off having it as a hobby. Whenever they were bored they could fall back on coding for fun. Which then grew their interest in the subject (really important). But then comes middle school. And after that high school. Where most of the time you worry about the upcoming test or college admissions. For others, it will be that one girl or that upcoming party. They didn't completely shun programming out of their life, but they didn't have the time to nurture their knowledge either. Instead they left it as a hobby (still important)._

That wasn't my experience. I learned to code at about 12, but it took over my life. I don't think I talked to a single girl between the ages of 12 and 19, never mind went to parties (didn't help that I went to an all-boys school). I programmed so much I failed my final school exams and couldn't get into a college course; I had to repeat the final year, and I still could only scrape enough marks in subjects like English and French to study at a very humble college, my 20th choice of a ranked list of 20 (this relates to how the college admission system works in Ireland).

And then, I hardly learned anything in college. I knew more than most of my lecturers. I did, however, party as much as I reasonably could in the first two years. But I wouldn't have gotten a job working on the Delphi compiler without my degree; I needed it to qualify for a visa, as Borland wanted their hire to be on-site in CA. But as it turned out I was able to work remotely.

I guess what I'm getting at is that there are more important things than programming at a young age, and getting really deep into it very early is not necessarily a great thing. I certainly don't think it's a life experience to be particularly jealous of.

<comment><USER3> I have had much the same experience. In a way, programming for its own sake is a skill that's worth it to have, but not worth it to learn. The up-front cost is high, and you get very little payout until you've progressed from journeyman to master. It's very like writing in that regard, rewarding perseverance—and, by extension, addiction.

</comment></comment><comment><USER4> I started, well, pre-kindergarten. Or in my teens, for anything major and self-guided. Or at about twenty for producing professional results. Or in my late twenties, as someone who could do research-level algorithms work. Or today.

If I stop using a language for a while, I have to relearn it. The term language is very appropriate - learning and retaining a programming language acts very much like learning and retaining a human language.

My take-homes about "when to learn programming" are:

* If you have kids, expose them to "Hello World" programming early. By which I mean, once they start reading. The cognitive benefits of multilingualism are greatest at early ages when neuroplasticity is high. There are numerous languages and projects which are suited to this. Lego robots should probably feature prominently once they're of an age to not eat the pieces.

* You're never too old to learn programming. The biggest jump in capability _by_ _far_ is between non-programmer and someone who has been at it seriously for a few weeks or months.

* At the same time, start learning programming as early as possible. Learning to be a great programmer takes a lifetime. But very little of that is learning syntax! Great programming takes marketing, art, math, psychology, and whatever else you can cram in. Pretty much any field of human endeavor has something to contribute. "What to program" is far harder to learn than "how to program" - and people who start learning programming later in life will have a lot more to draw on here than some 12 year-old.

</comment><comment><USER5> Starting to program at 18 is early. I took 2 programming courses in college (1 was a Pascal-clone, and the other was an assembly language course), but I essentially taught myself how to program after graduating from college, and have made an entire career out of it, and I'm more than double your age. Don't worry about it, you have plenty of time.

<comment><USER6> I'm glad to hear that. I'm entering my senior year of Economics and I didn't discover that I enjoyed programming until I took an introductory C++ course last semester. The other day I found myself worrying that I had already missed out on my chance, since I can't currently afford any additional semesters.

I'd like to return to study computer science some day, and in the meantime I'm just doing the best I can to learn on my own.

<comment><USER7> I also studied economics in college, but now program professionally, largely due to my experience at at the Federal Reserve Board of Governors. If you are still looking for work after college, and I assume you are, I recommend you check out their Research Assistant program.

<http://federalreserve.gov/careers/ra.htm>

For me it was a great way to parlay my economics training into a programming career, even though that wasn't what I was interested in at the time. It's also a great career stepping stone if you're interested in graduate education (not necessarily econ), government work, policy work, law, or myriad other fields. If you want more info, let me know and we can talk offline.

<comment><USER6> Thank you. I imagine such a position would be very competitive.

I'd definitely be interested in hearing more about your application process, how prepared you felt you were based on coursework, and of course what the job was actually like.

<comment><USER7> Sure, send me an email at douglasrohde at gmail, I can certainly answer those questions.

</comment></comment></comment></comment></comment><comment><USER8> Bear in mind that even DHH (creator of Rails) didn't feel like he got anywhere with learning to program until well into his 20s: [http://37signals.com/svn/posts/2582-how-do-i-learn-to- progra...](http://37signals.com/svn/posts/2582-how-do-i-learn-to-program/)

I know plenty of programmers who are far better than me and have been doing it for a fifth of the time. It's a bit like art in that way. There's a lot you can learn over time and become "wise" about, but in terms of raw output, time isn't as relevant.

</comment><comment><USER9> People are already telling you that eighteen is not too old to learn programming. And they are correct. People start at forty and fifty.

I have a different point to make.

There will always be someone smarter than you. Someone who started younger, learned faster, accomplished more. They're smarter than you are now, and they'll probably always be smarter than you.

Just get used to that as quickly as possible and move on with your life.

Now, in fact it is easy to be the world-champion of something if you qualify it enough. (I probably still hold the world record for building an efficient triangular planar semiconductor ring laser, for example. Nobody cares. Least of all me.) If you insist on occupying the top of some hill on this earth, you can always find a way to build that hill. The easiest way is to build it in your own mind. Don't laugh: People find genuine, lifetime happiness by doing that.

And it is true that genius is ill-defined, and that if you define it by a specific criterion, and then _win_ that criterion, many people still won't accept that you're the biggest genius, because, hey, it's only chess. Or Jeopardy. Or music. Or literature. Or astrophysics.

And it is probably true that, even if you could become the biggest genius in history, no contest, you've won, you're the proverbial Einstein… you'd find it to be a big letdown. You'd feel just as confused as ever. You'd just be confused about harder problems. And meanwhile you'd find yourself _surrounded by people who do not understand the most basic and obvious things_.

But, no, these weak forms of my argument will not make you strong enough. I want to make you very strong, so I want you to visualize the person who is better than you _in every way_ , and also twelve years old. And then I want you to get used to the existence of this person. And get on with your life.

Because other people's genius is not a problem. (Indeed, it's often _really_ handy: Geniuses and prodigies can be good people to know. They do strange and wonderful things. It is fun to be their fan. It can be _really_ fun to be on their team. This is a big reason why I live near MIT.)

If someone else's genius _is_ a problem, it is probably not _your_ problem.

\---

When I was eighteen I was a fairly good math student. I enjoyed high-school math competitions, like the AHSME. I did pretty well. One year, based on my statewide ranking on the AHSME, I got invited to join a team of the top math students from my state to compete against an all-state team from another state.

This was one of the most valuable experiences of my life and I heartily endorse it. Because here's what happened: I got my _ass_ handed to me. My teammates were _freakishly smart_. It turns out that the distribution of math- contest talent is not at all normal, and that being in the top 1% of contest- takers doesn't mean that you're within hailing distance of the top 0.5%. Oh, no.

As I remember it, one of the people on the trip wasn't an official member of our team. He was too young to compete, but was tagging along for fun. I think he might have been twelve. He was a better contest-problem mathematician at twelve than I've ever been in my life, that's for sure.

So what happened? As I remember, I had fun at the competition. I spent the time doing what amounted to janitorial work for the power-solvers at the head of our team: Filling in obvious missing steps, sharpening pencils, whatever. I don't remember. What I remember is that I got to hang around people who _really_ liked math. And then I went home and kept on liking math, but stopped worrying about whether or not I was going to be the second coming of Galois, because I obviously was not.

I have found this attitude helpful, because if I were all hung up on the fact that I'm older, slower, and stupider than many of the folks I hang around with, my ego wouldn't last five minutes around here:

<http://news.ycombinator.com/item?id=35079>

(HN veterans will have figured out, ten paragraphs ago, that this whole essay is basically an excuse to revisit that link from the old days. ;)

<comment><USER10> "I want you to visualize the person who is better than you in every way, and also twelve years old. And then I want you to get used to the existence of this person. And get on with your life."

Better yet: smile and be hopeful because of the existence of such a person.

</comment></comment><comment><USER11> It's never to late to start. If you love it'll work out anyway.

I started "programming" at 10, didn't do anything useful until 16-17. I didn't program for real until I was 25, and it wasn't until I was past 30 that I felt like a proper programmer.

<comment><USER12> Amen. That's the story of my life too. Nibbled around and played around for a long time, but not really getting into it. But boy, when I did get into it, did I get into it! It's been a lot of fun since.

</comment></comment><comment><USER13> Sure, but chillax. You have a long way to go. :) Maybe about 9 years and 10 months before you really get going!

<http://norvig.com/21-days.html>

Most of us old timers (> 21) probably didn't start programming because of TechCrunch hype or even on Web development anyway. Too much emphasis occurs on Web development (oh snap, I said it).

Keep at it but as unpopular opinion as it is, programming _is_ a long slog, not just the product of fliiping out a few RoR projects or going through a couple cool tutorials on Javascript with fancy interfaces (not saying this applies to, just a general comment).

As for whether you wait too long, probably not, but you're only 2 months into this deal, the jury is still out. :) Anyway, there's people in the Valley that would probably say you are toward the end of your career, 25 being basically providing two options, either become a well known, famous guru or straight to the glue factory .

I don't really buy that, but that view is probably more common than mine.

</comment><comment><USER14> I'm 29 and only started programming a year ago.

What's "worse" is that my father is a computer scientist (who was involved in the industry since the 70s) tried to teach me since I was 6 but I was not interested.

My brother was interested and became a very distinguished developer in his own right (working as a developer since he was 12).

The feeling of 'missing out' / 'starting too late' seems to be ageless. I have experienced it many times through many years and it always prevented me from pursuing my passions.

Some might find it funny that a 18 year old will feel that way but I remember feeling the same thing.

By chance however, I stumbled into programming again but this time it caught me. I was finally enticed enough by it's complexity, its interesting problems to solve and the creative outlet it give me to overcome the debilitation of my fears and 'regrets'.

What I found was that if you love doing something, if you enjoy the learning and the rewards that come with it - you stop worrying about where you are in the great scheme of things.

Perhaps it's my age finally telling me that time is not what's has past or how much you still have left but how you are using it now. Use it to enrich yourself and enjoy it as you see fit.

We are wired to compare ourselves with others. But these days we don't need to be the best hunters to survive and flourish, to get the girl and live happily. We just need to find what makes us happy and enjoy doing it. Doing that will just naturally make us the best we can be.

IMHO

</comment><comment><USER15> I'm 22 and only just now going to university. I've had the same issues as the author, about the non-encouraging environment, friends not interested etc. I had the interest sure, but never -really- got into it. Dabbled through Python books and tutorials here and there, tried different languages but never got prolific in any of them. Rarely creating anything outside answers to exercises. But I forgave myself (kinda, I always felt too old when reading about those 12-year old wiz-kids, being 15 and all).

For a long time I considered myself ahead of the curve, for browsing sites like HN, absorbing information from the internet. It was about a year ago I finally realized it doesn't matter if I haven't actually done anything. "Sponge learning" only gave breadth, but no deep knowledge was achieved. I couldn't DO anything.

Nowadays I still think I'm behind my peers. Maybe not behind the average, but it's never the average we strive for. I still feel inadequate and, most likely, will never get rid of that feeling. I concentrate on doing what I can with what I have, getting better and trying not to compare myself too much.

</comment><comment><USER16> Age doesn't matter. I'm 18 and I started when I was 14 or 15, not when I was 12. The nice thing about programming is that most people in developed countries already have most of what they need to start doing it: a computer, an internet connection, and the desire to build something cool. I was drawn to programming because I liked (still do, actually) to build cool things.

I started out trying to make robots but the mental and physical costs were too high. My father works with furniture but even with his resources and expertise building anything all that interesting took more skill than I cared to learn. Programming let me do cool things within a couple of hours of starting out. I still feel like I took the "easy" way out compared to a physical craft like woodworking or electrical engineering, and I'd like to learn more about those at some point. For now, programming will have to do.

EDIT: spacing.

</comment><comment><USER17> I'd say programming is like architecture. Most architects don't start learning their craft until age 20+. Yet those "late bloomers" still go on to do amazing things. If it was as easy to learn architecture as programming, we'd probably see blogs from people wondering if age 18 is too late to start doing architecture.

<comment><USER18> But most architecticts were artistic sketchers at a youndlge age. For programming, something like math or logic or Latin would br analogous.

</comment></comment><comment><USER19> I am one of those guys who has been programming since he was 12 (I call it 11 actually). I'm now 23.

Before I went to college, I thought my programming skill was high enough to get me a good job. I was just going for that piece of paper, the degree.

Two and a half years later I dropped out. I looked back on my 18-year-old self and realized what a terrible programmer I had been. But now I was ready. Some courses and a bunch of awesome internships had prepared me.

A year or so later, I got a job offer at an NYC startup. Looking back on my pride-filled self at that time, I now realize what a terrible programmer I had been.

I'm still at that startup, and it still kicks my ass from time to time. After 11 years of programming, it's still hard to believe there's a cap on knowledge. There's definitely not a cap on experience

<comment><USER20> Started sometime between 8 and 12, depending on how you define it.

I'm 24 now and work at a startup, I had a similar experience to yours, except I dropped out my first quarter of school.

I've changed a lot since 18, I can say that much.

I honestly believe that if you took someone totally naive to programming and put them through an intensive CS + programming apprenticeship, they'd be a better programmer than me in 1 or 2 years easily.

<comment><USER21> It was quite interesting and humbling to see how my university class mates could absorb so much of the mandatory C programming course in only 2 months. Stuff that I had taught myself over the previous 5 years.

I think that the most valuable thing I have is that I'm enthusiastic about programming. These guys could do what I do, but they wouldn't want to make a career out of it.

</comment></comment></comment><comment><USER22> As someone who did learn to program at the age of 12 (and is now 32) I don't think it matters. Programming is not that hard to learn - it's another language that is far more straightforward than trying to learn a spoken language that might have genderizations, weird grammar rules and so forth. The actual learning to program is not complicated.

What is complicated, is the analytical mindset that makes a good programmer. I believe that the better programmers just have this mindset and it is what makes them good at what they do. Coupled with a passion for the technology they are using, this will make them better at what they are doing regardless if they have 2 months behind them, or 20 years behind them - and also regardless of the age they start at.

</comment><comment><USER23> Programming is not a race with one winner. There are a ton of programmers making 6 figures, and the distribution of possible incomes for someone who can program and ... has no real upper bound.

You are very unlikely to be the second coming of John Carmack, but you can still have a plenty good life. Welcome aboard, start your learning curve, and keep it going.

There is only one big tip that I have. A level people like to hang out with A level people while B level people like to hang out with C level people. The difference? B level people want to be the smartest person around and stop learning. A level people don't care about the label and want to be around other smart people.

<comment><USER24> I agree with this, however I do feel compelled to expand upon it.

A level types _really_ only like to hang around A level types. Being a B or C player in a room full of high achievers can at times be downright (if not outright) unpleasant.

If I had my druthers, I'd choose to be the _2nd_ dumbest person in a given room. Being an order of magnitude or two behind the mean is more demotivating than educational.

</comment></comment><comment><USER25> I was an early bloomer and I'm grateful for it. I've now been coding regularly for more than half my life in a spectrum of different languages. And what I think that gives one is a kind of muscle memory that makes it possible to do thousands of small calculations about code with near-zero conscious effect.

But while having a lot of raw experience under your belt makes writing of actual code much faster, I think the _real_ benefit is that it frees up your working memory and problem-solving capacity for the more important problems of software engineering: mitigating complexity, predicting long-range interactions, and keeping the design supple.

</comment><comment><USER26> I want to contrast this with my experience learning guitar (classical guitar).

I started as an adult student, ~25, struggling to play Twinkle Twinkle Little Star. I mean... _really_ struggling. I didn't have any musical education prior to deciding to learn. Playing "Hot Cross Buns" on the recorder in 4th grade was the extent of my experience.

And I went to my first recital, surrounded by midget 12 year olds who had been playing for 5 years, and me sounding terrible.

And then I understood.

The race is with yourself, not with others. I'm as good as I am due to the work I've put in, but not yet as good as I can be. And this applies equally on all my endeavors (as well as it applies to those 12 year olds), it was just most apparent when I first started studying music.

It's very humbling to be schooled by a 12 year old. It takes a lot of restraint to take that extra step and be able to learn from them. Just last week I had a guitar lesson from a 16 year old. Half my age, but with twice my experience playing guitar. And I set aside my ego and I learned what I could, and I've set aside my XBox and am putting in the time to practice what he's suggesting for me to learn.

If you haven't tried learning an instrument it's a rewarding challenge and there's a lot you can learn that you can apply to other areas of your life.

</comment><comment><USER27> I started programming 30 years ago when I was in high school.

... Wait for it... . SO WHAT!

Seriously, the thing I love the most about our choice of career is that if you want to be good at it you will be learning for the rest of your life.

I wrote a system last year that processes 3.2 Billion queries a day at peaks of 45k/second and all under 4ms response time. Very little of what I learned in high school about z80 assembly language had much to do with this project. Most of it was exposure to all the things I've worked with for 30 years and some of it was stuff I learned six months ago.

The "learned six months ago" is the part to pay attention to. If you enjoy the challenges placed in front of you and you enjoy learning this is one of the best businesses you can be in. If you want to park yourself at a desk and do minimal work and/or new learning then try a different field. There are plenty of fields you can master quickly and not have to learn much for the next 20 years.

When you start is not as important as your passion and dedication. My father and I were talking the other day and he told me how he was so impressed with how smart I am (this coming from my dad who at 71 learned to write in Php lol). I told him I'm actually pretty average, the difference is persistance. I recently heard a claim that Albert Einstein said "It's not that I'm so smart, it's just that I stay with problems longer.." I'm not sure if he said it or not but it is exactly how I feel. It's not about what year you started to program, it's about staying with problems longer and working them out and learning along the way.

Enjoy the ride.. I know I have and it's just barely started.. ;-)

</comment><comment><USER28> I'm 17 and started teaching myself Python last year when they told me the course at my school was cancelled since only 5 people enrolled. I was incredibly disappointed. I wanted to learn programming because I love computers (of course), but also because I had very few things I attempted to master of my own volition. I felt that much of what I did was fragmented, satisfying an external pressures to succeed in all my academic subjects, nothing I could call a passion. It was a smack in the face when my school wouldn't support my desire to connect with something meaningful.

Fortunately, I picked a hobby that really accommodates self-learning and did as much coding as I could on top of school. Now I'm picking up web programming, looking into using Django and building my own site. What programming really brought to me was a new sense of mastery that originated with personal interest and drive. I think this feeling is what the latter part of the blog started to get at. It overrides any insecurity against geniuses or whatever because you'll be too proud of putting in your own work and too proud of your progress to worry.

</comment><comment><USER29> I'm really glad to see all the similar sentiments. I'm 26 now and I didn't start programming until I was 18 as well. It took me another year or two to change my to computer science.

I still feel a bit like I missed out in college because it seemed like everyone else around me had been programming since they were 12 (or younger) and things just moved at a faster pace than almost any other part of academia.

</comment><comment><USER30> Like most things in life, It doesn't matter when you start, more that you start at some point and spend time and effort in getting better.

</comment><comment><USER31> I started early (like 8 or 10), but the velocity of my learning curve was very low back then. That's the point I want to make (apart from the you-are-never- too-late point others have made already): at 18, your learning skills are so much better that you'll catch up quite well.

The above is the general case, I think, for learning to code. If you're good at chess, sports, whatever, and you're lucky, you'll get help that works as an 'external learning curve velocity enhancer'. The same thing would account for young programmers with proper guidance, but the matter of fact is: most of us didn't have that (I even didn't have internet, I had to get books from the library and cherished a floppy disk containing a plethora of technical game programming articles).

I also see this in a different field I'm active in, as a volunteer at the local life saving / swimming club. Those that start at 6 take like 8-10 years to learn most of the material. Those that come in at 16 or 18 can catch up in a year or two, whilst well motivated.

</comment><comment><USER32> This is a great inspiring article. However, I take issue with this bit:

"I'm 18 years old. I started to really buckle down and learn programming 2 months ago. I feel I missed a huge opportunity because I didn't start learning earlier in life. I was raised in a city that is far from all the start-up hype. None of my peers are even remotely interested in web-developing. And it's not because I've been hanging with the wrong group either."

The presumption here is that the 12 year-olds who did learn web development were either new a startup hub city, or had friends who were also interested.

Speaking in my case, that wasn't true. I started learning an actual programming language at 13 with Visual Basic as a freshman in High School. In Connecticut. But before that it was HTML and CSS. The barrier for actually learning web development is incredibly low; just view:source.

My point is, there's nothing stopping any 12 year old from learning the languages of the web; not time, not location, not friends. Only interest.

</comment><comment><USER33> I started when I was about 16; so not really that far ahead, only 2 years before this guy did and I'd considering myself pretty knowledgeable in a lot of things and in-fact have often come up with solutions some complex and some simple to problems developers who have been programming longer than me failed to solve in a shorter period of time.

Much like anything the longer you've been doing it, the better you get. When you're a programmer it's possible to have been doing it for a long time but fail to stay up-to-date on various techniques and languages that could save time. I've seen many a developer considered to be way above senior struggle to adapt, so I am a firm believer for some people the very fact you've been programming for 20 years longer than someone else is irrelevant in this changing landscape.

Give it a couple of years and you'll most likely know things more knowledgeable developers don't know or vice-versa. Just keep at it.

</comment><comment><USER34> I programmed for many years, but didn't really "get it" - It wasn't until I was 30 that I actually felt like a programmer.

<comment><USER35> Yes. In early twenties programming was just a part of job. Never did/thought anything about it after the office. But gradually it started feeling like that you've a super power without being aware of it. I think a lot of it has to do with the awareness of the 'community' - there are others like you feeling the same ecstasies and going through same problems. You can see passion getting transferred. SO and HN facilitated a lot in developing this sense in me.

</comment></comment><comment><USER36> I'm 17 and started seriously only a year ago. Although I agree that starting at 18 is not a death knell, I think it is a serious inhibitor to success. The later you start programming, the more you postpone your career. I look around at some people who are of the same age who have been programming for significantly longer, and are making an order of magnitude more money. More time programming means more experience which means better jobs earlier in your career.

As for passion, sure, if you care about something, you can start at any age. But no matter when you start, you have to work your way up through internships and freelance work before you can create any semblance of a career. All of this takes time, and the sooner you get it out of the way, the more time you have to actually program for a living. Starting earlier gives you a significantly better shot at becoming successful.

</comment><comment><USER37> It's never too late to start, especially today when the barrier to entry is so low (austenallred mentioned Codecademy, I also recommend Treehouse: <http://teamtreehouse.com/>). The important thing is that you're making the effort, and I applaud you for it.

<comment><USER13> I'm sure those are great resources. I just think those are kind of gimmicky for the beginner. I don't think the real "barrier to entry" has changed much in a long time. Sure, maybe the barrier to whip something out and possibly get an entry level job where you know very little may or may not be a little lower (but then we can get market saturation of that). I think studying the traditional fundamentals is the best way to have strong last career. But I'm crazy. :)

</comment></comment><comment> saiko-chriskun You're absolutely right, mate. In fact I am (was?) in a very similar situation. I've been (relatively) in the tech world for quite some time, but only really began going at programming about a year and a half ago.

Last week I landed my first real software development position, one of many I was accepted for, all really awesome startups.

I also have friends who have been programming game engines for six years and are working at Pop-Eyes. Confidence is the largest hurdle to overcome, in my opinion. One day it just suddenly clicked for me, that I actually COULD do this professionally instead of just working on hobby side projects.

As long as you have passion and confidence, you'll be fine ^^.

Of course I realize there are still mountains of experience I need and so many devs out there- just don't get stuck in that mentality. Use it to power your thirst for more, and not waddle behind.

</comment><comment><USER38> I'm a current senior in college; I switched my major this time last year (after an internship at an ad agency made me realize a few things about my passions.)

I'm finishing up the last week of my dream internship at Big Tech, and the swatches of people are incredible. I've met people who were literally programming in middle school (and can't handle dealing with HashMaps) and people who graduated with a PhD in linguistics with no formal CS education (who are much, much, _much_ more talented programmers than I think I'll ever be.)

I think I've learned most that programming is a meritocracy. If you try hard -- and really throw yourself at the mercy of the command line -- you'll do great. You are the only thing keeping you from your own success; it's incredibly frightening, but also the best feeling in the world.

</comment><comment><USER39> The theory goes that in order to get good at something (anything), you need to put in about 10000 hours (5 years of full-time work).

I would venture to add that probably, age has some influence in that the age edges (very young/old) are less effective towards that goal than your prime work age, simply because when you're young, you likely lack guidance and foundation/education and when you're old, you learn more slowly.

Still, 5 years is not all that much. 5 years can easily be done in university and at your first job. Crucially, this is where a mentor can really make a difference, which is usually unavailable earlier.

Hence, I agree that starting at 18 is not a problem. I myself did not start earliear either. But you will have to put in your 10000 hours one way or another.

<comment><USER40> It is ~10,000 hours of concentrated practice[1] to gain a mastery of a field. It is _not_ just 10,000 hours of doing something (over and over). That is the rub, you can code for years and years and years and gain _nothing_ from it unless you are constantly challenging yourself and trying to up your skill level, surrounding yourself with people that can teach/challenge you and always striving to get better (i.e. never telling yourself you are awesome/great as it can seriously damper your drive to 'keep going' and cause you to think you are 'already there').

[1] [http://www.psy.fsu.edu/faculty/ericsson/ericsson.exp.perf.ht...](http://www.psy.fsu.edu/faculty/ericsson/ericsson.exp.perf.html)

<comment><USER41> Very true, the only projects I've genuinely learned from were the ones that I didn't have a clue how to solve at the beginning.

</comment></comment></comment><comment><USER42> I am also 18 and I am just starting now. I had to test drive a few different languages until I found what I am really passionate about (developing iOS apps). I am still in the VERY early stages but I know that with A LOT of hard work, determination, and time I will succeed. Currently, I am pushing to get my own Mac (will hopefully happen within the next few days actually). I have a nice PC, but it doesn't suit my needs as an aspiring iOS developer, so I am doing my best to trade my PC for a Mac.

Anyway, this article is exactly how I feel. I could have started much earlier and I probably would have been much more advanced than I am now. The fact is, I wasn't passionate back then, and now I am.

</comment><comment><USER43> I started learning when I was 30. It's now one year later. I don't feel its too late at all.

</comment><comment><USER44> I know how you feel, I started when I was fourteen and even I felt like I was behind. It kind of sucks that so much attention is given to those people who happened to discover programming at a younger age. They'll make some little app using Lua or game maker or something and the <a href="[http://www.appolicious.com/tech/articles/4829-young-game- dev...](http://www.appolicious.com/tech/articles/4829-young-game-developer- proves-the-potential-of-the-app-store>media) will be all over them.</a> It's almost like developer's above the age of sixteen don't exist unless you invent the next Facebook or Digg.

</comment><comment><USER45> It's good to know there are others out there (though I'm even later in the game - I'm 22.)

I don't know what it was - I was always surrounded by the Internet and always fascinated by the Internet, but I never breached that gap. I guess my attention span was too short.

But honestly it's a lot easier to learn now. You don't have to go read tons of stuff to get started, with the likes of Codecademy you can start programming immediately and learn by doing with a little bit of structure. That's been all the difference for me.

Best of luck to the OP.

</comment><comment><USER46> 18 is not late. You are about the right age to get started. Its great if you have started earlier. Programming is about constant learning. Its not doing something repetitive. Keep in mind, it takes about 10,000 hours of programming to get proficient in it. At 8 hours a day it is 5 years of effort. But, in reality it may take 10 years to reach the 10,000 hours of learning. Join a startup or a good school, where you can meet awesome peers. With great peers you learn faster.

</comment><comment><USER47> Great article and very much true! I did begin learning how to program when I was 12, but after about six or seven attempts over the years, decided it wasn't for me. I just couldn't stick with it.

Now as an eighteen year-old, programming is what I do for a living, and I love it! Instead of working at restaurants for ten dollars an hour like my friends, I make thirty-six an hour with just under a year of experience.

I love my job.

</comment><comment><USER48> in my experience people who go on about how they were programming in the womb are usually lying and/or not very good at it.

</comment><comment><USER49> I'm 19 and I started learning at 14 and even I feel like I wish I started earlier. Even now, I'm not the best out there. My biggest problem is making developer friends. Being self taught and living in London where everyone just wants to party all the time is a little bit difficult for me.

<comment><USER50> London has plenty of events for developers, you just get out and find them.

</comment></comment><comment><USER51> My unsolicited advice is focus on coding. I wasted my youth trying to configure Linux drivers and wasting time on all sorts of configuration type nonsense. Linux is better now, but I'm there's plenty of similar things to waste time on and not actually code.

</comment><comment><USER52> Good luck on your journey, Mr Tran. Personally, I didn't start really learning to program until a couple of years back; I'm 25 now. I've managed to transition to a dev role within my company shortly after and I'm earning quite a reasonable salary.

</comment><comment><USER53> 18 isn't even late, not that the age at which you starts matters ;-)

programming is just a way of expressing a sort of creativity, nothing less, nothing more. if you don't start piano, painting, whatever, at 12, you think you're useless?

That's a pretty terrible mindset ;)

</comment><comment><USER54> I've started programming at 12. But rest assured; the moment of - _wow, this is really cool, (why?) I've never seen this before_ seems to hunt me many years after my initial contact.

</comment><comment><USER55> [http://www.youtube.com/watch?v=E1RqTP5Unr4&feature=playe...](http://www.youtube.com/watch?v=E1RqTP5Unr4&feature=player_embedded)

\- Richard Feynman

</comment><comment><USER56> i can summarize this as blablablabla. frankly i don't care.

i had people studying computer science in the university that had never seen a computer from the inside. do i like it? no. does it matter? no.

i'll crosspost from another hackernews thread:

"Nothing is withheld from us what we have conceived to do."

the real question is do we have to blog about everytime we decide to go the toilet? well, i don't think. but people obviously disagree. hence the twitter popularity

</comment><comment><USER57> I didn't learn to program when I was 12. I learned to program when I was 8.

</comment><comment><USER58> I am one of those who started with building a computer from scratch when I was 12ish. By the time I was 18, I thought that I was way behind and needed to learn marketing, business, finance, etc, if I wanted to do startups.

Here's the perspective at more than twice your age: Success isn't going to be determined by when you started learning something, but by whether you learned it once you realized you needed it.

There is no school in the country that is going to teach a course in your business, because every business is different.

Success comes to those who work hard and improve and will teach themselves whatever they need to learn.

If your interest in entrepreneurship means a string of 120 failed lemonade stands, then you're already well ahead of nearly every biz school graduate in the country.

If it has meant sitting on your butt wishing you were rich since you were 12, then nothings going to happen until you change.

Learn programming- its valuable. More valuable is learning to teach yourself what you need to do what you want to do.

That's the key to success.

</comment><comment><USER59> Start by learning how to modify the default Wordpress theme for your blog.

<comment><AUTHOR> Will be on it, just wanted to post right out the gate of making the blog. I guess you can say I'm training myself to not be embarrassed of looks for the MVP if I ever have a startup.

<comment><USER60> Looks (user experience) are very important. Apple didn't get to twice the size of Microsoft with shitty looks.</comment></comment></comment>


AT&T to match Google Fiber speeds, prices in Kansas City and suburbs - <AUTHOR> http://www.kansascity.com/news/business/technology/article10441850.html

<comment><USER2> Well.. would you look at how that competition works. Amazing!</comment>


Anywhere.fm = 1.4 Millions songs uploaded.  - <AUTHOR>

O boy. Steve Jobs, I really recommend you call these guys up and start talking price. Seriously if I had a spare million bucks I would do anything to buy a piece of this *up. <comment><USER2> I hate you, anywhere.fm. I just spent the past six weeks building the exact same thing. :(

On the other hand, it is great. The only problem I have with a web music player is that I have a huge music library and it takes forever to upload everything. The other issue I have is there is no easy way to sync to my ipod. I'd also like to be able to burn to CD for listening in my car. I'm investigating AIR for these features. Initially my plan was to make extensions for the various browsers, but even just making a FF extension is a huge headache.

Also, I don't really know whether or not what I'm doing is legal. I will admit that a good chunk of my library is stuff I've ripped from other people's iPods. If I upload this stuff to S3, is Amazon going to turn me over to the RIAA?

</comment><comment><USER3> As a user, I love anywhere.fm but as an investor, I'd have a qestion about its legality because of the UMG vs MP3.com case. <http://en.wikipedia.org/wiki/UMG_v._MP3.com> Have you guys looked into that? Seems to me that these two services are almost identical and anywhere.fm has an excellent frontend.

<comment><USER4> Excellent question! The most precise case to follow is the MyPlay case. In fact, the ex-ceo of MP3.com created a startup, similar to ours, that is protected under the results of the MyPlay case, which showed that digital locker services are kosher. In fact a quick google search shows you this space has many competitors :).

<comment><USER5> What's the logic behind this precedent? Isn't it functionally equivalent to what mp3.com offered?

<comment><USER6> Logic? US courts? Does not compute.

<comment><USER4> :)

</comment></comment></comment></comment></comment><comment><USER7> I like Anywhere.fm a lot. It has a very simple and nice UI. In my opinion, it's a very useful service.

</comment><comment><USER8> That number isn't what matters. Stickiness is what matters.

Shameless self-linking: "What You Should Be Measuring," <http://blogs.xobni.com/asmith/archives/33>

<comment><USER6> And yet, I doubt users are leaving 1.4 million songs and not returning to listen to them once in awhile.

<comment><USER9> Interesting. Wouldn't most user's have a portable music player? If so, why would users go to the site to listen to their uploaded music? From a listener standpoint, the fun is in exploring other people's music.

There really are two user roles at Anywhere.fm, the "inner DJ" and the "music consumer". The 1.4 million songs shows that they've been successful at making the "share your music" process easy. The more important statistic is how many people actually listen to any of the stations.

</comment></comment></comment><comment><USER10> At 3.5MB per song that's 4.6TB. On Amazon S3 I think that'd cost ~$500 in ingress bandwidth and ~$700/mo for storage. Not too expensive so far. The streaming is going to hurt the most though I'm sure.

<comment><USER11> There's also the SoundExchange fees for each song that is played from a friend-radio.

</comment></comment><comment><USER5> From the about page:

"Play it anywhere on the best web music player"

What does this mean exactly? In what sense is it the best?

<comment><USER12> I wouldn't read too much into it...

</comment></comment><comment><USER13> So this is kind of like Orb only your music gets uploaded to a central server instead of streamed from your home PC?

The UI is incredible.

</comment><comment><USER6> Hum... It might be good if Anywhere.fm's buttons on the lower left become consistent with iTunes' buttons on the lower left.

</comment><comment><USER14> Do users pay for space? Will it be ad-supported?

</comment><comment><USER15> seeqpod makes more since to me. <http://www.seeqpod.com>

</comment><comment><USER16> for itunes users who have a big music library, i find Simplify Media much easier. www.simplifymedia.com</comment>


Major HipChat outage - <AUTHOR> https://status.hipchat.com/ <comment><AUTHOR> HipChat is back online, and they have updated the uptime figure to 99.058% for the past 30 days.

</comment><comment><USER2> "Uptime last 30 days: 100.00%"

<comment><AUTHOR> I'll give them the benefit of the doubt and assume that's calculated 1 day in arrears... I actually only noticed they were down because we had an increase in our own app's errors which turned out to be our hipchat webhooks failing with 503s.

Either way I hope we get a root-cause analysis later, would be interesting to know what could take them completely down for 5+ hours. Presumably not a 'straightforward' bad deployment that could be rolled back.

<comment><USER3> They addressed it on twitter and said it only changes once an incident is resolved but they will look at possibly changing that.</comment></comment></comment>


On Hostile Coexistence with China - <AUTHOR> https://chasfreeman.net/on-hostile-coexistence-with-china/ <comment><USER2> Sensible analysis but will be ignored by the current administration.</comment>


DIY Fire Pit - <AUTHOR> http://cswim.info/mkt121/looking-to-update-your-current-fire-pit/ <comment><USER2> I actually really liked this - thanks for posting. I was underwhelmed with shopping for fire pits, and being a software person, didn't really think of making my own. ;)

</comment><comment><USER3> Think you need to be careful and use high temperature specific concrete</comment>


Peaceful walk in favor Net Neutrality - <AUTHOR> https://www.facebook.com/events/1583852338539571/

<comment><AUTHOR> Walkathon in Bangalore - Koramangala - from National Games Village(NGV) gate till Forum. Date: 23 April 2015 Meeting time 17:30 hrs. Bring your music, cosplay, placards, street plays... Please enter your contact details so that we may remind you about the events [http://goo.gl/forms/vljdJu5ZHx](http://goo.gl/forms/vljdJu5ZHx)

</comment><comment><USER2> Great chance to come out in support of #NetNeutrality. Do Join us people.

</comment><comment><USER3> Fight for your rights !! Save the internet !! #netneutrality

</comment><comment><USER4> Save The Internet - Protect Net Neutrality</comment>


TDP, explained - <AUTHOR> https://www.anandtech.com/show/13544/why-intel-processors-draw-more-power-than-expected-tdp-turbo <comment><USER2> It seems Intel is leaning a lot on motherboard manufacturers to violate the on paper TDP to make performance look better, yet still publishing the insanely conservative TDP numbers as official...</comment>


Ask HN: What are the New Computing Ideas for the next 50 years? - <AUTHOR>

What are some of the most exciting ideas in Computing that will transform our world in the next 50 years ?<p>I want to know the craziest ideas you've read or thought about. Lets share them. <comment><USER2> Not all that crazy, but realtime raytracing (or more usefully, path tracing) WILL eventually get here.

That's going to have a major impact on 3D game engines, because it massively drops the amount of code required to produce extremely physically-accurate images. All the other components of game engines will still be needed, of course, but a cutting-edge renderer will go from being a massive, multi-month project to something that a skilled coder can assemble in 99 lines or so.

(No kidding. Here's a 99-line path tracer: [http://www.kevinbeason.com/smallpt/](http://www.kevinbeason.com/smallpt/) )

</comment><comment><AUTHOR> My take on it:

1\. Optical brain computer interfaces will make accessing the internet at the speed of thought. Internet will truly be integrated as another mind that we all share. Some people will even rent their subconscious neural networks for the global brain.

2\. Polymorphic hardware that will change its architecture to speed up applications.

3\. Programming languages with NLP and AI help developers with rapid prototyping.

4\. Long term computing: Computers that can run for millions of years without much intervention in space.

</comment><comment><USER3> The decline and halt(?) of the gains of Moore's law, and the resulting paradigm shifts for many in the programming trade as we move into truly parallel, distributed, elastic computation at the chip level.

The rise of bioinformatics and of the computer as a progenitor of a new age of medicine.

A sea change in trading and economics as HFT wreaks havoc and competes with human trading.

Maybe these aren't as wild and crazy as you hope, but I think they are some of the most exciting and likely to happen.

</comment><comment><USER4> AGI. The Intelligence Explosion.

[http://intelligenceexplosion.com/](http://intelligenceexplosion.com/)

[https://en.wikipedia.org/wiki/Intelligence_explosion#Intelli...](https://en.wikipedia.org/wiki/Intelligence_explosion#Intelligence_explosion)</comment>


Chrome on iOS adding what looks like a per-device GUID to useragent string - <AUTHOR> https://twitter.com/thijs/status/448064463498133504 <comment><USER2> This is the "Tab ID". It is not sent over the network as I understand and is only available from the local js context. It's the result of a bit of hackery Chrome does to map requests to the webview.

EDIT: Found the bug report... [https://code.google.com/p/chromium/issues/detail?id=355541](https://code.google.com/p/chromium/issues/detail?id=355541)

<comment><USER3> sweet man you are for that link.</comment></comment>


GM audio engineer lists Top songs to test your car's stereo - <AUTHOR> http://content.usatoday.com/communities/driveon/post/2010/09/audio-engineers-10-songs-to-test-any-car-sound-system/1 <comment><USER2>
      "Rock that Body" by the Black Eyed Peas.
      Listen for clear, intelligible lyrics over the powerful, persistent bass beat.

Good luck with that, no matter how expensive your setup is.

<comment><USER3> Pshhh, you're so two thousand and _late_ , haha, ha....hrr......hrrpphhmmm

I just threw up in my mouth a little.

</comment></comment><comment><USER4> Ugh. Some of those choices aren't bad, but you should really use music that you're very familiar with.

In any event, avoid anything that's been mixed in the last ten years (unless its classical) to evaluate an audio system, it's all been compressed and auto- tuned to shit.

<comment><USER3> You've just made two contradicting statements. There are lots of people who listen solely to music produced with in the last 10 years, and they want a stereo that it sounds good on.

Now you would probably argue that it won't sound good on any stereo, and I would agree with you, but you can't say that it won't sound better on one than another.

</comment></comment><comment><USER5> Not a bad mix!</comment>


Apple doubled the price of RAM upgrades on the base MacBook Pro - <AUTHOR> https://www.engadget.com/macbook-pro-ram-upgrade-price-doubled-152145547.html <comment><USER2> [https://news.ycombinator.com/item?id=23378707](https://news.ycombinator.com/item?id=23378707)

</comment><comment><USER3> Judging from numbers reported by their competitors in the phone and PC spaces, Apple makes less gross margin on laptops than on smartphones. Jacking up RAM prices allows them to capture more profit from laptops, but also keeps their average gross margin number from device sales from dipping drastically as phone sales slow.

Apple breaks their margin numbers into services and devices, so if the devices gross margin dips appreciably, investors will read that as a sign that Apple's cash cow handset business is on the ropes.

<comment><USER4> What's the gross margin on iOS and macOS?

</comment></comment><comment><USER5> Progress in RAM prices dropping every few years has really slowed. I've got a 2013 MBP with 16GB of RAM. 7 years later, I'd expect 16GB to be in the base model.

Adding extra RAM adds years to the life of a computer.

</comment><comment><USER6> Since the saturation of the smart phone market, Apple seems to have turned more toward squeezing their customers to maintain their profit margins rather than innovation.

That seems like a poor strategy overall. Personally, I predict radical innovation or decline (although the "decline" of something like Apple still leaves a formidable behemoth like IBM)

</comment><comment><USER7> According to camelcamelcamel.com, it looks like _all_ RAM prices have been steadily increasing for the past 6 months (after falling for the 2 years prior to that).

<comment><USER4> 10%ish. 8GB RAM costs $50, not $200.

</comment></comment><comment><USER8> Overpriced products, not using standards, must buy adapters, forcing Apple sign-in to apps and overall vendor lock-in. Just to name a few why I hate Apple.

<comment><USER9> >Not using standards

Which standards are they not using?

>Must buy adapters

It was this way shortly after the migration from DIN to PS/2 keyboards, and also shortly after the migration to USB, and also shortly after the removal of floppy drives, and so on. We complained back then too, but each migration was worthwhile in the end. USB Type-C is what USB should have been, but the tech wasn't ready yet.

>Forcing Apple sign-in to apps

You mean mandating the inclusion of "Sign in with Apple" in some App Store apps?

<comment><USER4> Apple almost _always_ requires adaptors or hubs/docks (for laptops) for complex setups because their machines have 2-4 ports instead of 10, regardless of the type. Mostly 2, unless you pay an extra $400.

Try to hook up power, video (or 2), keyboard, backup hard drive, SD card, phone/camera/arduino/whatever, Ethernet.

USB-C will never be universal. It's too complex/expendive for dumb peripherals.

</comment></comment></comment><comment><USER10> It's the maximum price the market will bear. Think of it as discounts for a gimped machine you can't un-gimp because of Apple policy of treating customers with total and utter contempt. But to be fair, that's pretty common in tech.</comment>


Streams – A Real-Life Approach - <AUTHOR> https://isank.dev/posts/java-streams-real-life-approach/ <comment><USER2> The usage of "1 to 1" in "`map` is a 1 to 1 operation … meaning one input produces one output" is at odds with the usual mathematical usage of the term; I'm not sure how it accords with CS usage. In fact, it seems to be referring to the `f` in `map f`, not to `map` itself. In mathematics, we say that an `f` that produces one output for one input is a function. (More generally one might consider non-function objects `f` called relations, often written infix as `x f y`; for example, we could have the relation `f = lt`, for which, say, both `1 lt 2` and `1 lt 3` hold—one input with two (or more) outputs.) If we say further of a function (or more generally of a relation) that it is one to one, we mean that _different_ outputs produce _different_ outputs.

For example, properly speaking, one should not speak of the square-root function, since there are _two_ real square roots of every positive real number. (What we usually call the square-root function is really the _non- negative_ square-root function on non-negative reals.) There is a perfectly good squaring function, since every real number has a unique square, but it's not 1 to 1 on the domain of all real numbers, because different real numbers can have the same square.

<comment><USER3> No, it refers to map.

Take a stream and count its elements:

      System.out.println(
        Stream.of(1,2,3).count());

Now map a function onto that stream, and count its elements.

      System.out.println(
        Stream.of(1,2,3).map(f).count());

For every 1 element counted in the first example, you get 1 element counted in the second example - regardless of f.

<comment><USER2> Certainly the author is correct in the sense of "1 to 1" that just means "function" (`map` is a function, in the sense that `map f = map g` whenever `f = g`); and even in the sense of "1 to 1" that means "injective" (if `map f = map g`, then `f = g`, at least extensionally), so there's no formal sense in which the author is wrong; but I still think that the sense in which the author is right is not the intended sense.

Namely, consider, to take a silly example, a function like `f x = [x, x^2 + 3]`. (I'll use Haskell notation throughout, since I'm comfortable with it.) In the formal sense this is still a function, since it produces one output, which happens to be a length-2 list, for each input; but one may also informally regard it as a one-to-two relation, in the sense that `x` is left-related to `x` but also to `x^2 + 3`.

OK, so _still_ it is true that `length $ map f [1, 2, 3] == 3`; but there's also a sense in which `map f [1, 2, 3]`, which equals `[[1, 4], [2, 7], [3, 12]]`, _wants_ to have length 6. This is so in the sense that `concatMap f [1, 2, 3]`, which equals `[1, 4, 2, 7, 3, 12]`, _does_ have length 6.

Thus, although, again, there is no technical sense in which it is wrong to say what the author does, nonetheless, in the informal and intuitive sense, _I_ think it is better to say that the "1-to-1-ness" (which I would prefer to call "function-ness") of `map f` is a property of `f`, or at least of how we choose to use `f`, not of `map` itself. But, again, I emphasise that _I_ think this; though I have made a case for it, a big chunk of that case is personal preference, and so cannot, I think, be regarded as conclusively right or conclusively wrong—although I think it makes it easier to communicate with mathematicians, for whatever that's worth.

</comment></comment></comment><comment><USER3> > That's exactly what Java thinks and thus it chose to keep the Streams lazy.

Rumours of Stream's laziness have been greatly exaggerated.

      Stream<Integer> aStream =
        Stream.iterate(1, i -> i + 1)
              .flatMap(i -> Stream.iterate(i, j -> j + 1)
                                  .flatMap(j -> Stream.iterate(j, k -> k + 1)));

      // Does not terminate
      Integer firstElement = aStream.findFirst().get();</comment>


CloudFlair: Bypassing CloudFlare using Internet-wide scan data - <AUTHOR> https://blog.christophetd.fr/bypassing-cloudflare-using-internet-wide-scan-data/ <comment><USER2> See also Cloudflare Warp [https://blog.cloudflare.com/introducing-cloudflare- warp/](https://blog.cloudflare.com/introducing-cloudflare-warp/) which enables you to hide completely and connect to Cloudflare and also the use of this to expose k8s to Cloudflare natively: [https://blog.cloudflare.com/cloudflare- ingress-controller/](https://blog.cloudflare.com/cloudflare-ingress- controller/)

<comment><USER3> Is there a way to get bumped up on the beta queue? Thanks!

<comment><USER2> Email jgc @Cloudflare

<comment><USER4> Are you looking to make this feature available to only the paid tier or also to the free tier? Wasn't certain based on the blog posting, but most of the time you'll say if a feature is enterprise only, etc.

Currently on the free tier for my personal projects and would love to play with this on my personal k8s cluster.

<comment><USER5> It's gross to advertise your own company, but the weather's bad soooo ...

We have an open source tool called wormhole that works similarly. You can run it yourself, or use it on fly.io (including the free tier): [https://github.com/superfly/wormhole](https://github.com/superfly/wormhole)

<comment><USER6> Another option is webrelay ingress controller for k8s, also tunnel based :) [https://webhookrelay.com/v1/examples/relay- ingress.html](https://webhookrelay.com/v1/examples/relay-ingress.html)

</comment></comment></comment></comment></comment></comment><comment><USER7> Slightly off-topic:

 _> A few minutes before publishing this article, someone brought to my attention that a similar piece had been written a few months ago_

This can be demotivating. I've been trying to remember that I should write for myself, to collect my thoughts and not to satisfy the interwebs.

<comment><USER8> Getting back to it myself. Ultimately my past successful works have have never been intended to be. And I enjoy them still, upon rediscovery. So not much to lose except the feeling of being redundant. It's good to stay current but also habitually create with minimal inhibition.

</comment></comment><comment><USER9> You can also potentially view the historical DNS A records for the domain to view the pre-Cloudflare IP at [http://viewdns.info/iphistory/](http://viewdns.info/iphistory/).

<comment><USER10> If you're determimed, though, you just null route, or block, etc, everything other than Cloudflare inbound.

<comment><USER11> For many, many DDoS scenarios this does not work. The spurious packets may saturate an upstream ISP, causing that ISP to unilaterally apply a null route or block for all packets for the targeted origin IP. No CloudFlare packets would arrive at all.

If one is concerned about DDoS, one should work with their ISPs on the plan of action for various scenarios. Finding out their procedures when ones' hair is on fire is not fun.

<comment><USER12> Well you're behind CloudFlare.

Just change your IP address, and tell CloudFlare the new one.

Sure the DDOSers could find your new IP, but it's not like changing your public DNS, it would be difficult for them to find it.

I don't think your SSL certs would show the new IP on the website in the blogpost very quickly if you changed IP.

<comment><USER11> It's not so much about changing the IP address, but moving the targeted system out from behind the clogged tube. Changing IP address may or may not do that.

</comment></comment></comment></comment></comment><comment><USER13> Great post. Also, Cloudflare Warp looks like it will be cool.

(disclaimer: I work on DNSTrails) Another way to find the origin is to use trails left by DNS using a tool like [https://www.DNSTrails.com](https://www.DNSTrails.com).

You can see a sample with a site that moved to Cloudflare like this: [https://dnstrails.com/domain/haveibeenpwned.com](https://dnstrails.com/domain/haveibeenpwned.com)

<comment><USER14> when the origin is properly secured (which we encourage all customers to do) even passive DNS won't help: [https://dnstrails.com/domain/canhazip.com](https://dnstrails.com/domain/canhazip.com)

<comment><USER13> nice!

</comment></comment></comment><comment><USER15> Allowing only cloudflare IPs for ports 80/443 (e.g. in nginx) is easy and the server can still be used for other purposes without Cloudflare. Other services can use different domains, would be hard to find out the server ip this way.

<comment><USER16> it's far from an ideal solution given they keep changing the lists

I only seem to find out when people complain that the site is down from certain parts of the world

<comment><USER2> _keeping changing the lists_

We don't change the IPs often and we always update the list well before they are ever used (typically months before). The last update was two years ago. I'm sorry if you had a problem.

[https://www.changedetection.com/log/cloudflare/ips-v4_log.ht...](https://www.changedetection.com/log/cloudflare/ips-v4_log.html)

EDIT: I was rude in the previous version of this comment. Sorry for being a jerk. And thanks to dang for letting me edit.

<comment><USER17> I remember being affected by this too a few years ago. It's not something I thought to check and update often. I was disappointed that I was never emailed or otherwise notified by the change.

</comment></comment></comment></comment><comment><USER18> This technique is in use for years, just get IP classes from CF website and set them in your iptables for ports 80/443 + any other IPs (yours, from your organization etc) and drop the rest.

Another way to get IPs is reading e-mail headers (register account on target website to get e-mail etc), so many sites behind CloudFlare expose their webservers IPs there.

<comment><USER19> Unfortunately, iptables can't protect against all forms of DDOS attacks. Even just getting flooded by packets being routed to a particular IP can cause a datacenter's network to be affected. Something like CloudFlare Warp is the only way to truly prevent packets from being routed to your servers in the first place (I don't work for CloudFlare).

<comment><USER20> If it's not known where your servers are (because you got new IPs in a new hosting facility and never allowed them to communicate with the outside world directly), it's true that a packet flood would affect you, but it you would be awful hard to target.

</comment></comment></comment><comment><USER21> Just changing IPs is not enough if the new allocation is publicly linked to your company. It may help to get IP space through a third party or shell company to anonymize it a little more, and make sure it is never publicly identifiable as yours, either in paperwork or through scans.

</comment><comment><USER22> It would be good if AWS et al had an easy way to manage third party ip ranges for security groups. When I was deploying a site we came across this issue and so whitelisted Cloudflares ip ranges but it made me uneasy because what happens if a new IP address is added? How do we manage this list and what sort of notice is provided?

<comment><USER13> Cloudflare has text files here [https://www.cloudflare.com/ips/](https://www.cloudflare.com/ips/) \- would be cool if there was some standard protocol for this.

<comment><USER23> DNS AXFR query would be suitable, I think. [https://en.wikipedia.org/wiki/DNS_zone_transfer](https://en.wikipedia.org/wiki/DNS_zone_transfer)

</comment></comment></comment><comment><USER24> the JS DDOS portal, while amicable in intention, exists in a privileged place among hosting service providers. Dreamhost found out all to well how easy it was to be targeted in dragnet federal litigation designed to violate the privacy of internet users. Cloudflares JS is innocuous only in that it --to public knowledge-- is not being used to unmask anonymous proxy users or silently track specific site visitors in a dragnet fashion.

Im not too encumbered by JS encapsulation at the moment, but a warrant canary might put my mind at ease assuming the internet still does those [https://en.wikipedia.org/wiki/Warrant_canary](https://en.wikipedia.org/wiki/Warrant_canary)

<comment><USER25> Cloudflare has a transparency report[0], updated twice a year.

In the transparency report there's a warrant canary:

      Some things we have never done
      Cloudflare has never turned over our SSL keys or our customers' SSL keys to anyone.
      Cloudflare has never installed any law enforcement software or equipment anywhere on our network.
      Cloudflare has never terminated a customer or taken down content due to political pressure.
      Cloudflare has never provided any law enforcement organization a feed of our customers' content transiting our network.

[0] [https://www.cloudflare.com/transparency/](https://www.cloudflare.com/transparency/)

<comment><USER26> Where do you draw the line between political pressure and the management's political beliefs?

<comment><USER27> That latest report says it covers the first half of 2017 so we'll have to wait to see whether they consider the actions from the second half of the year to change the fourth item on that list.

<comment><USER28> Is it concerning yet that they haven't put up their semi annual warrant canary, actually? The last two times, they had it updated by January 14th [0] and July 8th.[1]

[0] [https://web.archive.org/web/20170114100401/https://www.cloud...](https://web.archive.org/web/20170114100401/https://www.cloudflare.com/transparency/)

[1] [https://web.archive.org/web/20170708164222/https://www.cloud...](https://web.archive.org/web/20170708164222/https://www.cloudflare.com/transparency/)

</comment></comment></comment></comment></comment><comment><USER29> I think the writer is not aware of mod_cloudflare [https://www.cloudflare.com/technical- resources/](https://www.cloudflare.com/technical-resources/)

</comment><comment><USER30> Another thing that you can do is use Apache virtual hosts and send all traffic that connects to the IP to an empty page.

</comment><comment><USER21> Is warp just "railgun" rebranded? That worked well for my company, when it worked.

<comment><USER2> No, it's a totally new code base and different model.

</comment></comment><comment><USER31> Funny.. next time please finish the article in two or three sentences.

</comment><comment><USER32> [https://news.ycombinator.com/item?id=13719366](https://news.ycombinator.com/item?id=13719366)</comment>


Ask HN: How to safely switch to programming? - <AUTHOR> I'm a third year undergrad majoring in business, engineering, and math at a top public school. I have worked extremely hard to get a perfect GPA, and I thought that would have positioned me well for an investment banking internship this upcoming summer.
Unfortunately, I'm getting "out-networked." I understand GPA isn't everything, but it's disappointing to hear that I have a slim chance at banking just because I'm not emailing/cold-calling 3 investment bankers a day. I'm working my ass off so I can get an internship where I work 100+ hours a week doing stuff I don't even know if I'll enjoy. Note: neither the 3 emails / cold-calls per day nor the 100+ hours a week is an exaggeration.
I've never looked into a software development internship. I'm consistently one of the top students in my EE programming classes, but I'm definitely not as good as the kids that have been programming since middle school. But at this point, I'm sick of recruiting for business internships and seriously considering switching.
I came into the business school thinking it would give me a broad array of choices, but it's funneled me to either investment banking or management consulting. I feel like I'm better suited for software development or a startup, but I'm afraid of risking a safe / prestigious job at an investment bank after I graduate.
I know it's "never too late," but I feel like my software dev prospects are nowhere near my banking prospects with about 1.5 years to graduation. What should I do? <comment><USER3> Software development jobs tend not to care what you majored in if you can demonstrate competency and experience. Your average CS senior is a VERY junior programmer.

Also "math / engineering" is usually good enough to bypass the HR "must have degree" wall at companies where that pertains - at least to the point that you have the same chance anyone does to pitch them on interviewing you.

Things you can do that beat "switch majors" in terms of improving employment prospects:

        * Summer internships
        * Part-time gig
        * Write code, publish it on Github
        * Write a tutorial article
        * Create and market a software product

You also have to ask yourself, what are your goals for this? Are you looking for a comfortable W-2, or to spend some time working at startups, or to start a business of your own within a few years of graduating?

<comment><AUTHOR> As pathetic as it sounds, I don't really know what my goal is. I guess I want to find an internship this summer that is enjoyable and offers solid exit opportunities for full-time recruiting. I know this is a lot to ask for, but I want to highlight the fact that I work very hard -- I'm not some kid that thinks he's smart and deserves a perfect job.

The biggest problem is I know absolutely nothing about the recruiting process, job requirements, internship duties, etc. for programming roles. Since the start of 2013, I've worked a bit on my coding and published very small projects on GitHub, but I haven't done much else in terms of seeking an internship.

I'm most worried about switching my focus entirely from banking to programming and missing out on a banking internship. If I don't do investment banking this summer, I basically have no chance at a full-time investment banking position. And although I've made it sound like I absolutely hate banking already, there is a chance I could enjoy the internship and the full-time position.

I'm pretty sure I would like a programming role more, but again, I don't know where to start for recruiting. And I'm afraid that working for a small tech firm this summer may not help much when I look for a full-time job after college.

<comment><USER4> You're being too hard on yourself here: it is _not_ pathetic to not have 100% concrete goals when you're not even out of college yet.

College, and much of your 20's and even 30's, is the time where you figure stuff out. Try business/banking - don't like it? Try web development. Don't like it? Switch to something else. And then when you're 47 years old you'll realize that you want to change again - and you'll do it too.

Of course that's far easier said than done; I'm not trying to tell you switching is easy, it's not, but I am trying to tell you that you're not locked in to any one path.

I've interviewed and hired quite a bit, and I can tell you that any programming internship is a good internship. Having some real world experience is good, even if I've never heard of the company you interned at.

</comment></comment></comment><comment><USER5> Six months working in industry is worth approximately 10 years playing on middle school hobby projects from the perspective of calculating your worth to a potential employer. I wouldn't worry too much even if you're not #1 in your CS classes.

</comment><comment><USER6> There's no such thing as "software development". It's like "math" \- a very broad term. If you're getting good scores at engineering and math, you definitely could switch to development, you just need to ask yourself what exactly do you want to do? Code a complicated web app, write a network stack for realtime OS, implement complex 3D graphics algorithm on current 3D hardware, write embedded code for the next "Tea kettle with SNMP monitoring" project on Kickstarter or something else? These are quite different skills, these projects go at a very different paces, require different approaches and so on. You can do very well financially on each and every of them, but you need to like what you do, programmers rarely can get away with 9-to-5 thinking about code and 5-to-9 thinking about women, sports or beer. If you're a good programmer you're thinking about efficient priority queue implementation even when you watch superbowl.

</comment><comment><USER7> Let me give you a bit of tangential advice that I don't see anyone else mentioning.

You're on a good track. Stick it out. It's hard to get into banking/finance, so do that first while you have the chance just to see if you find something you like there. The software / product development world doesn't give a shit about credentials, so if that's where your passion lies you can also go there later.

But here's the advice: don't let them put the golden handcuffs on you. If you get out of school making $100k it's real easy to start wearing Armani and lease a BMW, and before you know it there's no job outside of finance that will pay your bills. Instead: buy off the discount rack, get a Honda, and save like crazy. If you end up hating your job, 5 years could be enough to build a nest egg to allow you to bootstrap your own startup.

</comment><comment><USER8> Just a few observations (without ever having experienced this - didn't go to business school and was never interested in investment banking, so don't know the industry):

 _just because I 'm not emailing/cold-calling 3 investment bankers a day_

Then email 3 investment bankers a day. You should be able to do this without spending more than a few minutes on each one.

Create a template once and then personalise it as needed. In my current startup, we've emailed many hundreds of people over the past four weeks. It doesn't have to take a lot of time. It absolutely can be done without being such a chore to eat too much into your other time. Also, if you cannot do three a day then do two or even one. Or even one every two days. Anything is better than none a day.

 _I feel like I 'm better suited for <..snip..> a startup, but I'm afraid of risking a safe / prestigious job ..._

Unfortunately, in my opinion, startup and risk aversion do not mix well. Startups are risky - that's simply the reality of it. If you are risk averse, then startups absolutely are not for you.

Founding a startup is a hell of a lot of risk (its still worth it IMHO though) and being one of the first few employees, while not quite as risky, is still a lot of risk because you don't know if your job will still be there in a few months or a year.

Personally, I think the startup experience is worth it. I can't see myself working anywhere else now. But its definitely not for everyone, so consider it carefully.

\---

Having said that, you can absolutely get into software development, but if you want to have lots of options you will want to build a network here too. Life is all about networking. I don't think its quite as drastic as having to email three people a day though - I'd start by attending lots of programming user group meetups and conferences - that's where a large portion of my network came from.

I know people who have never studied at all who are doing great - the key to their success is that they have good strong github profiles: you will have a degree from a good school, if you can also create a portfolio of projects (personal or open source) then you will be in a really good place. Its not necessary, but its very helpful. If you can get a summer internship, that also helps a lot. Basically, anything that demonstrates experience writing code (outside of uni projects...) is a very good thing.

</comment><comment><USER9> Don't focus on the competition. Finding your first job is always super tough. I know it seemed impossible when I was in your situation. (I felt so desperate!), but somehow things work out in the end. In the current economic climate, it might take a while, though: don't be upset if you don't get a career job immediately; it can take a year or two sometimes.

You have the grades, so stick with your current course. You do not need a computer science degree to build a career as a software developer. Practical hands-on experience counts more than qualifications.

I believe that a multi-skilled / cross-disciplinary software engineer can expect to earn more money over the course of their career than a straight-up developer. The skills shortage (and therefore the demand) always seems to lie in-between disciplines.

Software development skills + math + business gives you a possible (eventual) avenue into quantitative development in the financial industry, which can be a lucrative career path should you chose to pursue it. (Be prepared to spend a significant amount of time (10 years?) building up skills prior to making the move, though).

Once you have finished your degree, you might consider doing a software- oriented masters degree, or spend 2-3 years with a small company picking up the basics. Your multi-disciplinary skill-set should stand you in good stead. If you cannot find a company willing to hire you, start one! Even if it does not work out, that experience will be golden. If you don't have any ideas, ask in this thread. I have a ton that I am never going to pursue. I am sure that others will pitch in as well.

</comment><comment><USER10> Well, that depends.

Can you visualize the storage of an array?

Can you look at this basic construct and build its state in your mind?

        for (i = 0; i < 10; i++)
          print i

(I'm assuming you have some familiarity with the structure based on your statements.)

Can you walk through it in your head, and understand what it will print, when, and why? Not because you were told what it would do at some point, or because you ran it - but because because you can 'see' it? Do you take some amount of pleasure in doing the above?

If the honest answer is "no" then you'll never be more than a mediocre programmer. There is a lot of work for such programmers out there, and I'm sure you'll find employment - but I suspect the only thing you'll be happy with is the paycheck. You'll also never progress beyond mid-level at best, unless at a large corporation where seniority counts more than ability.

If the answer is "yes", then I think changing over has a very good chance of leading you to an enjoyable, lucrative career path. And you're starting off far ahead of most of the 'coders' entering the work force since the late 90s and early 00s.

</comment><comment><USER11> I would advise to bolster your banking value:

Add machine learning and data mining to your skills. Play around with MQL4, and show them your chart. Get hired as a quant and earn tons of money.

<comment><USER12> The road into investment banking via math and software development is probably easier than via a straight up vanilla banking job.

</comment></comment><comment><USER13> Don't worry if you haven't been programming as long as the other students, if you invest enough time you'll likely by pass the other students who have been being programming since middle school. A lot of these people are likely amateurs, and I'm willing to bet they've only done a bit of Basic programming here and there. I'm sure there are exceptions to that, but that's just my experience. I switched into my degree from an arts degree with no programming experience, and a year later I'm one of the better students in my classes.

Best of luck with making your decision

</comment><comment><USER14> No job or career is safe. Stop clinging to this antiquated notion that you can get somewhere and chill for the rest of your life. It sounds like you want money. Whatever you do, you're going to have to hustle for it. So stop following the crowds (meaning, whatever you're not personally driven by - <USER2> it IB, Consulting, or even startups) and jump in and make your own direction.

If you fall and screw up, its ok.. get up and do it again. Time to grow up

</comment><comment><USER15> Based on my experience, and now putting myself in your position, I would just finish the engineering/business/math degree, and then pursue a career in software when you graduate.

I did my degree in mechanical engineer (mechatronics), and didn't have too much trouble finding employment in software. I graduated with no internship or professional experience. My graduating semester, I realized software 'was it', so I just strapped down and built a product (made no money) and released it (ios/rails/AWS). A few more months studying mobile development obsessively, I landed my first paying gig. It's been about a year since, and I couldn't be happier with my decision and progression.

But to be fair, my major heavily involved programming various robots/devices/languages since 1st year, so I had lots of programming experience upon graduation. But I imagine you are in a similar situation, or could be if you wanted to.

Since this is HN, I wouldn't be surprised if you have a curiosity/enthusiasm with trying your hand at the startup lottery. There's no better background to have than CS/Engineering for this.

So my advice is: find a sector from software you find interesting, build something and ship it.

</comment><comment><USER16> Software development is not an easy gig, either:

a) those of us who are good at it have spent years and years at it

b)the field keeps evolving at a rapid pace. Yesterday, it was Java and XML and SQL. Today, it's Ruby, cloud, and Docker. It's a pain in the ass to keep up unless you are genuinely interested, or carefully find an evergreen niche, or a gig at Google which will compensate for not staying sharp.

c) remote jobs are on the increase. I am the happy employer of an IT person in India who wants a non-traditional job (he wants to work only half a day), but has 10+ years of experience, is fairly intelligent (has a mathematical conjecture to his name), has worked in Lisp, has a degree in AI, and works for $833 per month. All the brouhaha about the H-1B visa is direly misplaced; the tournament is on the other court : outsourcing via remote employment. There are a ridiculous number of job sites that advertise remote jobs, and a good number of employers are able to get themselves to trust remote employees enough to reap the cost benefits. In IT, you compete with the world, literally. In traditional banking and other "locale specific" / seat-warmer- is-a-must jobs, you probably only compete with the rest of the folks in your city.

d) The barriers to entry to a programming job are falling every single day. Previously, having a degree was a must. Now, you could be a dropout with great self-taught Ruby on Rails skills, and you're in. This is a positive IMHO; people in programming are much more ready to break convention and I'm proud to be part of such an industry. I have tried to help a couple of waiters and electronics salesmen transition to a programming career, too. But it means that the field is that much more competitive, too.

Sorry to sound negative; I really don't want to encourage you to get into this field unless you are genuinely passionate about it.

</comment><comment><USER17> Software development is a pretty safe job these days - I would even dare say more attractive IMO. I would even say that getting a good software engineering job isn't all that difficult - getting a first position in anything is difficult anywhere regardless, and software development doesn't care about your degrees. The only thing employers really care about is whether you can write code with the capacity of improving to the point where you can write good code.

I've been in a somewhat similar situation, although later in my life (left a top 15 math grad program, unsure about what to transition into). If you want to get into software development, just start learning it! It doesn't matter if you're not initially at the top - you should have confidence in your ability to learn quick, and your solid logic/problem solving skills, which are musts in software engineering.

You have a massive advantage over me - I deferred answering this question until I left my PhD program, and took about 1 1/2 years to answer it fully. Less than a year of working in web development, I transitioned from being a junior dev to a senior dev. You can easily set yourself on a faster path since you have time on your side.

Also, keep in mind that there are many companies out there that you likely don't know about. Most companies that recruit from colleges are big. That's not the case most of the time in the real world though - the big companies are just the ones who have the resources to recruit from colleges themselves. The majority are looking locally for talent. Networking is the name of the game, so going to meetup groups (especially meetup.com) for what you're interested in is an easy way to net a payoff in getting interviews, especially if you can sell your credentials to people - if you have to fly to cities & have the $ to do so, it would be well worth the investment.

Just my two cents anyhow.

</comment><comment><USER18> Your conclusion is probably true. Though I didn't go to a "top public school," I followed a similar path and had a similar concern at about the same point in my path through college. I should've chosen otherwise, but instead I chose to finish my economics degree and find a job working for a bank. I can assure you that there are plenty of good jobs working for banks all across the country. Sure, they may not be the elite positions in investment banking on Wall Street, but lets be honest, most people who work in banking and finance don't work on Wall Street. So if you continue to pursue you existing path, you'll find there is plenty of opportunity in banking. Depending on the role and the area, entry-level pay runs between $40-$50k. After a couple years experience you can generally get $60k. It's not the mountains of riches you dream of while in college, but it's a good living.

That said, I've discovered on "the outside" (of college) that I don't really like being the analytics guy, the banker. I'd much rather build products, make things, have skills which enable me to _do_. Often, work in banking (be it sales or analytics or underwriting or finance or whatever) can feel pretty disconnected from the real world. For instance, I've worked in risk management, and now in credit administration, and while I'm very good at what I do, it doesn't excite me the way building products for the web does.

The key, in your position, is to determine what drives you. Do you like being the analytics/numbers/finance guy who is a whiz with spreadsheets, analytics, finance/accounting, etc? Or deep down do you harbor the desire to make things: software, web apps, mobile apps, etc.

At this point, put aside concerns about making tons of money or being "successful" after graduation. Thinking about those things will just muddy your thinking. And the truth is that there's good money to be made in either arena.

Think about whether you want to analyze or build and I think you'll have the answer to your question.

In my case, I've often wished I would've made the transition no matter the cost, so that I could be working in software development now. Since I didn't I now have to pursue a long-game of developing the skill-set on my own and eventually slowly working my way into the field.

It sounds like you expect all banking positions to pay a ton, be on Wall Street, require 100+ hours a week (and 3 emails/cold-calls a day), etc. This is certainly not the case in any of the non-Wall Street positions I've worked. I've always worked no more than 40 hours a week, received decent benefits, good salary, paid bank holidays, competent co-workers, etc.

I'm sure positions like you describe exist, I just don't think they're indicative of the vast majority of the banking and finance industry. Broaden your perspective and you might like what you find.

If not then yes, commit to change gears. Particularly if you really enjoy the software development stuff (like I always have). Don't focus on whether you do well at it, but instead on whether it is rewarding to you. If it's not rewarding to you (software development related classes) then you'll hate working as a software developer. However, if you find the programming you do in those classes rewarding then definitely make the switch, because the banking/finance world can be a very frustrating place for someone who'd rather be making things with code. You have some semi-technical skill-sets which may or may not get any respect, there can be a lot of egos run rampant, and banks are notoriously slow to adapt and innovate.

That said, if you can find meaning in the banking line of work, it's not a "bad" gig per se, it's just not quite as satisfying personally as programming is.

<comment><AUTHOR> Thanks for the advice. It seems as our paths are very similar.

To be honest, my biggest interests are in statistics, programming, and finance (in that order). The most natural intersection seemed to be working at a proprietary trading firm. Unfortunately, I applied to over 25 prop shops with no success. I haven't heard of a single alumni from my school in trading; they typically only hire out of MIT, Harvard, Stanford, UPenn, etc.

After no luck with trading, I figured banking would be the next best option with numbers and finance.

Just out of curiosity, do you program in your free time? Do you think you'll eventually make the transition from banking to software development?

<comment><USER19> ac1294: Could you put your email address or some way to contact you in your profile? I want to send you a message.

<comment><AUTHOR> Done

</comment></comment></comment></comment><comment><USER20> I think there's a huge difference between programming and solving your problem. You just want to earn money, right? So just start thinking about your SaaS application. Something people may need, something easy. And try implementing it.

The best for you would be using HTML + CSS + JavaScript. You can use node.js on server side, it's on JavaScript. I think in 6 months you'll be able to build things you want.

If you want to switch to programming to earn money by working for someone, I'm afraid I have bad news for you. You have to spend a lot of time, cos others probably may have much better experience than you. And you will never earn enough. Salary is salary.

To be short: build your simple project, start learning with practice, not theory. Don't think about being software developer for hire.

</comment><comment><USER21> Investment banks rely heavily on technology. That said, there's a lot roles in their tech department that are not programming positions. There's business analyst who interface with the business gathering requirements, project managers who guide the dev team and make sure they don't go off track, and functional analysts who convert business requirements into use cases. Theres QA engineers that manage the testing and releases of these systems. These are all technical jobs, that require candidates to who can learn and understand how large systems operate but don't necessarily need to program. It helps but not necessary.

</comment><comment><USER22> There are more jobs in tech than only software development. Have you considered other positions? Product management is one option, especially of you have both- the business background and a knowledge of development.

</comment><comment><USER23> If you don't have an idea for a project (I totally didn't), find an open source project that you like, start contributing to it and get to the point where you can get accepted as a core developer / maintainer. It can be a great way to show that you have chops (and you end up doing many things that are important dev skills, like code reviews, API design, handling a legacy codebase, etc.). Plus, it's fun and can be a good way to meet people.

</comment><comment><USER24> I wrote these for high school students, but I think they'll be useful to you too:

[http://www.collegeanswerz.com/i-graduated-high-school-now- wh...](http://www.collegeanswerz.com/i-graduated-high-school-now-what)

[http://www.collegeanswerz.com/the-process-of-exploring- your-...](http://www.collegeanswerz.com/the-process-of-exploring-your- interests)

</comment><comment><USER25> I hope you would seriously think hard about what you want in life.

You sound to me that you are a smart, bright and hardworking person. But for once in your life, you found yourself out-competed and out-networked and you are trying to "pivot" to another career. There is nothing wrong with that. Think hard about what you want. Are you switching to another career because it is prestigious?

</comment><comment><USER26> I think if you can work your ass off you already have an edge compared to most software guys. Not everybody needs to work at Facebook.

</comment><comment><USER27> [http://hackreactor.com](http://hackreactor.com)

I'm a founder -- AMA!

</comment><comment><USER28> Hey, I'm 27, some time ago graduaded in cultural anthropology and 2 months ago started studying CS :) It's never too late to get involved into someting you feel passionate about. Good luck!

</comment><comment> dav-id Perhaps you should look into the investment banking divisions who are more algo focussed or those companies who provide services to those firms. That way you will have the best of both worlds

</comment><comment><USER29> For a young college grad who doesn't know what to do with themselves, banking and consulting are great options if you can get them.

</comment><comment><USER30> So why not go into EE? Its one of your majors after all, and less likely to be outsourced to India.

</comment><comment><USER31> get [http://teamtreehouse.com](http://teamtreehouse.com) few months of learning and you'll be able to make more money than a lot of 40 - 50 year old regional presidents at most companies.

</comment><comment><USER32> Consider dropbox.com/bizops :) get in touch if interested...

</comment><comment><USER33> Just start to write code. Alot.

</comment><comment><USER34> Talk to a professor.

</comment><comment><USER35> Why was this thread deleted?

<comment><USER36> I assume your post got killed for the more explicit words you used. There were some of them. Anyway, I enjoy your writings. :)</comment></comment>


A Virtual Hackathon for Education - <AUTHOR> https://virtualhackathon.eventbrite.com/

<comment><USER2> I wish there were a more informative page about this rather than just the Eventbrite signup.

<comment><AUTHOR> [http://lincolnlabs.com/hackathons/virtual.html](http://lincolnlabs.com/hackathons/virtual.html)</comment></comment>