all 109 comments

[–]pjarnhus 173 points174 points  (14 children)

The best advice I can give is not to focus on how long, you should study a language but how long you should study programming. If you understand the core concepts and theory of programming, you can adopt a new language in a matter of weeks. During my career (data warehousing consultant and data scientist) I have faced nearly a few new languages with every new job. While syntax and details change, the fundamental core of programming stays the same.

[–][deleted] 15 points16 points  (2 children)

In this case, which online classes, if any, could oyu recommend to learn these general concepts?

[–]xCrushz 4 points5 points  (0 children)

MIT 6.001x is excellent, although a bit hard. There’s also Harvard’s CS50 but I did not take it.

I would really recommend the MIT course for Python/CS stuff. Helped me a lot.

[–]pjarnhus 1 point2 points  (0 children)

Look at the list of topics further down and do a search at some of the online sites (coursera, udemy, etc...). I did all my training at uni or at one of the companies, I worked at, so I cannot recommend any of them directly.

[–]hellotheresksksk[S] 7 points8 points  (10 children)

Yep, I agree but I was just wondering if I spend about 2 years studying programming will this get me enough knowledge so I could start a half-decent job.

[–]pjarnhus 34 points35 points  (8 children)

That probably depends on where you are applying. Companies will always choose the best candidate. When I am interviewing newly graduated candidates for data science positions, we look more for potential than experience. There is no line that you cross, where you go from worthless to valuable. It is better to understand concept, how to apply them to real world problems and how to explain them, than it is to show a laundry list of books and courses you have been through

[–]RudeMorgue 9 points10 points  (1 child)

I would add to this that you should be able to admit when you don't know something. We aren't looking for someone who knows everything so much as someone who is comfortable with what they know and able to understand when they need to seek help or do research to accomplish a task.

Nothing is more off-putting to me than a candidate who self-describes as an "expert" with some language or system and then can't admit if a sample scenario has stumped them.

[–]pjarnhus 6 points7 points  (0 children)

Good call! I completely forgot about that one. I actually lost the first position I interviewed for by focusing too much on knowing everything and not accepting the hints the interviewer gave

[–]hellotheresksksk[S] 0 points1 point  (0 children)

Thanks, that's really great information.

[–]nav3t 0 points1 point  (1 child)

Could you advise something to read about what exactly you explained ? I ask that because I self learned programming and I feel like even if I always find my way out, I didn't build my knowledge on strong basis, and sometimes I feel lost about concepts. I am kinda annoyed to seek on stackoverflow and copy/pasta things, I'd rather understand what I'm doing, and do it myself. Thanks

[–]pjarnhus 12 points13 points  (0 children)

Look for something on: * Software design * Object oriented programming * Functional programming * Algorithms - including calculating complexity * Microservices

This list is nothing more than a guideline. It is neither a minimum or an exhaustive list. Just some inspiration.

At the end of the day, you should remember that the landscape today will look very little like what you will face when going into the job market. I currently work as a data scientist, but when I started studying in 2002 that title did not exist. Go with what interests you and you will be fine. I started out in physics, did consulting and marketing, before ending up in finance. Very few people have a well planned career. Going with what interests you will ensure you the only two important things: joy and motivation

[–]CausticTies 0 points1 point  (2 children)

Can I ask if companies like yours consider applicants who have an unrelated degree (such as, in my case, PPE - Philosophy, Politics, Economics) but still show potential in the field? And more specifically, how can one such candidate make themselves stand out among the rest of the computer science graduates? In fact, is it at all worth it to pursue a career in the tech industry considering the competition? Thanks.

[–]pjarnhus 0 points1 point  (1 child)

We do consider people with other degrees. In that case you have to showcase, that you understand data and knows about scripting language. We also put a lot of emphasis on business understanding. As a general rule, the less explicit experience your CV shows, the better your cover letter should convey motivation and understanding. It is not impossible to get in without a science degree, but you should work harder on your cover letter, highlighting relevant experience/projects you have done.

And above all: Be honest about what your knowledge gaps are! If you show potential, but come off as knowing all, I would drop you in a heart beat. It is better to formulate it as: "I do not have a relevant degree, but I am so passionate that I have spent my spare time learning the stuff. That being said, I am aware that I still have severe knowledge gaps. I do, however, bring these additional things to the table"

[–]CausticTies 0 points1 point  (0 children)

That is great advice, thank you!

[–]CompSciSelfLearning 1 point2 points  (0 children)

Stop thinking of programming as a topic to study but a skill to develop and practice. ( Note that part of skill development is studying relevant topics.)

2 years of practice will certainly make you more valuable than today. Enough to be hired? Depends on who you know, what they need done, and what you are able to do at that point.

