CS-insanity and things that make me want to quit
-
For a brief period, I was a teacher at the first year of an undergrad CS course. Most students where stunned, because for them computers were: internet, games and editing on Word. When they realized what it was like on the other side of the mirror, many simply gave up.
Having attended a Technical High School in Computer Science and then the Polytechnic University, I saw that happen twice. Behind the mirror sent many people running away way before they saw code, flow charts managed that on their own.
GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
Building software using pre-written, debugged, documented and supported components is the smartest thing we can do as developers. We absolutely should not re-invent the wheel. You can choose to be either a low-level component developer - this is a huge market. You would get to employ all your raw computer science learning and be as close to the machine as you can to derive maximum performance from your components. Or at the other end of the scale you could choose to be a high-level business systems developer, where re-assembling and integrating large components to build business software which fits the precise requirements of the corporation is the order of the day. All developer roles have their own unique challenges and I personally welcome having the wide choice of components, allowing me to focus on solving actual customer problems where business communication skills are of equal importance than coding ability. My advice would be find your preferred level. Low, mid, or high, or something in between? Change jobs if necessary. The software industry is going to be around for a long time and is incredibly varied. Read the 'Mythical Man Month'. Only 17% of any software project is coding. That statistic may help you find your ideal role.
Garry Lowther CEO and Founder TriSys Business Software Cambridge, England www.trisys.co.uk
-
By the way. Well, I think they are challanging. They are hard, but I don't like the way they are taught. I simply find those games boring, like the problem itself is very hard but if I could use them in my own game it would be much easier to learn. When I do my projects I love to solve the problems, because I want to see my game work, but because I find those games and examples in the exercises boring, I just want to rush through them so I can sit and work on my own game or program that will do what I find useful. If we had to implement the same logic from Conways game of life in a more fun game than I would enjoy it, but I'm bored by the game itself. The example itself is boring, not the problem itself. It's like those bankaccount projects. Is it the only program that can teach classes and objects? I believe someone can give some more engaging examples than this same bankaccount project that you can find in every book and tutorial. I read a book about game development and the author also implements some of the common algorithms but I think its fun to do it when use it an little rpg game and not this boring Conways game or just this raw bubble sort exercise. What I would like to know is what can I use those algorithms for, because it's easier to learn things when you know why you need to learn something.
Quote:
“Its the not the Destination, It's the journey.”
Seems from the above that what's winding you up (in part) is that you're not interested in the end result. Big lesson here. When you get a job in IT, 90% of the work you'll do is on deadly boring applications. You know, insurance premium calculations; credit card reconciliations; theatre booking systems; parcel tracking. Not things you'll want to spend your spare time playing with. If you're only into programming because of what it can achieve, you'll struggle to do it commercially. Take it up as a hobby and create wildly exciting games, sure. But if you want to enjoy your work, then learn to enjoy the process of development. Investigation, analysis, design, coding (and testing and documentation :laugh: ) You said in an earlier post that you're disillusioned not just with CS but with life, that you'll never get to do what you enjoy. Hang around in this forum for a while, and you'll learn that there are a LOT of us here who absolutely love what we do (and it doesn't depend on which industry we're in). For many of us it's a dream come true to actually earn money doing something we enjoy so much. (Of course, no-one is saying it's all perfect 100% of the time!) But if you don't enjoy the activities involved in CS but only the end result, maybe it's not for you.
-
Well, I have few books on problem solving. But how helpful are they when I have a problem with only one solution? Like Conways game of life. it has only one solution. I can't be creative and maybe use a while-loop or just one loop. No, this problem has only one solution - 4 loops. And what we actually learn as students is to copy these fourr loops, because there is no other way to recreate this game. If the problem was, create a program with such and such funcionality than I could create anything I wanted as long as it had thsi functionality. Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza. These is how those algorithms work, you have to recreate certain recipe, otherwise you didn't solve the problem. So you memorize all those recipes and you recreate them, and the worst thing is that in the end of the day, you don't even use them because you have huge libraries with all those algorithms prewritten. If I at least have use of them, but I don't. When I create my own programs I solve much complex problems and I don't find it hard at all. Why? because I see meaning in what I do. Here I don't see a meaning besides to pass exams and make the interviewer glad.
Member 14971499 wrote:
Like Conways game of life. it has only one solution. I can't be creative and maybe use a while-loop or just one loop. No, this problem has only one solution - 4 loops.
Actually, I never realized that. But if you say so... So use your creativity to expand the game. Make the board non-flat, but like a cylinder. Or a torus. (Sphere shape is more troublesome!) Se how spaceships behave when they have made the round and return to the base. Or you could make life cells of two colors, and define rules for behaviour when cells of different color meet. Do they ignore each other? Merge into hybrids? Kill each other? Make some minor adjustments to fertility. Introduce small fluctuations (by a random generator) in fertility. Make a competition by splitting a (finite size) board into two or four equal pieces, maybe with a DMZ between them, and let two or for players set up their artillery to shoot down the others. When the situation stabilizes, the winner is the one having most live cells in his part of the board. If you are truly creative, you sure can make up a lot more variations on the Game of Life.
-
Eesh, this is why I had to stop making pizza; got tired of copy and pasting pepperoni from other companies. On the serious side, look at your pizza analogy a different way. Each ingredient is a piece that has already been solved. You might not care how that cheese or pepperoni came to be, and you'll probably not have an improvement on how it's made, but you know it goes on that pizza. At some point, you learned how to use that ingredient, and why you might want it in the first place. You likely know what makes a good pizza topping, and what does not. In some cases, maybe you'll want to make your own dough. Are you going to reinvent dough into something the world has never seen? -of course not, but it can still be satisfying to make, even knowing others have already done so. At the end of the day, appreciate the learning of why you might want that/a solution, rather than just, "I know where to copy the answer from." Your creativity will certainly not suffer.
Kris Lantz wrote:
In some cases, maybe you'll want to make your own dough. Are you going to reinvent dough into something the world has never seen? -of course not
What? Are you calling it "making your own pizza" when you are not making your own dough? And are you not experimenting with the dough? Different kinds of flour, adding sesame seeds or nutmeg or shredded coconut meat? Pizzas invite to experimentation, both in the dough and topping. Woody Allen taught me to use coconut in the topping (although I believe his joke was referring to a whole nut). I haven't made a pizza according to a "recipe" since I was a schoolboy. I never will. I may glance through lists of ingredients to see new and exciting combinations, just to get some ideas. I never try to copy someone else's work.
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
Until you retire, a "job" pays for your "hobbies"; which includes being "creative" (like a "writer"). The chances of meeting similar-minded on any given job are slim to none ... because they're all "on the job". And no boss will ever let an underling be "creative". Too much of a threat.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it. ― Confucian Analects: Rules of Confucius about his food
-
Well, this is the problem. In the beginning I tried to solve those problems by myself, but some problems has only one solution that you have to copy anyway. For example Game of life, can you do it just with one loop? No, you have to use 4 loops. You can put them inside methods or create classes but still you have to copy this solution. Same to bubble sort. You can't invent anything new. You have to copy. Because there is only that one solution, because otherwise its not bubble sort. So why bothering even to think? If the result is anyway that same solution. The other thing would be if I made a whole program from scratch... a game or an app. Here I can implement new solutions and really think for myself. I don't have to reimplement other people's ideas, unless I find them useful. This is the main problem.
Undergraduate classes are like having a job where you get sent on courses as part of a training program. Only graduate students get to have ideas of their own. Unless you're Einstein.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it. ― Confucian Analects: Rules of Confucius about his food
-
Kris Lantz wrote:
In some cases, maybe you'll want to make your own dough. Are you going to reinvent dough into something the world has never seen? -of course not
What? Are you calling it "making your own pizza" when you are not making your own dough? And are you not experimenting with the dough? Different kinds of flour, adding sesame seeds or nutmeg or shredded coconut meat? Pizzas invite to experimentation, both in the dough and topping. Woody Allen taught me to use coconut in the topping (although I believe his joke was referring to a whole nut). I haven't made a pizza according to a "recipe" since I was a schoolboy. I never will. I may glance through lists of ingredients to see new and exciting combinations, just to get some ideas. I never try to copy someone else's work.
Coconut. On. Pizza. You Madman! :laugh: My wife would murder me if I snuck in coconut on a pizza. She hates the stuff. I decided to look at other people's coconut pizza answers, and some actually do look great! I'm a fan of coconut flour in particular, so I may have to give some pizza dough creativity a whirl.
-
Well, I have few books on problem solving. But how helpful are they when I have a problem with only one solution? Like Conways game of life. it has only one solution. I can't be creative and maybe use a while-loop or just one loop. No, this problem has only one solution - 4 loops. And what we actually learn as students is to copy these fourr loops, because there is no other way to recreate this game. If the problem was, create a program with such and such funcionality than I could create anything I wanted as long as it had thsi functionality. Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza. These is how those algorithms work, you have to recreate certain recipe, otherwise you didn't solve the problem. So you memorize all those recipes and you recreate them, and the worst thing is that in the end of the day, you don't even use them because you have huge libraries with all those algorithms prewritten. If I at least have use of them, but I don't. When I create my own programs I solve much complex problems and I don't find it hard at all. Why? because I see meaning in what I do. Here I don't see a meaning besides to pass exams and make the interviewer glad.
Member 14971499 wrote:
Well, I have few books on problem solving. But how helpful are they when I have a problem with only one solution?
If you search for an answer to a problem and copy it, you have learned nothing. If you solve the problem on your own, you have learned something. It doesn't matter if 100,000 people have already solved that problem -- you used your problem solving abilities to produce a solution. You have expanded your own abilities, at least a bit, and proven that you can think. Plus, you now understand that bubble sort, and possibly why it works and why it's inefficient for large data sets. You appear to have a complete lack of understanding of what professional programmers do. The short answer is we solve business problems. It doesn't matter if the program is a game, a commercial web site, a management application, or an esoteric laboratory tool -- it's a business problem in the most basic terms. The programmer is paid to achieve a goal, not to solve complex problems and reach enlightenment. It's not always cool, it's not always sexy. Mostly it's not. Programming can be grunt work, frustrating grunt work. Sure, if I need a bubble sort, or a shell or quick sort -- I copy it. Or use a library. Why? Because I'm long past the learning stage and have written dozens of sorts to solve immediate problems. I learned those lessons decades ago and there is no value to my employer for me to write one. When I make pizza, I don't use a recipe. Why? Because I've made thousands of pizzas and I make one without having to think about what I'm doing. I solve the immediate problem (needing a pizza) using the tools (ingredients) I have at hand utilizing my experience.
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
Sometimes there's a place for a quick copy-paste because the problem is small and already solved. More often than not, though, I find that it's the _reading_ of other people's code that leads to _understanding_ and _adaptation_. Depending on the level of experience and curiosity of the individual, the amount of existing code that person has been exposed to will vary a lot. There's little point in re-inventing well-architected wheels: the joy of programming (at least for me) is in solving _new_ problems -- which is why I spend reasonable amounts of time automating stuff that I'm likely to do over and over, so I don't have to manually do it! So remember that other people in your class may, right now, be finding this more useful that you. This is a good lesson for being on a team: everyone has different skillsets and experience levels, and you're going to come across team-members who need a slower pace than you do -- as well as team-members whose pace will make your head spin! Try to be patient with the former and learn from the latter. There's also a reminder here that sometimes, some parts of your job are going to be a little mundane. Them's the breaks! Cowboy coders who flit from topic to topic, never fully completing anything and never doing a little "grind-work" do their co-workers a disservice and eventually do themselves a disservice in that they don't learn discipline or how to find the interesting within the mundane. If you have a passion for coding, take this opportunity to learn how to stick out the times when life isn't all sparkles and rainbows, to take pleasure in the small wins within the mundane, to work with a team of varying ability. All of this will serve you well later.
------------------------------------------------ If you say that getting the money is the most important thing You will spend your life completely wasting your time You will be doing things you don't like doing In order to go on living That is, to go on doing things you don't like doing Which is stupid. - Alan Watts https://www.youtube.com/watch?v=-gXTZM\_uPMY
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
-
Of course, its a good analogy. You can add a pepperoni to it, but it still follow the same recipe. Just like conways life of game, you can add some function, you can create a class, but you have to implement four for loops, and there is no other solution to the problem, so even if you sit down and come up with that solution on your own is not any different than the code that other people copied from the internet, and the teacher and the interviewer will not see a difference between the code that you fought with for a week and the code someone copied and just learn how it works. Maybe your variable's name in your loops is int row and int column but in his is int i and int j. Just like in pizza, in Ahmed's pizza is pepperoni, in Steven's is chicken but still is made from same recipe. There is no pizza made of rice or made of noodles. The same goes for those common algortihms. You can't invent anything new here. Bubble sort has only one solution, and you can name your variables different and maybe use some function but still it follows only one formula which you have to memorize. It's not the same when you create your own program. Here your imagination is the limit. You can make it whatever you want it to be. You can create your own game, with even more complex logic than Conways game of life. That's why I start to hate programming because I just reinvent people's ideas. I would like to come up with my own ideas not follow someone's formula.
I actually cook at home myself. You'll find a plethora of recipes for pizza crust alone. You can find all sorts of regular flower based ones, all sorts of keto ones, etc. There is absolutely NOT just one recipe for pizza. When I use recipes I do what you should do for coding. I look up a recipe and find one close to what I think is a good starting point. I try it once and if it's working I modify it to my liking. If it doesn't work then I either eat it anyway or toss it out and find another recipe. If you've ever spent time doing code katas (which are pretty much college problems) you'd see that you can do the same problem with several approaches, just like your pizza. Take Gilded Rose for instance. You can solve the problem once looking to practice SOLID principles, again thinking about using functional programming, again with something like javascript where there are other cool techniques you can use. I've used coding katas for company events and I can tell you that the same problem has many solutions. Sure the basic algorithm may not change in a lot of cases but that doesn't mean the implementation is exactly the same. You're partially right that we do have some things that are the same. Algorithms and design patterns are there for a reason, but the implementations are not always the same. You can take one algorithm and implement it in wildly different languages. Though the same thing (pizza) is begin accomplished, the recipe and steps are varying. If you don't learn to solve problems, you're goina have a bad time. If you rely on libraries you'll be using a hammer for you're only tool. Which data structure is best for which situation to implement an algorithm? What do you do if performance or resources becomes an issue if you only know one way to think? This question seems like it's coming from a position of "I already know what I'm doing so why should I have to learn". I think you need to calm down, let your ego go, and start trying to learn. Otherwise you're going to have an unpleasant time in the field.
Elephant elephant elephant, sunshine sunshine sunshine
-
Why do you assume that there is only one solution? There is one algorithm for the GoL, but there are a huge number of different ways to implement it, many of which don't use a single for loop, much less four! And that before you even start thinking about multithreading solutions, pointer arithmetic, and so forth. Think about the first "only way to do it" for GoL: why do you want a 2D "board" when you can use a 1D array much more efficiently? Think about Bubble Sort: there are as many different way to implement it as there are developers actually writing the code! And when you've written it, it's obvious that it's not very efficient for most "real world" collections to be sorted, and that a couple of simple changes would vastly improve the efficiency, and implementing that and a testing framework to measure the improvements. Going in with the mindset of "it's all been done" is a major limit on how you can think about problems, let alone solutions...
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
It's worth noting that many programmers do "katas" all the time. These are small algorithm problems that are very similar to college projects. Game of Life is one of them. You're not going to get away from doing problems that have already been solved. The trick is learning problem solving yourself so you get into that way of thinking. If you can't solve a problem then when one comes up that may not have a solution for then you won't be able to think through it (despite what you think now). You also won't be able to find solutions to problems that DO have a solution already. If you don't know things like algorithms and design patterns then you won't know to use them when you see a problem.
Elephant elephant elephant, sunshine sunshine sunshine
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
You are very fortunate to have the opportunity to study COMPUTER SCIENCE. You may already be a fine and growing programmer, but you are choosing to approach this discipline from a different perspective and should expect to revisit some familiar ground as you do. Think of these exercises as opportunities to re-learn and reinforce some of your existing skills as you develop this new perspective. At the CS101 level, you are not supposed to understand how these concepts provide the foundation to build the concepts that will come next. CS may begin with bubble sort and other familiar algorithms, but be careful assuming that it ends there. Wax-on/Wax-off Daniel-san. Computer Science will give you skills and understanding to become a truly elite programmer and much more. While it is possible to attain some, perhaps all, of these skills on your own through hard work as a dedicated programmer, a CS degree is a well trodden path to excellence for those that are willing to embrace the journey to a higher understanding of this art.
-
Until you retire, a "job" pays for your "hobbies"; which includes being "creative" (like a "writer"). The chances of meeting similar-minded on any given job are slim to none ... because they're all "on the job". And no boss will ever let an underling be "creative". Too much of a threat.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it. ― Confucian Analects: Rules of Confucius about his food
Gerry Schmitz wrote:
And no boss will ever let an underling be "creative". Too much of a threat.
I had a boss, where I work now, with that attitude. I pretty much ignored him and good results covered my ass. He eventually took one step too far - and out the door with him. But - what I really notice is that, unless you've only had one job and this is your experience, you've had surprisingly bad luck. For the most part, I've been encouraged to come up with anything that would help out "the company" because they new it made both of us look good. Also, it gives that feeling of job satisfaction when your ideas are considered a contribution. It's is (or is to me) part of the pay - along with the money. Indeed, that's pretty much all I'm good for in that, if they just wanted a competent drone, they could easily do better
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
-
Well, I have few books on problem solving. But how helpful are they when I have a problem with only one solution? Like Conways game of life. it has only one solution. I can't be creative and maybe use a while-loop or just one loop. No, this problem has only one solution - 4 loops. And what we actually learn as students is to copy these fourr loops, because there is no other way to recreate this game. If the problem was, create a program with such and such funcionality than I could create anything I wanted as long as it had thsi functionality. Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza. These is how those algorithms work, you have to recreate certain recipe, otherwise you didn't solve the problem. So you memorize all those recipes and you recreate them, and the worst thing is that in the end of the day, you don't even use them because you have huge libraries with all those algorithms prewritten. If I at least have use of them, but I don't. When I create my own programs I solve much complex problems and I don't find it hard at all. Why? because I see meaning in what I do. Here I don't see a meaning besides to pass exams and make the interviewer glad.
Here's a food analogy for you: Do you expect to be a master chef from the first day? Or a concert violinist? No. First you have to learn to make the standard sauces. First you have to practice scales. There is only one way to do these things, and you have to learn to do them right and repeatably, before anyone will pay to eat your cooking or listen to your performance. That there is only one way to do these things is actually a feature, because it allows you to check that you're doing them right. If you don't think doing them right is important, you are in the wrong degree program. Perhaps sociology... The library of algorithms in Java will take you only so far, just as a recipe book will only take a master chef so far. Following a recipe makes you a cook, but not a chef. Using only the pre-written algorithms makes you a junior programmer, not a principal engineer. If you don't like all this learning and practicing, better find a new career path quick, before you have spent too much time and money on CS.
-
Well, this is the problem. In the beginning I tried to solve those problems by myself, but some problems has only one solution that you have to copy anyway. For example Game of life, can you do it just with one loop? No, you have to use 4 loops. You can put them inside methods or create classes but still you have to copy this solution. Same to bubble sort. You can't invent anything new. You have to copy. Because there is only that one solution, because otherwise its not bubble sort. So why bothering even to think? If the result is anyway that same solution. The other thing would be if I made a whole program from scratch... a game or an app. Here I can implement new solutions and really think for myself. I don't have to reimplement other people's ideas, unless I find them useful. This is the main problem.
i can see you joined yesterday so there is only one possibility that you are not a troll. if you are a person who is concerned about his future asking himself did he made a mistake to enlist in CS. i will try to help by being honest, per my experience. those problems and algorithms that you learn and examine in school, 99% of the time are going to be THE ONLY interesting stuff about CS in your lifetime. unless you are a very very lucky person to end up working in research of some kind... as a CS your job will most likely be to maintain/create/repair some insignificant boilerplate
class
made by God knows who, left, then maintained by some other unknown and a couple of others who left the place before you have arrived to work and make a living out of it. and by insignificant i don't mean to measure it by size, because believe me it's going to be huge. insignificant by it's purpose, because the would would been just fine without it and the many millions of classes of that type made by the competitors of your future company. it's just a working place so you have to do something. truly great software is made very rare, but it is all around us. it's what's makes the world run. i would enjoy working on the algorithmic problems they teach you at school (be that sorting, searching, AI, encryption, compression, fractals.. ) for the minimum wage, than this corporate stuff of adding new features and repairing bugs in applications that have thousands lines of code that don't solve anybody's problems even if it had been working. to finish. imagine that there is another civilization on Mars or Saturn and imagine it any way you like it. another type of society totally different than what we have here (capitalism, socialism, feudalism or whatever). those algorithms at school are going to be probably the same on Saturn or on Mars. also the programs that would run the supposed rockets from Earth to Mars and theirs from Saturn to Earth. but the other 99.98% of every day programming work that is done on Earth will be worthless on Mars and Saturn, no matter how much important it makes to feel the people that do it. best of luck -
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
I'm sure there's something in there worth reading, but by God, please have enough pride in the value of what you write to add paragraph breaks and craft your writings in a way that make them worth reading.