Programming job without computer science background

lazyman

Disciple
I have a younger cousin who doesn't have a computer science or engineering background. I have thought about teaching her HTML, CSS, JavaScript, reactJS and some general IT knowledge. If time permits that may be can try nodeJS also. Timeframe is about a year for learning. Do you think it is possible to get a semi-decent programming job with this?
 
Building a portfolio is key I think, for a programming job. Might refer to The Odin Project. They teach everything you’ve mentioned plus SQL and they also encourage you to build your GitHub profile using the projects they ask you to make.
 
I have a younger cousin who doesn't have a computer science or engineering background. I have thought about teaching her HTML, CSS, JavaScript, reactJS and some general IT knowledge. If time permits that may be can try nodeJS also. Timeframe is about a year for learning. Do you think it is possible to get a semi-decent programming job with this?
I deal with a lot of younger programmers. A huge majority don't have any idea about computer science - so obviously they managed to get a programming job. But it is frustrating to make them understand simple things.

Can one become a "good" programmer ? I think no, with the current level of technology in the fields of compilers, cloud deployment, IDEs etc. In my opinion, one would need to know computer science to be a good programmer for at least next 10 years.
 
It's all relative ... There are plenty of examples of self taught professionals out there who have the innate talent and aptitude to be successful in the software field. Not everything is core data structures and algorithms based.

You could look at online free resources like freeCodeCamp, MIT open courseware etc... No need to fall for paid services like Coursera or whatever that say they will give you a verified certification.
 
Before learning programming, one also needs to have understanding of core subjects including maths. Without knowing how to use Maths to solve the actual program, even knowing the programming language will be of no benefit.
In short, knowledge of just programming languages doesn't make you a programmer.
 
I beg to differ on the maths part. You can have a successful career in the software field without it.
Yep. Mathematics definitely helps in when you are working on competitive programming problems.
Web development on the other hand doesn't require much of maths, though maths does act like workout for brain so having a healthy fast thinking brain can't hurt.
 
I agree, math helps you rationalize various concepts in programming. Trust me, I know my fair share of people who mug-up coding for exams and dont' understand how it works because they don't have math in their syllabus.
It's all relative ... There are plenty of examples of self taught professionals out there who have the innate talent and aptitude to be successful in the software field. Not everything is core data structures and algorithms based.

You could look at online free resources like freeCodeCamp, MIT open courseware etc... No need to fall for paid services like Coursera or whatever that say they will give you a verified certification.
CS50x (free version of CS50) is definitely worth one's time. Teaches everything, even for a complete beginner.
 
I beg to differ on the maths part. You can have a successful career in the software field without it.
I don't doubt it, because it is a vast field. But when one starts with basic programming, even the simplest programmes required maths. So someone who is not from the science and engineering background will have a tougher time. My brother went through calculus and a lot of physics topics again when he started working on his game. Maybe he could have just used the unity features and be done with that but learning the science behind what he was trying to emulate on-screen helped him code better.
Since the OP is asking for recommendations for someone new to programming, I believe it would be better if the person also learns basic maths that would help his/her problem solving abilities.
 
Yeah some areas probably are good to have math background like game programming if you want to apply physics or 3d transformation maybe... Matrix multiplication for rotations, transformations, I guess even things like ray tracing or colour operations, lighting etc.

I remember writing an analogue clock UI on a Casio pb2000c and Sinclair zx spectrum which required me to know trigonometry sine tangent cosine etc way back when I was in school, sure.

But consider some other areas... Like when I did cryptography coding early in my career. Sounds like an area which would require math chops? Nope! Concepts like encryption, decryption, digital signature, hashing etc were easy to pick up and implement in real products without having the need to know the math behind the actual algorithms like factorisation and what not. Leave the hard stuff to the domain experts.

Also reminds me of when I first got my hands on a PC on my father's office desk, again back when I was in school. When I got a bit familiar with the MS-DOS batch file command syntax I went and wrote a "conversational AI" as I now like to call it rivaling Alexa. Lol. It was just a bunch of bat files written and stored in a directory added to the path with names like hello.bat what.bat who why where when how .bat etc.