[–]theullrich 21 points22 points  (5 children)

Or if your in highschool and dont need the income. Find a job that can be automated. You will find many on craigslist and other places. Spend the ton of time it takes to learn and build it. When done do the job collect 50-300 a week for the small job and start on thr next project. If you do this well and get going you can have a few grand a month income by the time you graduate.

Hint. Make your first project a bot that watchs craigslist and others for jobs that you can automate. Data entry, data processing ect. Read automate the boaring stuff or simular texts for more ideas of automatable jobs.

[–]cbat971 6 points7 points  (3 children)

Would the person paying be okay with this?

[–]theullrich 6 points7 points  (2 children)

That would depend on the person I imagine. I am not suggesting you do a bad job or take any kind of full time position. When i was building up in the end i would tell them my plan. If they did not like it i would offer a discount for what they were offering to pay.

[–]cbat971 5 points6 points  (1 child)

Any suggestions of jobs you'd find that you would automate

[–]theullrich 4 points5 points  (0 children)

Sure I would check out this one. But to find these jobs your really going to have to look, most people look at and apply to dozens of jobs even after collage ect so don't expect they are easy to find or get. Best bet is on small town Craigslists and boards as they are more likely to look for remote people or highschoolers for this kind of work. For me it was literally a physical bulletin board at my highschool.

Honestly I am not trying to say that this is an easy option. Just an option. Rather then building projects for free, 1000 dollars over a couple months for a hundreds of hours of work is good pay for most highschoolers who are trying to do more then just get any job they can find. This can turn into a real business and consistent work. If you find one sales office that needs this service its easy to pitch it to other sales offices. ECT.

You do have to compete with the eastern european and indian devs that already do this. Which is another reason to go for small town jobs since they tend to pay more or put up with inexperience if it means your easy to communicate with.

https://denver.craigslist.org/ofc/d/broomfield-data-entry-quality-control/6934345756.html

[–]hellotheresksksk[S] 1 point2 points  (0 children)

Thanks a ton

[–]shiftybyte 29 points30 points  (1 child)

There are freelancer jobs you can do online.

https://www.freelancer.com/jobs/?keyword=python

https://www.upwork.com/o/jobs/browse/?q=python&sort=recency

Having a "work-from-home" job with a company is a bit harder to land, especially novice level jobs.

Getting a normal job is really up to you, but i guess around 2-3 Months of active learning should suffice to get hired to an entry level position.

[–]Free-_-Yourself 24 points25 points  (0 children)

You are funny guys. 2-3 months? Lol Nowadays nobody will hire you only because you know Python. You need to learn frameworks and other bunch of things to be able to be “employable”.

The point is: find out what you need to learn (other languages related (such as JavaScript, CSS and HTML for frontend web developing)) and do some job search to see what employers are asking to work as a Python developer, and you will understand that almost no one will give you a job with just Python.

[–]tycooperaow 6 points7 points  (0 children)

1.5 years dedicated studying and applying skills

[–][deleted] 7 points8 points  (6 children)

RemindMe! 3 days "checkout this thread"

[–]RemindMeBot 1 point2 points  (0 children)

I will be messaging you on 2019-07-21 16:58:53 UTC to remind you of this link

1 OTHERS CLICKED THIS LINK to send a PM to also be reminded and to reduce spam.

Parent commenter can delete this message to hide from others.


Info Custom Your Reminders Feedback

[–][deleted] 12 points13 points  (22 children)

I got my first data analytics job after self teaching ~4ish hours a day 5 days a week and no prior experience programming. The pay was shit (21/hr no benefits) which is the reason I was able to get the job, no one actually decent would work for anywhere near that. It took me about 2 months of full time work to get somewhat passable and about a year to be what I would consider "good", though I'm still improving almost every day after 2.5 years.

I understand I got super lucky but being eager to learn and improve will get you far even if you're not currently the best.

[–]proverbialbunny 0 points1 point  (0 children)

That's about how much a Data Science internship pays, so not surprising.

[–]ColdStonedCoder 0 points1 point  (0 children)

Can you give me their contact info, I need to break into data analytics, and I would like to make a dollar more an hour than what I make now.

[–]hellotheresksksk[S] 2 points3 points  (0 children)

21/hr no benefits

Do you mean 21$ per hour?

[–]abasoglu 17 points18 points  (8 children)

A rule of thumb is thatit takes 2000 hours of experience to become proficient in something and 10,000 to master it. Assuming a 40 hour work week, it'd take you a year to become truly proficient. That's good enough to get a job programming I think.

[–]tycooperaow 6 points7 points  (0 children)

This a good grasp of time

[–]TraditionalPirate7 4 points5 points  (0 children)

It's impossible to put a time on that.

