CS-insanity and things that make me want to quit
-
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.
-
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
Can you really implement bubble sort from scratch? Like you sit on computer without internet and just give it a shot, yes it is known algorithm but can YOU do it? The same in other answer with pizza, receipt for pizza is well known, have you made one? Can YOU make a pizza, like not that you theoretically know there is a way to do it BUT MAKE ONE. Another comparison is, you know how to throw a punch, can YOU win a fist fight? To be really creative you have to know a lot of existing solutions, otherwise you will think you are creating something new. Just like philosophy, why everyone is at least learning some ideas of Plato? Because everyone can come up with the same ideas on his own, now the question is how do such person know it really is an original thought? You can only know if you are creative and not reinventing the wheel if you know a lot of existing solutions. In current world "everything is a remix", there is really small chance that you will create something totally "new". What people do is building on shoulders of giants, so you take those existing algorithms and remix them in ways that produce something improved. You totally underestimate those possibilities that are in incremental improvements. You also have to deeply understand those existing solutions to properly use them, and you have to re implement them as an exercise because that is the only way to deeper understanding. I understand you are young and you want to make your place in the world. Last one... To be a writer you have to read loads of existing books. You have to know patterns and algorithms of successful writers and you know what, you will have to copy and reuse those patterns and algorithms otherwise everything you will write will be garbage. Like that huge block of text, that is your rant, if you would read some books you would notice people use things like paragraphs. People were writing for thousands of years, coming up with something new and creative is as hard as with coming up with new algorithms. You still have a long way to go young padawan.
-
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
Don't take this the wrong way, but I graduated before C++ was really being taught. So I took a C++ Class from a local university. Now, I had well over 250,000 lines of C under my belt, and I remember once explaining the "Algebra" of pointer operators to the professor, and him taking some notes, saying "Wow, that makes sense now"... LOL... But when I did my homework, I did not copy/paste any solutions. 1990s, admittedly... When I did turn in my solutions, I had written Full-Board Test Harnesses that would test the software quite thoroughly, separate from the software itself. Because I was a BIT BORED with the simplistic assignments. Meaning: 1) Stop copying other peoples solutions, create your own, debug them, and PROVE THEM correct 2) Solve tough problems without searching for the answer: Here's one: Given a dictionary of words, and VERY LITTLE computer memory (an assumed constraint), output the dictionary in such a way that for EVERY Word on a line, on that same line, separated by a space is every word that can be created as an ANAGRAM (with the exact same letters) of the first word, and you have to find EVERY anagram. Anagram: NAP/PAN, DIARY/DAIRY, PIT/TIP 3) Although it has been done, write a program that allows a user to visualize various sorting algorithms. Then TRULY identify the logic difference that separates a Bubble Sort from a Rock Sort. (Most people actually write a Rock Sort, calling it a bubble Sort). 4) Volunteer. Go grab and rewrite an open source project (I did this at University rewriting a Grammar Tool from Fortran into C as an independent study and donated the source so many could use it). 5) Solve Real World Problems. Go find a company/business that needs your amazing skills and actually build their software. Learn to take specifications, determine needs from wants, learn to visualize a user interface that's appropriate to the CONSUMERS (not the programmers), etc. You sound really smart. But you are MISSING the point. All software is about COMMUNICATION: -> The GUI Communicates TO the user -> The Inputs Communicates TO the program -> The program Communicates TO the database, and others through notifications So, when I hear you complain about all of these cut/paste solutions. What I hear is: I can't stand having conversations with people. They are all the same conversation, over and over. It's truly because YOU are BORING, and you are trying to get the right answer. You have NO FOCUS on learning, experiencing, and truly listening. Fo
-
Basically you want to build starships without knowing what's a hammer. I saw many like you, they think that being creative meant there was no need of knowledge. And they are fast to copy paste from other works without *thinking*. I fixed many of their "works" because they did not know what they needed, what they were doing, what they were copying and where. If tomorrow I will enroll to run in the Olympics I will not win: I need to train from the very scratch to be able to participate, let alone compete. If you refuse to learn the basics then, by all means, change career now that it's easier. There's no fault in realizing some path is not for you. Maybe you will find yourself better in electronics? The programming is easier and there's more tinkering, which seems to suit your mindset more than the somewhat rigid world of Computer Science.
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
Well, I don't find it easy at all. I think that I wrote my message in the way that people misunderstand. I don't say those exercises are easy. No, they are extremly hard for me. Otherwise I wouldn't need to memorize them from the book. What I'm sad about most is that I don't have freedom to do my own programs and by that I don't mean building a compiler or a chess engine. I mean using my basic knowledge and my own logic to create something from the beginning to the end. And I don't mean a gps-system for a car or new facebook. I can make a whole textbased console rpg with only if statements, System.out.println(), and Scanner in java. So yes, it's possible to make simple and fun programs that aren't just pure algorithms. You don't have to be programming virtuoso to build whole programs. But I know that it isn't what software engineering is about. That's why I'm angry at myself that I didn't check that out before I enrolled in CS-courses. I thought programming was similiar to art making, just you did it with the code. But in programming you must follow the istructions and your creativity is hardly restricted. Imagine if all artists were only allowed to make art by using a brush of certain size, from particular shop, from a particular shelf, made by a particular branch on a A4-sized- paper that only is allowed to be white and is made of a particular tree from a particular jungle and the only thing that they were allowed to paint was a tree with only brown and green paint. And imagine that there was an artist who wanted to paint a dog, and every other artist would bash him and say" Why are you so full of yourself? Paint a leaf first and than think about the whole picture" and he would answer: "But I feel like my creativity is chocked by all those rules. I feel like I'm only copying the same tree that everyone else does" and they would bash him again: " You just lack imagination! Who is forcing you to copy? Just stop do it and do it yourself, paint the leafs in brown color and the tree in green. See how many possibilities you have?". This is how I feel about programming.
-
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 -
Don't take this the wrong way, but I graduated before C++ was really being taught. So I took a C++ Class from a local university. Now, I had well over 250,000 lines of C under my belt, and I remember once explaining the "Algebra" of pointer operators to the professor, and him taking some notes, saying "Wow, that makes sense now"... LOL... But when I did my homework, I did not copy/paste any solutions. 1990s, admittedly... When I did turn in my solutions, I had written Full-Board Test Harnesses that would test the software quite thoroughly, separate from the software itself. Because I was a BIT BORED with the simplistic assignments. Meaning: 1) Stop copying other peoples solutions, create your own, debug them, and PROVE THEM correct 2) Solve tough problems without searching for the answer: Here's one: Given a dictionary of words, and VERY LITTLE computer memory (an assumed constraint), output the dictionary in such a way that for EVERY Word on a line, on that same line, separated by a space is every word that can be created as an ANAGRAM (with the exact same letters) of the first word, and you have to find EVERY anagram. Anagram: NAP/PAN, DIARY/DAIRY, PIT/TIP 3) Although it has been done, write a program that allows a user to visualize various sorting algorithms. Then TRULY identify the logic difference that separates a Bubble Sort from a Rock Sort. (Most people actually write a Rock Sort, calling it a bubble Sort). 4) Volunteer. Go grab and rewrite an open source project (I did this at University rewriting a Grammar Tool from Fortran into C as an independent study and donated the source so many could use it). 5) Solve Real World Problems. Go find a company/business that needs your amazing skills and actually build their software. Learn to take specifications, determine needs from wants, learn to visualize a user interface that's appropriate to the CONSUMERS (not the programmers), etc. You sound really smart. But you are MISSING the point. All software is about COMMUNICATION: -> The GUI Communicates TO the user -> The Inputs Communicates TO the program -> The program Communicates TO the database, and others through notifications So, when I hear you complain about all of these cut/paste solutions. What I hear is: I can't stand having conversations with people. They are all the same conversation, over and over. It's truly because YOU are BORING, and you are trying to get the right answer. You have NO FOCUS on learning, experiencing, and truly listening. Fo
Maybe I sound smart, but I don't claim I am. I find those exercises boring, because they are hard and on top of that old and boring, which makes them even harder. You can teach hard things in easy way and just running pure algorithms just isn't engaging for me. For me a simple and fun game would be a snake. Conways game is boring. It's just boring for me. I'm sorry if somone loves this game, but okay I will fight with this game and I hope I come up with my own version. Wish me luck :thumbsup:
-
Can you really implement bubble sort from scratch? Like you sit on computer without internet and just give it a shot, yes it is known algorithm but can YOU do it? The same in other answer with pizza, receipt for pizza is well known, have you made one? Can YOU make a pizza, like not that you theoretically know there is a way to do it BUT MAKE ONE. Another comparison is, you know how to throw a punch, can YOU win a fist fight? To be really creative you have to know a lot of existing solutions, otherwise you will think you are creating something new. Just like philosophy, why everyone is at least learning some ideas of Plato? Because everyone can come up with the same ideas on his own, now the question is how do such person know it really is an original thought? You can only know if you are creative and not reinventing the wheel if you know a lot of existing solutions. In current world "everything is a remix", there is really small chance that you will create something totally "new". What people do is building on shoulders of giants, so you take those existing algorithms and remix them in ways that produce something improved. You totally underestimate those possibilities that are in incremental improvements. You also have to deeply understand those existing solutions to properly use them, and you have to re implement them as an exercise because that is the only way to deeper understanding. I understand you are young and you want to make your place in the world. Last one... To be a writer you have to read loads of existing books. You have to know patterns and algorithms of successful writers and you know what, you will have to copy and reuse those patterns and algorithms otherwise everything you will write will be garbage. Like that huge block of text, that is your rant, if you would read some books you would notice people use things like paragraphs. People were writing for thousands of years, coming up with something new and creative is as hard as with coming up with new algorithms. You still have a long way to go young padawan.
Yeah, I totaly understand what you say, but this is why I feel frustrated, because I feel like I only copying things in that way that i have to recreate them by looking at the book first. I'm sorry but I'm not that smart to come up with the solution by myself. Maybe I would if I hade a month of free time, but because I don't I have to learn from a book. And many wrote here that: "Then stop copying". Well, I don't copy, I write it from my memory and I understand them but it's still the same as in the book, that's why it's a copy. This is what I mean by saying that I feel like the only thing I do is copying and pasting. Becuase this is the only thing beginners do... I guess... Otherwise thumbs up to whoever is so intelligent that he only learned the syntax of the language and was able to implement all those algorithms without seeing them first in a book or in a tutorial.
-
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.
-
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.
I have long complained on here about how CS/programming is taught. I've been programming haphazardly since I was a teenager, professionally for 15 years. I got my bachelor's in CS 2 years ago. I'm working on my master's now. I learned nothing in my classes. The classes/degree tell employers that you 1) have some knowledge, 2) can jump through hoops - both of which are required for ANY job. I agree with the an above post that the process is most important. Did you start from scratch, debug that code and create a monstrosity that worked? Then you learned something - don't create monstrosities :) Clean, simple code that is easy to maintain is best for most projects since there is always someone else that will be looking at it. They never teach this in school. A book about code smells (and how to prevent them) would be more helpful. Also, the point of all those exercises to recreate algorithms is to learn the details of how they work, their pros and cons, differences between them. Schooling is usually more about theory than practice. In the real world, the creativity is there. I call programming art & science. I hope you enjoy it as a job, even if you don't enjoy the schooling part. Bond Keep all things as simple as possible, but no simpler. -said someone, somewhere
-
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
I don't know why people assume that. Maybe big egos are that common in this field that you assume that I think I'm to smart to do those algorithms. No, this is not at all what I meant. I find them hard, and mostly I find them boring becuase of how they are taught, which make them even harder. I don't understand why books on Java focus only on libraries if building algorithms from scratch is that important. Believe me I didn't find yet a book on Java which would even touch on problem solving. I have even an impression that the authors are teaching: "Don't even bother. Here. Look at this library". That's why I'm shocked... becuase if it's so important why do I need to learn Java-libraries? Or do I even need to learn them? Becuase now I'm confused... Besides my message was about creativity in programming field. You can think that you are creative by doing your own version of someones game but this still not a creative job, just as you can come up with your own solution to cleaning a toilet as a housekeeper but still housekeeping is not creative job. Being a musician or a writer is creative careers. Of course there are programmers who are like artists like game or appdevelopers, AI-programmers, people like Bill Gates but an usual programmer is just a walking Scanner and you have to have a big ego if you don't realize that just by sitting and maintaing someone's system, who someone really creative made, makes you creative. No, you just as creative as a housekeeper who choose a different detergent for a different toilet seat. There is no creativity in being an office guy who just follow the instructions from above. This is what I mean that I don't enjoy in programming.
-
I have long complained on here about how CS/programming is taught. I've been programming haphazardly since I was a teenager, professionally for 15 years. I got my bachelor's in CS 2 years ago. I'm working on my master's now. I learned nothing in my classes. The classes/degree tell employers that you 1) have some knowledge, 2) can jump through hoops - both of which are required for ANY job. I agree with the an above post that the process is most important. Did you start from scratch, debug that code and create a monstrosity that worked? Then you learned something - don't create monstrosities :) Clean, simple code that is easy to maintain is best for most projects since there is always someone else that will be looking at it. They never teach this in school. A book about code smells (and how to prevent them) would be more helpful. Also, the point of all those exercises to recreate algorithms is to learn the details of how they work, their pros and cons, differences between them. Schooling is usually more about theory than practice. In the real world, the creativity is there. I call programming art & science. I hope you enjoy it as a job, even if you don't enjoy the schooling part. Bond Keep all things as simple as possible, but no simpler. -said someone, somewhere
-
I don't know why people assume that. Maybe big egos are that common in this field that you assume that I think I'm to smart to do those algorithms. No, this is not at all what I meant. I find them hard, and mostly I find them boring becuase of how they are taught, which make them even harder. I don't understand why books on Java focus only on libraries if building algorithms from scratch is that important. Believe me I didn't find yet a book on Java which would even touch on problem solving. I have even an impression that the authors are teaching: "Don't even bother. Here. Look at this library". That's why I'm shocked... becuase if it's so important why do I need to learn Java-libraries? Or do I even need to learn them? Becuase now I'm confused... Besides my message was about creativity in programming field. You can think that you are creative by doing your own version of someones game but this still not a creative job, just as you can come up with your own solution to cleaning a toilet as a housekeeper but still housekeeping is not creative job. Being a musician or a writer is creative careers. Of course there are programmers who are like artists like game or appdevelopers, AI-programmers, people like Bill Gates but an usual programmer is just a walking Scanner and you have to have a big ego if you don't realize that just by sitting and maintaing someone's system, who someone really creative made, makes you creative. No, you just as creative as a housekeeper who choose a different detergent for a different toilet seat. There is no creativity in being an office guy who just follow the instructions from above. This is what I mean that I don't enjoy in programming.
-
I think you are getting into the wrong field. You may want to try something else. You are making big assumptions for someone with no knowledge or experience.
Elephant elephant elephant, sunshine sunshine sunshine
Well, I don't have to have experience or knowledge to feel like programming is not enough creative for me, just as a gay man don't have to have experience and knowledge about women to know that they are not enough attractive for him. For a heterosexual man this can sound like an insult: "How can a woman not be attractive?" But guess what? Yes she can, depending on who you ask. The same with programming, maybe making your own versions of other peoples programs is creative job for you but not for me. I come from creative background so please stop assuming I have a big ego. I made music before CS, that's why I know what creativity is about. When I made music no one told me which genre I have to make and what kind of instruments I am only allowed to play and what musical scale I only am allowed to use and no one forced me to only play other peoples music. Do you understand what I mean by creativity? It's not being bound by other people's instructions and restrictions. Well, I never got paid for my music, maybe if I copied and paste other people's music I would be succesful ;) but still that was called working creatively.
-
"Maybe I should be a writer instead?" If you want to do that then start splitting your thoughts into paragraphs. Your posts in this thread are too dense to take in.
-
Well, I don't have to have experience or knowledge to feel like programming is not enough creative for me, just as a gay man don't have to have experience and knowledge about women to know that they are not enough attractive for him. For a heterosexual man this can sound like an insult: "How can a woman not be attractive?" But guess what? Yes she can, depending on who you ask. The same with programming, maybe making your own versions of other peoples programs is creative job for you but not for me. I come from creative background so please stop assuming I have a big ego. I made music before CS, that's why I know what creativity is about. When I made music no one told me which genre I have to make and what kind of instruments I am only allowed to play and what musical scale I only am allowed to use and no one forced me to only play other peoples music. Do you understand what I mean by creativity? It's not being bound by other people's instructions and restrictions. Well, I never got paid for my music, maybe if I copied and paste other people's music I would be succesful ;) but still that was called working creatively.
I think comparing it to sexual attraction is quite a bit of a stretch. Also what you are describing is just a lack of experience in computer science. That's why you don't know how it is creative. Just like you couldn't make your own songs or music before you learned the theory of music. In fact in order to learn that you must first copy other peoples work and practice it until you get good at it. Learning music or to play an instrument takes lots of repetitive practice of things people have already done. If you don't have the discipline to get through that then you won't be a good musician. Lots of people play other peoples music but never learn to create their own. Just like programming.
Elephant elephant elephant, sunshine sunshine sunshine
-
I think comparing it to sexual attraction is quite a bit of a stretch. Also what you are describing is just a lack of experience in computer science. That's why you don't know how it is creative. Just like you couldn't make your own songs or music before you learned the theory of music. In fact in order to learn that you must first copy other peoples work and practice it until you get good at it. Learning music or to play an instrument takes lots of repetitive practice of things people have already done. If you don't have the discipline to get through that then you won't be a good musician. Lots of people play other peoples music but never learn to create their own. Just like programming.
Elephant elephant elephant, sunshine sunshine sunshine
"I think comparing it to sexual attraction is quite a bit of a stretch." :laugh: But it's true. Sometimes you don't have to experience things to know them. I don't have to experience falling down from my balcony to know that I can die ;) Sometimes a feeling and observation can be sufficient. :-D But you are right about music. In the beginning you usually only copy. And I did it to. You are probably right, maybe I'm impatient. Anyhow, thanks for nice conversation :)
-
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
Can I suggest that programming as a career is not for you? There is an expression called "time in the trenches". Basically your first jobs in IT will be copy and paste, modify existing code, and generally very little creativity. I'm mentored several junior developers straight out of uni (and one who is currently working for me part time whilst finishing their uni degree). One of the best attributes you can have is a combination of "I'll get it done" and "Have you considered this way instead". A note on that second point, remember that you're only starting out in the industry, so the answer to "Have you considered this way instead" might actually be "no, please do it my way". Technically creativity won't come into play for many many years. Unless you're working on your own home project, you'll no doubt have both a manager and a customer. As a junior programmer you'll be dictated to over the type of code you'll write and how it'll look. Depending on the size of the project and how complex it is there will no doubt be an architect who has already made those creative decisions for you. Keep in mind that the architect has likely spent 20 years building IT systems and knows many pitfalls that you won't, and you're unlikely to find a company that's willing to let a junior spend 6 months making a mistake on a project just so that junior can learn something. So basically, only continue going down the path of learning how to be a software developer if you're a. Willing to spend time doing the crap jobs b. Understand that it'll likely be years before your full creativity will be allowed to be on display c. Understand that the world doesn't need more "glue programmers", a deep understanding of the code will be an asset in your career. d. You're a junior (technically not even that yet), most of what you don't know you don't even know you don't know it. Learn, even if you can't yet see why, every great software developer has been down the same path that you're going down. Finally, if you can't accept the realities of the industry, find something else do to as a career and keep programming as a hobby on nights and weekends.