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.
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.
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
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."