last day (16 days later) » 

12:36
168
A: I'm in isolation - How can I prove that I can code without leaving the house or paying much money?

Jeffrey supports MonicaNot to be rude, but if If you gave me any FizzBuzz-like question, I would expect to fail it. Then you can't code at all. The only thing fizzbuzz do is weed out candidates who cannot code. If you want reasonably respected coding qualification The only thing you can do is get mileage....

"can't code at all" is a bit extreme. Can I code well? Absolutely not. But can I Google my through Java or R until they do what I want? Absolutely.
Thanks, I've edited my question to reflect my lack of real skill.
FizzBuzz is not a tricky problem, it really doesn't ask you to do anything that isn't already given away in the problem statement. All you need to do is write code. Saying "I can do FizzBuzz with the help of Google." is like saying "If you asked me to fry an egg, I couldn't do it, but I know how to order food online." The good news is that there is a lot of FizzBuzz type problems out there you can practice. Look for Hackerank or Project Euler and spend some time grinding through the exercises, then you should be able to pass a simple coding test.
Also leetcode is one nice site to practice on smaller examples, and It gives the memory usage and execution time as feedback which is important if you want to learn something by yourself. Also make sure you have a working development and debug environment on you computer for the language you try to learn. Then just start writing and practice until you can be woken in the middle of the night and explain the brute force solution of a leetcode example. Good luck!
@J.Mini Can't code at all really isn't extreme. Cobbling together bits of code you found on Google isn't coding in the same way that pouring cereal and milk into a bowl isn't cooking.
3
When I tried FizzBuzz I wound up socketing it for all sorts of potential features, so complications like "you don't buzz on Shabbos" can be quickly dealt with.
12:36
@Omegastick you are looking this from an industry perspective. To keep with the metaphor: by knowing about the concepts of milk and grains and by being able to grab something dairy based from the fridge and googling "is bread cereal" someone is already more competent than say 90% of people, who only ever see what Mom put in front of them.But yeah, maybe not something you can put on a CV.
Voo
Voo
@J.Mini Would you say someone knows statistics because they can google "Probability of getting a full house when drawing five cards from a full deck" and getting the right answer? Same thing. That said, programming is a skill one can pick up on their own and there's definitely worse ways to start.
" But can I Google my through Java or R until they do what I want? Absolutely." - that is a junior programmer.
@ThorbjørnRavnAndersen. Not a very good one...
@MadPhysicist As opposed to being a senior programmer. The point here is that even with a math degree, OP needs quite a bit of practice - we all search for information, but there may be more work ahead to be employable than OP may think.
@ThorbjørnRavnAndersen. We are in violent agreement here. The discrepancy between what is actually expected of a decent junior programmer and what OP thinks is expected will take much work to bridge. Coming from a scientific background, I can totally empathize with OP, but having gone through the grinder myself, I have little sympathy for his rosy expectations.
12:36
@Harper-ReinstateMonica Honestly I think that approach to FizzBuzz is almost as concerning as someone who can't complete it at all. If I was interviewing someone and they added a bunch of code to cover potential future features that I didn't ask for, I would be wary of hiring them. While that approach can be great at times, that comes at the cost of up front efficiency. In an interview I would rather have someone who can solve the basic problem and then also explain how they would make it more flexible if needed (or who would ask me which I was looking for)
@ThorbjørnRavnAndersen No, someone who can google their way through Java or R isn't a Jr Programmer. They aren't even a Coop student. They would generate negative productivity for a long time in a professional programming environment. Anything easy enough for them to do without help, a Jr Programmer could do in less time than it took to explain it to them. OTOH, if they can get up to speed in a few days, they could become one; but if they can, why haven't they already?
Fizzbuzz is a contrived example. Not many times you run across problems like that in your professional career.
@dan-klasson - That simple, no. But I just had to write a "if both / if one / if other / if neither" block of code last week. So the concept definitely does come up. How frequently probably depends on the problem domain you're working with.
@Bobson I guess what I'm trying to say is it's not a particular common thing, hence it might not be entirely obvious to you when you get asked. Add to it the stress of an interview. I don't mind the question at all. It's good to filter out not so good programmers. But to say you can't code if you don't pass that in an interview, I think is a bit too much.
@dan-klasson I don't think it is. FizzBuzz might be a bit contrived, but it's also a pretty simple problem to solve for anyone with a solid grasp of programming concepts. FizzBuzz isn't meant to be an accurate portrayal of the kind of coding you will do in real life, but instead to test how well someone understands the fundamentals of coding. If you can't do FizzBuzz without Googling it, then you probably aren't ready to enter the workforce and you need to practice more with exercises and small projects before you can claim to be able to contribute meaningfully in a professional setting.
12:36
@Abion47 I agree with your premise but I'm not even sure it tests how well anyone understands anything. I suspect there are quite a few people who could produce a valid FizzBuzz solution by trotting out loops and conditionals according to patterns they've memorized but don't really understand. So if someone can't write a FizzBuzz program, I'd expect they're almost certainly not qualified for a coding job, but if they can write the program, it doesn't tell you much either way.
@DavidZ it's an easy way to filter out candidates. You'd be surprised how many people even holding a PhD can't do a simple coding example like reversing an array. And those people are definitely not fit for a position even as junior developer. Filtering them out fast saves resources for evaluating the candidates further.
@DavidZ It tests how well people understand loops and if statements which are the building blocks of logic in programming. That may not seem like much, but it's sufficient in telling the difference between someone who actually knows how to program (i.e. applying logic to solve a problem) and someone who can only write programs by throwing together code snippets they find on the internet without really knowing what they are doing. Being able to use Google to solve a problem is a great skill for a programmer to have, but if that's the extent of their ability then they aren't a programmer.
@Abion47 "If you can't do FizzBuzz without Googling it..." I couldn't disagree more. Most programmers are used to Google things. Not think of solutions in their head and write it on a whiteboard. Again, the good ones should know how to do this. But many programmers you encounter in the real world will not. Pretty amazing how many people here don't fathom this simple concept.
@dan-klasson Read the last sentence of my last reply. Being able to use Google as a programmer is an invaluable skill. If you are rendered helpless when your access to Google is taken away even when presented a fairly simple logic problem like FizzBuzz, then you are not "not a good programmer". You are, to put it plainly, not a programmer, and you cheapen the significance of the title by claiming to be so. Logic is the core of programming, so if you are unable to apply logic to solve a problem, then you cannot be a programmer by definition.
2
@Abion47 "then you cannot be a programmer by definition". Sure if you make up your own definitions. The actual definition of the word is programmer is a person who writes computer programs.
 