The code was just a hierarchy of if then else which checked for specific parameters provided to the batch files and printed a few random responses from a stored list.

So you typed "what is your name" and it would print a reply "my name is compaq" after matching the parameters "is your name" passed to the what.bat file lol.

I guess this is why you see memes joking that AI is nothing but just a complex structure of if then else statements.

No math required at all. Logical, critical, analytical thinking, yes. Very much required to write good programs that solve real problems.
I have a younger cousin who doesn't have a computer science or engineering background. I have thought about teaching her HTML, CSS, JavaScript, reactJS and some general IT knowledge. If time permits that may be can try nodeJS also. Timeframe is about a year for learning. Do you think it is possible to get a semi-decent programming job with this?

To address op query though, yes it is very much possible to get a very decent and not just semi decent programming job with a little effort.
 
Last edited:
Yeah some areas probably are good to have math background like game programming if you want to apply physics or 3d transformation maybe... Matrix multiplication for rotations, transformations, I guess even things like ray tracing or colour operations, lighting etc.

I remember writing an analogue clock UI on a Casio pb2000c and Sinclair zx spectrum which required me to know trigonometry sine tangent cosine etc way back when I was in school, sure.

But consider some other areas... Like when I did cryptography coding early in my career. Sounds like an area which would require math chops? Nope! Concepts like encryption, decryption, digital signature, hashing etc were easy to pick up and implement in real products without having the need to know the math behind the actual algorithms like factorisation and what not. Leave the hard stuff to the domain experts.

Also reminds me of when I first got my hands on a PC on my father's office desk, again back when I was in school. When I got a bit familiar with the MS-DOS batch file command syntax I went and wrote a "conversational AI" as I now like to call it rivaling Alexa. Lol. It was just a bunch of bat files written and stored in a directory added to the path with names like hello.bat what.bat who why where when how .bat etc.

The code was just a hierarchy of if then else which checked for specific parameters provided to the batch files and printed a few random responses from a stored list.

So you typed "what is your name" and it would print a reply "my name is compaq" after matching the parameters "is your name" passed to the what.bat file lol.

I guess this is why you see memes joking that AI is nothing but just a complex structure of if then else statements.

No math required at all. Logical, critical, analytical thinking, yes. Very much required to write good programs that solve real problems.


To address op query though, yes it is very much possible to get a very decent and not just semi decent programming job with a little effort.
1. Logic is a branch of mathematics.

2. In the software industry, a lot of what you describe is called scripting. Unless imbued with other talents, people who do scripting are typically paid less than "programmers", and scripters not considered "software developers". In devops, sysadmin work, etc. one typically needs to do scripting but not programming.

3. In fact, the concept of "if" needs to come from algebra - a branch of mathematics. Plenty of people who don't understand algebra don't really understand "if". If you told them, "if graphics cards get cheap tomorrow, I'll buy this", they could answer "graphics cards won't get cheap tomorrow". Which is acceptable outside of algebra.

In algebra, same as in programming, it is not acceptable. In algebra, "if x = 3, what is 2x + 4?" cannot be answered "x can never be three, that will convert box into bo3".

4. It is sad that this assembling of other people's programs with scripts is being considered programming. Quality of software developers is going down, and good ones are very expensive. When no framework is available for a niche problem, such people are in trouble, googling whole day.

5. Yes, in cryptography, it is best not to meddle with the maths of it. Bruce Schneir once said that there are around 10 people in the whole world who are qualified to write a new cryptographic algorithm. But, I deal with people, who due to not understanding the basics, don't know when to encrypt, one way hash, sign, or encode. They also use these terms interchangeably, which confuses educated people.
On the same topic, generating unique numbers, vs various types of cryptographically secure random numbers is what many programmers need to do. Even scripters need to know the difference between /dev/random and /dev/urandom. Knowing which one you need, choosing between the alternatives, and using it needs some maths.

All in all, TL;DR, yes one can dodge all the situations where one needs maths and continue one's career of software development. One of my family members doesn't know how to turn a car on an upslope - they do drive. But still it is advisable to learn turning a car on an upslope when driving, and related parts of maths when starting a programming career.
 
