|
|
Subject:
How could I pursue a programming career?
Category: Computers > Programming Asked by: grasshop-ga List Price: $10.00 |
Posted:
14 Jun 2002 10:31 PDT
Expires: 14 Jul 2002 10:31 PDT Question ID: 25842 |
I need career advice from a veteran programmer. What is the best way *for me* to pursue a career as a computer programmer? Here are my constraints: * I wrote long (but simple) programs in BASIC when I was about 13, but never really got into programming after that, though I was always a "power user." (I'm now in my 30s.) * I know HTML, SSI stuff, CSS stuff. I have worked most of the way through Andrew Johnson's "Elements of Programming with Perl." I seem to have a pretty good aptitude for Perl; there's nothing in the book so far that I didn't understand pretty well (at least, after study--it was a little hard to get my mind around references to hashes of arrays of etc.), and I've written several long programs already (e.g., a url-and-title grabber-and-arranger, a wff detector (logic), a directory structure mirroring utility (using recursion, very cool!), and a few others. I'm comfortable on *nix systems and (I think) my next project will be to install Linux on a spare hard drive. I also want to "make" my own computer! * I have a taste for work online, which I have done professionally (just not as a programmer), but if programming opportunities were richer elsewhere, I'd go elsewhere. * FWIW, I have a Ph.D. in philosophy, and I'm unemployed. :-) But I don't expect to have a job as a programmer for several years at least. * Most of my friends are programmers, and I've asked them this question. So the answer I'd like to pay for should be a really good answer of the sort I wouldn't get from a casually concerned programmer friend! I'm not trying to ask more than one question :-), but very helpful as parts of an answer would be such information as the following: recommendations of books to read; links to online documents that might help with thinking this through; what language(s) to learn next; whether I should continue learning Perl in much greater depth or move on to another language; whether I should aim for an AA degree, certification, a bachelor's, a master's, a degree by examination (from Regents College e.g.), or whatnot; what programming languages/fields are likely to be in demand when I'm ready to be employed (in several years, I imagine). In short, I'd love to have a very well-informed opinion, in broad outlines, about the most effective things *I* could do in the next five years to make myself a professional programmer. I'm willing to "think outside the box"... |
|
The following answer was rejected by the asker (they reposted the question). | |
Subject:
Re: How could I pursue a programming career?
Answered By: netcrazy-ga on 14 Jun 2002 12:43 PDT Rated: |
Hello grasshop, First of all, thanks for using Google Answers and I hope after reading my suggestions and friendly comments, you'll be able to decide something for your new planned career. In this answer, whatever I'm suggesting, is from my own experience only. Though I'm not a career counselor, but I do have given this suggestion to a friend of mine, who owns a Masters Degree in Chemistry and wanted to shift to programming career. I've Masters degree in computers and I've been into this field from six years. In my six years of experience, I've seen this industry going with so many ups and downs. From the boom of dot com bubble to its burst, from evolution of Java and its burst and many others. So in answer to your question of "what programming languages/fields are likely to be in demand when I'm ready to be employed", I believe that no one can answer this as IT industry is very much volatile and unpredictable in nature. The language or any technology which is famous or in boom today, may not be available for tomorrow. But I must say that you should definitely try to get hold of C as this is a very basic language which I think every programmer should be knowing. As you mentioned that you already have a good experience of BASIC language, so learning C will not be difficult. In fact while learning any language, you should be strong in your logic. If the logic is strong, then learning a particular language is not a big task. With access to Internet, you can very easily learn any language. Now learning of the language depends on which field of IT you are looking for. As you mentioned your interest towards Internet, I'm giving you some of the sites from where you can give a start. Java Language http://developer.java.sun.com/developer/onlineTraining/JavaIntro/ C Language http://www.cs.auckland.ac.nz/~j-hamer/07.211/C/C-Lesson/ and check this one too for C language http://www.strath.ac.uk/IT/Docs/Ccourse/tableofcontents3_1.html Advanced course in HTML http://wdvl.internet.com/Authoring/HTML/ Try this page to find courses on XML, DHTML, CSS, Javascript and many others http://html.about.com/library/beginning/bl_htmlclass.htm This page has a list of several languages with further links to their respective tutorials http://stommel.tamu.edu/~baum/programming.html You can also try something on Multimedia http://www.liacs.nl/~putten/mm/ VB Course http://www.free-ed.net/fr03/lfc/030202/120/ Something on Microsoft's .NET http://samples.gotdotnet.com/quickstart/ Now related to books, check out this link ( http://www.intelinfo.com/books1.html ). It has many books listed and you can purchase them from Amazon site. This article on Monster.com site really impressed me and I think it answers all your questions http://technology.monster.com/articles/10steps/ Have a look at this link. I found it very interesting and thought that it might help you http://www.embedded.com/story/OEG20020405S0049 Regarding your advanced learning in Perl, I would say that there is no harm in learning advanced features of Perl. It is very much used in industry and will definitely help you. About getting more education degrees, certainly this will add a value to your career. If you want to go for some certifications, you can try this site ( http://butrain.bu.edu/ccp/default.asp#Programming ) for certification courses. A Microsoft or Sun certification would very definitely help in getting you a better programming career. Check out this link in Google groups for a similar question http://groups.google.com/groups?hl=en&lr=&threadm=Pine.GSO.3.96.991024042104.20918B-100000%40marley.bitstream.net&rnum=2&prev=/groups%3Fq%3Dhow%2Bto%2Bstart%2Bcareer%2Bin%2Bprogramming%26hl%3Den%26lr%3D%26selm%3DPine.GSO.3.96.991024042104.20918B-100000%2540marley.bitstream.net%26rnum%3D2 Search Terms In Google Groups how to start career in programming: http://groups.google.com/groups?q=how+to+start+career+in+programming&hl=en&lr=&sa=N&tab=wg In Google programming career: ://www.google.com/search?q=programming+career&hl=en&lr= I hope this will help you in deciding about your programming career. Feel free to ask for clarifications and if you are happy with my answer, please rate it. All the very best in your programming career :) Regards, netcrazy | |
|
Subject:
Re: How could I pursue a programming career?
Answered By: dharbigt-ga on 17 Jun 2002 18:40 PDT Rated: |
Ahoy, matey! If you're sure you want to be a programmer, follow Cap'n Dharbigt's simple steps: Step 0: Start with the basics If you don't program in ANSI C, you might want to try learning that quickly. Don't mind all the libraries, but learning UNIX networking can be of eternal assistance. Programming the OLD way can seriously improve your comprehension of computers. Download and install Linux (even if you don't use it for more than development) and try to port all of the code you write to Linux (or to Windows if you write natively in Linux)... a lot of the facilities that vary from one machine type and platform to can give you insights into how and why these processes work (and which way is better). Read the original K&R C bible and I highly recommend Richard Stevens' books from Addison-Wesley: [http://www.amazon.com/exec/obidos/ASIN/0131103628/qid=1024363251/sr=2-1/ref=sr_2_1/104-9870359-6226328] [http://www.amazon.com/exec/obidos/ASIN/0201633469/qid=1024363225/sr=8-1/ref=sr_8_1/104-9870359-6226328] Step 1: Get a programming hobby Qualifications and credentials are one thing, but if you are really going to acquire the true mettle to be a programmer, you need to tackle as many programming problems as you can. Every successful senior software engineer I know ignores his wife and often his children in order to do the programming he truly loves to do. Often, this is a pet project, but it always consumes his time and interest. For a lot of people, this means GAMES PROGRAMMING, but it doesn't have to. Some people work on their own versions of enterprise database systems, networking programs or low-level search engines. Whatever it is, remember to keep doing it... even if sometimes it doesn't seem like it will "sell" or be popular. Remember that this is also your experience. Programming is one of the few fields where you can simply write something, contribute it, and call it professional experience. I compare it to writing: "A writer writes every day" and likewise, a programmer must. To acquire new tools and to keep the systematic mind. Step 2: Get a name for yourself: work on the free projects You may not think there are "famous" programmers out there, and maybe there are only a few, but there are many "famous" projects you can be associated with and contribute to with the assistance and input of some of the best coders in the world. Some of these folks are very helpful to newcomers and you can be a part of a project that makes a big difference. Working on Linux or FreeBSD kernel drivers is an excellent way to create a small closed-ended project that makes a difference. It also provides great experience in working with kernels and low-level code. This alone can up your annual salary $20,000. Step 3: Learn "perl" Why? For one thing, I think perl is the ultimate parsing language. Most programmers will tell you that the hardest part of programming is parsing input. Perl will give you insights and abilities to manipulate data and information that you used to think were reserved for immortals. For another thing, perl is a very BROAD language (unlike C, which has fewer methods of accomplishing the same goal)... if you learn perl in its beloved entirety, you will be initiated into most of the idioms that exist in any other language (including text processing scripting languages like awk and sed)... Step 4: Work like a pro Programmers have to have other skills besides programming. The process of evolving a product from a development model to a production model involves the use of version control tools and make tools. Working with other programmers is also often necessary, so try to communicate and act like a professional. This means doing things that are "good for you" and good habits. This will make others enjoy working with you and will improve the quality of your work. Document your code for your own clarity as well as the next guy. Take a look at some of the free project guidelines. Best practices are available from GNU and FSF sites as well as from most commercial software companies. These development methodologies can be used even when it's only you coding, and the fact of the matter is, they are best practices for a reason. Try to use the development tools that the professionals use. Sometimes these suites are very expensive, but it is worth it to use a lab at a local college or borrow a copy from a friend for the evening (not to condone piracy). These tools are often quirky in their own right, and being comfortable with them can be as important to having well-integrated code as the actual source. Step 5: Internships If you can't score a job based on your free or side work, you may need to let a company "give you a chance"... this means fixing bugs all summer. Remember that most programming establishments want for leadership and initiative. You can take the internship as an opportunity to learn the dynamics of a development group as well as give yourself an opportunity to acclimate to the product. If you like the product and believe in it MAKE CLEAR YOUR INTENTION TO STAY. You can train yourself in the internals of the business and will have a much better chance of being promoted internally than if you were coming in from the outside with no intimate knowledge of the systems and processes. For the reasons mentioned above, try to get your internship with a company that you want to stay with if it is possible. A lot of these companies may not be throwing tons of money around, but we have a saying: "Get used to it, Hitler." You shouldn't be in it for the money, because you will always fall second-best to some guy who is willing to sacrifice the 12am-4am hours because he loves it and he gets into it. Step 6: Get a mentor Don't be the wizard in the tower. A lot of coders lose out because they like to be alone and private. The best code comes from tight groups because they can make use of each others' individual strengths and weaknesses. But most code (corporate or otherwise) DOES NOT UNDERGO PEER REVIEW. If you are at a company or organization that allows this (financially or otherwise) INSIST UPON PEER REVIEW. Similar to this is one of the rules of learning chess: "Watch others play." You should also offer to review other people's code. Obviously, some people may not like this idea, but the fact is that it probably will only improve both of your coding styles. You can't beat the power of the third mind for skill improvement. And, true to the point, if you can find someone who you revere and whose code is true, FOLLOW HIM/HER AROUND AND LEARN. This is the way to get ahead in any science. Frankly, I'd love to take a new programmer under my wing, and I know a lot of other guys who would, too... regardless of sexual preference. Step 7: Testbed Never be afraid to write a tiny program to find out how the language reacts. A lot of the best programmers take the time to write a proof-of-concept program before they integrate a data scheme into the product. The best software comes out of places who have programmers who write nothing but test code and event checkers. Thoroughness is next to godliness. Step 8: Skoolin' I'm going to be candid and tell you the truth: some classes are worthless and some are very valuable. What a surprise. Seriously, though, any course can help you but the best courses have the best instructors. I don't recommend going to "camps" or "seminars", but rather, learning from professors or instructors that you know to be effective. Usually, at a school that teaches CS, there is a lab... usually in the basement... with poorly-complected people. Ask them who is the best teacher and then take class after class with him/her. Stay attuned to your own learning style. I found for myself that the basics of data theory needed to be taught to me, but a lot of the basic functionality of the libraries was very monotonous. I did not need to have each function of a library explained to me; I could read the documentation. If you've read this far, you probably can handle that too... which leads us to our final point: Step 9: RTFM That's right. Read the fine manual, even if it isn't helpful. If it is helpful, then you've learned something (and you've improved your researching abilities)... if you end up just seeing page after page of instructions how to put the paper in the printer... well, maybe you learned a little Spanish. But seriously, I have learned about 75-80% of what I know from documentation, and although I know everybody doesn't learn the same way, I think it is incredibly important. I often insist that my employer provide/purchase appropriate documentation (and ergonomic hardware)-- these are things that one should simply not do without. Nobody should be afraid of the documentation, or of having to consult it. I have also written documentation, and it's comforting to know that people are out there reading it. I hope this helps you on your way. May the source be with you. |
grasshop-ga
rated this answer:
This is grand, thanks a lot cap'n. I'm glad to have some opinionated, thought-provoking advice, and several points here were non-obvious to me. I didn't know, as you say, that Perl was a very broad language and that knowing it in depth might be useful for that reason. Other stuff like following best practices, taking classes with good teachers, and getting a mentor is stuff that makes sense but (for me) has needed to be stated clearly and directly in order to sink in. |
|
Subject:
Re: How could I pursue a programming career?
From: mike_logan-ga on 14 Jun 2002 13:15 PDT |
Here is my advice on deciding on a Programming career. There are several programming directions Online Application Developer Application Developer Database Developer From hear-say and my own experience database programming is paid the most Although you should not worry about money just what makes you happy. I program in ASP, SQL Server, Flash 5.0, Visual Basic and I'm an MCDBA (Microsoft Certified Database Administrator) Some warnings about programming: If you program for a company that has been doing it for awhile then the chances of creating a pattern is gone. You will probably be forced to adhere a schedule, milestones, test patterns all of which are good practice but some overly so. Do you get along with people: You have to listen to people to create good programs. A program isn't good unless it satisfies the user. To make yourself marketable now the business trends and study them buzz words now ERP, Baseline, Dashboard, etc. Get some project management skills VERY IMPORTANT If you would like to rise above just a programmer one day you will need some program or project management skills to manage large IT projects. HTH Mike |
Subject:
Re: How could I pursue a programming career?
From: grasshop-ga on 14 Jun 2002 13:55 PDT |
Thanks, Mike, this helps quite a bit. |
Subject:
Re: How could I pursue a programming career?
From: cdmacken-ga on 14 Jun 2002 15:18 PDT |
The first issue you want to resolve is which type of programmer do you want to be? Basically, there are four main job markets 1. "Software engineer" typically working in the engineering/science/research sector, developing software (often for embedded or control systems) using strict engineering principles. Typically, this is done in C or C++ and somtimes Java, typically on Unix. Usually requires a degree in C.S. or engineering. 2. "Software developer" working in the commercial software industry, where software itself is the product of the company you are working for. Typically, this is done in C++ using Microsoft technologies. A C.S. degree helps, but it's not necessary. 3. "Programmer/Analyst" working for a company's in-house dataprocessing department typically developing systems that are used to update and inquire databases and/or produce reports. Often these are old mainframe shops, but their future is probably Enterprise Java ("J2EE") typically running under Unix against Oracle databases. Usually, no degree is required. 4. Small systems: There are also a lot of opportunities to do contract work developing smaller scale database systems for small and medium size companies. This is typically done in Visual Basic. Usually, no degree is required. 5. "Internet programmer" Does programming for web sites, often with PERL, PHP, Java, ASP, etc.. As the web has become more mainstream, gradually this work has been absorbed by the above more traditional developers. The second question is, how should you prepare for a programming career? 1. Unless you require the structure of a formal program, you should be able to self study. 2. Make sure you learn someting about UML, Software Engineering, and/or Systems Analysis in addition to your programming skills. 3. Develop a portfolio of work that you can demonstrate to prospective employers. 4. You should try to learn both Java and C++. In terms of learning Microsoft's .NET versus Sun's J2EE technologies, it depends on what route you want to go. 5. As a last step, take one of the official Sun or Microsoft certification exams. This will give you some sort of formal qualifications in place of a programming diploma or degree. Good luck! |
Subject:
Re: How could I pursue a programming career?
From: grasshop-ga on 14 Jun 2002 16:54 PDT |
cdmacken, thanks a bunch, this is great. That's exactly the sort of thing I was looking for. I'll definitely look into studying UML, Software Engineering, and Systems Analysis. It's also nice to see specific suggestions of languages--friends have told me C, C++, and Java are essential. Next I guess I should find out where the greatest demand is for the different sorts of programmers... |
Subject:
Re: How could I pursue a programming career?
From: grasshop-ga on 17 Jun 2002 11:54 PDT |
netcrazy, I would be happy to up the rating a bit, maybe to ** (now that your second answer has been included again), but the system won't let me. It doesn't matter much because your second answer doesn't really answer the specific question asked either. :-( I *didn't* ask, "How much I have to know to get a job in programming?" I asked, "What is the best way *for me* to pursue a career as a computer programmer?" Those are different questions. This was later clarified: "I'd love to have a very well-informed opinion, in broad outlines, about the most effective things *I* could do in the next five years to make myself a professional programmer." For comparison, I would have rated cdmacken's answer perhaps a ***. |
If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you. |
Search Google Answers for |
Google Home - Answers FAQ - Terms of Service - Privacy Policy |