About 30 hours a week for two months I finished the Front End Certificate from freeCodeCamp (highly recommend the site for starters). Then I decided it was better to build my own projects with the tech I wanted to learn (mostly React) using official documentation and tutorials. This is what I accomplished in around 3 months: www.rodrigo-pontes.glitch.me
Then I started to apply to jobs. After around 4 rejections, last week I started as Front End Junior Developer (using Ember actually) at a funded fintech startup with a great learning environment for the tech team.
Very proud of my accomplishment so far, but I know the rough part is only starting.
Seriously, really good looking stuff for your early projects! I'm not surprised someone picked you up :)
Getting a job as a new developer after only 4 rejections is a great batting average. Sean Smith rejected 192 times before getting a job at Trustar. https://medium.freecodecamp.org/how-i-learned-to-code-and-ea...
Unfortunately it does not receive proportional attention from more technical forums like HN. Mostly because it is basically designed for non-developers. That's why I particularly like the marketing strategy of students giving stars to freeCodeCamp Github repository. It brings awareness to developers of all kinds and ways of life about what you are doing.
I believe freeCodeCamp will grow to be an essential tool for improving society and individual people's life by democratizing knowledge.
I hope to learn enough to be able to give back to the platform. It's pretty overwhelming to be in the situation I am right now, but once I am more stabilished I will sure contribute somehow.
> but I know the rough part is only starting
Yes and no. Getting the first job is a huge hurdle, you actually have overcome probably the most difficult challenge of the early years of your dev career, so well done.
Of course, the challenges keep coming, and quickly, but from here on it will look much more like a (possibly rather steep ;-) upward curve wrt time rather than a huge cliff (hobby projects/qualifications -> first job).
So long as you're expecting and prepared for that, which you clearly are, you're now in much more of a position to control your own success, which in relative terms is actually a lot easier, less stressful, and even fun!
Congrats on your achievement. :)
May I ask, what was your background prior to moving into coding? A different technical field or trade?
But I always had a good mind for logic and analytical stuff, I think it helps a lot.
My expectation is to double that within two years. I believe my former work experience can accelerate my path to be a senior developer. And then keep going on a more linear growth.
Frankly, it's ugly so you're automatically not going to be doing any product work
"Frankly, at the current level, without some improvement and time, you probably won't be doing much product work."
If you could clean up your demos to look more acceptable to the modern day reviewer, I think you would have better presented yourself.
"Clean up those demos to appeal to the modern reviewer, and you'll be better able to present yourself."
(Empathy also presents you better)
If I were to create a product, I wouldn't try to be creative. I would just use some modern CSS framework.
In this world, there're 10 types of people: there're good people who're half bad and there're bad people who're half good :)
It's upsetting for me to think of all the fun I missed out on in my early life because I was learning programming and pushing myself through university and it turns out that it doesn't even get me a higher pay check in the end.
These days, nobody cares that I'm proficient in all of ActionScript 2 , ActionScript 3, C/C++, C#, Java, Python, AVR studio (microcontroller programming), MySQL, Postgres, MongoDB, RethinkDB, PHP, Zend, Kohana, CakePHP, HTML, CSS, Docker, Kubernetes, AWS, JavaScript, Node.js, Backbone, CanJS, Angular 1, Angular 2, Polymer, React, Artificial Neural Networks, decision trees, evolutionary computation, times/space complexity, ADTs, 3D shaders programming with OpenGL, 3D transformations with matrices, image processing... I can't even list them all. I could wipe out 95% of these skills from my memory and get paid the same.
It only gives me extra flexibility... Which it turns out I don't need because I only really need two of these languages (C/C++ and JavaScript) and a couple of databases.
However, if you did enjoy, then there is nothing to be upset about, I mean you are doing what you love right? If its all about your paycheck you could try finding another employer, but not everything in this life should go around money, there are more important things, find people who could appreciate you and your values, be happy what you do and maybe the money will come later.
I don't know, I did something similar and didn't care about how much I would get paid. I learned because I loved it.
But almost no one warned me about what I was missing out on because they kept saying that I was spending my time well based on the whole money thing. (in fact, there where many people who said I was spending my time better than most of my peers because of this.)
After solving so many difficult problems in my life, I feel that the only difficult problem left for me to solve is making lots of money.
The skills I learned that don't relate to coding are how to effectively work on a team, how to handle extremely stressful situations (no situation will compare to pushing tin in Iraq), how to lead and have people wanting to follow, how to communicate verbally and in writing, how to just do something without seeking approval etc... I could go on.
Just because you spent the past 13 years learning numerous technologies and missed out on fun doesn't mean those of us who learn to code later in life aren't as valuable. We have skills and talents you might not see but are deemed equally as valuable to our employer.
A typical rockstar could probably wipe 95% of the songs from their mind and still get paid the same, but they never would have made it to that point if they had only ever played the ten songs that are actually on their set list.
There are a lot of general skills that you pick up along the way while you are learning the more specific things that end up mattering more long-term.
You are correct.
If you're being paid for C++ programming, does it matter that you know AWS in and out? You're absolutely a better programmer all around, a more well-rounded technical expert, etc, but the C++ you produce is not inherently better because you messed around with CakePHP (lol) back in the day.
Today, I think that number is down to 50% or maybe even less. So many of my friends who went to excellent schools but had degrees in Biology, Biotech, Physics, and even some social degrees (including a pianist) now are full-time programmers.
I agree with your sentiment though; if you don't need a CS degree to get a CS job, then maybe try something else during college. Take programming courses at your local coding bootcamp.
Self taught programmer (started at a young age out of interest), working in the field in sort of a generalist dev position at a large media company. I'm out of practise with my math, but trying to kickstart myself to return to university for studies in Physics. Maybe a bit of a reversal?
Programming jobs are a great practical employment solution, but personally I feel compelled by my drive to see behind the curtain too much to settle. As well, to seek out further innovation on the application side I have this sense that there needs to be far more crossover than there is presently.
All this and I started out studying English at U of T, and didn't get to finish (financial reasons). And here we are.
Yes you're right about this.Programming is quite similar to math in that aspect. Great debugging skills and understanding can replace the requirement for all of this.
But you seem to be missing the point here. There is a difference between learning a language and the frameworks compared to learning _why_ a language and _why_ a framework. This is what ~60% of today's "coders/programmers" miss and are unable to understand.
Learning the why helps you pick up things much easily. The effort you would have to put in to learn any new languages would be considerably much lesser compared to others.
A commonly quoted line in the industry is , "you need more breadth than depth".
And you wipe out a lot of skills on a regular basis. This is not a conscious effort that you make. It just happens to everyone.
I'm not trying to say that the late blooming programmers do not understand the "why" bit, but rather that a lot of programmers do not. I am one of those self taught programmers who loves exploring the why. And it makes my life much easier than those who do not. So revel in knowing that you are capable of picking up new skills much easily compared to others. That IMHO is a much more important characteristic than knowing a million languages/systems/frameworks.
I found it noteworthy that the "hook" in the title is that the person started in (gasp) their 30s. Why should that be noteworthy? Why wouldn't someone start coding in their 30s, 40s or 50s?
Now it is true that starting a new profession late in life may not always make sense because, presumably, you have to little time left you might as well "ride it out" contributing what you know.
So, yes, it is unusual for a doctor to start learning mathematics in their 40s (though not unheard of: https://en.wikipedia.org/wiki/Endre_Szemer%C3%A9di), but it isn't less strange to make such a change in computer science than any other field.
Because there's perceived ageism in this industry, so saying you're just getting started in your 30's is interesting.
Would you be feel comfortable starting med-school in your 30s? A PhD? Training to be a plumber or an architect?
If anything, because programming takes a shorter time to become productive (say 2 years), I would think it would attract older job switchers.
(edit: Before people give me counter-examples, note:I know these things do happen)
Then again, I changed careers into software in my 30s (had just turned 30 when I left aerospace), though I had coded in some capacity my entire life. Newsworthy?
I also liked the article for a different reason; I don't aspire to be an Olympic athlete but I do want to become good at certain skillsets that I've only started exploring after my 30s, so I'm definitely hoping the author's experience generalises, and rooting for him :)
Basically, despite having a major in Romanian literature and spending a lifetime as a literary critic, with almost 0 contact with computers, he decided in his late 40s and early 50s to understand the things behind the internet.
So he picked up on his own: PC usage, internet browsing, PHP and MySQL coding, enough to make his own website and a few apps. That, starting from a point where he could barely use a mouse.
When asked during a TV show how he did it, he replied:
Like I did things for my literary criticism: I read an 1 meter [high stack] of books about the subject.
Every time I need motivation I think about that quote :)
Sounds like a good hook for website. Instead of learn X in 21 days: http://www.1meterofbooks/programming
As in:
"How many Pruteanus until I'll be proficient in ML if I have zero understanding of the subject"
• CIS 194 @ UPenn, https://www.seas.upenn.edu/~cis194/fall16/
• Haskell Programming from first principles, http://haskellbook.com/
• Real World Haskell, http://book.realworldhaskell.org/
Tech is wildly lucrative, is in current demand, and is not physical labor. That reduces the barrier to entry to anybody who has a laptop and an Internet connection. Honestly how many people would be so eager to learn to code if you dropped down the average tech salary to 45,000 (matching other professions)? I think far less: people seem to learn to want to code to ride the high-pay wave, not for the actual love of code.
Again, let's compare to music. Anybody can go to a guitar store and buy a 200$ keyboard. But if I took a 14-week class and afterwards had the aught to call myself a "Music Ninja Rockstar" or some other such nonsense, and start applying to orchestras and bands, I would be called crazy.
Software has eaten the world, and it's here to stay. Increasing the general software literacy is no more different than saying we should teach everybody how to read (and a good thing). However, throwing each person in a bootcamp telling them "coding is wonderful! you can master it in 5 seconds and make 200k a year!" is no different than holding a similar bootcamp for any other vocation and then wondering why the average plumber can't actually fix your house, but can only use a plunger. I sincerely hope this trend stops. This mindset is broken, and the paradigm is highly unsustainable. Where will we be in 20 years?
I am not sure if you read the article? The point is that age isn't a barrier but that becoming a software engineer is a lot harder than just going to a bootcamp and expecting a job to appear. This is about spending a year trying to find a job.
I have zero problem being compared to a plumber with a plunger! If something breaks in the middle of the night, I get paged, grab my mop and my tools, and fix it.
Why does it matter if the average plumber "can't fix your house"?
The pay is good because of supply and demand but I really do not know programmers who decided to get into it for money.
I know, but that's not generally what you'd see on a "learn X in Y days" sort of site. I'm more talking about the zeitgeist.
> Why does it matter if the average plumber "can't fix your house"?
"Fix your house" is more idiomatic for the entirety of plumber work. I suspect that you are more than a one-trick pony of development, but that takes years to master. A plumber that needs to fix a house needs to use and learn a myriad of tools that take years to master.
No one tells the person going back to school for accounting that they really have to love accounting or they should find a new line of work.
Same is true for just about most things in life.
This guy found he was naturally drawn to it. End of story.
I wanted to program computers from when I was a kid and my dad showed me how to draw coloured circles on the screen. And now, I have a job in tech, part support, part coding.
But the thing is, I'm not very good at the coding part. I'm also quite lazy and hate practising things I'm not very good at, so I don't put in the work to get better.
Meanwhile I've seen coworkers come and go and maybe been a bit scornful of them because they seem to be only in it for the money, or they don't know things "everyone should know", maybe they don't even seem to want to ("pfft, what kind of boring loser would even care about that stuff"). But, they've been much better coders than me: they've picked stuff up faster, they've put in more work, they've gone on to new, better-paid, more interesting jobs. And well done them.
(It's a good, encouraging story for beginners who are drawn to it though, I agree with that part.)
Btw, it irks me that you don't capitalize the first letter of your sentences but still properly capitalize "I".
I'm just in it for the money. I've achieved success, I'm really good at my job and I'm still going strong almost 20 years later. Wouldn't do it if it didn't pay the bills.
Therefore, the first few waves of programmers included a lot of "already olds."
This is always overlooked as evidence that older people can learn to program.
Most of her students were 30+, many were working in the auto industry, including assembly line workers. At the time, there were a lot of bright people working the lines because it had always been possible to skip college and land a decent middle class job at the car plants. But that was coming to an end.
Her students were taking one year of CS and getting hired into reasonably decent programming jobs.
In fact, I was also interested in programming, and learned it in school. When I went to college, my mom discouraged me from majoring in CS because she literally thought programming was too easy to justify 4 years of classroom training, and she thought that the job market for programmers would quickly saturate.
Let's just say we guessed wrong. ;-)
But at the time, college level CS was still maturing as a discipline. Many of the 4 year colleges didn't have full blown CS major programs. I'm betting it's harder now, but I honestly don't know if programming per se has fundamentally gotten any harder.
Edit: Noting some of the comments, I certainly don't want to disparage the CS degree. After all, I majored in math and physics -- hardly a turn towards a practical training. I think these are fields where you have to be interested enough in the subject matter, to study it as an end unto itself. Being able to do actual practical work in a so called real world setting is always its own beast, no matter what you study.
Not that wrong, imho.
> my mom discouraged me from majoring in CS because she literally thought programming was too easy to justify 4 years of classroom training, and she thought that the job market for programmers would quickly saturate.
This part is real wisdom. The best developers I know (and I myself, which I consider an above average programmer) learned how to program by themselves (before, during or after high school time). And it is not uncommon to find people with CS degree unemployed or with difficult to reallocate with the current state of tech, at least here in Brazil.
Building CRUD apps using existing frameworks is coding.
Building said frameworks and the rest of the software that powers those CRUD apps takes more.
I don't mean to rag on simple projects or coding either. It's just as noble as any other profession. But to say that a random Rails or Node developer could write something like Postgres is laughable.
It's not the degree that makes that possible either. There's plenty of idiots who've graduated. It's the difference between studying how to do something and studying abstract concepts. People who have done CS degrees are more likely to have been exposed to the latter.
You don't need a CS degree to make a website.
Fast forward ten years and I'm a senior software engineer which gives trainings on Spring Boot and Microservices and helps companies implementing Continuous Delivery and Microservice architectures.
You may think I'm gifted but I'm actually not. I'm a very slow learner and bad at Math. I mostly program from 9 - 5 and only work on side projects when I'm feeling to (which sometimes means not doing any commits for months).
But I like what I'm doing and work hard to improve.
But 26 is still a blank canvas you can learn anything easily. I think there might be a bias as many hackers started learning programming when they were 15 years or younger so they assume it has to be like that for everybody.
I have many years of experience and built up expertise, but I was in grad school until I was almost 30!
"We create our own demons."
I work as an independent consultant wearing many hats, doing all kind of weird network related jobs for small cable operators and small/medium businesses in a shitty country in south america. This includes devops tasks, planning data networks with structured cabling, fiber optics, setting up and maintaining servers, routers, switches and a bunch of appliances that I didn't even know they existed a few years ago (all that ugly shit in HFC networks). I hate my job and feel very unhappy and depressed. I'm on meds, many visits to psychiatrist lately.
All these years I kept learning all I can. I'm an avid *nix user, can program in a few languages and have read more about programming languages, libraries, frameworks, etc. that any other subject that I can think of. I dropped out of university only a few years from getting a degree but continued spending my free time learning about software development just because I like it. I enjoyed many detours with many technologies, loved learning Java, C++/Qt, Python, Go, Perl, etc. I spent too much time and money in books, online courses, software licenses, etc that I feel failed and guilty.
I mean to build up expert level skillset, you'd have to really dedicate your self into learning the particularities of not just languages but also their runtime environments.
Unless you have no life, and only sleep, eat, code, or super intelligent, being able to absorb and stay current with everything.....
Other than that, I just don't see the full stack mentality working
That combination is still gold for me although bioinformatics is forcing me into VSCode/Bash/Git territory more and more. I can recommend anyone wanting to do data analysis to start with the Jupyter/Python/Pandas/Seaborn combo, the notebook just makes it very easy to write small code snippets at a time, test them and move on. Writing markdown instructions and introductions/conclusions in the document itself help you to make highly readable reports that make it easy to reproduce what you did years ago.
import pandas as pd
file = pd.read_xlsx('some_excel_file.xlsx')
file # Just typing this will display the file as a table in jupyter, after ctrl-enter to execute the code block
To plot: import seaborn as sns
%matplotlib inline # This makes the plot appear in the notebook instead of in a separate window
sns.violinplot(file)
Boom, that is it (assuming the Excel file is a number of columns with labels as the top row).[0] http://scikit-learn.org/stable/auto_examples/datasets/plot_i...
Certainly, I think Deep Work require full concentration. So when in the mode of learning, I find keeping focus instead of going to a website to read news, or checking e-mail/messages to be incredibly important in maximizing the incremental process of grasping concepts.
That being said, whereas the author seems to prefer taking a few months to go deep into it, I prefer to immerse myself over a long period of time by learning and practicing a few hours per day (just like an instrument), letting my mind stew in the knowledge during diffuse thinking periods, and then come back to it the next day.
Do you have any tips I can steal from you?
Great article BTW!
Never was truly a developer, and decided I wanted to accept a job as one. I've programmed in the past, how hard can it be?
Wow, it's been enlightening. Really hard. I thought it would be straight forward since I've used scripted quite a bit in perl in my past, but being a developer is much more than writing a few scripts to automate a task.
I'm a few months in now, and I am still slower than all my colleagues by quite a bit, and the main language I'm working in has changed already, moved from Python to Go.
Even right now, I'm stuck on an issue around pointers and data structures that feels like it should be easy, and I'm just not getting it.
All you can do is keep confidence up, and keep at it. Immersing in it, and knowing that irrational levels of effort will lead to results.
I thought it would be easier though :)
I couldn't agree more that it is tough going when you realize a challenge is more than you expected. That plus impostor syndrome is what caused me to quit on my first try.
We are moving a lot of things from Python to Go at the moment and it has been great.
Which I think is fair from their perspective, I think they expected a developer by trade to have assumed the role, and in actuality it's someone who has done a tremendous number of jobs around development. I'd be a bit concerned as well.
The great thing is, I'm learning a ton of cool technologies, and already see the major progress on a lot of fronts.
The terribad thing about them is that they don't often explain why they are more efficient than the the naive path.
I'd recommend that you pose a series of tasks to your dad, and work with him to build them out, rebuilding them several times if necessary, to start that deep understanding of the art. Adopt a posture that this work is critical, and that you are working together. You'll both learn why as you do it.
I say startup and if it fails like 80 to 90% due you gained an in-demand skill that you can use to make a nice living.
This is what I did and it allowed a three year runway to try and make it happen.
It didn't happen in terms of a financial success but it was a lot of fun! Way more then working for the man in any field!
http://spectrum.ieee.org/energywise/energy/fossil-fuels/the-...
https://www.wired.com/2015/11/can-you-teach-a-coal-miner-to-...
The "Sorites paradox" is something like: how many grains of sand form a heap? if you remove or add one, is it still a heap?
So, exactly what exactly makes you a programmer? that varies a lot depending on who you ask. Someone said a programmer should be able to detect and report a bug to a hardware manufacturer. Some others say that "learning" (partially, because most programmers don't know every single aspect of a programming language) a general purpose or Turing-complete language makes you a programmer.
I define an "X programmer" where X is backend, frontend, data, whatever... as someone who can not only implement a feature, but do it through understanding rather than through a heuristic of trial and error or reusing code. Also, a person that is able to troubleshoot what is going on if some of the underlying systems is not working as expected.
I relearned to code at 31 or so. There was data over here that I needed in a different format over there, and didn't care to retype. I taught myself some minicomputer assembler from the instruction set reference. At that same job, I learned to write macros in the OS's command-line interpreter. I found that I enjoyed programming. And I went back to school.
That was a while ago, long enough that the second or third language that I learned on my own was Perl 4. I would never have called myself a ninja or a rockstar. Yet I have over the years written some very useful code.
Became an advertising copywriter after college and spent 7 years in the copy mines. It was truly a profoundly uninspiring industry (though I continued to doubt myself and never really got to where I wanted to and should have)
Founded a startup with a friend hoping for a fresh start. Took forever to find a developer so in some strange moment of overconfidence (sanity?) I decided I would take a shot at it and started learning Python. Found myself hypnotized by the codeacademy course and knocked it off in 3 days or less.
Some a few started programs then a developer friend came on board as an advisor and told me to pick up Django. In a few months (with him and another good friend doing all the heavy lifting) I got enough into the thing to be able to scrape data, make API calls and develop the admin interface.
With everything I learnt I found a block of that constant self doubt melting away. I had never felt so capable and in control in my entire life.
Startup wound up though and I had to take a job at a design agency. Though I picked up the basics of HTML and CSS there most of my work was managing clients (aarghh) Left in a few months as a writer at this startup working part time.
But within a month of me joining the CTO quit and the company was in massive flux. I just stepped forward and said I would code. The other developers happily took the help and I got my first job as programmer. The next 1.2 years were just full days of writing scripts to automate our workflow and figuring out this danged JS, Node thingy (which I really love now btw)
When this place wound up too and I studied React, now have a big 6 month project at this company helping them automate their workflow with an admin app. Am writing the fullstack code, all by myself. Which is so exciting and empowering.
Programming is awesome. It's my one advice to anyone who asks me for advice these days. It changed my life completely. From being a constantly depressed and volatile guy I am now fairly confident and really rare to anger.
Surprise bonus, I have become far more creatively productive after leaving the creative industry and have written a bunch of songs (that I don't hate) and also started learning to play the Piano, something I always wanted to do.
Next up is Algos and Data Structures the next time I have enough saved for a 3 month immersion. I really do think they are super important. Plus picking up a new language. Suggestions welcome.