By that measure, even things like music and language have their roots or genesis in mathematics, let alone programming.

Reeks a bit of elitism to me. Sure, I detest people who get into software or programming just for the fat paycheck without investing energy into getting a computer science education or at least having a real knack and enthusiasm for the field, but hey, why not give everyone a fair shake to prove themselves?
 
Well, I have led teams with members from diverse backgrounds including many who are not from engineering and computer science.
While they do not do core programming with a language like C, Java or Python as they are required to work on vendor specific programming platforms; they still need to understand and translate business requirements and analytical models to programming constructs and logic. In one of the bigger teams, the best performer was a self taught lady with Economics background. In another, it was a guy with Commerce background. Exceptions ? Maybe; but at least they show that a computer science or engineering degree is not a prerequisite for good programming knowledge and skills.
I would also try to impress on taking time to understand the functional domain and the business problem well, as at the end of the day if you do not understand the problem you are trying solve, you will never be able to come up with the correct solution.
 
I'd like to talk a bit more about myself lol... Reminded of the following after reading the mention of compilers in an early reply in this thread...

One of the subjects during my computer engineering college days was compiler construction. I struggled with the theoretical exam, nearly flunked it.

The practical portion on the other hand I enjoyed so much writing a basic but working compiler for a Pascal-like programming language syntax, with all the concepts learnt in theory like your tokeniser, parser, AST abstract syntax tree, (didn't write an optimiser), intermediate code generator, assembly machine code generator output...handled basic language features like variable declaration, assignment and modifications... Some control flow statement like for while loop and if else flows. Which was run on a DEC PDP-11 simulator which I also wrote using the concepts from the computer architecture subject which included CPU architecture like ALU arithmetic and logic unit... Micro operations, register and memory load store and other ops... You name it. Also wrote an assembler which took the same assembly code generated by the compiler to output machine code readable and execution by the simulator. It was so so much fun.

But I didn't end up working on a compiler team like visual studio or the FSF GNU GCC tool set sadly boohoo, just an average joe programmer.
 
@OP If your cousin wants a long arc in the field a CS degree would be helpful. It is not absolutely necessary, but it will open doors quicker. Following Links would be helpful:
That being said, these are long term plans, there are plenty of people who gain degrees while working and if your cousin needs a job immediately doing a bootcamp equivalent coursework on Udemy etc would be a good path. FreeCodeCamp, Orielly Media are good resources. Ask him to spend some time on Algorithms daily.
Although basic math is helpful in all aspects of life very few areas of software development need advanced math, knowing the basics and learning the advanced stuff when necessary would be a good idea.

Software Engineering and Computer Science are completely different fields, ask him to understand the difference between these early.
Spending time on Hacker News will help him get perspective of people in the top of their field.

In the software industry, a lot of what you describe is called scripting. Unless imbued with other talents, people who do scripting are typically paid less than "programmers", and scripters not considered "software developers". In devops, sysadmin work, etc. one typically needs to do scripting but not programming.
Curious, have you worked on any distributed systems at scale? Managing clusters which handle even a few hundred thousand requests per second is a huge field in itself - Site Reliability Engineering.
 
I'd like to indulge myself again in this thread if I may by writing about another little personal anecdote.

I was reminded about this due to the math discussion here.

A few years ago when I was interviewing for a job being an experienced senior engineer/manager, one interviewer, a more senior technical person than me, asked me what appeared to be a basic programming question over a phone screen. I was initially perplexed why he asked it , thinking maybe he wanted to weed out poor candidates quickly but immediately realised what his probable reason was for asking.

Question was... Given a basket of mixed number tokens like in a lotto or bingo game with numbers from 1 to 100 but random... If you remove a token one by one totalling 99 tokens, how would you know which is the last remaining number?

Can you folks tell a different reply or approach than what I gave to him below?

I replied there are 2 approaches a programmer might code up, depending on whether they take a naive approach using data structures and algorithms... Or a more maths oriented programmer would take a more efficient optimal approach.

The first would use a SET data structure and populate it with integers in a for loop from 1 to 100. Then remove 99 integers in another loop. Finally print the last remaining integer to arrive at the solution.

The math oriented programmer on the other hand would recognise the number sequence from 1 to 100 results in a sum total calculated with the formula

N * ( N -1 ) / 2

I believe that's the formula don't kill me if I have it wrong haha but digress...

Now after you get the total sum in a variable , then in a for loop instead of deleting from a data structure you simply subtract the 99 numbers one by one from the total sum and at the end of the loop the variable holds your answer!

Yes the math approach would be faster, more efficient etc but I would argue the so called first naive approach is more intuitive and the code more readable for other programmers who might need to maintain or bugfix the codebase...

Do any of you have other interesting replies to this interview question? I just wanted to share my experience and my response to the question.

edit:

Erm, I think it's n ( n+1 ) / 2 ... plus not minus?
 
Last edited:
I'd like to indulge myself again in this thread if I may by writing about another little personal anecdote.

I was reminded about this due to the math discussion here.

A few years ago when I was interviewing for a job being an experienced senior engineer/manager, one interviewer, a more senior technical person than me, asked me what appeared to be a basic programming question over a phone screen. I was initially perplexed why he asked it , thinking maybe he wanted to weed out poor candidates quickly but immediately realised what his probable reason was for asking.

Question was... Given a basket of mixed number tokens like in a lotto or bingo game with numbers from 1 to 100 but random... If you remove a token one by one totalling 99 tokens, how would you know which is the last remaining number?

Can you folks tell a different reply or approach than what I gave to him below?

I replied there are 2 approaches a programmer might code up, depending on whether they take a naive approach using data structures and algorithms... Or a more maths oriented programmer would take a more efficient optimal approach.

The first would use a SET data structure and populate it with integers in a for loop from 1 to 100. Then remove 99 integers in another loop. Finally print the last remaining integer to arrive at the solution.

The math oriented programmer on the other hand would recognise the number sequence from 1 to 100 results in a sum total calculated with the formula

N * ( N -1 ) / 2

I believe that's the formula don't kill me if I have it wrong haha but digress...

Now after you get the total sum in a variable , then in a for loop instead of deleting from a data structure you simply subtract the 99 numbers one by one from the total sum and at the end of the loop the variable holds your answer!

Yes the math approach would be faster, more efficient etc but I would argue the so called first naive approach is more intuitive and the code more readable for other programmers who might need to maintain or bugfix the codebase...

Do any of you have other interesting replies to this interview question? I just wanted to share my experience and my response to the question.
I may be showing my poor logical skills, but why will the math approach be faster and more efficient?
Is it because there will less number of operations, as we will save 1 for loop( for populating the set)
Also, I think the sum formula for n consecutive positive integers starting from 1 is n(n+1)/2.
Edit: I just saw your edit, lol sorry.
 
I may be showing my poor logical skills, but why will the math approach be faster and more efficient?
Is it because there will less number of operations, as we will save 1 for loop( for populating the set)
Also, I think the sum formula for n consecutive positive integers starting from 1 is n(n+1)/2.
Edit: I just saw your edit, lol sorry.

Yup, you're right both parts...

1st for loop is eliminated with a quick arithmetic operation and the second for loop just does subtractions instead of modifying a data structure which will have its own underlying code complexity.

You are saving in time and space complexity but adding to code complexity in the sense it's less readable and maintainable for other programmers who will have differing levels of talent.
 
Yup, you're right both parts...

1st for loop is eliminated with a quick arithmetic operation and the second for loop just does subtractions instead of modifying a data structure which will have its own underlying code complexity.

You are saving in time and space complexity but adding to code complexity in the sense it's less readable and maintainable for other programmers who will have differing levels of talent.
Thanks for the explanation!
I may have to start binge solving problems on leetcode :)
 
Curious, have you worked on any distributed systems at scale? Managing clusters which handle even a few hundred thousand requests per second is a huge field in itself - Site Reliability Engineering
Exactly. And Google, being credited with inventing SRE, themselves mention in their golden book on SRE that the SRE engineers are "almost" programmers (I forget the exact words). They know most of what their regular programming engineers know, so that they can take up complex automation work for what was earlier in dumber days called devops / infrastructure.
 
Last edited:
Back
Top