2 hours later…
14:10
@dan-klasson @Abion47 is spot-on, 100%, correct. To solve FizzBuzz you need two things: (a) some experience with the syntax of the language you're asking to use, and (b) the ability to think logically, putting together pieces of the language to form a solution to the problem. Googling the answer does not count. Period.
Will you write FizzBuzz in your job? No, of course not. But if you cannot even logically deduce a couple of modulo operations and an if statement, how on earth are you going to effectively solve the real problems? OP is not ready for a programming job.
I do agree that there are many programmers people out there in the real world who fall into the OP's category. That's because schools are crap and the internet has ruined a generation of would-be programmers. It's not something to strive for, and it's not something that a decent employer will tolerate.
Pretty amazing how many people here don't fathom this simple concept.
14:35
@AsteroidsWithWings You people keep stating logic is important, yet you're really bad at it yourselves. Of course all programmers have at least some basic understanding of logic. But they might not be used to writing logic without the help of tools. Especially in an interview environment.
Again, Fizzbuzz is a good way to root out people who are not very good programmers. But you cannot say that people who fail at it are not programmers. Not only is that ridiculous, but it's also factually incorrect by the word's very definition.
"That's because schools are crap and the internet has ruined a generation of would-be programmers". Such an entitled thing to say. You can hold that opinion, I don't care. But reality doesn't look like that. Sorry to burst your bubble.
14:52
@dan-klasson Let me know if you want to have this discussion, and perhaps learn something, without personal attacks and insults. Until then, we'll agree to disagree. Have a great day.
 
