Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How do I become a Software Developer?
22 points by _zero on July 13, 2015 | hide | past | favorite | 22 comments
I'm 24 Y/O and have no experience with developing software whatsoever. I graduated High School 7 years ago and didn't have a plan in mind for the future. Recently I've realized how much time has passed and how little I've done to improve my situation. 5 years ago I worked as an intern doing QA Testing at some startup and it was a fantastic experience which opened my eyes to a world that I knew nothing about. But since then I haven't made any moves towards becoming a part of that world. I honestly feel quite disgusted with myself for not challenging myself mentally, for not having a career at this point in my life and not having money. I guess being unemployed for the last 6 months has really given me time to reflect on myself. I have a plan in mind, which basically consists of throwing myself into programming for however long it takes until I become proficient in whatever language(s) I choose and then crafting a portfolio. But my dream is to build something of significance that will not only change my life, but the lives of others around me as well. However I'm starting to think that maybe I'm not good enough and that it's too late, especially when I read stories of people younger than me kicking butt and taking names. Math was never my strongest subject and if I had to go to college, there's a good chance that I'd be placed in remedial classes, just to give you a picture of where I currently stand. But I realize that the internet provides me with nearly unlimited resources to improve myself and achieve my dream. My father and I fell out recently so I'm finally on my own, which is a good thing because now I really have an incentive to go all out, so to speak. I'm lost and would like some guidance. I lurked for 2 years or so and decided to create an account today to post. I'd like to hear your story of how you got into Software Development and your struggles along the way. I'd also like some feedback on the best way to go about making my dream a reality.

To be frank with you, start working, hard. This is going to be your largest huddle. When you read this message, what were you doing? On Facebook (or some other social media)? On some game? Watching your giant Netflix queue? I don't know what it was but it probably wasn't coding. And if it was, then good! You're already on your way.

I honestly don't mean any of that to be mocking. I am just saying, a lot of people fail because of distractions from their primary goal. So now you have to ask yourself, what are you willing to give up? Are you willing to block out all of those distractions so you can start to learn a new skill? Only you can decide that and only you can make yourself fail if you don't.

Next, start building something. Honestly, you don't need to understand math at some high level to build great software applications. Go pick something and build it. Look at Jennifer Dewalt (http://blog.jenniferdewalt.com/). She set out to make one website per day for 180 days and blog about it. Imagine the amount of dedication to complete such a task. And look at how much she learned in that time! Just pick things are build them. Learn. Grow. Start right now.

>I don't know what it was but it probably wasn't coding.

You're right, I wasn't coding.

I waste a lot of time on the internet not being productive, so I'll change this. I signed up for a codecademy account recently, so I'll challenge myself by doing some exercises there daily.

>So now you have to ask yourself, what are you willing to give up?

I think I'm finally ready to give up all of my distractions. I'm getting sick of not making any progress.

>Look at Jennifer Dewalt (http://blog.jenniferdewalt.com/).

This is great. I bookmarked her website and I'll check out her work. Maybe I'll do something similar once I feel capable enough to build something.

>To be frank with you, start working, hard.

>Learn. Grow. Start right now.

Thank you :)

go here http://www.freecodecamp.com/. if you stick through it you'll learn enough to get a job. Also it's not a cakewalk. goodluck

This looks pretty neat. I'll check it out! Thank you.

Awesome resource for learning it seems!

Agreed with it basically being lots of hard work, and that you have to be very motivated.

I'm currently 29, working as a Software Developer, and also started late. Got my MSc in Oceanography, had some basic programming experience (built basic websites for beer money, some light scientific programming), but not much. Decided I liked the analytics more than the rest of science, and got a job at a SaaS company as a Data Analyst. Really started falling in love with programming quickly there, and did the following: - took online courses like crazy (often waking up early to get some in before work, and more on evenings/weekends when possible) - always took on the most technical tasks at work, where I'd get to write as much Python/R/SQL as possible - started a coding club at work, great for group learning and motivation

After ~2 years of this I had gotten myself to a point where I could legitimately work as a Software Developer, and got a new job as one (at the same company). Stayed in my area of expertise, data science/analytics, but as a developer instead of an analyst.

I wouldn't suggest codeacademy, though. Maybe it's changed since I tried it, but my experience was that they introduced you to a bunch of syntax, but left out most of the fundamentals of how computer science and how to structure programs. I'd much more strongly suggest taking more involved courses. Some of my favourites include (note - bias towards Python, Scala and SQL courses, as that's what I happen to use a lot of):