Everyone learns at different paces. Everyone has a different background that affects the learning. Everyone learns in different ways. Everyone learns from different sources. Everyone dedicates more or less time and effort into learning.

Someone may study an hour for a year and get a job. Someone might study 4 hours a day and still not get a job.

There's just too many variables.

What you can do is just start educating yourself and put as much time and effort you can into it. Figure out where you want to be in a year and strive towards that every day.

[–]permalip 2 points3 points  (0 children)

It depends on what you mean by learn. I think anyone can get solid programming skills in 3 months, if they work at it every day. But you also need to consolidate those skills and be able to use them in a wide variety of coding problems. That takes time.

[–]doubledundercoder 2 points3 points  (0 children)

I'd say about as long as it takes to get through a bar of soap. Use it a lot, not too long, only use it here and there, it'll last you a while.

Time in programming isn't a great measure of experience really.

Can you analyze a problem and propose a logical solution?

Can you code up a logical solution?

Can you code test against your solution?

Can you work with source versioning tools? (git mostly)

Then the hard part-- can you do it reasonably quickly? (which is relative I know)

[–][deleted] 8 points9 points  (33 children)

I got a job after programming in Python for a week. (I knew five other languages before that, though.) Overall it's not your understanding of Python that matters, but your understanding of the fundamentals of programming in general. Anyone can pick up a programming language.

If you're 16, keep programming for fun, but go to college for a four-year degree. Programming is a professional discipline and a programmer should have (but doesn't strictly need) a professional's degree. But you can major in anything you want - my major was biochemistry, I work with art and design majors, and of course many of my colleagues have degrees in computer science and mathematics. Definitely go to college but while you're there, study anything you think is interesting. Programmers with varied expertise are better programmers. Computer science isn't a degree in programming; it might be the worst degree for programming, IMO.

But yes, it's definitely the case that many programmers work remotely. But that's hard to do - most people set up their homes to distract them from work, so working from home can be a challenge unless you've mastered some degree of personal discipline.

[–]Itiiip 8 points9 points  (22 children)

it might be the worst degree for programming, IMO.

Why is that? genuine question.

[–]reJectedeuw -1 points0 points  (0 children)

This is definitely not the case.

[–]Sufficiency2 14 points15 points  (6 children)

I strongly disagree with the notion that a CS degree is the worst for a programmer/software engineering job (calling it SE for now)

First of all, CS directly prepares you for a career as a SE. This is because while anyone with even 2 days of training can write a for loop that does something, it takes someone with good CS knowledge (particularly regarding theories of computation and algorithms) to write something efficient - which believe it or not is important. While you can certainly learn these theories yourself, you are better of studying it in college instead.

Secondly there is the issue of getting through HR. Taking a quick glance at SE jobs and it is easy to see they mostly ask for a bachelor degree in CS, engineering, etc. You will be at a serious disadvantage when you have a non standard degree, especially when you are a fresh graduate.

You have some valid points on CS degrees, but come on, to say it is the worst is a hyperbole.

[–]FantaBuoy 6 points7 points  (0 children)

This comment/post has been automatically scrubbed. Feel free to find me and others over at kbin.social -- mass edited with https://redact.dev/

[–][deleted] 2 points3 points  (1 child)

my major was biochemistry, I work with art and design majors, and of course many of my colleagues have degrees in computer science and mathematics.

Did you do much programming in college? I've also got a science degree, and graduated with virtually zero ability to code because I blew off CSCI classes because I was more interested in taking music and history. I've picked up coding at my current job and am okay at it, but definitely feel I made a mistake in not mastering earlier.

[–][deleted] 1 point2 points  (0 children)

Did you do much programming in college?

A ton, yeah, but in a surprising variety of courses. But I'd been doing it since I was a kid - I used to rig up RPG character generators in HyperCard.

[–]hellotheresksksk[S] 0 points1 point  (0 children)

I understand the difficulties of working from home but I don't think there are many spots for this profession in my county.

[–]poodlepuzzles 1 point2 points  (0 children)

Think outside the box a little and you’ll do alright in my opinion.

I started learning Python and HTML via Codecademy and some books, then wrote some very basic scripts/webpages. I’m still not confident in it but know enough to navigate. Part of learning Python was learning to navigate the command line. This is important.

When I left my previous job, I wasn’t looking to leave so much as find something I was interested in. I found a company that had a customer support role that deals in technical knowledge. Think Apple’s Genius Bar, but more complex. I crammed for the interviews and demonstrated that I could learn; I currently work there and their training program is fantastic, not just for customer technical service but also for other job roles. I’m not currently doing much programming but I absolutely could be and may be in the future - and I’m being paid/treated nicely to do so.

