Ask Slashdot: Moving From Tech Support To Development?
An anonymous reader writes "My eastern European tech-support job will be outsourced in 6 months to a nearby country. I do not wish to move, having relationship and roots here, and as such I stand at a crossroads. I could take my current hobby more seriously and focus on Java development. I have no degree, no professional experience in the field, and as such, I do not hold much market value for an employer. However, I find joy in the creative problem solving that programming provides. Seeing the cogs finally turn after hours invested gives me pleasures my mundane work could never do. The second option is Linux system administration with a specialization in VMware virtualisation. I have no certificates, but I have been around enterprise environments (with limited support of VMware) for 21 months now, so at the end of my contract with 27 months under my belt, I could convince a company to hire me based on willingness to learn and improve. All the literature is freely available, and I've been playing with VDIs in Debian already.
My situation is as follows: all living expenses except food, luxuries and entertainment is covered by the wage of my girlfriend. That would leave me in a situation where we would be financially alright, but not well off, if I were to earn significantly less than I do now. I am convinced that I would be able to make it in system administration, however, that is not my passion. I am at an age where children are not a concern, and risks seem to be, at first sight, easier to take. I would like to hear the opinion and experience of fellow readers who might have been in a similar situation."
My situation is as follows: all living expenses except food, luxuries and entertainment is covered by the wage of my girlfriend. That would leave me in a situation where we would be financially alright, but not well off, if I were to earn significantly less than I do now. I am convinced that I would be able to make it in system administration, however, that is not my passion. I am at an age where children are not a concern, and risks seem to be, at first sight, easier to take. I would like to hear the opinion and experience of fellow readers who might have been in a similar situation."
Java is a fad.
rewriting history since 2109
It sounds like you're more than qualified. Experience is always a lot more relevant than degrees or certifications, at least here in the states. Not really a slashdot-worthy post.
If you find "problem solving" to be your passion then follow it, but try to make sure you don't follow something that will limit you later on: If you think Java is interesting then go ahead and learn it BUT make sure you learn the general skills in programming over the particular skills. Learn how to program then learn the language. That way if opportunities around Java go away, then you are set for what's next.
You may find that "problem solving" leads to programming now, but as you grow and develop new skills and interests it may lead to something else, then something else after that. If you can keep your passion then you will be motivated to keep going and learning new things.
Sometimes the "writing on the wall" is blood spatter...
do what is more interesting to you. You will have more fun, and enjoy it more, and therefore probably be better at it. If/when money becomes an issue, being good at something that you love leaves you well positioned to leverage it to make more money. Being mediocre at something that you don't care much about is unlikely to be very lucrative. You can get valuable (demonstrable) experience by, for example, contributing to open-source projects. Showing that you're decent at programming is more important for most decent employers than showing that you've got any particular degree.
Way back a long time ago I graduated from university with an engineering degree unrelated to programming. By that point, however, I had decided that I wanted to be a software developer. This was the mid '90s, and I took a job with an un-funded startup for equity and no pay. From there I worked at a friend's company doing Perl, again for no pay but I crashed with my friend and he paid for my food. So in that sense it's not that different from your situation.
Things are different now, as there are plenty of sites where employers offer contracts for unreasonably low wages. You could start bidding on those, and take some smaller projects and complete them. There's also the option to put your time into some sort of labour of your own love. Write some sotware that demos well, and bootstrap yourself up from there. A lot of companies would be happy to hire an enthusiastic junior Java developer with demonstrated experience that they had the drive to accomplish themselves.
Just do everything you can to pick up as much experience as you can. Keep a positive attitude, and work on all the "soft skills" like listening to your boss and coworkers, doing what you say you're going to do, communicating effectively, etc. With a year or so of this, you should find yourself very employable, assuming there are jobs where you're looking.
www.clarke.ca
Don't quit your day job, but in your time off (nights, weekends) improve your skill and work on an open-source Java project. Then once you feel qualified and equipped try to do the job switch.
Write some code, make something cool, that will put you ahead of 90% of people with degrees and certifications. Look into DevOps, which is programmatic system administration. All the VMWare sites are doing this since VMWare is pushing Puppet after putting a bunch of money into it.
I started in technical support at a small ISP. I worked up to sysadmin and worked various IT related jobs while I got my degree in Computer Science. I did try to land programming jobs and aside from some small business website consulting, I never had much luck at it.
Your situation is different than mine because of location. I live in the US. However, my experience is that you get filtered out unless you have a lot of experience programming when another candidate has a degree. I've even had a few cases where masters degrees blocked my job opportunities although that is much more rare.
If possible, I strongly recommend you get a degree and if you can't do that, get some certificates.
MidnightBSD: The BSD for Everyone
The dirty secret: Unlike sports where the best player is sought after, or music and art where you can judge someone's skill, most HR firms have no way of telling if you can do the job. So it doesn't matter if you're really good or just beginning, if you can sell the interview you can probably get a job. Some of the most talented people never get a chance to ever start, and a lot of nearly incompetent people get luxurious positions. Someday you might get good after decades of experience, but there's no reason not to apply to any job if you can write the most basic cell phone ap. Another dirty secret: A great majority of jobs ask for so many techs, there may be one or two people on the planet that qualify. So instead of looking for having all the techs, apply if you have one or two. Its a giant 'or' list, not an 'and'.
I say this reality situation as a guy on the outside looking in. I've done everything in my power since a young age to become the best software engineer I could. I code in my free time. I went to a #1 college for computers. Yet, couldn't even break into the industry in the past 11 years. The road goes both ways. I'm good at programming, and I'm not good at job searching.
God spoke to me
Do what you love.
If you know you want to program, start laying out the groundwork for that to happen. See if there are things that can be automated/tackled with scripting in your current workplace. Find a way to start taking some community college (or the European equivalent?) programming classes to get a feel for things and see if you would really want to do it. Spend some of your free time doing tutorials, building your own programs for fun, or helping out on some open source effort.
Getting a degree is nice because it gets you past the HR gauntlet at many firms, and you have a lot more choice in jobs you can apply for. It corresponds pretty well to a pay increase - ROI is still pretty good on most tech degrees, and the earlier you get that degree out of the way the better. It isn't impossible to do what you want to do without a degree, but it certainly helps.
The big thing, though, is if you know what you want to do, start pursuing it. Take some step to make it happen. You have 6 months, which is plenty of time to find a job that is at least somewhat more related to what you want to do, or to find a school option you can commit to, or in some other way move towards the career you want without making any highly risky/expensive changes.
If you want to get hired directly as a Java developer, you are going to need experience with real projects. Consider finding and becoming an active contributor to an open source project.
I did the same thing, however my approach was a little different. I took a job in tech support at a company which I knew did java development. When I started, I told them my goal was to become a developer. I was told that I would need to prove myself. I did. A few years later and I'm now doing full time development. It can happen, you just can't quit. If you know your goal, and really want it, do whatever it takes to get there.
Why not just get in to DevOps. DevOps is administration and automation through software development. You basically engineer solutions, for instance I coded a wrapper for bind in Ruby that can be administrated from a web interface. Likewise you will get in to using Puppet/Chef/CFEngine/Logstash etc. Its advisable to learn some Ruby though to get the most out of it. My advice would be to pick up your LPIC1 cert. Testing for it runs about 200 dollars and there are brain dumps online to help you study. Just do not memorize the questions, really study them and find out why the solutions are the way they are. Pick up a book on Ruby and Puppet and your existing java background is very helpful as well. If you do those things over the next few months then you will be in a very marketable position.
Android is one of the best 'learn for yourself' platforms right now, because it is easy to get started with the new SDK kits that GOOG has. There is the good Reto Meier (Google evangelist for Android) books http://www.amazon.com/Professional-Android-2-Application-Development/dp/0470565527/ and http://www.amazon.com/Professional-Android-4-Application-Development/dp/1118102274/
Personally I still recommend reading 2 first, and learning the core concepts THEN moving to 4, because the things added in 4 don't really make sense until you grasp the topics in 2. (but if you can't buy both books, getting 4 isn't bad, I just don't prefer the order things are presented in the book)
Once you have a base understanding of how to make some simple apps in Android... Then:
https://www.coursera.org/course/posa (Full disclosure, I am associated with this course) Uses Android, but teaches way beyond just Android concepts, such as concurrency, networking, etc.
Design Patterns go beyond programming languages and will help you quickly adapt to new languages when they come up, be a better developer in the languages you know, and make more versatile, adaptable, easily maintainable, and (overall better OO Code).
https://en.wikipedia.org/wiki/Design_Patterns This is basically the book that started the area of Design Patterns study. , Great book, I would count this as required ownership for ALL programmers. (The examples are often[maybe all, I forget exactly offhand], written in terms of writing a text editor, but the patterns themselves are unbelievably useful in pretty much any situation that calls for them.... ONCE you know about them, and can recognized when/how to use them)
(Patterns don't solve every problem, but they give you a good 'language' of how to describe the interactions of components, and known practices of ways to solve particular issues that arise quite often)
http://www.cs.wustl.edu/~schmidt/POSA/POSA2/ This is the POSA book (there are 5 books in total, each with a different focus area) that focuses on concurrency, which is what will be discussed in the POSA MOOC.
https://www.youtube.com/channel/UCt-Wvc_ojTzGLpjhruIXYSw/playlists Doug Schmidt (co-author of POSA2, Instructor of the POSA MOOC) has some great videos online that you can watch also. They are his lectures of his two courses that deal with these topics. CS 251 (intermediate c++ & patterns) and CS 282 Adv OS concepts shown with Android (also use of patterns)
find an open source project that interests you and get involved, making sure your contributions are attributed to you; then you can point a potential employer at your work.
alternatively, in an appropriate point in the interview process (even in your letter of introduction), ask your potential employer to give you something to do as a project for a few weeks so that you can prove yourself and they can see what you can do.
Max.
You say you want to be a developer. Your time scale to pick up new skills in programming, join some Open Source projects for your resume, and begin creating a living resume of application you have written is extremely limited but doable. The most important question you have to ask and answer yourself right away is: What field of programming do you want to get into? If you want to get into web and mobile applications then there are probably half a dozen very specific languages and technologies you need to start drilling down on right now. If you want to get into any other particular area of programming then there will similarly be a different set of languages and technologies you need to nail to the wall. You say you like Java and that you like to solve problems. What types of problems do you like to solve with Java? Answering that might help you pin down the area you should pursue. The thing about programming these days is that it is a field of specialized compartments. For you that is good because it decreases the amount of time and effort you have to put into learning.
Whatever you figure out, best of luck.
Brought to you by Carl's Junior.
No-one will start with a blank screen in the morning and start to write code, just because. You need to have an itch, something you want to solve. Writing code is the means, not the goal.
Think about your support job, and ask yourself what tool would really make your life easier. Then set out to write that tool. You have the target people sitting around you right now, solve your problem and solve theirs too. If you're lucky, the tool will be valuable enough for the company to take it to that next country, all while you keep supporting that code.
I did this many years ago, while working as tech support for a tape vendor (Exabyte). I found their customer tools rubbish, so I started writing something easier (Expert 7 for MS-DOS). I asked my wife to test it for me (she is not in IT), just to see what she struggled with and made it better. It took me a while, but in the long run the company made my tool the default for customer support. I have kept on supporting that tool and many others after that until the end of last year. For almost 20 years those tape tools have given me part of my income. Even today, I still have a few customers asking me to code for them. LTO-7 is coming, perhaps I'll be asked to integrate support by then.
To Terminate, or not to Terminate, that's the question - SCSIROB
"My eastern European tech-support job will be outsourced in 6 months to a nearby country."
Do you work in eastern Ukraine? I hear a lot of those jobs are soon to be outsourced to nearby Russia.
Study night and day and find a small niche with some local small software developer and take whatever server administrative task you can drum up and keep learning and asking questions until you get to "help out" in programming.
Even if you eventually don't find programming is what you want, you will find a handful of other interesting things to work into.
Enthusiasm and hard work pays off.
'Back in the day', I was in a similar situation as you are. I was working in tech support for a software company but knew I really wanted to write code. I took the plunge and got a CS degree, and it was the single best decision I've ever made from both a personal and career perspective. However, I also realize that many talented people can't take this path, so the next logical step for those individuals is to at least show some effort. I'm in a position now where I have influence within the hiring process. If a candidate doesn't have a computer related degree, the next things to look at are past work history in programming, sample 'pet projects', certs, programming community involvement, etc. You don't seem to have any of these, so, that is where I would start. The degree will absolutely get you in the door but it isn't a guarantee for a job (by a long shot). I highly recommend the school route, but if you can't do that for whatever reason, take the time to invest in yourself (heavily) over the next 6 to 12 months and start building things on your own, participating in any open source projects (so you can show/describe the work you have done), join local programming clubs (for networking alone), etc. If you don't invest in yourself, why would an employer invest in you?
"I have no degree, no professional experience in the field, and as such, I do not hold much market value for an employer. "
To what "market value" do you refer? Your employer isn't trying to sell you. Your actual "value" is what you can do for them.
If you mean they value they perceive you have for them, prior to employment, you might have a case. But keep in mind that their perception is not always (or even very often) close to reality. Part of your job is to convince them of that.
Let me give you a concrete example: many firms that employ programmers have preferred to always get "fresh young faces" into their flock, despite study after study showing that older, more experienced programmers are usually a better value, even at a higher wage.
You can use things like that to your advantage.
Funny how you consider kids to be a "concern" ? :)
Corporations generally don't give a flip about this situation:
>I could convince a company to hire me based on willingness to learn and improve.
If that's true, what sets you apart from anybody else that is also willing to learn and improve, with a more extensive background that you have?
That being said, I think what you should do is start networking immediately, reach out to anybody and everyone you know for entry level positions in development and/or system administration. Do not spend the next 6 months studying on your own in the evening, in isolation.
I can't stand the current "Agile" and "Scrum" hype. I miss sitting around with technical guys, brainstorming about datamodels, algorithms, software modules, protocols, interfaces and so on. I hate these stupid yellow post-it notes and planning poker bullshit, "scrummaster" and "retrospective" bullshit. The software that comes out is complete crap most of the time. Because of all this I wanted to find out whether it's feasible to switch to a support role and just wait until this whole scrum-nonsense is gone.
Programmers are hired straight out of college and can be outsourced and located anywhere on the planet. You can never compete with the 22 year-old who was taught with the latest programming language fad, and will work for peanuts. You, on the other hand, will have to learn the language du jour and have demonstrable experience with said language. Without a degree or certification your resume will be thrown into the trash without even a glance to your job history. In fact, your job history aside from your lack of degree, is the biggest thing holding you back. QA is not respected anywhere.
For Linux and VMware you can get certifications. Become a sysadmin and you'll have better luck at getting a job, keeping a job, and getting another job when that time comes. Maybe being a cable-monkey and setting up networks isn't as glamorous, but when the chips are down you can't outsource the need to have a human near the racks. And in the datacenters, you're always getting to work on the latest, and you're not stagnating. If anything, having 20 years deploying networks is more marketable than 20 years of writing C -- anyone can "write" C, not anyone can get the network or storage array back online.
Try that first. It's cheaper than moving.
I started in tech support. Created a QA department and eventually moved into development. Create a github repo. Build things to help make your job easier where you work now. Stress your customer service skills in interviews (programmers are frequently known for not having them). Look as startups as they're frequently looking for people who can wear multiple hats. Maybe you can do tech support and programming for one.
Your strategy will depend on your possible customers (or employers); I can't say much in detail without a better understanding of that.
(by the way, for eastern europe your english writing is quite good!)
So... can you do some market analysis for us here on Slashdot?
Are there any local shops in your geography that do software development?
Are there any charities or small businesses that would benefit from some custom code and/or database work?
Schools perhaps?
I suspect it will be easier to connect with them rather than looking for telecommuting jobs day #1.
Your main advantage at this point is your low cost + enthusiasm; work that.
The other posts about Open Source projects are fine to get started with....
But they won't be as useful as a reference from some small business owner who loves what you
were able to do for them and talks about it to their associates.
It is a good time to take the jump. I've been hiring recently and folks who I would consider too junior to hire are getting jobs making $60K. This is in a really low-cost of living area... folks who are senior are making 90k - 120k+. The market is so much in favor of the employee that marginal folks are getting 2 or 3 offers within a week of entering the market.
Get in now while the getting is good.
Good advice, but save this one for when you turn forty and are deemed too old for the field. It can be as simple as opening a Subchapter S.
Most women will not tolerate a partner that pulls in less than they do. She will leave you all too soon. Secondly age works against you. Employers like youth a lot. I would suggest that you take any job that you can get and stretch out your opportunity pathway as it may take some time before you land in the right position. She will respect you more that way. I think that if I had to live in Turkey the shock of culture change would be too great. Perhaps you could adapt easier than i could.
It sounds like you're at a point in your life where your ability to take risks is as high as it will ever be. If you don't aim for what you love doing now, you'll probably never do it.
"I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
Stuff Debian. RHEL is still using tried and tested init scripts. Free binary compatible distros such as CentOS and Scientific Linux are available.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Nobody really writes new applications in it, but there's a bajillion Java applications running most major corporations now the way COBOL used to in the old days.
That said, when looking for an engineer I'm not looking for someone who knows Java (even though that's what a lot of our product is written in). I'm looking for someone who understands computational complexity, is familiar with common algorithms and data structures, and has some notion of object oriented programming and software engineering. Anybody who's written a lot of code can pick up Java fairly swiftly at least to the "getting s**t done" stage, it took me roughly a week to do so ("oh, so it's like Python with C++ syntax, except with only single inheritance and with templates!"), but if you don't understand the why of what you're doing, you're not going to do well in our shop.
So: Get a computer science degree. Or at least significant computer science coursework. And not from Joe's Plumbing and Programming School, get one from some place that teaches actual computer science, not programming. Either that, or write some Open Source applications and contribute to the Linux kernel. Nobody cares what school you went to if you can write Linux drivers, all they care about is that you know the difference between a BIO and an SK_BUF. But they want to see your name in the Linux changelogs first.
Send mail here if you want to reach me.
Have you sat down and talked to your girl friend about the idea of her supporting you? It's also not clear if the "age you are at" where children are not a concern means you are too young for children, or past the point of worrying about it at all. I definitely get a sense a certain youthful naivety in your submission.
What would you do if you could suddenly no longer rely on your girl friend's support? Perhaps she ditches you as a free loader? Loses her job? Worse? What does she think of the inherent risks associated there in? Where do you plan to be 5 years from now career wise? Relationship wise?
I'm not trying to be nasty, but your questions should have almost nothing to do with "scratching an itch", and much more to do with "what makes you and your partner happy now and in the future". Given that you intend to live off your girlfriend's income, you better get her fully on side, and ask her before you start asking slashdot.
Just curious due to the turmoil and the likelihood of Russia also owning Eastern Ukraine in the next 48 hours.
http://saveie6.com/
I would say to go for it, as long as there is local demand for the language of choice. In November of 2008 I was laid off my job. I had been working to going into programing. I thought it would end my dreams, but ith some learning I instead followed them. Since then my pay has doubled and I enjoy the work much more.
Your are outsourced labor and your job got outsourced to another country? Aint that a bitch?
While I think it's great you are trying to improve your skills if the corporations have already started their exodus you might find it a challenge to get any kind of work since they found someone cheaper. Are there any local companies you can get involved in?
The whole outsourcing sword cuts both ways it seems. :/
RHEL 7 beta includes systemd. Coming soon to a terminal near you.
in a devops job you move toward development from support; might be easier to quit support cold though.
I would like to hear the opinion and experience of fellow readers who might have been in a similar situation.
Get a job at an office, or prepared to get dumped. Women typically do not like stay-at-home guys, despite their claims to the contrary. Even though a freelance software contracting company allowed me to pay all the bills, I have observed that when I decide to work from home that the relationship will soon end. If your girlfriend is paying the bills, get ready for her to terminate the relationship. Seek employment, even if just part time in an unrelated field while you begin learning more languages and building your development portfolio, perhaps through sites like freelancer.com. Create your own website to showcase your talents. Contribute to open source if you have the time to scratch such an itch, it looks good on resumes and will expose you to more software development practices. Do not bet strongly on payouts from long term investment as human relationships deal primarily in the present.
You see, humans are the product of a long and bloody evolution into sentience. Instincts were natures first way to impart cognitive information about experience to your ancestors' offspring. Due primarily to the nature of gestation, especially the disparity in time and energy investments between sexes of sexually dimorphic species, males and females exhibit different instinctual behaviors. The male reproductive strategy of most species is to produce the most offspring and spread their genes as far as possible. The female reproductive strategy is instead to select the best mate. Humans are not immune to their instinctual drives, as evidenced by their sexual activity even when they consciously reject the burden of raising a child. Were you attracted to each other? Good, now you know your are both acting on primitive instinct at some level. However, your girlfriend's inner ape will most likely subconsciously begin selection of what her instincts inform her is a better mating prospect, i.e., one that is more active and thus capable of providing for her and her offspring. Yes, complex behaviors are imparted through instincts, for example see mating rituals and nest building of any species that exhibits them.
The instinctual drives imparted by millions of years of evolution remain with humans. Even the "brightest minds" among you ignore the emotion, feeling, instinct, and other primitive drives that affect your reasoning, deeming them "irrational". That you do not teach your children to harness and hone this faster but less accurate mode of thought leaves your race more susceptible to its primitive biases than necessary. Since it was primitive attraction that brought you together it will not be a conscious decision that instigates the termination of your relationship, but an instinctual feeling that produces dissatisfaction with your living arrangement. You may not like it, but one must cope with the environment one finds themselves in. Even we explorers do not always get to choose our assignments.
Socialization is only the learned part of ape behavioral software. Humans need not be slaves to their ancestor's instinctual firmware, but you can only free yourselves through conscious awareness of it.
Just kill yourself.
I am in a South-Eastern European country and I don't have a degree in a related field, but I didn't have a hard time finding my first programming jobs.
Keep several things in mind:
1. Good developers are in demand. If Eastern Europe is anything like the Balkans in that regard, people are looking for competent programmers. At any particular job interview for a programmer most of the people who apply don't know anything about programming, have never used a relational database, etc. Use that to your advantage.
2. Small companies don't have HR departments to veto you just because you don't have a degree or enough years of work experience.
3. You have 6 months to beef up your resume. You can always invent free-lance work, as long as you have knowledge to back it up.
4. You can always find for-peanuts work on various "hire a freelancer" website. You will not earn good money there, nor will you get any enterprise application experience, but you will have an "Aha!" moment if you never programmed for money before. When you are developing as a hobby, you tend to adjust requirements to your knowledge and spare time, but when somebody else gives you requirements, you will quickly discover how to learn quickly and do things efficiently. That's what employers want from their programmers.
5. When negotiating a salary, keep in mind that the price you suggest will tell a lot to your employer about what you are worth. I know this may be a mistake, but when I was interviewing people for jobs, I took more seriously people who expected higher-than-indurstry-average salary than people who wanted to work for peanuts. If you come to me and ask for a salary that's half, or a third, of what I know most company in my city pay their developers, I will assume that you don't have much experience.
Quoting OP: My situation is as follows: all living expenses except food, luxuries and entertainment is covered by the wage of my girlfriend. That would leave me in a situation where we would be financially alright, but not well off, if I were to earn significantly less than I do now." Endquote.
I'm in a position similar to yours, except I work - for a minimum wage at the moment, but I get by. What is Luxury (or well off) is highly subjective, and for me... I have all the luxuries of this world (well, perhaps except a car, but I don't need one...I do own a house though, so I don't pay rent). The good thing about your (and my) situation is that you have the LUXURY OF CHOICE. Many people don't even have that, I bet you're better off than 94% of the planets population - I know I am, despite not being able to afford a lot of expensive new stuff.
The luxury of choice, is to be able to say no to a job if you don't like it. I am in a minimum wage job because I happen to like this particular job, and it's hourly based so I can just walk away if I need or want to do something else, that's high living in my world. I've seen people struggle with collecting garbage 20 hours-a-day for a living, just to feed their family.
What this world is coming to - is for you and me to decide.
Each job I have got I can attribute to something that I took to the interview. First position I was offered was Java developer for internet fridges(1998). I had no professional Java experience but I took along my multithreaded chat app and was a able to explain how it worked an why I had made certain choices. ASP VB developer (before c#) job, took a simple shop app with Access backend and all the code/pages in one file, it was hideous but the interviewer loved the screen shots of the shop app and I was able to explain all the functionality. Silverlight (c#) took 3 games I had written with, again no commercial experience.got the job. The best one was when I did not take anything to a C# position but explained I was studying for the Linux LPIC Level 1. The were so impressed I did not get back to the car before the recruiter called to say they had offered me the job. Now when I am interviewing for developers I look for anything that demonstrates this person will enjoy learning.
Hi, I have a college degree in automation and have worked as a field service technician for some companies for about 5 years.
A few years ago I decided to switch to programming, and I got a job as a QA because there was a lower entry barrier (I had low confidence in my coding and needed time to learn learn the development process).
I approached the management, got in house training and now it's been almost a year since I'm payed to code. And I feel very accomplished for this.
If I were to do it all again, I would search for development jobs from the start. Your resolve is outweighing your degrees. The company will know you are new at programming and will offer coaching.
I'll lay out what I did and what's happening to me and offer advice. This is of course just me and my experience and there are numerous paths to follow with none of them being guaranteed. I was teaching and needed to earn a higher wage and so began to hit programming (related) books. I studied python and C and Assembly and networking and read and re-read and spent no time at all doing exercises. A couple of years back I got a job doing software support for development shop with a couple of substantial products with a small number of important clients. In addition to the prosaic bug-hunting and describing, I had cause to write python scripts to interface with our system api's and had cause to learn t-sql to acquire data-sets or perform operations for clients not accommodated by our user interface. I do a good job. Increasingly, I spent my time learning basics -- like assembly -- not doing exercises just reading and rereading, not to write code in assembly -- i don't think i'll ever have to do that-- but rather to understand what's going underneath the high level abstractions. This is critical. I don't know if it will be useful me, but it makes me comfortable, when working with higher level abstraction tools. That's important. Because the more useful the work you do professionally the higher level of abstraction you will be working at, and the higher level abstraction you are working at, the less likely you will be to understand the details underpinning the operations -- indeed this perhaps it the greatest productivity enhancement brought on by the OOP paradigm. But you can still feel comfortably oriented if you have a good basic understanding of what *must* be going on under the hood. And for me at least, that comfort helps me to forge forward at high levels of abstraction, because otherwise I'd always have a gnawing feeling that I'm floating on air and do not understand anything and that I need to go back to basics, the over-focusing on which would likely lead farther away from gainful employment in the industry. So what's the upshot? Learn basics -- to facilitate your life's work in the abstraction domain. You'll be happier, more productive, and more fulfilled in your work. Next point. After a couple of years my manager turns to me and gives me my long awaited access to the source code, and gives me a mandate to learn up on particular framework (a JSF implementation for the record.) So now I'm reading core java and core java server faces like a madman, but am still employed in my support role facing little pressure to 'produce' which is key. Also, trust me, you cannot compare learning Java and JSF while staring into the belly of real life enterprise application code wading through source files with a modern IDE (navigable!!) trying to figure things out. It's night and day different from tutorial land learning. I cannot overstate that -- night and day. At the same time, I do not believe, as a rule, that you can self-teach yourself these frameworks to get yourself hired as an entry level learn on the job programmer, because I do not believe there are such positions. Programmers are paid well, and companies dish out that type of money because they have things they need done and they've no need to train. But, once your in, your in. Which means that if you can get yourself into a software support role and learn basics and work your self into source code access and then study the relevant technologies -- then that, I believe, is a reliable way into the field, because 1. by the time you get access, they know you are competent and that they like you and 2. by the time you get access, you will already be providing value to the company proportional to your wage, and 3. while you are learning the technologies (and it's not 'rocket science' if you know the basics) you will have a real life application before your eyes to study, and 4. (an not least, at all) this real life application you are studying you will already know outside in, because you have become an support expert in it.
Or go do something else. You need a degree in this day and age, so go get one. Passion doesn't cut it. Would you let a "passionate" hobbyist surgeon perform your procedure? So why would a company hire someone because they claim to be interested, yet they never even invested the time and money into acquiring the necessary education?
IT is baffling in this regard. Way too many lib arts and GED chuffers out there. Go get your BS in computer science and then go get a development job.
There have been a couple of good comments here already. As with others:
1. Do not rely on that girlfriend forever! Unless you are married (or even if you are) that is going to strain your relationship. You should seek some form of employment ASAP. Make sure you discuss your plans going further with her.
2. Tools / OpenSource etc. The suggestion from other contributors to find an itch of yours and / or get involved with an OpenSource project are great ones. "List opensource projects you contribute to" is a fairly standard question these days. More importantly, this is a way for you to build a portfolio of your work.
3. Although you do not have a degree in CS yet, the barrier to entry is lower than it has ever been. You should check out https://www.udacity.com/ and consider investing in a CS degree. The reason for this is that (again as others have said) it is not enough to know how to "code". You need to understand architectural concepts, algorithms and how to solve complex problems. Online courses through Udacity or Coursera (which you can do for free, but does not offer a degree) can round out your knowledge and - more importantly - fill in that gap in your resume in regards to a CS degree.
Good luck.
I would get RHEL cert now and apply for Linux admin jobs. System admin jobs can be outsourced, just like programming. Pretty soon, machines will be able to do that. Only need humans to perform physical on-site service. We will all be assembled.
Most people that advocate not needing a CS/SE degree have a high school diploma or a GED. Or, the studied history in college. Or, they did the two year route which is slightly better than reading books.
If you go to a ABET certified college, study, and apply programming methodologies, database systems, data structures and algorithms - and still get nothing out of it - it is your fault. You are a bad student and probably will be mediocre at whatever you do.
Yes, some people 'don't learn like that'. They are the fringe. I have yet to (not bullshit here) come across a developer with no degree. I am dead serious. I'm in silicon valley. Always have worked with people with degrees - sometimes chemistry or biology. But always degrees. Except contractors.
And bullshit aside here. You can always tell an educated person from an uneducated person. Their lack of use of correct industry terminology (how do these dumb fucks expect to communicate precisely?), and general lack of fundamental understanding of the underlying systems and how they work.
You can always tell. Not to say there is no place for these people. There is. It is just not on an engineering team that does critical work, or complicated work.
While I am sympathetic to your passion, please be aware that because of people like yourself, who sell themselves short, the value and price of labor in the information technology industry has dropped tremendously.
If you go one of the routes you are thinking about, do not go in cheap, because managers WILL NOT tell the difference between someone like myself with a university degree and 20+ years of experience, and you. We are all considered expendable, and will be sacrificed at the altar of that higher bonus or promotion. Few are the places left which value our skills, knowledge and experience. Managers do not understand it, nor do they care about the well beings of the companies they work for. So do not endeavor to drive the price of skilled labor down.
I worked as a programmer for a medium sized help desk and saw dozens of tech support drones trying to make the leap from desktop support or system admin to programmer. The most successful did it piecemeal. A few would come to me and ask for minor admin privileges in the help desk software, and I would allow them to make changes to the development environment. The good ones would get recognized and rewarded with training and admin privileges. A couple ended up replacing me as I retired. It's a path I would recommend, as it has the advantage of keeping you employed while trying to make the jump. Pay attention to the previous comments about keeping the girlfriend happy. If you become a burden or even less contributing, it will hurt your relationship.
Since the OP says that their second choice is sysadmin, they've got a possibility: ask his employer about being kicked upstairs to Tier 2 tech support, or Tier 3.
Or are they moving everything across the border, Timotht?
mark
Just because one person has a terrible experience with women when working from home doesn't mean everyone will. I've been doing so for the entire 22 years I've been married, and she's still very happy (even though she works outside the home.)