3 hours later…
18:03
@AsteroidsWithWings There are no personal attack anywhere in my comments. If you don't have any arguments, just say so.
@dan-klasson Would you say someone who writes a book exclusively by going online and pulling snippets from people's creative writing snippets and not contributing their own prose an author? Would someone who makes a meal by following other people's recipes without understanding the science or applying their own experimentation a chef? Being a programmer is more than just being able to use other people's work for your own ends. It's about creativity and solving problems using logic.
Hell, if I was interviewing people, and one of them had a repository of generic projects but said "Please wait while I Google that" if I asked them to solve FizzBuzz and the other had no programming experience whatsoever but was able to describe the solution using generic logic terms and pseudocode, I'd be more inclined to hire and train the latter person because they show far more promise as a programmer.
Only being able to program using examples on the internet is to being a programmer what only designing cookie-cutter "Made In China" plastic tree houses is to being an architect. You can argue that you are still designing and building houses at the end of the day, but you are missing the point by a mile. There's a huge difference between being able to make a functioning program and being able to use logic to solve a problem.
Ultimately, it boils down to this. You can move the goalposts all you want, but that doesn't change what is expected of you in a professional setting. If you are incapable of solving a simple logic problem without relying on others for help, then you are going to be dead weight in a development team. Instead of making excuses, improve your skills so that this description doesn't apply to you and you can be someone who takes pride in their creative solutions.
18:28
No, no personal attacks at all. "you're really bad at [logic]", "[what you say is] ridiculous", "entitled", "reality doesn't look like this", "sorry to burst your bubble". Then, to top it off, the old "if you don't have any arguments, just say so" diversion tactic to distract from criticism of your behaviour. This is not how to have a mature discussion. Good bye, @dan-klasson.
(added to ignore)
@Abion47 The definition of the word is actually: "Making of an abusive remark on or relating to one's person instead of providing evidence when examining another person's claims or comments". None of which I did. The person using a diversionary tactic is you.
18:45
@Abion47 I would say a published author or an employed chef are both authors and chefs, yes. Too bad you're not interviewing people, because you'd potentially filter out decent candidates for me to hire.
I never said "only being able to program using the internet". I said people are used to coding that way, and if they come across a problem they're not familiar with, their first instinct would be to Google it. Taking away that ability might throw them off. Not to mention doing this in an interview setting.
I don't see the point. If you can make a functioning well written product. Does it matter if the person can recite Fizzbuzz in their heads or not? Because either way they're using logic to complete the goal. Lastly, just because you're a crack at algorithms doesn't mean you're not being dead weight in your development team. There are a lot of other things you need to know out in the wild that is not taught at uni.
18:58
Also, I'm not moving any goal post. You're the one trying to change the definition of the word. It probably comes off as pretty entitled in any profession, to say; unless you can do X, you're not a Y.
 