Intro to Comp Sci (Python) https://www.udacity.com/course/intro-to-computer-science--cs...

Intro to Web Dev (Python) https://www.udacity.com/course/web-development--cs253

Data Structures and Algos (Python): http://interactivepython.org/runestone/static/pythonds/index...

JS intro: http://eloquentjavascript.net/

Functional programming (Scala): https://www.coursera.org/course/progfun

Reactive programming (Scala): https://www.coursera.org/course/reactive

Good databases courses (boring but good content): https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/abou...

My personal feeling is that things like codeacademy get you superficial knowledge, like learning to use tools, when what you really want is deeper knowledge about how to build houses, regardless of the tools.

It is great that you have a goal and a direction, but you are pinning your hopes on something that you do not know very much about and you may not even like. It is easy to read about coding on the internet and think it is the answer: that you are going to lock yourself in a room for 6 months and when you come out your career and life will be sorted. This is a delusion, a common delusion many of us have to one degree or another. I switched careers to become a software developer and I'm already trying to figure out how to get to the next step. There was another post earlier today about a career switch and the poster seemed to be blaming it on the company. Becoming a software developer per se is not the answer. You need to focus on becoming a well-rounded person, part of which may involve becoming a software developer.

Being a dev involves a lot more than just coding; communication, organization, teamwork, etc. all go into development. These are skills that are harder to pick up from the internet than coding. It is for these reasons that I would recommend that you consider going to school as a good way to start your career. School is a clear cut path in a situation like yours where you are going from basically no experience to starting a career.

School is not the only way, but I personally would bet on it as the better outcome. Do not let math be a deterrent. You can learn it. Check out Barbara Oakley's book A Mind for Numbers and read Lockhart's Lament. It does not have to be an impediment. Finally, as you mentioned there are a lot of resources online. MIT Open courseware has a lot of awesome resources, especially the intro to programming with Python. Coursera is also obviously awesome. But if this career were as easy as spend 6 months or a year studying and come out making $100K then everyone would be doing it. You need a more realistic plan.

So you have a general direction: software development. Now make some short-term and long-term plans about how to lead a good life and do what you're interested in along the way.

Thanks for the insightful comment. I feel that a dose of realism is always helpful, especially when it comes to something as important as a career.

You're right that I don't know much about development and that I might not like it.

I grew up on the internet, from the days of AOL chatrooms during the 90s to various other websites and message boards. I learned how to repair computers as a teenager because of the internet and my interest computers. Now I can function as an (entry level) I.T. Technician. I focused a lot on maintaining hardware, software and Operating Systems, but never looked into creating software until pretty recently.

But what really got me interested was what Edward Snowden did. Because of his sacrifice I started to get interested in cryptography and open source software. I moved away from Windows to Debian just to experiment, and it turns out that Debian is actually pretty cool.

I believe in the utility of the internet and computers. To me, it just feels like the right step to take and even though I may regret my decision in the future, I'll still give it a shot and try to accomplish something. Besides, it'll be nice to challenge myself with a new hobby :)

I'll check out the book and course recommendations. I'm probably using math as an excuse to continue procrastinating because I'm afraid of failure, so I won't let that deter me. And I'll definitely consider going back to school once I start working again.

Let's start with stating a positive. You're enthusiastic about developing software. You have no idea how many software engineers dread writing code (and thus delivering bad software).

Luckily, there are tons of great resources out there to learn to make whatever you want. Don't be overwhelmed by what's out there. Although HN is a fantastic place to keep up with what's going on, it's very easy to get caught up in the noise.

Learning to write software is like learning to do anything else. All it requires is practice. I was fortunate that I went through a university and it opened my eyes to a lot of theoretical things, but I am where I am today because I spent a lot of time outside of university learning things that were more practical.

I can point you to a few resources to get started (there are plenty more that people here can recommend!)

Generic Programming: https://www.codecademy.com/en/tracks/python http://openbookproject.net/thinkcs/python/english3e/

Web: Ruby on Rails - https://www.railstutorial.org/book Railscasts - http://railscasts.com

At the end of the day it depends on what you're interested in and what you want to make. I find that when I want to learn something new I try to remake what someone else has already made. That way I'm thinking less about the idea and more about how that software should be constructed.

