views:

787

answers:

12

I posted a question on this site back in October about how my job was causing me health problems. Things have been better since then, but I've let myself get complacent again. This needs to stop. I need get myself out of this rut and get programming again to find a better job.

Some background:

  • Started coding when I was around 15, but was lazy about it and still consider myself well below average
  • Despite my laziness, I'm still very interested in the craft and read lots of blogs (like Coding Horror and JoelOnSoftware, which is how I ended up on this site.
  • Started with VB6 in high school, where I also learned using Turbo Pascal
  • Spent three years in college. Since I'm Canadian, this means it was pretty much vocational training, with little theory (there were some classes, a lot really, which were pretty much "Intro to VB.Net" and the like).
  • College also included a lot of mainframe training - Cobol, etc.
  • I now work on a Unix system with a proprietary emulation layer to make it look like MPE (an OS for HP midrange machines), and use COBOL and some reporting/data extraction tools you don't need to care about.

When I come home at the end of the day, I'm completely wiped out and mentally drained. Although I read blogs and lurk StackOverflow and the Programming SubReddit, I hardly ever just code the hell out of something. I'm not that creative when it comes to coming up with project ideas.

What this boils down to is, How to I start over with programming?

What's the best way to convince a company to take a chance on me, with very limited experience, so I can learn from proper mentors? Are there any projects online, or preferably tutorials, which can walk me through the design and implementation of even a simple CRUD app? Where do you get the motivation for new personal projects? The only thing I've come up with is largely work based (it's basically a productivity app).

How do I start over to get into the career I want, and escape the death spiral of fatigue and discouragement I'm in now?

+3  A: 

I'd download Visual Studio and SQL Server Express (both free) and spend some time getting into C# and SQL. That link has pointers to videos, tutorials etc. at the bottom. With that knowledge under you're belt, you are in a far better place.

I don't see the lack of experience as a problem as long as you expect to be paid for your experience not your age.

Look around for some "not for profit" or charity organisations. They don't pay well (if at all!) but are normally happy to let people do small developments for them that you can do part-time. That will start to fill out your CV.

nzpcmad
+1  A: 

First off, regardless of what you choose to do, watch Zed Shaw's talk, The ACL is Dead. Aside from being forthright and entertaining, he talks at length on good ways to stop exhausting yourself writing code you don't enjoy at work, and how to get creative and program in your own time. I think you'd get a lot out of it.

Past that, the world is your mollusc-of-choice. I'd recommend playing with Ruby and signing up to GitHub, because you can find a lot of freely available code, examples and libraries with a community that's always ready to help you out. You can learn from the best and talk to them, too. Hang out in IRC on Freenode too and you'll find a lot of the top Rubyists, who're generally always willing to help out. Ruby's a nice, high-level language that is a lot of fun to write. Try out Why's (Poignant) Guide to Ruby for an introduction to Ruby with cartoon foxes and chunky bacon.

At the end of the day though, it's down to you. Watch the Zed Shaw talk and see if it gives you some perspective.

Aupajo
+6  A: 

I`ll be upfront and admit that I'm not much of a programmer, but I like people and this seems to be on a little bit more of a grey problem in your head rather than a black and white problem with integers and floats.

I recommend that you start keeping a diary. Not a blog for those around you, but a low tech notebook/pencil setup. And then note down your frustrations with work, and then if there are any other things that you like about your work.

One thing to think about might be who you are doing work for. Instead of the direct "I use this language" you may need to get a bit more meta and think of why that language for that job. If you could save the whales with COBOL, then you might rediscover your enthusiasm.

Read your diary while writing in it, look at what themes are reoccurring, what ideas are a bit weaker and keep changing. And get out of the house too. My personal favourite when I'm lost and blaming my job for all my other downfalls is to take said diary, half a dozen beers and a few rounds of sandwiches and go and stare at the horizon for a while. It may be a little cold to do that in Canada at the moment, but... I dunno.

With hundreds of thoughts spinning around your head everyday, a diary helps isolate some of the more important stuff. You might be surprised what you write down.

Hopefully after a bit of reflection, and self analysis, you might find a bit more focus with what you want to do with your coding. Whether thats a new job, new language, new graphics library etc, I don't know.

I'm reticent to start recommending language XYZ, a) because of my knowledge and b) because it seems like a bandaid fix, a waste of time to aimlessly learn more stuff if you are going to end up back at this state in 6 months time.

This is such good advice, I might even give it a go.

+1  A: 

You're likely to get a lot of different answers, even contradictory advice here.

I'll answer your question about direction: Some people are goal oriented - they need a clear, measurable goal defined to be motivated.

You could choose to study for a set of Microsoft Certification Exams. This gives you a clear thing to work towards, which you can study for in your spare time. For each exam you complete successfully you have something to put on your resume. How a potential employer interprets it is up to the employer, but it demonstrates your motivation and knowledge.

There are criticisms of the exams - the Microsoft-provided training materials leave a lot to be desired, and the exams don't cover everything. Regardless of this, as somebody who's goal oriented and likes collecting "boy scout badges" this was the right thing for me - I kept on learning in my spare time because I knew exactly what I was working towards.

Andrew Shepherd
A: 

I'm guessing that a lot of the COBOL is reports hitting a DB/2 server or something similar. Try converting them to SQL using the free Express edition. Going from there to simple data-driven apps in your new language of choice will be a snap. Baby steps.

WakeUpScreaming
A: 

You have to give yourself time to recover from the mental exhaustion each day. Common advice is to fit in some time in the gym, or go for a run. You might not feel like it (I usually don't) but it really does work. Set yourself realistic goals to start with and keep track of the time you spend on them.

Beyond that try and find an opensource project that interests you and get familiar with the code base a bit. Finding something that catches your attention is more important than the technology at least initially since it will help with the motivation.

And keep pushing on the process improvements at work. One of the key attributes to be able to point out to a future employer are areas were you took the initiative beyond what was directly tasked to you

Rob Walker
Regarding process improvements: Over the last four months or so, I've done just this. Unfortunately, everything relating to that has to go through a committee which meets weekly and rarely gets through all suggestions. I had one idea (wiki, to replace a folder of random Word documents)
AgentConundrum
(con't) which has been on hold for months because they say no one has time. My whole point was that wikis grow organically after initial setup. I tried fighting the apathy and was told I was "getting too big for my britches" by my team lead, before telling me my generation was a bunch of slackers.
AgentConundrum
I hear you -- I *hate* bureaucracy, but I'd suggest you keep at it, within the rules set by the organization. The motivation isn't necessarily the direct effect as much as what you can put on your resume for the next (hopefully more functional!) employer.
Rob Walker
A: 

Tell you what, I'll swap places with you. I'm essentially having to go in the reverse of the direction you want to go in, and I'm having a lot of trouble as well. I even posted a question about this last week. I'll say, it's really a different mindset.

Life is always surprising, and there's no 'correct' method for doing anything. So any advice I've found that works for me may or may not work for you. Nevertheless, I'll say this: The only way to start in anything is to...well...just do it. You have a fortunate advantage over other industries in that, learning modern programming is very cheap, and can be learnt on your own.

Yes, part of the problem is that there are too many directions to go in. Java, .Net, Ruby, whatever. All of these are equally valid, but you need to chose one. The only criteria is, chose what looks interesting to you, and then sit down and try it out on your own. And then start offering to do odd jobs for other people. Put yourself in slightly risky positions. That should get you off your ass, and keep you moving.

After that, well, let's see what life throws at you. Me, I can only see 3 months into the future at this point in time.

Tim
A: 

Your goal is growth, and if your job is standing in the way, it's time to find another job that will give you some room to learn in your spare time. Are you a provider for your family? Do you have a mortgage that you're stuck in? What is keeping you in your current job?

There's a reason that aspiring actors become waiters and not programmers. It gives them time and mental clarity to work on their craft. Maybe it's time to make a short term sacrifice in your day job to hit your long term goal. Go on a trip, bring some books about topics that really get you hot (!COBOL), and get down to business. Go to some conferences.

An hour a night is not going to cut it. An hour a night is not passion. Especially when you're wiped out after your work day.

Ben Throop
+4  A: 

I'd suggest a different approach.

Use the bank, AgentC.

Cut your living expenses to the bare bones, and save money like it's going out of style. Accumulate vacation time until you can take a lengthy paid vacation followed by as long an unpaid leave of absence as possible. Then go to OSCON 2009 smack in the middle of it all.

OSCON is a great educational open source developer conference. Tons of sessions on dozens of topics and all skill levels. Go open minded and sample a lot of things to see what clicks with your way of thinking, working and planning. Not only is it informative but it is energizing. The excitement and pumped up energy levels of the conference are really good at morphing thought patterns out of "9-5 COBOL Boredom" into exciting engineer/hacker "let's write some beautiful code" positive direction. You'll also get exposed to dozens of big and small projects all terrific and exciting. Something will grab your attention.

Plus there are recruiters.

I've had the awful brain draining daily grind that trapped me in constant recovery mode too. And the only way out of it was to get out of it, even if just for 2 or 3 weeks.

Even if you don't score a new gig at OSCON it's more than likely that you'll return to your day job with such a new reserve of engineering energy that you find you get a second wind at the end of the day. Maybe even sneak some Ruby hacking in on lunch breaks.

This is your mission if you choose to accept it. Go for it AgentConundrum!

John Fricker
+1  A: 

If you are looking for a cool project that would be interesting to do... I would have to ask, do you have your own website?

If not, why not create one for yourself. It could be about anything, but to start you may want to put your personal/professional information on it... sort of like an online resume.

Pick a platform that you would like to learn/use to build your website (.Net, java, ruby... whatever) and download what you need. Obtain a url (not hosting) from godaddy or some other place. Once you figured out your platform, find a cheap hosting service and your ready to start building your website.

Break the project up into as small of pieces as possible and then work on them for the 1 hour a night you want to spend. Small projects could start with downloading/installing the necessary software in a night or two. Then the next step would be to build a simple home page (maybe in just html) and then add "projects" to create additional web pages with each page being a night or two project.

After you start getting the hang of it you can build yourself a blog, create an rss feed, get friends interested in your blog, etc. After you finish each step, reflect/take pride in what you have just finished... celebrate finishing it and move on. Breaking this up into small projects and celebrating the little vitories will help you keep momentum going.

Good luck with whatever you end up doing to tackle this problem!!!

Bryan Sebastian
A: 

Work on your own project for 45-90 minutes each day. Studies show if you work at a project for one hour each day, it takes most people two to three weeks for the project to "click in" to a point where they can pick up easily from where they left off the previous day.

Pay yourself first, then your employer: your own project should get an hour at the time of day when you are at your best. If this is not possible (for example uf you must keep regular hours at work), get up early and give yourself your hour when you are fresh, not tired from a day at work.

As others have said, saving to go to a professional meeting is also excellent advice.

Norman Ramsey
A: 

I'd say you have 2 logical choices:

1) Rebirth. This is where you'd go to university and get a Computer Science degree and restart your career knowing what you want and what you have to have to get it. This does have the downside of taking quite a bit of time and the challenge of finding new jobs or cutting down your current one to do the work but it may be worthwhile if you are prepared to chuck what you've done in your life.

2) Identify it, analyse it, and improve it. This carries a much more different flow since the key here is to find those mentors now and see if you can work with them and improve things from where you are right now. This is harder to my mind because it requires more work to find what you want, e.g. what is good software development methodology or what are good coding habits. Another point here is to harness what experiences you have, good, bad or otherwise, and share them with others to try to improve things around you.

Make your choice and try to execute it as best you can.

JB King