For Those Who Wish to be Programmers?
Ryan asks: "I've been stuck in a helpdesk position at 3 different companies for the past 5 years. What I really would like to be doing is programming. At each job, I would write small programs or dynamic web pages in PHP with a MySQL backend, a few small Linux utilities for automating jobs and small Win32 programs, all written in C. Sure, these programs were popular with my fellow coworkers, my boss liked them, but my primary function there is to answer phones, and programming is secondary. I can not transfer to the 'programming department' because its located in another state, nor would I think that department would welcome me, only because I would be coming from a helpdesk. My programming is self-taught, and I don't have a diploma from a university. I'm 25, and have a family, night school is out of the question.
The market here (Danbury,-Connecticut) is dry, and HR wouldn't even look at my resume with out a degree. I know someone out there must have been in the same situation and some how gotten their foot in the door. What did you do? Any suggestions?" I'm sure there many on Slashdot who have been in this situation. If you wouldn't mind sharing your experiences on this matter, it would be appreciated. Share the ups and downs of your decisions and in particular, please answer the question: If you had to do it all over again, would you make the same decisions? Those interested in this topic may also wish to check out the the last article that touches on this subject.
It's much easier to transition from Helpdesk to a testing department. In testing (at least the testing I've been involved in) you often get to use programming to develop test tools, scripts, etc. At the same time (depending on the organization) you have much more interaction with the development group and you may even get to review source code as part of your testing efforts. Over time as the dev group becomes more aware of your programming prowess, then you can look for a way to transfer into a rookie dev job. At that point, since the people you've been working with know your skills, it's much easier for them to justify hiring somebody who might not have a degree or other "proper" development experience.
So, it may come down to choosing whether you would be happier with your current employer, or doing what you want to be doing for someone else. It wouldn't hurt to see what's out there, and if you get an offer then it might make your present employer see you in a new light.
Basically, the company is not going to go out of its way to move your career for you. You shouldn't expect them to. But most employers would be happy to work with you to put you where you will benefit them the most.
As this is happening, I recommend frequent practice. Try to keep abreast of current practices and new concepts and paradigms. Good luck.
If, in the process, you are to come across a Gandalf wallpaper where he looks stoned, please send me a link. Thanks.
Karma: Good (despite my invention of the Karma: sig)
Are you sure you are ready to give up your place in the lucrative field of user support. You guys are the face of IT, the ones everyone looks to, the keepers of the flame and guardians at the gate. Even programmers look up to you when you find them on the floor of their cube catching a few z's. Remember how much chicks dig those sexy pagers.
illegitimii non ingravare
I know it won't be easy to do but you're going to have to make a sacrifice somewhere, which probably means you'll have to take a cut in pay and take a very entry level programming position or go back to school (even though you said you couldn't due to family considerations). I went through a similar transition a couple of years ago when I left the printing industry and took a 35% pay cut just so I could do some simple NT administration and VBA programming. I was paying my way through college at the time so that pay cut really hurt. About six months before graduation I managed to land a part-time position with a consulting company who specializes in Java/Unix development (my focus/interest) which after graduation turned into a well paying full time position.
Short term sacrifice for long term gain.
If you have 2 incomes, it's easier. Get another job somewhere else, if you current company is unwilling to help you out, you gotta move on.
You said night classes are out of the question, what about part time in the day or at night? Correpsondance courses exist so you can work at home on your own time. (You can get a CS degree online now)
Remember one thing tho, alot of programmers aren't doing what 'they' wanted to do when they got into the field. (they're working on other technologies, mainframe, client-server, networking, etc..)
Sure, people were able to get their foot in the door maybe five years ago, but times have changed. With the dotcom bust, the market is now saturated with talent that has no formal schooling, but write mean code. In fact, I just got out of a meeting for my company where the comment was made that the problem right now is a glut of too much high priced talent. So, unfortunately, you will probably have to find a degree some how, even if it is doing the Sally Struthers home schooling method. Places are starting to place a huge emphasis on that in an effort to seperate people since there are so many tech types out in the world.
I can some what relate in that I have just a BS, but a Masters degree is what my company is interested in. Plus, I am classified as a test engineer, but would really like to program. I know it is hard, but even one course a semester would look great on a resume. It would tell your HR and higher ups that you are making an effort for a formal education. Heck, just taking two courses last year got me a pay raise.
This is the direction I am taking and I don't regret it. I am moderately happy in what I am doing, and have found persistantly bugging the higher ups for more programming to do doesn't hurt either. One final piece of advice I could offer is don't ignore the power of the web. Take on a moderately difficult task (in my case, creating interactive web sites for my boss and my old school) and then gloat about it as much as you can on a webpage along with a copy of your resume. This can get someone's attention as well!
Bryan R.
The price of freedom is eternal vigilance, or $12.50 as seen on eBay.....
So, you want to be a programmer? That's fairly easy, anyone can code. But who can make it good? I think those who can have the following abilities:
:-)
1) Commitment: You are not going anywhere if you can't sit down and code a system for months, maybe years. You need to have a stable relationship with your programs. It's like dating a girl, except you can sell it later
And to have commitment, you need:
2) Passion: Love what you do. Few people can sit in front of a computer and look at %$@\"{ > $_ () all day. As strange as programming languages characters look, you need to love them.
Which bring to my next point:
3) Knowledge is power: But, doesn't matter how many programming languages you know. 1, 2, 3 or 50, they all share a lot of commom grounds that you need to know. So XYZW is a functional language, with a little bit of OOP, and ASDF is completely OOP. Doesn't matter, as long as you know the strenghts of each concept, what mostly changes from language to language is the characters you type;
And what characters will you type?
4) Know the market: I love Python. I know Python. But market for it is weak, compared to C++ or Java. But, I make my living with PHP. Instead of complaining that the market for what I like is not the best in the world, realize we live in a society fueled by money, and somehow, you need to make it;
And the last thing I have to say:
5) Above all, stick to your values. Don't go programming proprietary software if you love Free Software, don't code for business segments that you don't like, don't code for companies that abuse their market share, treat their employes bad, or sell horrible products.
Above all, programming is another job. And like any job that it's worth, you have to make a difference. Try to make a positive one!
Buy a Nintendo DS Lite
I was doing tech support and some sysadmin for a project, and had been the sysadmin/graphic designer/jack-of-all-trades at a small company before that.
I taught myself Perl (sounds like you've already gotten this far), and picked an application that needed to be rewritten from scratch. In my case, it was the Campus Map at the university where I work. I went to the people who were in charge of developing it (who didn't really have the time to do it right, and it wasn't a high priority for them at all), and volunteered to do it.
Then I did a really good job. I did the project as if it was my real job -- meeting with the people involved with the site and related stuff on campus to get all the input I needed to have the app meet everyone's needs. I redesigned the whole section of the website. I badgered people to get access to all the content that needed to be included. I documented the API for the Perl CGIs so other people could embed the maps into their own websites.
And the next time a job came up in the department, I was at the top of the list.
-Esme
I've been stitching up cuts on my livestock and giving my children cough medicine and asprin. At work they only think of me as a software designer. How can I break into the medical field?
Going to school is out of the question.
Writing one off utilities is not developing software.
You need to understand how languages work (what is a virtual function in c++), how OSs work, what a thread is, what a btree is and why it is so useful, how a garbage collector works, how your filesystem works, how commen compressions schemes work, how long to expect a user to wait with no feed back or some feed back but no progress indication, how to fill a polygon, etc. You don't need to know all of this because you might have to write it, it is already written, but you need to understand these concepts to expand on them and apply them when appropriate. I have used concepts learned in all the previously mentioned ideas in production software.
I suggest that you find a way to learn the stuff in a structured environment. I agree that a degree is only a sheet of paper, but the learning that takes place in those classes is extremely hard to reproduce working on a helpdesk.
Joe
Joe Batt Solid Design
I take the belief that anything you actually did while on the job can go on your resume. After all, the copyright of the code you wrote is likely held by the company (work for hire), so it is only fair that you can list any skills you actually used to create intellectual property for them on your resume.
There is a definiate art to writing a resume when your experience is in one job tilte but you are seeking a job in another. As long as you do not make up facts, spin the hell out of what you did. Market yourself: there is no rule that says the description you give of your job duties has to be proportional to the amount of time you spent doing them.
List bullet items for each of the programming tools you actually used, no matter how "small" your use of it was, and give a short technical and functional description of what you did.
For example, if you wrote code to use PHP/MYSQL to track something at work, then devote several lines to this, even if was done "in your spare time" and wasn't your primary job duty. Your attitude to a prospective employer has to be "I've done X before, I can do it again for you". If you find yourself thinking along the lines of "Well I was only really asked to do Y, and Z and only did X on my own when Y and Z were slow" then you need to slap yourself. Frankly, if you weren't asked to do X, all the better: that's called proactively identifying business needs and solving them. Employers do not want people who sit there waiting to be told what to do.
You might have to do it for little money, or for free, or maybe negotiate something with the person -- for instance, if you are doing an ecommerce site, you might do it for a commision on what gets sold on the site. That way the person has nothing to lose. Or you might want to set it up for them, and then charge them for maintenance (if you feel more confident about your ability than they do -- again, they'll only have to pay for it if they like it). You're looking for experience, so you should expect to make relatively little for your time investment.
If it goes really well, you might find yourself being self-employed, doing programming for people who can't hire someone full time for their programming needs (this happens more often for web development than other programming). If not, you should have some good portfolio work to present someplace for a new job. Your new job may not be a programming job, but hopefully it can be a job that can become a programming job (where your current one can't, it seems). System administration jobs tend that direction, for instance.
I am 30 years old and I have a degree in English.
I started out in this industry doing PC Desktop Support.
Then I was doing HTML.
Then I was doing Cold Fusion.
Then I was doing Perl.
Then I was doing Objective-C in WebObjects.
Then I was doing Perl and Java and XML. (Jakarta rocks!)
Along the way I picked up some Bash skills, some Emacs Lisp, some Python, some TK, some GTK and SQL including experience with Oracle, Informix, PostgreSQL and mySQL. Some of it was just for fun; some of it was for work.
I have learned about Linux and Solaris and a tad about AIX.
Now I am a web application programmer and team lead at Apple.
Repeat: I am 30 years old and I have a degree in English.
Do not think you cannot do what you want to do. Do not let your age or your background keep you from your dreams.
Tyler's words coming out of my mouth.
Make sure you work for a company that has its programmers in the same building with you.
Try to find a company using technologies of long-term interest to you.
Get to know some of the programmers. Have lunch with them.
Sharpen your skills with the technologies they use. If they do Java servlets, then you start building Java servlets. If they do VC++ Windows client apps, you do the same. Do it at home until you're pretty good, then start doing it to help out at your job (in your own department).
Then, when there is a dev crunch for the programmers, volunteer to help. Go to the engineering mgr, tell him that you've been doing this kind of work for the company in your dept. and ask if he'd like to borrow you for some side projects to help ease the resource crunch a bit.
He'll probably be interested, and he'll become your advocate. The guys you have lunch with might vouch for you. If you do a good job (don't prove you're better than they are, prove that their lives are easier with you on the team), you'll soon be pulled in full time.
After working there a while, you can go work somewhere else, using your demonstrated pro experience as your resume.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
Do you want to be a professional programmer / software developer / software engineer? Or would you be satified being a hack (not a hacker) programmer that writes one-off (web) scripts?
If you want to be a white-collar professional type, expect to be like any other professional, and get the best education you can. Which is typically at least a four year bachelors degree.
You can get an entire BSc Computer Science via correspondance, online or via postal mail. Look at any university in US, you very well may qualify for financial aid, or low-interest student loans.
Then follow this method:
1) Get an education, (knowledge that will not become out of date)
a) understand computers (a la Structure and Interpretation of Computer Programs)
b) mathematics
c) history of computing
d) programming in the small
e) programming in the large
f) software engineering
g) networking
h) professional presentations and writing skills
i) algorithms and data structures
j) database systems (RDBMS, OO databases)
etc.
2) Training (skills of tools and techniques, that will have to be maintained)
a) programming language (e.g. C, Pascal, Java, C++, whatever)
b) database (Oracle, PostgreSQL, MySQL)
c) operating systems (VMS, Unix, Linux, W2K, Plan 9)
d) project mangement
Note: Training does not need to be formal, and tends to be more expensive. I did most of my either at university, or on the job.
3) Experience
I think you can figure this one out. I should point out that testing, QA is often an easier to get into than the programming department. Also debugging skills, and seeing what can go wrong (Risks Digest) will hopefully make you a safer programmer.