I left law, ended up in QA, and am now a full time software developer. I think being in QA helped a lot when it came to teaching myself - would be employers would be glad you had work experience in a professional software development environment. This will be to your advantage, though trying to go dev from a QA role at the same company may be more difficult for political/business reasons.

I think the thing that got me where I am now within a reasonably time period is picking a type of technology (in my case, it was learning iOS and Git well enough) I wanted to work with, then stick to that until you become employed while attending every hackathon and relevant meetup, time permitting. You'll need projects that demonstrate your aptitude and ability.

If you or anyone else is interested, my story is actually on Codecademy: https://www.codecademy.com/stories/155-from-lawyer-to-ios-de..., and I've even written a book about the transition: http://quitlawandcode.com/

You're going to do fine. I know it seems like such a binary and insurmountable transition, but the more hours and practice you have, the more OOP and other concepts will just click for you. Also, you're not too late! I started at learning at 30.

FYI: I'm terrible at math, though I love learning, and would like to re-visit it when I have some more time (probably when I have high school aged kids).

Similarly I'd like to ask how to jump industries. I have 12 years in enterprise IT as a network and systems admin and the last 5 years I've been living and breathing powershell at work, developed several python/flask side projects (one full site with cc processing, coupon code checking with JS, email notifications, user registration, etc.). Learned to use git, developed my first published windows store app, and now continuing to learn c# for fun.

I find myself enjoying coding more and more each day and IT support less and less. But I "know" IT territory very well. From IT managers, to day in day out, to projects one cam expect. I live and breathe it. I feel out of my depths even applying or building a resume for a development job and have a family to support. What's the safest and best way to get my bearings and jump into a dev job?

Work is supportive of my advancement in coding, but its leveraged as a cheap way to automate processes.

- Work is supportive of my advancement in coding, but its leveraged as a cheap way to automate processes

You are the magical "DevOps". Put that on your resume and wait for the offers to flood in. Just tell prospective employers that you want more "dev" than "ops".

As the other comments say, just call yourself a Devops person. It is for companies who want to automate sysadmin stuff in coordination with newer technologies like docker.

Well, I was 25 when I started learning how to code. The big motivator for me was the birth of my first child, and I was sick of minimum wage labor jobs. Transitioning into software was a long process for me. I spent about two years working at it in the evening hours before I was able to land my first real job. There's a steep learning curve upfront and it takes a lot of effort. I would recommend signing up for classes at your local community college if you can. See if you like it first, then re-evaluate your decision after a semester or two. If you're like me, being enrolled in some kind of program is going to help keep you focused and on track.

Best of luck. You can do it!

>Well, I was 25 when I started learning how to code. The big motivator for me was the birth of my first child, and I was sick of minimum wage labor jobs.

I don't have kids, but I certainly can relate. My family immigrated to the states from the Caribbean, making me a first generation American. They aren't well off and even though we aren't that close, I'd like to be in the position where I can assist them and their kids if they ever need help. I feel that the best way to do this is to pursue this path that I've chosen.

> I spent about two years working at it in the evening hours before I was able to land my first real job.

That's impressive. Thanks for the inspiration.

I know that nothing in life comes easy and that basically you (sometimes) get what you put in. I was uncertain yesterday, but I think today I'm ready to take the first step towards this crazy dream of mine.

>Best of luck. You can do it!

Thanks! And good luck to you as well. :)

I was interested in coding from a young age but was a terrible student. I barely scraped through high school and never completed any tertiary education. By 22 I was unhappily working as a pizza store assistant manager.

I then took a pay cut to get a job as a tech support guy at a tiny local internet provider. Over the next couple of years the company merged with a bunch of other small ISPs and I found myself given more responsibility. Not liking all the paperwork this involved I wrote some web based tools in perl to make my life easier. This was noticed, as was the fact that I was cheaper than a "real" programmer, and when they wanted to expand the dev team I was given the job. Now, after more than a dozen years and quite a few different organizations I'm a team lead on a pretty large and successful system.

I guess the point of the story is to build stuff, especially stuff useful to you right now, and don't be afraid to take risks.

I have also started my career in Software Development with a student job for QA where I was manually testing iOS apps while studying marketing. I was 24 when I took this job because I needed money and was good with computers and interested in software anyway. I am almost 28 now, working freelance with a partner, recently incorporated our little agency, developing products on the side and making around 120k$ a year pre-tax. So with some grid and determination it is well possible. My advise would be to:

