i just want a simple reason why PROGRAMMING!!!
Programming is NOT fun. Here's what you are entailed:
It is too challenging and dynamic. Programming is only fun as a hobby, I assure you that. Programming is getting easier and soon pre-teens will be able to program? Think again! Programming becomes less fun once you realize that programming isn't the only thing you need to know how to do. Programming may be easy but problem solving, algorithms, and math are here to stay. As a hobbiest, you get to program an application, it works! No Worries! Fun! In the real world, the employer now require you to think fast, be proficient in that dreaded mathematics that you've always hated, adapt to new technologies, and be flexible. You need to read all the psychotic 50 page research papers to understand an algorithm that you'll need to implement. You'll need to be able to make a program efficient, properly document code that you never did in your hobbiest programs, write massive documentation, and test for errors.
In your job, you must make sure your code is flexible, modularized, and tidy. Why? Because your boss is in constant demand of changes. You will never code an application properly the first time because once you finish, there will be more changes. And if you fail to do the above, you will probably end up rewriting the entire application just to incorporate one change. Having the skill to write flexible code only minimizes the work you need to do.
While on work, you will find yourself falling asleep, but struggling to keep your eyes open so it looks like you're working. You'll be banging your head because you can't think of an appropriate solution to the problem your are having. You will be stressed because your boss is asking you to do the impossible.
Furthur to speak, you think you will be assigned to programming 1 application? Think again. You'll be programming 1 / 1000th of an application. Not only that, you have 10 of either overly competant programmers who will yell at you for being uncompetant, or uncompetant programmers who will produce unreadable code for you to modify. Not only that, you must learn how to use source control software, debuggers, project management tool, write UML diagrams, etc, stuff that doesn't even involve programming.
As a tester, you need to program test cases. You have to cover all corners and edges! You can't miss a spot or you're in big trouble! As a hobbiest, you never have to worry about these things because your life is not on the line. You live in constant fear that you'll cause a bug that'll cost the company millions of $$$ in loses.
As an interface programmer, you are not just responsible for programming the interface, you are responsible for designing it, an making the interface user-friendly. You don't make the user-interface to what YOU think is good, you make it to what OTHERS think is good. Failure to do so will cost you your job.
As an embedded systems programmer, your task is not to only build the application. The application now has new requirements to be compact and fast. What? I'm not allowed to use the brand new languages that make programming 10x easier so that elementry school kids know how to use it, but I must go back to the basics and program in C and futhermore ASM?
Then they tell you to define a function that prints hello 'count' times. You quickly code it up:
Code: Select all
void print_hello(int count) {
int i;
for(i = 0; i < count; i++) printf("hello\n");
}
Then they fire you because you code wasn't efficient enough. The correct answer to the problem is:
Code: Select all
void print_hello(int count) {
int n = (count + 7) / 8;
switch(count & 7){
case 0: do{ printf("hello\n");
case 7: printf("hello\n");
case 6: printf("hello\n");
case 5: printf("hello\n");
case 4: printf("hello\n");
case 3: printf("hello\n");
case 2: printf("hello\n");
case 1: printf("hello\n");
}while(--n>0);
}
}
Then you say, what?? That actually compiles? Yes, yes it does. They didn't teach that to you in jr-high did they?
Then you become a web programmer. They ask you to design a simple php template for a website. You come up with an idea to use one php page as the template and include the body content through a filename passed by 'get' variable to include a page to display. You decide include the page like this:
They fire you because of a security issue if someone passed 'index.php?page=/etc/passwd' they would be able to get access to your system files. Then you get smart, and tack on an extension to your filename.
They still fire you because the attacker now passes 'index.php?page=/etc/passwd%00' completely thwarting your little efforts. As a hobbiest programmer, do you ever think of these things? Well you you want a career as a programmer, you better start thinking.
Everything I described above, although exaggerated, is spoken from my experience in this field. Everyday for me is a constant challenge, never know what to expect. Depite all of the experiences above, I still enjoy it. Why? Because I just like it (<- This is the answer to your question). Am I bored? Sometimes. But once I got something going, I can not stop. In real life, most jobs aren't fun. They're just routine work, same things you do day after day after day. What is important is that you pick a career in something that you really like. Because that makes the whole difference between whether you'll enjoy your job or not.
Good luck!