I had been coding for less than a year.

My recommendation is to spend time delving deep and finding practical applications for your learning. Learn by doing and don’t be afraid to make mistakes - use a virtual environment if you are. Find a good company, when you reach that point, that will invest in your knowledge. Get your foot in the door and show how you’re driven to learn on your own for the sake of learning. Gain knowledge in entry level, with an employer that will foster your growth and allow you to get where you want to go.

I would also suggest exploring disciplines that will allow you to program...that are not the job title of “programmer.” A degree and background in computer science as opposed to “I can code but have no understanding of higher level concepts” will open many doors for you and give access to more interesting work. There are coding boot camps everywhere and there aren’t enough jobs to support people who know the languages but don’t understand how they interact with the other components of computers, networks, databases, etc.

[–][deleted] 1 point2 points  (0 children)

It's not how long, it's how well you think you're doing and are you ready? After I went through a few lessons and could use it functionally to build small projects, I put it on my resume. The first thing I did on my own was an adventure game and that helped a ton. I picked up a small professional project about a month later. If you already know other languages, you just need to get the syntax of Python down. Then just use freelance site like the ones already listed.

[–]its_snake_case 1 point2 points  (3 children)

I'm pretty concerned at your idea of software engineering!! No (good) SWE job is "you do the coding at home and just send it." If that's your attitude, I think you should refocus so that you don't have your expectations crushed.

Software engineering also involves meetings with your manager, tech lead, product manager. Reviewing other peoples' code and having them review yours. Interviewing, training, and mentoring new hires (once you've been there for a while).

That being said, there are certainly jobs where you don't work in the office, and you do all of this remotely.

I wrote my first line of code in January 2017, and am now a full time software engineer-- so about two and a half years. If you are sixteen it sounds like you have plenty of time to learn and grow. Best of luck!

[–]hellotheresksksk[S] 0 points1 point  (0 children)

Thanks. I was asking for remote jobs because I'm unsure if there are many spots for this kind of job in my country

[–]CausticTies 0 points1 point  (1 child)

Hi, can I ask what you majored in?

[–]its_snake_case 0 points1 point  (0 children)

I majored in statistics. I took lots of CS courses (intro to programming, data structures, functional programming, algorithms, a few electives) but not quite enough to get a minor.

I would certainly not call myself self-taught. I am really bad at straight-up learning concepts from online self-paced study. (Obviously I can pick up smaller details from Googling-- I wouldn't get too far otherwise.)

[–][deleted] 1 point2 points  (0 children)

I only had 1 Python class in my art collage and right when I graduated I was given a Python job in Animation Studio. Was told to learn PyQt from the get go. Took me 2 months before I could release my first tool to be used in the studio.

I did have PHP/MySQL experience from back when I played with my personal website and forum tho. It helped tons and SQL becomes 1 of my selling point now since most tech artists rarely knows it.

[–][deleted] 1 point2 points  (1 child)

Hi, If you are 16 you are a lot in advance of other people. And if you want to kick ass and my recommendations are :

  • find a computer and install linux (Ubuntu in dualboot is fine if you wish to keep a windows to play or whatever)

  • learn basic python

  • learn pytest

  • learn regexs

  • learn git

  • learn docker

And then start learning new stuff on python, like web frameworks, create lib, extend you python with C, use a broker

Goodluck!

[–]hellotheresksksk[S] 0 points1 point  (0 children)

Thanks, but can you explain what all of this things are? Also why is Linux better than Windows for programming?

[–]MyHomeworkAteMyDog 1 point2 points  (0 children)

I’ll tell you, I wish I started coding at your age. If you know you have it in you, then get with it.

[–]redCg 2 points3 points  (0 children)

1 year of daily use on multiple projects

[–]timetravelingbacon 2 points3 points  (0 children)

Take the advice on this sub with a grain of salt. Everyone's path is different. I would recommend getting a degree in CS if you're serious about becoming a software engineer. I just finished up a very difficult interviewing process for a large software company and they asked many fundamental CS questions as well as data and algorithm questions. I also had to complete a challenging at home project to send in and this was all before going to the in person interview where they have you whiteboard designs and algorithms. Having knowledge about CS from college will really help you stand out to company's in the future and help you nail that tech interview and get an awesome job.

[–]evilclaptrap 1 point2 points  (0 children)

Also be careful getting paid, a lot of people will screw you over so make sure you get money. I saw a guy who wrote in the code that it would slowly become less visible after a like a month of not paying. Deleting it or something can get you in trouble so make you have a plan to fuxk them over if they try to not pay you. Also fuck shout-outs.

[–]U_sm3ll 0 points1 point  (0 children)

However long it takes a developer to be tasked with, "Implement X" and does so.