- Ignore gatekeepers (The programmers at this first job ridiculed me when I was asking programming questions)

- When possible find a partner / mentor that you can learn form and with and whit whom you can motivate each other

- Keep on learning really hard, don't settle

- Show some fucking passion and good things will happen :)

If you're not in an environment where you have mentors, or if you find yourself easily distracted, sign up to a course at a school with proper in person training and testing or you're just going to keep procrastinating.

Definitely agree with this. It can be hard to get started and/or stay with doing the learning when you're doing it on your own. Some people just do better when learning in the context of a group/class or with a pair/mentor. It's really easy to spend time and find yourself just reading/browsing the coding sites instead of doing the work, i.e., writing code, so either try and set small, achievable goals, or find someone you can learn with.

I started when I was 24, that was 3 years ago. Since then I've shipped 3 million total downloads on the iOS app store as an indie developer. I've learned enough programming to make almost anything I can think of. I haven't actually ever looked for a job because I like my freedom so much, and I make enough to survive.

Figure out what you want to learn/build, and just start. When you hit seemingly insurmountable roadblocks, just take 20mins away from the computer and come back. Stick with it, have a long run view rather than a short run view.

To become a software developer, all you have to do is develop some software and keep doing it. I started when I was 13 and now 12 years later I think I'm doing OK. I started doing Freelancing jobs since I was 19 or 20.

You are young. Becoming a coder is very doable at that age. I started self-teaching myself how to code a little less than a year ago just before I was 24 with no prior experience besides believing myself to be raw at math just like yourself. If you understand math, it should not be too difficult. Everything is abstractions, and you get to create the abstractions. If you think about coding in terms of just organizing tables, it makes it really easy. Some of the fancier stuff might take some time (or some copying and pasting), but most of the syntax that is probably going to intimidate you is not necessarily useful in practice. Think of it as writing an argument in a philosophy class. What are the system’s conditionality’s? What is the end goal of the program? Sound, clean and uncluttered logic with a distinct argument and point is what you are going for. Personally, I found that I learned very fast using PHP, MySQL, HTML5, jQuery, JavaScript, and the LAMP stack. It gave me the foundation to do AJAX (asynchronous calling) and learn a lot of the intimidatingly sounding frameworks which are not altogether that useful, necessarily (I only know as far as my opinion). But I would recommend checking out that stack. They work together nicely and are not syntactically challenging. Another thing I'd recommend is replacing your recreational gaming like crossword puzzles, sudoku, etc with Project Euler. Its an enjoyable way to learn while using competitive fuel/energy rather than draining any oil of finishing a task for a task’s sake. However, for me, 100%, the single most important thing was setting myself projects, and committing myself to them despite my subconscious knowing they had no chance at success. The project I chose was a music new-era napster/iTunes in the cloud website. I would recommend something similar because it is relatively enjoyable to learn/code and there are a million different ways you can improve any base product you have, (offline playing, sharing at the blink of an eye, efficient uploading, and you can get rid of Spotify, Pandora, etc. You can also make it illegal as shit and feel like a cowboy and just see how great you can make it. Chances are, it will be really illegal but better than anything else you can currently get right now. Use that as motivation, enjoy the fruits of your labor, save money, and inspire yourself to keep going.

Once you've exhausted the features you can add to a music app, you can execute any idea that you come up with that utilizes the Internet, sharing, etc. You won't necessarily become a master of 4D printing, but any theory you have about anything you can test and create a physical representation of on the Internet. Don't rush building it for the sake of finishing. Learn and understand what you are doing and your next project will have the potential of promis. I spent 3-4 months working on a website that I knew had no chance of becoming anything. However, I just kept smashing my head against the wall and making it better while slowly but surely improving my skillset to the point where new things now come easily, because I understand the philosophy. Now that I have moved on from that initial music website I can now pursue much more innovative and intellecutually stimulating projects (which I wouldn't have been able to do had I not spent so much time on a project that I knew had no chance of success). Give yourself a throw away project, commit yourself to it, and use it as training for the next one. If you truly commit yourself, you should be able to build pretty much anything you see on the Internet 1 year from now. That is not a guarantee! But you have plenty of time and there no reason not to believe that you cannot.

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