2 hours later…
Ray
Ray
21:01
@dan-klasson "Does it matter if the person can recite Fizzbuzz in their heads" Are you assuming that they're testing whether you've memorized the specification of FizzBuzz? Or that people are expected to have memorized solutions to it? Because neither is the case: the point of FizzBuzz is that it's such a trivial problem that if you described it to any remotely competent programmer, they should be able to solve it from scratch in under 5 minutes, even if they've never heard of it before.
And when I say solve it, I do mean without needing to look up a solution (looking up some syntax would be fine if they don't know the language that well, although I'd be worried if someone couldn't write it in some language without a reference.) Using references is fine, but to make an analogy: while I'm all in favor of using calculators or computers to do arithmetic, if I ask a mathematician what 2+2 is and they respond with "Hold on while I spin up MATLAB", I'm going to be concerned.
 
1 hour later…
22:35
@dan-klasson You say "I never said 'only being able to program using the internet'." and then immediately follow it up with "Taking away that ability might throw them off." You contradict yourself here. There's a difference between being having complex algorithms and APIs down by heart and being able to write a ~10 line program using simple logic without help from the internet.
"I would say a published author or an employed chef are both authors and chefs, yes." You dodged the question. The question was if you would consider an author or a chef who can only work using resources created by other people and are unable to execute their craft on solely their own level of skill or understanding could be considered authors or chefs. That question had nothing to do with their past experience or employment status.
"None of which I did. The person using a diversionary tactic is you." Can you please make note of who is actually replying to you? I didn't say anything to prompt this response.
"I don't see the point. If you can make a functioning well written product." This is EXACTLY my point. I would not trust someone who can't even use basic logic to solve FizzBuzz to be able to write a functioning well-written product. I would be too concerned if what they produced is a program with horrible or no separation of concerns, highly coupled spaghetti code, poorly architected class hierarchy and structure, and inconsistent coding conventions throughout.
Sure I might lose out on some potential good hires who simply had an unfortunate brain fart, but at the same time, whether someone was prepared for the interview process is just another indicator of how dependable the person might be as an employee.
22:50
@Ray No. I don't mean memorizing a solution. I mean being able to think of a solution to the problem in your head in a job interview setting. It's not something you do often as a junior developer. It takes skill and practice. But if you give any programmer access to a computer in a non-stressful environment, surely almost everyone would be able to come up with at least a shitty solution to the problem.
In the sentence "people who can't solve FizzBuzz without consulting Google", you are getting far too wrapped up in the "without consulting Google" part. The hire isn't being asked to implement a quicksort. They are just being given a simple logic puzzle and come up with a solution. If they can't even do that, then I question their ability to tackle more complex problems.
@Abion47 That's not a contradiction. Throw off just means it puts them in a position they're not used to. No. I didn't dodge the question. Anyone who is employed in a craft, is a member of said craft. Regardless how bad they are at their job. Sorry, my bad. I meant to address the other guy. I would be wary of anyone who can't pull off Fizzbuzz also. But just because they pass that simple test does not mean they know best practices.
"But if you give any programmer access to a computer... surely almost everyone would be able to come up with at least a shitty solution to the problem." What does that prove, though? Anyone with access to the internet can look up pre-baked solutions that other people came up with. To be a productive programmer, you need to be able to come up with your own solutions as well. And stop equating FizzBuzz to some astronomically complex algorithms that only gurus would be able to solve on the spot.
"Anyone who is employed in a craft, is a member of said craft." Again, my question said nothing about whether or not they were employed.
"Throw off just means it puts them in a position they're not used to." If we only ever made programmers do things they were used to, the world of developers would be utterly devoid of creativity and innovation. Being able to apply logic to solve a problem you've never encountered before is a fundamental skill that any programmer worth their salt should have.
@Abion47 I meant to write access to a computer without Internet. Again, if they are employed it does not matter how bad they are. E,g can only work using resources created by other people.
"Again, if they are employed it does not matter how bad they are." And again, answer the question without referring to the person's employment status. It's entirely possible to be a programmer without being a professional programmer.
23:04
Why would I answer the question without referring to employment status when that's my whole point? So now you've changed your mind and you're saying you can't be a professional programmer if you can't solve Fizzbuzz in an interview?
Now you are putting words in my mouth. Your point is that people who are hired as a programmer are by definition programmers. I can tell you that in my own experience that isn't true - I've known people who were hired as developers whose knowledge of practical programming reached maybe halfway through a Programming 101 class. Just because you've convinced someone that you are capable of doing a job doesn't mean you can actually do it. It could also mean you are a very persuasive non-programmer.
If you want to claim to be able to program, you need to be able to demonstrate that you can program. And part of that demonstration is being able to take a simple logic problem (bonus points if its one you've never seen before) and be able to come up with a convincing solution with minimal or no external assistance. Any idiot can google "FizzBuzz solution", but that doesn't give me any insight into your actual level of skill.
Yes, because if your job is literally to write computer programs, it's the very definition of what the word means. I've met people with masters in SE who couldn't create a simple MVC web app. People are different.
To be able to call yourself a programmer, you need to be able to program. To be hired as a programmer, you just need to convince someone with money that you are worth hiring.
Pulling scripts off of Google isn't programming. That's taking someone else's programming work and reusing it for your own ends.
"I've met people with masters in SE who couldn't create a simple MVC web app." Again, there's a big difference between being able to solve a simple logic puzzle and understanding the particulars of software architectural design.
And again, I want to emphasize that there's nothing wrong with using Google as a resource while you're programming. But if Google is your crutch and you are helpless without it, then while you could justify to yourself that you are a programmer by the dictionary definition of the word, that doesn't make you skillful, useful, or marketable.
You're obsessing over one thing. Sure a pretty important thing. But there's a lot more to software development. You can have a candidate that is very skillful at those things you require but suck at solving problems such as Fizzbuzz. And that candidate can still be productive and useful to you. One really ought to evaluate the candidate's whole experience.
23:20
You CAN'T evaluate a candidate's whole experience in the course of a job interview. The whole point of the interview is meant to gauge a person's skill level, and FizzBuzz is a tool for that end. If I created a test to gauge skill and someone aced it because they brought a book that contained all the answers, what have I learned about that person's skill level?
Programming is a discipline that requires logic and problem-solving skills. If you can't pass a five-minute (generous) test designed to gauge your logic and problem-solving skills, then why should I hire you?
Because there's a lot more to it than that.
Tell me, then, what a programmer can do that doesn't require logic and problem-solving skills. A programming language is itself an abstraction of logic.
I mean come on, dude. "Problem-solving" is the type of generic skill that everyone puts on their resume by default regardless of what job they are applying for. Forget programming, every discipline in every field that involves more than repetitive mechanical motions (the kinds that robots do now) involve some degree of problem-solving. What does it say about a person who can't solve a simple problem without relying on outside help?
For that matter, what does it say about the people who still insist that those kinds of people would still make productive employees in fields that sometimes require creative solutions to more complex problems?
Sure there are a ton of different types of people in the world, and a lot of them want to be programmers for different reasons. However, just like there are people who were not meant to be composers, models, or graphic designers, there are types of people who were not meant to be programmers. And tests like "FizzBuzz" are posed for the express purpose of weeding those people out.
That may sound harsh, but that's reality. In a perfect world, anyone could do anything, but different types of minds are suited to different tasks. If you can't be an effective programmer, that's fine. Maybe you'd feel more at home being a UI/UX designer or a sysadmin. Everyone has their niche, and you don't do anyone any favors by humoring them to do something they aren't prepared for.

  last day (16 days later) »