|
Hi all.
This is pretty much a question directed only towards programmers or programming students. I don't normally make posts over things like this, but I'm really at the end of my fucking rope here. A few months ago I got hit in the face with a very interesting opportunity (I don't want to go into specifics so please don't ask) which may entail having financial aid for post secondary, as well as having a job guaranteed throughout and after my education. In order to have this opportunity come to fruition I need to make a decision fast, as I will need to start studying on my own time.
The thing is, I've been thinking about this for several months and I can't make any progress whatsoever with the decision. Do I want to be a programmer?
I'm going to give some details for perspective, hopefully that helps.
I took a bit of programming in Highschool (mostly C++ but I dabbled in a few others), and while truth be told I didn't make it very far due to spending half my time playing BW, I still made it through with good marks.
There were some aspects of it I really enjoyed. I loved the problem solving aspect and the feeling of solving a really difficult problem by sheer thought power is a wonderful thing. On the flipside, I almost tore my fucking hair out when I spent three weeks rewriting a card shuffle function only to find that all three versions worked, I had just wrote If (x=1) instead of If (x==1) in a different part of the program.
I'm not a fast learner per se. Although I consider myself to fit into the category of intelligent under-achiever, learning the programming I did was a fairly long and arduous task. Like I said before, the problem solving aspect was quite enjoyable most of the time, but learning the language itself was not something I looked forward to.
I'm not really sure what else to write. If there's any more information I can answer which will help please let me know. I really appreciate input here; for probably the first time in my life I'm really unsure what to do with my future. I'll close by throwing out some questions, if you would be so kind as to answer.
Have you had difficulty finding work? This question is probably fairly irrelevant since not everywhere will have the same supply/demand for programmers, but it'd be nice to hear from people about this anyway.
Is there an area in this industry which would be good for someone with people skills? I've started out in the hospitality industry, and I now work in a sales job. I generally dislike having to talk to most people, but when I'm paid to do that I seem to have a natural talent for it.
Thanks again.
|
It's a hard question as a lot of different programming fields require different sorts of skills, experience, and it really depends what you are talking about specifically. In terms of the offer you have received, although you do not want to go into detail, it also really depends on the sort of education you are offered (undergrad, masters etc.). The higher your degree is does not necessarily mean the better, but you have to take into account many things such as what your current level of education is and whether moving up that ladder will provide you with better opportunities and ultimately a better career future. It's very hard for anyone to say whether you should take an offer such as this or not and to a certain extent whether you do should be relative to how much you enjoy what you currently have.
Now according to my (admitted limited) personal experience in the field of CS, I think there is one main trait that is very valuable to an aspiring programmer, which is the ability to learn quickly. On top of that, not only should you learn quickly you must also have a passion to always be expanding your knowledge due to the ever changing nature of how the technology industry works. That's a really large generalization and I'm sure places vary from one to the other. Just because you do not see yourself as quick learner because you struggle on programming assignment does not mean you are not quick, and the more languages/technologies you pick up the faster you will begin to be able to digest new information. I think most programmers including myself go through this phase of working on a program and hating your life/job because of a difficult bug/task, but come around to really love the outcome once we solve what we needed to.
You mentioned that you had good people skills, and I can definitely say that other than learning fast, being able to work on a team is absolutely essential to being a good programmer. In most companies it's really not a bunch of introverts working on their separate programs but instead giant projects created through collaboration of tens if not hundreds and thousands of individuals. This is not to mention all the documentation you have to write which a communication art in itself. Having good people and communication skills is great in just about any field IMO, and will help you greatly in CS.
The technology industry in terms of job opportunity is excellent, as IT services are needed just about everywhere and in every field. You also have a variety of choices you can take, from anything such as pure software engineering in a large tech firm to working with financial technologies at banks to the everyday IT back office tasks. Even within software engineering you can focus on fields such as applications, IU, or graphics. It really depends what you like and just because you did a little C++ doesn't mean you should judge your interest in the field based off of that. Most likely you will never write a simple shuffling algorithm again in your life, but you will surely deal with frustrations of small syntax bugs.
I suggest you do some industry research for yourself, and weigh the opportunity costs of each option you have relative to your current state. At the end of the day, computer science is a great field for anyone interested and willing to work hard.
|
Software developer, 8 years industry experience:
- Firstly, programming has a high learning curve at the start for many people, so if you can write a card shuffle program in high school, you're ahead of the pack.
- Hardcore programming is on the decline in the sense that there is so many development tools and frameworks. However, it's important to have a good understanding of all the basics though.
- Collaboration and code-reuse is very important nowadays. For instance, I could write a "good enough" card shuffle program quickly. However, I won't do so because I'll google the solution to find "the best" one.
- An advice I'll give to aspiring programmers is to learn databases and SQL - at least spend some time on it. The world runs on databases.
- People skills are important unless you want to spend time just coding in a back-room on a large software suite. Most software developers are consultants working on client sites.
- In terms of finding work, I'm not sure, but I haven't had any problems. If you have a guaranteed job, I would pretty much take it.
|
From my experience, as you learn more in programming, the problem solving aspect becomes a lower and lower percentage of what you do, and it turns into struggling with the errors, interface, files, and getting everything to actually run the way you want it to be. You might spend 1 hour actually writing the program, but then 12 hours trying to fix the damn thing. If debugging drives you insane like me, then I would not suggest it. I majored in computer science when I started college but during my 2nd year I decided to fuck it and just drop programming.
|
I wrote this post over a long period of time of not being the most focused, so it doesn't flow well. What the poster above said is very true.
My personal case for learning / finding work is a bit unique so I can't really answer those questions very well for you.
As far as the if(x=1) -> if(x==1), that stuff happens especially when starting off. These types of errors are very important when determining if you want to be a programmer. A working program is almost never produced on the first write through. You'll have to deal with logic, syntax, and "visual" errors a LOT. I'll get to visual in a moment. A lot of programming comes down to extensive testing and debugging of very small things. If you start pulling your hair out every time you leave an equals sign off or have a logic sign flipped then you probably want to go for something else. These mistakes may seem silly as a rookie, but you'll have to take my word when I say they're par for the course especially as your programs become lengthier and more complicated.
+ Show Spoiler [I don't think I was making much…] +You wont encounter too many visual errors when you first start off especially if you're going for C++. You'll most likely be doing some sort of console application that solves a problem and spits out a few lines of text to let you know you got it correct and turn it in. User interface is one of the most essential parts of a program. As you start getting further down the line you'll have to start making interfaces (unless you get lucky I guess) that someone in 6th grade can understand. Idiot proofing a program becomes very important, and you'll have to make so many small changes to the interface simply because people are stupid.
I can say that people skills are VERY important in programming. Most of the programmers that I've run across are very bad with people and are horrible at explaining anything about a program they made to someone who doesn't have programming experience. I don't mean telling them what the program does. I mean telling them the process, how long it will take, what tools you need, all of the stuff that goes into making the program happen. There is a very high probability that you'll have to be discussing this stuff with some sort of project manager, ->client<- or general boss that doesn't know programming or anything about computer science. If you can do this you'll already be ahead of the pack as far as I can tell.
Learning a language does come slowly. The learning should quickly start to accelerate (not necessarily accelerate quickly) if your teacher is good. I had some prior programming experience with Warcraft III map making before entering college, and I think this gave me a huge conceptual leg up over most. Once you learn enough of a language you should be able to use google to solve most of your basic problems. If you find it too difficult to solve something or look something up (either syntacticly or logic-wise) after two semesters programming probably isn't something you want to do.
The opportunity sounds good, I'd take it if I were you. Changing majors in college is common, and whoever is offering you this experience will probably understand if you come to find out that programming doesn't sit well with you. If you want I could throw some of my earlier assignments at you. How much / what concepts in C++ do you know?
|
I would definitely take the job by reading what you're going to get out of it. Programming can be a tough and tedious job but it all depends on how well you think you would do. I know a couple programmers and they program for hours upon hours on end and it can get very tiring. Personally, i'm a senior in high school and i've already taken Programming 1, Programming 2 (which both of these covered Python and Microsoft VIsual Basic), and i'm currently taking an AP Computer Science class with Java and i love everything i've done! If I was in your position I would take it but really you just need to ask yourself if it's something you're atleast interested in a little bit. If it is, then have no regrets my friend, do it! Good luck :D
|
I compare programming to WoW Vanilla Both are grinding through the boring part for long hours/days/weeks until you get that bug solved (getting that item from a raid).
Other than that you have to a deep thirst for knowledge. You have to be willing to learn other languages / techniques since technology is changing rapidly every day.
|
+ Show Spoiler +On April 11 2012 13:43 Panya wrote: It's a hard question as a lot of different programming fields require different sorts of skills, experience, and it really depends what you are talking about specifically. In terms of the offer you have received, although you do not want to go into detail, it also really depends on the sort of education you are offered (undergrad, masters etc.). The higher your degree is does not necessarily mean the better, but you have to take into account many things such as what your current level of education is and whether moving up that ladder will provide you with better opportunities and ultimately a better career future. It's very hard for anyone to say whether you should take an offer such as this or not and to a certain extent whether you do should be relative to how much you enjoy what you currently have.
Now according to my (admitted limited) personal experience in the field of CS, I think there is one main trait that is very valuable to an aspiring programmer, which is the ability to learn quickly. On top of that, not only should you learn quickly you must also have a passion to always be expanding your knowledge due to the ever changing nature of how the technology industry works. That's a really large generalization and I'm sure places vary from one to the other. Just because you do not see yourself as quick learner because you struggle on programming assignment does not mean you are not quick, and the more languages/technologies you pick up the faster you will begin to be able to digest new information. I think most programmers including myself go through this phase of working on a program and hating your life/job because of a difficult bug/task, but come around to really love the outcome once we solve what we needed to.
You mentioned that you had good people skills, and I can definitely say that other than learning fast, being able to work on a team is absolutely essential to being a good programmer. In most companies it's really not a bunch of introverts working on their separate programs but instead giant projects created through collaboration of tens if not hundreds and thousands of individuals. This is not to mention all the documentation you have to write which a communication art in itself. Having good people and communication skills is great in just about any field IMO, and will help you greatly in CS.
The technology industry in terms of job opportunity is excellent, as IT services are needed just about everywhere and in every field. You also have a variety of choices you can take, from anything such as pure software engineering in a large tech firm to working with financial technologies at banks to the everyday IT back office tasks. Even within software engineering you can focus on fields such as applications, IU, or graphics. It really depends what you like and just because you did a little C++ doesn't mean you should judge your interest in the field based off of that. Most likely you will never write a simple shuffling algorithm again in your life, but you will surely deal with frustrations of small syntax bugs.
I suggest you do some industry research for yourself, and weigh the opportunity costs of each option you have relative to your current state. At the end of the day, computer science is a great field for anyone interested and willing to work hard.
Thanks for the awesome reply . I'm not certain, but I think I'd be able to pick it up fast enough. I've always thought that there are few things out there which can really escape me despite really focusing my attention and studying, and I fairly confident I could learn it fast enough if I worked at it. Truth be told I only took programming in high school for the hell of it, and if I can do ok with it without any intention of applying it later in life, maybe I'll have an easier time if I know it will make a big difference for me.
+ Show Spoiler +On April 11 2012 13:46 Azzur wrote: Software developer, 8 years industry experience:
- Firstly, programming has a high learning curve at the start for many people, so if you can write a card shuffle program in high school, you're ahead of the pack.
- Hardcore programming is on the decline in the sense that there is so many development tools and frameworks. However, it's important to have a good understanding of all the basics though.
- Collaboration and code-reuse is very important nowadays. For instance, I could write a "good enough" card shuffle program quickly. However, I won't do so because I'll google the solution to find "the best" one.
- An advice I'll give to aspiring programmers is to learn databases and SQL - at least spend some time on it. The world runs on databases.
- People skills are important unless you want to spend time just coding in a back-room on a large software suite. Most software developers are consultants working on client sites.
- In terms of finding work, I'm not sure, but I haven't had any problems. If you have a guaranteed job, I would pretty much take it.
Thanks. I'll definitely give learning Databases and SQL a lot of consideration. If I'm correct my job will likely involve Databases extensively, so being able to say "ezpz" will probably help a great deal.
To be honest I was under the impression that the majority of the super smart nerd types went straight into CS (I gathered this opinion from my school, since that's pretty much what happened.), so I was kinda of worried that someone like me who is just competent rather than gifted my have trouble in the field. It's started to sound like less of an issue.
|
[QUOTE]On April 11 2012 14:08 Frozenhelfire wrote: I had some prior programming experience with Warcraft III map making before entering college, and I think this gave me a huge conceptual leg up over most./QUOTE]
Are you talking about JASS? Because I made a custom map in Warcraft 3 with a basic race selection starting 'screen' and spent a lot of time remodelling units and unit properties such as collision radius or spells. I would say what I did, any moron can do if they have the same dedication, but I never touched JASS.
What I did was completely assisted by the interface of the map editor so I don't think what I did really counts. If I could make any sense of the Starcraft 2 editor I would try that, but nothing seems organized to me.
|
I did a Software Dev course, not CS – which means I was basically taught a language (Java in my case) and a bunch of periphery elements (hardware, networking, SDLC, SQL, VBA) – this was 10 years ago, though. Agree with Panya that what you’re studying makes a huge difference. CS teaches you a lot more fundamentals that let you adapt to new technology. As a result of my education, I could do okay with Java but if somebody wanted PHP or .NET or C++ (which most of them did by the time I graduated), I was going to be useless because it would take me months to self-teach another language, and I had had enough of banging my head against a wall while I got my head around Java. If you’ve got a guaranteed job out the other side of your education, that’s a plus. But for me, the peripheral stuff did give me another way to make a buck. Service Desk jobs are always easy to get, I was even a Sys-Admin for a small business for 2 years (I was woeful at it but they never knew and I can talk it up on my resume), and as I’ve progressed and skilled myself up I’m now a Business Analyst, talking to business users, investigating their current software solutions and their needs, and using that to draft up a solution that goes to developers who can code it.
So I’m not a programmer. But I wanted to be one before I really knew what was involved in programming. I like problem solving, and now that’s what I do, only without having to deal with the detailed, technical implementation work. I don’t regret studying programming one bit, though, because even though my course wasn’t the best it still gave me an understanding of technology that so many people I meet just don’t have.
|
On April 11 2012 13:23 rad301 wrote: There were some aspects of it I really enjoyed. I loved the problem solving aspect and the feeling of solving a really difficult problem by sheer thought power is a wonderful thing.
That's all that matters from my experience. I majored in computer science, and almost all of my friends were other CS majors. The ones that liked math, computing, programming, etc. all did just fine; the ones that didn't enjoy those things all dropped out or changed majors. Making minor syntax errors and other mistakes like that is really, really common in programming, but fortunately development software and compilers keep getting better at catching those things for you. So don't be afraid to study programming just because you can't write perfect code in one go -- the people who can do that are very rare.
|
Out of curiosity, where in Canada are you?
|
+ Show Spoiler +On April 11 2012 14:08 Frozenhelfire wrote:I wrote this post over a long period of time of not being the most focused, so it doesn't flow well. What the poster above said is very true. My personal case for learning / finding work is a bit unique so I can't really answer those questions very well for you. As far as the if(x=1) -> if(x==1), that stuff happens especially when starting off. These types of errors are very important when determining if you want to be a programmer. A working program is almost never produced on the first write through. You'll have to deal with logic, syntax, and "visual" errors a LOT. I'll get to visual in a moment. A lot of programming comes down to extensive testing and debugging of very small things. If you start pulling your hair out every time you leave an equals sign off or have a logic sign flipped then you probably want to go for something else. These mistakes may seem silly as a rookie, but you'll have to take my word when I say they're par for the course especially as your programs become lengthier and more complicated. + Show Spoiler [I don't think I was making much…] +You wont encounter too many visual errors when you first start off especially if you're going for C++. You'll most likely be doing some sort of console application that solves a problem and spits out a few lines of text to let you know you got it correct and turn it in. User interface is one of the most essential parts of a program. As you start getting further down the line you'll have to start making interfaces (unless you get lucky I guess) that someone in 6th grade can understand. Idiot proofing a program becomes very important, and you'll have to make so many small changes to the interface simply because people are stupid. I can say that people skills are VERY important in programming. Most of the programmers that I've run across are very bad with people and are horrible at explaining anything about a program they made to someone who doesn't have programming experience. I don't mean telling them what the program does. I mean telling them the process, how long it will take, what tools you need, all of the stuff that goes into making the program happen. There is a very high probability that you'll have to be discussing this stuff with some sort of project manager, ->client<- or general boss that doesn't know programming or anything about computer science. If you can do this you'll already be ahead of the pack as far as I can tell. Learning a language does come slowly. The learning should quickly start to accelerate (not necessarily accelerate quickly) if your teacher is good. I had some prior programming experience with Warcraft III map making before entering college, and I think this gave me a huge conceptual leg up over most. Once you learn enough of a language you should be able to use google to solve most of your basic problems. If you find it too difficult to solve something or look something up (either syntacticly or logic-wise) after two semesters programming probably isn't something you want to do. The opportunity sounds good, I'd take it if I were you. Changing majors in college is common, and whoever is offering you this experience will probably understand if you come to find out that programming doesn't sit well with you. If you want I could throw some of my earlier assignments at you. How much / what concepts in C++ do you know?
I just took a look at the school's programming curriculum (they still use the same login for their Atutor system) and it looks like I stopped a lesson before the introduction to graphical interface programming. Basically a semester and a bit in total, although there were unfortunately a few concepts I didn't grasp as well as others. My I.T. teacher was a really nice guy and an avid gamer (he hosted LAN parties at the school), but he was just awful at explaining concepts.
Thanks for the offer for the assignments, but unfortunately it's looking like I'll have to focus my efforts on learning Java for now. Although I'm sure any concept I can pick up will help, I was instructed to become familiar with Java as a prerequisite.
|
@Kaiser Victoria BC.
It's interesting you guys talking about WC3's editor. I remember flipping through a huge scenario's triggers and finding it remarkably easy to understand just with my tiny amount of VB experience (before I did C++).
Thanks for all the input. It seems there's a pretty big consensus, so that really puts my mind at ease.
|
On April 11 2012 14:21 Thaniri wrote:Show nested quote +On April 11 2012 14:08 Frozenhelfire wrote: I had some prior programming experience with Warcraft III map making before entering college, and I think this gave me a huge conceptual leg up over most. Are you talking about JASS? Because I made a custom map in Warcraft 3 with a basic race selection starting 'screen' and spent a lot of time remodelling units and unit properties such as collision radius or spells. I would say what I did, any moron can do if they have the same dedication, but I never touched JASS. What I did was completely assisted by the interface of the map editor so I don't think what I did really counts. If I could make any sense of the Starcraft 2 editor I would try that, but nothing seems organized to me.
Basically things in the trigger editor, GUI or JASS. Personally I did all of my current two maps in JASS, but I started in GUI. Although you don't really type things out in GUI you still learn the basics of programming.
The SC2 editor isn't terrible complicated. The popularity system is mostly what keeps me from having any motivation to port my maps over to SC2 right now. The interface for SC2 is just sooooooooooooooooooooo bad.
On April 11 2012 14:45 rad301 wrote: Thanks for the offer for the assignments, but unfortunately it's looking like I'll have to focus my efforts on learning Java for now. Although I'm sure any concept I can pick up will help, I was instructed to become familiar with Java as a prerequisite.
I'm pretty sure the assignments would still work. As far as I can recall none of the early ones were language specific at all. I will have to say that Java is one of my weaker languages though.
|
If you have
- Good people skills
- A lot of patience and don't let long tedious problems get to you
- The energy to keep this up 7 hours a day, 5 days a week
- The drive to love and learn everything about software development, from business process, to academia
Then yes programming is for you
|
On April 11 2012 15:56 Frozenhelfire wrote:Show nested quote +On April 11 2012 14:21 Thaniri wrote:On April 11 2012 14:08 Frozenhelfire wrote: I had some prior programming experience with Warcraft III map making before entering college, and I think this gave me a huge conceptual leg up over most. Are you talking about JASS? Because I made a custom map in Warcraft 3 with a basic race selection starting 'screen' and spent a lot of time remodelling units and unit properties such as collision radius or spells. I would say what I did, any moron can do if they have the same dedication, but I never touched JASS. What I did was completely assisted by the interface of the map editor so I don't think what I did really counts. If I could make any sense of the Starcraft 2 editor I would try that, but nothing seems organized to me. Basically things in the trigger editor, GUI or JASS. Personally I did all of my current two maps in JASS, but I started in GUI. Although you don't really type things out in GUI you still learn the basics of programming. The SC2 editor isn't terrible complicated. The popularity system is mostly what keeps me from having any motivation to port my maps over to SC2 right now. The interface for SC2 is just sooooooooooooooooooooo bad. Show nested quote +On April 11 2012 14:45 rad301 wrote: Thanks for the offer for the assignments, but unfortunately it's looking like I'll have to focus my efforts on learning Java for now. Although I'm sure any concept I can pick up will help, I was instructed to become familiar with Java as a prerequisite. I'm pretty sure the assignments would still work. As far as I can recall none of the early ones were language specific at all. I will have to say that Java is one of my weaker languages though.
oh, sorry man. I thought they were C++ assignments specifically. Now that I think of it I'm not sure how I came to that conclusion lol. In that case sure I'd love it if you send them over. I'll pm my email.
|
I'm programming since i was 8 and have about a dozen years of real world experience and i can say, programming is not an easy job. You can't just "decide to become a programmer" and only spend your work time actually doing programming stuff. I've seen a lot of those types and they usually don't last long, most of them are quickly filtered out and spend most of their career jumping from one company to the next (or they get promoted).
As a programmer, you _have to_ program in your spare time, develop your skillset, learn new programming paradigms, learn new programming languages and such. It's a field that moves so fast that it's hard to keep up, though once you reached a certain level, learning new stuff becomes a lot easier (these days it only takes me about a day to learn a new language and about a week of use until i have memorized the common language specific pitfalls).
You seem to already have a good start if the problem solving is something you enjoy since - if you become programmer - you will spend the rest of your life solving new (or very old) problems every day. I would recommend that you start to program in your spare time NOW. Pick a language, it doesn't matter which (I enjoy C# a lot eventhough i'm no big fan of MS and visual studio is a good IDE, so you might try that), think of some program and just do it(tm).
For example, just write an alarm that plays a sound at a time you can enter and then play around, make it minimize to the status bar, make it save the last 5 alarm times in a file and/or registry and on start, allow the user (i.e. you) to pick a time from that. You don't have to write the next Photoshop to start, just start with something and program for a few weeks in your spare time, thinking of new fun stuff every day.
If you still enjoy programming after that time, go for it. Finding a job as a programmer is not too hard as long as you show dedication and have a good skillset.
Also, as a programmer, you most often won't be too much into the area you are programming for - health,insurance,banking,general webdesign,doesn't matter, the road to the final product is the part most programmers care about, not wether the titlebar says "Insurancator 9000" or "Point-of-Sale'o'matic 3000". I currently work in the adult industry... and i hate porn (well, at least 99.9% of it). Doesn't matter, there are problems, i solve them
|
Kyrgyz Republic1462 Posts
Avoid C++ if you are starting out, although it may seem "cool" to be learning C++ as it is a very high performance language, popular with game developers etc. etc. it is a really complicated and error prone language that has too much of those pitfalls that make you want to pull your hair out (http://yosefk.com/c fqa/index.html).
Start with something simpler. For example Python is quite popular and is considered a good learning language, although if you asked me I would suggest to use a modern strictly typed language (Java or C#) to make your life easier.
Be sure to take a look at the functional languages, such as Haskell. You may or you may not like the functional approach, but that will open your eyes on many things that are wrong with the mainstream languages that people just take for granted.
And to answer your question, yes you need a lot of patience, but try think of a simple project that would be fun for you, be it a dynamic web page or a simple (simple!) game like Tetris and see how it goes.
|
On April 11 2012 13:23 rad301 wrote: Do I want to be a programmer?
Do you enjoy programming? As pragmatically absurd as this advice may be, I'm saying it anyway: decide what you want to do with the rest of your life based on what you enjoy doing. Don't pick the option that makes the most money, and don't pick the option that you're most qualified or best prepared for. Pick the option that lines up with what you enjoy doing.
I took a bit of programming in Highschool (mostly C++ but I dabbled in a few others), and while truth be told I didn't make it very far due to spending half my time playing BW, I still made it through with good marks.
I was the same. We starting with QBASIC for two semesters, then spent a semester on Visual Basic, another semester on C++, and two semesters on Java. In my experience, if you understand C++ or Java enough to where you could use one or both to construct a simple loop, a user-defined method, and/or develop a program that uses the Object-Oriented framework of both languages to a minor degree, you are light-years ahead of where your peers will be in your programming courses.
I loved the problem solving aspect and the feeling of solving a really difficult problem by sheer thought power is a wonderful thing.
I'm the same way, and the fact that you enjoy what is more or less the definition of what a programmer is suggests that programming might be a good fit for you.
Unfortunately...
On the flipside, I almost tore my fucking hair out when I spent three weeks rewriting a card shuffle function only to find that all three versions worked, I had just wrote If (x=1) instead of If (x==1) in a different part of the program.
This suggests programming might not be a good fit for you. For me, as much as having those errors pop up frustrates or annoys me, the feeling I get when I finally resolve all of those errors and bugs and get the program to finally work as intended completely justifies all of my earlier frustration. It's the best feeling in the world to me, and it's a major reason why I went into Computer Science in the first place. If you can't stand making simple silly errors and having those errors mess you up for days before you find them, you might want to look at other options, because unfortunately those errors are an unpleasant but constant guarantee in programming.
I'm not a fast learner per se. Although I consider myself to fit into the category of intelligent under-achiever, learning the programming I did was a fairly long and arduous task.
Learning programming initially is almost always difficult, but once you have the basic concepts down, it becomes fairly intuitive to move from one language to another, which is the most substantive shift you'll consistently be making as a programmer.
Like I said before, the problem solving aspect was quite enjoyable most of the time, but learning the language itself was not something I looked forward to.
This really suggests you might want to consider something else. Any technology related field is something that demands the practitioner to devote the rest of his/her life to learning. Technology changes and evolves constantly, and if you don't keep up to date and constantly approach these changes with a sincere desire to learn more, you're going to fall behind very quickly and eventually become obsolete to other programmers that DO know all of this fancy new stuff.
A good example is HTML 5, which is gradually gaining popularity among larger websites. If you're a programmer and you know ActionScript, and thus can program Flash objects, you'd best be ready, willing, and eager to learn to HTML 5, because it's the new replacement for Flash. Your clients don't care about the benefits of Flash, nor do they care about how HTML 5 works. They want their websites to conform to the most modern standards possible, and if you can't deliver that, you're out of a job.
I can't stress this enough: As a programmer you must love learning. You have to approach new, unfamiliar things with eagerness and excitement, and treat every failure as a critical learning opportunity. Those errors you talked about getting frustrated with: I love getting those because I learn something new about programming, either in general, or just with that language. If you can't bring yourself to enjoy learning new languages or debugging your own error-filled code, becoming a programmer will probably just make you miserable, because that's more or less what being a programmer is all about.
Is there an area in this industry which would be good for someone with people skills? I've started out in the hospitality industry, and I now work in a sales job. I generally dislike having to talk to most people, but when I'm paid to do that I seem to have a natural talent for it.
Getting a Programming job in a commercial business is your best bet; if you can find some kind of consulting firm that does database or website design/maintenance for businesses, many of those jobs will have you talking to customers constantly, figuring out what they want, presenting them with your basic idea on how to make what they want, and keeping them updated and constantly making sure that what you're piecing together is what they want.
Most programming jobs in general will require at least some people skills though. Very few companies are looking for the anti-social code-monkey types to sit in the glow of their screen and just code for 8 hours a day, at least in my experience.
|
|
|
|