Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: How do I get out of my unhappy coding job?
52 points by yacoder on May 23, 2010 | hide | past | favorite | 62 comments
Hi all,

I need your advice; I'm working in an internal IT department at a non-software company which is, as you can guess, far from ideal. I live + work in the UK.

I am starting to feel very depressed about my situation and am desperate to find a way out. I've applied to a job at a decent software company which unfortunately I didn't get (though it certainly gave me an idea of what to improve if I were to apply again, so was positive overall.)

I'm working on developing a programming language; it's extremely early days but I have certain convictions about what is important in a language and in the hacker tradition want to make something that fits those convictions.

I, much to my regret, don't have a degree in Computer Science (though I do have an engineering degree) - though I grew up loving programming I, for somewhat complicated reasons, ended up choosing the wrong subject.

As far as I can see the following steps are the way out. I'd be very grateful for any advice/criticism you care to offer about these steps, also with any suggestions you can offer me in finding a happier coding existence:-

+ Work hard on my language project; if I can actually do something with this I will have something very nice to put on my CV. Programming languages, compilers, parsing, etc. are really my passion; they are the one thing I'd like to get into more than anything else.

+ Develop knowledge of algorithms, big O, etc. - the kind of stuff I would have picked up on a computer science course, as well as being the kind of stuff asked at interviews.

+ Get involved with open source - I am especially interested in LLVM as it ties in nicely with my language project.

+ Practice, practice, practice - Practice coding, consciously trying to improve as much as I can.

And the most recent, most radical thought:-

+ Ditch the idea of going to work on someone else's stuff and get going on a Micro ISV. Keep the day job and work all the hours outside of work to put a product together. I'd like to somehow link this to my passion for programming languages, etc. - perhaps that old programmer startup cliche of a development tool of some kind?

Thanks in advance for any advice you can give me, it's really appreciated. Feel free to criticise + tear my ideas apart, by the way! Always happy for (constructive) criticism.

(I am using a different HN login from usual for obvious reasons.)



I have been in your situation many times before and always struggled with it. Until I figured something out...

working in an internal IT department at a non-software company can be a HUGE advantage. Why? Because your "customers" are right there.

Please do not underestimate this as part of your career planning. Sure, we all want to create cool technology, but AFAIC, the single biggest shortcoming for developers that I've ever seen is what I'll call "detachment from users".

You don't have that problem. You have end users right there at your fingertips. Take advantage of it! Learn from them. Practice your systems analysis skills. Find out how to make that missing link, the connection between technology and people, work properly.

I have written significant pieces of technology for software houses, but was actually more frustrated. Why? It took months, sometimes even years before anyone actually used it. And then, they were communicating with someone other than me. The technology was cool, but by not closing that loop with my customers, I always felt that my work (and learning) was incomplete.

By all means, continue your dreams and career plans. But don't waste your current situation by being depressed about it. I can't tell you all the times in my career when I stood head and shoulders above my peers because I had suffered in the trenches like you are now. Except you don't have to suffer. Because now you know to look for opportunities to get a lot better in other ways. They're all around you if you just look.


Some places insist on having a "Product Manager" handle all the face to face communications, which kills it even more...


I'd like to pick up on that "detachment from users" concept. In my (limited) experience, it seems that the more interesting the technology is you're working on, the further you're typically removed from the users.

For instance, in a typical java consulting job, you're face to face with users all the time - but you're building a boring webapp. On the other extreme you could be building awesome technical tools but your real users are several time-to-market phases away.


Working on your language project is probably not the best avenue to get you out of your job, since monetizing something like that is pretty difficult. It's been done but it had better be a 'game changer', another variation on some theme is not going to help you become independent.

The abstract knowledge you pick up (such as algorithms, you already refer to that) will help though, since it will allow you to build relatively complex stuff where 'cut-and-paste' types will have a disadvantage competing against you.

Open source is great way to advertise your skills, but only if you want to be re-hired somewhere, is that your intention or do you plan to become independent ?

The last item on your list sounds like the best bet in the shorter term. But maybe first you should exchange your job that you hate for a nicer one to get you out of the frame of mind you're in and in to a more healthy one.

Then from a position of strength you can make your decisions, usually that works better (at least, it does for me).

Good luck!


Thanks for the advice; will definitely take it on board.

It's true that the language project itself is unlikely to be monetisable (especially since the chances of it ever being used let alone popular are close to 0), but I wondered whether I could develop something along a similar vein, say a code analysis tool or some such, which could find application of language-related techniques and keep me in an area I find especially interesting.

I guess I just want to be happy as a coder; whether that requires me to be independent or can be achieved working for someone else is something I'm not yet sure about. I agree I need to leave the negative situation, I guess part of what I'm asking is how best to improve myself such that I can get a job somewhere decent.


(jacquesm beat me to it, but I'm sure you can use more than one reply.)

Given your relationship to programming as you describe it, I am quite sure that you can break out of this job. So please don't feel depressed! Just steel yourself to work damn hard on other stuff, no matter how tired or bummed you are from work, and don't stop until you get somewhere you want to be.

Working on open-source projects is a great way to develop credibility. A huge advantage of this approach is that you build credibility with the right crowd - the ones who find the same things cool and interesting that you do. If I were you I'd work backwards from the kinds of companies I'd like to hire me and try to make substantial contributions to open-source software that such companies use. Either that or I'd make cool new library on top of one.

Working on a personal language is less likely, I think, to be externally impressive. Most people's reaction to that will be "yawn", unless you're able to demonstrate something fundamentally new about it, and even then there is a high barrier to convincing anybody. You'd be better off finding open-source implementations of some known language to work on. (I'm talking, strictly, about using it as a bridge to paid work. Obviously you feel passionately enough to make it worth doing in its own right, but that's a separate question.)


Thank you. The positive encouragement of HNers means a lot to me.

I think a consensus is emerging that putting the language project aside for a while to focus on OSS would be a good idea.


What are your skills ? (programming languages and so on ?)


currently, mostly C#, SQL, F# and some scheme. Most of my experience (and entirely professionally) is on the MS stack, though I run linux at home.


Ok. I see ErrantX has already made you an offer, nice to see HN'ers help out other HN'ers!

I'll be running a pretty weird experiment in a few weeks, I'm not yet ready to explain it in public because I'm still tweaking the idea and I don't want to limit myself by nailing it down, if you are interested drop me an email (email in my profile).


Quit.

Having a choice (in this case a job) is sometimes bad. If your back is against the wall, you'll be more driven to go after what you want.

I was working for a bank in the early part of my career. I was doing mainframe applications and I have always wanted to do web apps. So I quit my job and learned a web programming language (.Net). I learned it pretty fast and I built a small site to showcase my work. In two months since quitting, I found a consulting job that does web apps.

A few years ago, I was working for a big company in San Diego. I wanted to be in a startup environment. I tried my best to create one in my company but I failed.

So I quit my job and moved to the Bay Area. When I moved here, I realized that most startups use open source and I cannot find startups that use .Net. Actually I found a startup that uses .Net but they rescinded their offer when their investor told them to freeze hiring.

I was unemployed for months in the Bay Area so I said to myself I need to learn an open-source language. I ended up learning Python/Django.

I accepted a short-term web development using .Net and when that ended I continued learning Python/Django. Via networking, I ended up working for a YC startup and eventually moved to another startup in SF.

I'm really happy (but not satisfied) with where I am right now. If I didn't quit my job, I don't think I would have had the motivation to go after what I really wanted.


That advice may or may not be good advice depending on your location. I can see how in the bay area it will work, the OP is in London, so for him it probably would work too (even though the market is not quite what it was a few years ago).

But for some regions it is probably best to keep your old shoes on until you've bought some new ones.


Note: San Diego is not in the bay area. He quit his job and moved here without having an offer in hand.


Yes, he wrote that, I got it. The point is, that the Bay area is just about one of the best places to be an out-of-work programmer on the planet.

Even during a recession it would probably still be easier for a qualified coder to find some work there than in most other places, the fact that he found a gig within a relatively short time seems to prove that.


Though it wasn't part of his explicit advice, your location is not constant, especially if you've quit your job. Thus, the limiting factor isn't where you are, it's where you could be.


That depends. If you have a family, kids in school, a mortgage, strong family ties, friends and so on that really counts for a lot to a large number of people, and that means that where they are is where they'll stay.

When you're young, unattached and without too many responsibilities this is a lot easier (and possibly even hard to imagine that one day it may not be that easy).


Yes, all of those things affect your ability to move and where you can move to. Whenever you make a major change to your life, some parts will get better and others worse. It's important to recognize what's actually important to you, and act to make the things you actually care about as good as possible.

Given the question, I assume that the thing he most cares about is getting a more enjoyable job,


jacquesm,

I was unemployed a total of 6 months in the Bay Area last year.

If I chose to stick with .Net, I could. I got a job offer from a company I used to work for in San Diego and also a company in DC.


Yes, so it worked for you. Great. It worked for me too, 23 years ago, one idle day in July. But that does not mean it will work for everyone.

Now realize that you are telling someone to quit their job without a backup plan and without a lot of insight in to their personal situation.

I think that is somewhat irresponsible, just because it worked for you is not exactly a guarantee, and I highly doubt you'll be able to catch him if he follows your advice and it turns out that he can't find a replacement, for whatever reason.

Then there are the details such as unemployment not kicking in if you voluntarily leave your job and a whole pile of other, circumstantial factors.


He asked for advice and I wrote what worked for me. Seriously dude, why all the hate? It's up to him to choose based on the suggestions from different people.

Yes, I factored in everything. I didn't get unemployment because I quit. I also didn't know anybody in the Bay Area. I knew those before I made a decision.

I hated my job. I became a very bitter person. I didn't like what I became. I had to act big to change things. I can tell you that despite the financial difficulties, I was very happy when I didn't have a job. I was developing a number of side projects.

I never lost hope that I'll get what I want. I knew from previous experiences that if I work hard, good things will come.

I'm not saying that he should just quit his job. If he does, he should make a commitment to do things that would make him desirable for the type of company he wants to work in.

There are no guarantees with anything. He can stay at his current company but it could also go under or he could get laid off. Wouldn't it be nice to take a career path that is guaranteed to make you financially stable for the rest of your life?


No hate, I don't even get why you interpret it that way.

Just critical about telling someone to 'Quit.'.

It seems irresponsible to me, apparently we disagree on that but that is my take on it. Of course he's under no obligation to follow through on any of the stuff written here.

I quit just like you did, and it worked out amazingly well. But I'd still hesitate to tell someone else to just 'quit' without knowing a lot more about their situation than what he put in that little blurb at the top.

> Wouldn't it be nice to take a career path that is guaranteed to make you financially stable for the rest of your life?

Yes, but as you said, there are no guarantees, so that one is also not guaranteed.

> You're saying what I did is somewhat irresponsible?

No, I'm saying that to tell other people to follow you because it worked for you is irresponsible, that's a huge difference. Think of it as anecdotal evidence based on a sample of '1'. (and if we add our samples, that makes it 2, and probably we can find a few more).

If you had said 'work towards quitting' or something to that effect it would be different. But an unqualified 'quit' seems to me to be too simple a solution.

> What is irresponsible is not living the life you want.

On that we agree. Which is the reason why I quit too.

But the rest of the situation has to be taken in to account as well.

I've been really lucky to get where I am today, I'm a high-school drop-out without any papers that would get me employment, so the job that I had (systems programmer at a bank at a disgustingly high salary) was really a one in a million opportunity for someone with my education level. I worked really hard to get it.

And then one day I decided to give it up and start my own business, after talking to my boss of the day (A guy called Eddy, I owe him a lot).

He showed me a very concrete way of making a go of it independently, and I took the chance and ran with it.

At the time I was living in an industrial area for pennies, had no girlfriend, no mortgage, basically 0 obligations. Without knowing a lot more about the OP I'd really hesitate to tell him to follow in my tracks because 'it worked for me'.

ok ?


jacquesm,

When I quit my job in 2008, it's when the recession hit. Bay Area was no exception. I cannot find any job and my skill (.Net) was not in demand.


Sure, but it is still a damn sight easier to find another job there compared to say rural Ontario, Northern Michigan or in smalltown Iowa.

Of course someone could move to a place where there is more employment, but that's a double risk, it means you also leave behind the social net that just might be able to catch you if things don't work out immediately.


I think the answer is to apply to more positions. You say that you have tried for one and did not get it. Apply for several and see what happens.

Also it sounds like you are trying to hop from internal IT to software/language development (is that correct?), if you have no previous official "programming experience" at a job, the open source projects might be your best bet. That way you can have programming on your resume that they can relate to. Personal projects are good but if the project is bigger than yourself it will carry more weight - and the world needs more open source programmers.


yes, I want to switch from internal to a software company. I definitely feel like open source is really critical; I don't feel like I'm working in an environment where code quality matters to anybody, the only way I'm going to get to work on a decent code base with people who care (and will improve me) before moving job is by working on open source.


I also suggest to just apply to more companies, for example try 10 at first and see what they told you. C# is pretty much in demand, so it should not be a problem to get a junior programmer job.

But maybe don't be too romantic about a job in software company...you could very well find that it also isn't a ideal job...you will perhaps fight with bureaucracy, being forced to do dull work, etc. etc.

So before quiting your job, try to think really deep why exactly you don't like your current job. Maybe it is something more fundamental, and ordinary software company might also not fix it. Anyway, good luck, finding a software programmer job is certainly achievable.


I agree, but I don't think I am being romantic - I do realise jobs always have those boring, etc. elements, it's a matter of whether overall you are happy with it.

And I certainly don't accept the contention that there aren't jobs programmers can be really happy in (as some contend, not saying you are necessarily), I think that's lazy thinking...

In any case I certainly don't think it's something fundamental as it's not the work itself that bothers me so much, but rather the pain of working in a negative situation.


Just quit. Walk out and never go back. Start working for yourself. Every day you're doing something you don't want to do is a day you never get back.

I quit my tech support job with no plan and 4 months of savings. Within the year, I had started my own business, and was making more money than I ever did at my old job.

Take the risk. Trust in your own abilities, and go for it. You'll never get the life you want by living the one you don't.


As someone who has worked at startups and big companies, and has hired and fired, the best advice I can give you if you are looking for a new job is to try to find a good, fun company to work for, even if it's not the ideal job for you. Be enthusiastic in the interview (first impression really is a one-shot deal), and make sure you are genuinely excited about what the company does (even if the job itself is not totally awesome). If you don't believe in what the company does, then you'll end up back where you are now.

Also: being happy at work is usually more related to your work environment and your co-workers than it is to the actual work you do (you may be different though). So try to meet the people you'd be working with, if that's a possibility, when you are interviewing.

There's nothing stopping you from still working on your own projects once you are at your new job, and if your day job is enjoyable, you will have more energy and motivation to put into your side projects too as a result.


Forget improving your CV. Make sure it's good enough. Depending solely on your CV makes you average. Are you average? Of course not, you're on HN! Build practical shit. No seriously man, making your own language will invoke a yawn as another commenter said. Build a web app, build a piece of software that has practicality. Build anything, as long as it can be demoed.

I realize that you want a new job now. Well, that's going to take patience. Don't spam your resume! Trust me, I use to interview and this was very common... you could detect these types.

Start today. Just build something that can be demoed, something preferably practical.

Good luck man!


Where are you based (roughly)? What is your skillset? What wage are you after?

I may have a job/project for you - and we can definitely work out something to accommodate your side projects/business. If it's any use to you drop me a line and we'll talk (always happy to help fellow HNers)

We are not a software company; we actually do security/forensics (which is super interesting) but we have a little software project that should be pretty lucrative.

If you'd prefer not to post such info you can drop me an email, it's in my profile)

Otherwise; pretty much I agree with what the others are saying. Put the programming language to one side for the moment and concentrate on FOSS projects if you can.


Wow! I am definitely interested in discussing any possibilities (I have clearly been far too reticent on this front as is clear from discussion here), for obvious reasons I'd rather not post [all] those details here; have dropped you an email.

Roughly: based in London, mostly C# skillset (currently).


I can't believe UK has only two companies (the Royal Non-Software Company and the Royal Software Company?). Apply for other positions in other software companies. Even non-software companies with strong IT departments have nice jobs, technically speaking. Specially the very large non-software companies, who also tend to look beyond your specific degree - a large company usually can afford a hiring process that will allow them to understand your abilities (regardless of your nominal college degree).


I have definitely been reticent on the jobsearching front. I guess a combination of inertia/laziness and fear have got in the way; also I suppose I am worried that if I apply to jobs before I am 'ready' (well practised in the algo stuff typically asked at decent job interviews, etc.) I will end up blowing my chances at these places then later when I come to apply with more experience in this area they won't want to hear from me. Is that a stupid approach?


Yes. Crikey. There are thousands of companies in the UK that hire programmers. How many of them can you possibly blow? Besides, the more jobs you apply for, the more practice you'll have applying.


I agree with your advice, but just a note on the UK:

Software companies aren't the same this side of the pond, the culture seems rather different. Maybe I've just had bad experiences, but London is full of soul crushing financial services/admin software type places. I'm sure the US is too, but there also seems to be a healthy community of fresh companies.

Check out your very own jobs.stackoverflow.com - this is one of the places I would expect a modern company to advertise, but there are nine jobs listed for the whole of the UK, compared to over 50 for NY alone. If you want a "normal" programming job you have to take your chances with the vast sea of recruiters on Monster.co.uk.

(or, of course, build personal connections and/or do your own thing)


There are still a number of interesting companies in London depending on what you're interested in...

Web development: check out NMA Top 50 for Agencies.

Startups: Check out the WiredUK Silicon Roundabout article _and_ the comments!

Misc: Check out things like Times TechTrack.

Interested in a particular technology? Check out the official language job board and search for London (e.g jobs.perl.org).

There are definitely interesting companies you just have to spend some time finding them because they won't come to you.


Yes, there isn't really a software startup/innovation culture in London.


Ironically I sent you an email about this very subject asking for advice (though more on the Micro ISV side of things) earlier :-)

Yeah. I know. I am being an idiot. I guess it's just easy to be too afraid of being rejected, which I definitely am. I need to get over myself I think.


I'm wondering if you're being too choosy about the jobs you're applying for? If you really think you'll blow your chances at job A which you really want, apply for job B. The experience of working job B might give you a more precise insight into what you want/don't want in a software job.


Be sure to ask yourself - is it the type of work you don't like doing or is it the company or manager that you're currently subjecting yourself to?

After spending a few years of my life contracting exclusively at non-software companies, I can definitely say that the culture can vary greatly from shop to shop so far as how well it caters to people who are there to hone their craft vs those who just show up for the paycheck.

Also, don't forget - jobs at software companies can suck too! :-)


Short answer: Build something that you would have built if you had your dream job. Show it to people who hire for your job.

Long answer: Its much easier to get an interview for a job if you can demonstrate that you've done it well before. It might still not be easy (because they may have degree requirements that you dont have ) but it will be easier than if you had nothing.

So go do what you really really want to do. Create a side project and do it. DO IT WELL. Ie, get feedback, make it as professional as possible. The project should have the same criteria for sucess as if it had been built by someone who's job you are seeking.

Then show it to the people who hire for that kind of position.

Pitfalls: 1. The kind of job that your passionate about may not pay very well in the future. 2. You might realise its not your passion and because of that you'd have done only an half assed job. This can be solved by trying something else. You'll know soon enough if this makes you happy or not.

Life is too short to have jobs that you dont like. I've been in that situation and have recently remedied it. I should have done this sooner.


I've been where you are before. The best advice I can give you is to turn your depression into something positive. Let it drive you to get out of your current position.

Aside from that, don't get discouraged. Good tech companies get to where they are because they have high standards. Getting a job with them takes practice. Don't get discouraged. Ask the people who turn you down for feedback. Honest feedback is surprisingly rare, but the ones who give it to you are the ones you want to listen to. Other than that just give it time! You'll figure it out eventually.


Do you have any money? If I lived in Europe I'd go rent a flat in Barcelona for 3 months and put together a code portfolio on github. (I actually wouldn't do exactly that... I'd go to work on an iphone app)

If you like compilers I'd just do that. Life's too short. You might have to move somewhere far away if you want to be a professional compiler artist, though.


I'm ok for money, but not great (some debt) so can't really make that lovely lovely idea reality :) nice suggestion though!


Work on your CV, then apply for more jobs.


You could work for me. I'm attempting to found a tech startup this summer dealing with aggregating local music shows and gigs. Having a brilliant programmer would be awesome. I know more design than I know coding. email me: bensima[at]gmail[dot]com


"I will arise and go now, for always night and day I hear lake water lapping with low sounds by the shore; While I stand on the roadway, or on the pavements grey, I hear it in the deep heart's core." -- Lake Ilse of Innisfree, W. B. Yeats


I'm in the UK too, but for a brief time I wasn't. I'd really like to hear from you, if you'd be happy to email (oliver dot saunders att google's mail service). Your situation reminds me a lot of where I was a couple of years ago.


Get a degree in computer science. Go at night and on weekends if you must.


I disagree (and I have a CS degree) - the time spent getting another academic qualification would be far better spent on the more practical suggestions given elsewhere on this page.


I've found that having a degree is generally seen as more important in the UK than in the US; and I've seen more evidence of sniffiness, vague efforts to exclude people who went to the wrong university.

Another consideration is whether you ever want to work in the US. Getting a H-1B isn't easy without a degree.


The OP does have a degree, just not a CS one.


I certainly believe that the kind of stuff you learn on a CS degree is incredibly important, esp. algorithms, hardware architecture, etc.

I agree with you that I think the academic approach wouldn't be as efficient as taking a more practical approach to what I need to know.


Having said what I did in a brother post to yours, on the other hand I'd say that the amount of practically useful stuff in a CS degree is surprisingly small, and I learned most of it before I went to college. I'd probably rate analysis of algorithms as the most useful, but it is very simple stuff: it's just expressing the time or space used by an algorithm as a formula, a function of the input size, but discarding all but the fastest-growing term.

There's all the other stuff that you need to know, like the basic data structures, but these are (IME) hard to avoid if you've done much programming at all. I'm not sure you need to know hardly anything about hardware architecture unless you're aiming to code at a very low level, device drivers etc. Obviously, familiarity with machine code, cache characteristics, optimization at the assembly level, etc. are useful, but these things are best learned by sitting at a computer with a stack the Intel processor PDFs, an assembly timing loop and a simple algorithm you're trying to reduce the clock count on.

I'll add some of my own experience, as I got into compilers and currently work as a compiler developer. I was interested in compilers at a young age, I recall thinking hard in school about how one should go about evaluating arithmetic expressions correctly accounting for precedence. I wrote an open-source expression evaluator for the Delphi community, as part of the JEDI library. I built a regular expression compiler in Java, compiling to Java bytecode, as my final year project in college. Then, in my first job (in a software company, working on a green-field project, very lucky), I was able to point out the benefit of writing a custom compiler for a DSL to fill in a configurability-shaped hole in the architecture. After having built up this experience, I was in good shape when Borland (as it was at the time) came calling looking for an engineer for the Delphi compiler.

I don't think there's a deterministic kind of guarantee that can be drawn from this experience. But learning the whole stack of technology that you need to implement a language certainly gives you plenty of practice in a lot of the fundamentals of CS, right from data structures and parsing at the top (I personally would avoid parser generators as a didactic exercise) to machine architecture and cache hierarchies at the bottom, to details you'd rather not have to know about, like the idiosyncratic addressing modes of the x86 processor. And putting it into practice, even if it's in an open-source side-project, gives you a better angle on related opportunities.


Having said what I did in a brother post to yours, on the other hand I'd say that the amount of practically useful stuff in a CS degree is surprisingly small, and I learned most of it before I went to college

Any chance you could give a list of that surprisingly smalll amount of practically useful stuff?


I tried to: analysis of algorithms, perhaps data structures. Analysis of algorithms is the crucial one; if someone writes O(n^2) code when they could be writing O(n), and the constant factor is negligible, and they're unaware of these things, then IMO they have no business writing code that other programmers will use. They might be able to solve their own problems for their own data sizes, but they shouldn't infect the wider world with solutions that break under stress.

For data structures, it's more important to have a taxonomy, and a rough general knowledge of the kinds of data structures that are available, so that you know what's required and when, and have enough confidence to implement any given data structure as needed.

It's also nice to have the time and opportunity to look at different levels of various stacks, such as the network stack (the analog wire signals, how binary signals can be encoded on them, ethernet, IP, TCP and UDP etc.); and things like OS caching, process scheduling, etc. But where you're looking to put those kinds of things into practice, it's not difficult to take a day or two out of your time and read up on them - it doesn't take long to scratch deeper than an undergraduate course covers (IMO).

Depending on what area you target, other things can also be useful. Re compilers and languages, I'd be wary of taking the academic stance too seriously. Classic texts like the Dragon book overemphasize the analysis of finite state machines and pushdown automata, DFAs and NFAs, and the details of grammars and parsing, LL vs LALR, and generally all the data you need if you want to rewrite lex or yacc. But really, parsing is a very small part of writing a compiler and is actually quite easy, unless you're trying to parse C++ or something. And a more modern trend is to overemphasize type systems and their analogies to proof systems; I'd also steer fairly clear of these guys, as they are (IMO) primarily interested in churning out PhDs by creating new mathematical abstractions that have very little practical application.

When downplaying the practical value of much of a CS degree, however, I'm assuming that you already have pretty decent coding chops. For example, I would expect that you wouldn't be intimidated by programming competition problems, for example see some of the problems in the PDFs from this page:

http://acmicpc-live-archive.uva.es/nuevoportal/

The harder problems rely on a relatively small amount of base knowledge, but you have to be pretty comfortable with recursion, generating combinations and permutations, dynamic programming, and often a little computational geometry. The easy ones are more like warmup in how to read and follow instructions.


The problem with that list is that it is going to be different for each person who got a CS degree.


Better yet, if working for a large employer see if you can get them to help pay for it. Obviously I don't know what sort of company you works for, but being depressed about working at a non-software company may be a reaction to internal rather than external factors.

It's worth asking for a meeting or lunch the supervisor, and explaining the worries about where you can go with this firm and why that lack of hardcore software prospects is worrying you a bit. It sounds very much as if you've ended up working as a mechanic when what you really wanted to do was design engines or gearboxes. If your employers aren't jerks and you've been doing a good job up to now, they may well offer some career-building assistance or advice that you might not have thought of yourself. Tread carefully, to ensure you aren't the obvious choice if the economy requires them to lay off a few people in every department ('Oh, let's get rid of yacoder, he's not that happy here anyway so he won't make a fuss'), but keep an open mind. For all you know the lack of core software openings at your company is due to management's inability to build a better programming team, and they might see your ambition to delve deeper as a valuable future asset.


what are your top programming languages? you should have put an outline of your CV in this, you sound awesome.


thank you very much! I think you are perhaps being somewhat overly kind! I care about and love programming, though I do tend to feel like I somewhat suck at it. I guess right now I just want to find a way of actually getting somewhere where I can improve my coding chops.

I mainly program in C#, though I code in scheme (what a lovely language), F# which is a .net ocaml near-enough, and I am learning ometa which, though not a language, allows you to experiment with languages quite nicely in other languages.

As far as stuff I've done, I've mainly played around with stuff; outside of work I've been on-and-off working on the language idea for a while, at work I've done a bunch of internal stuff much of which sucks :'-(. I try to do as good a job as I can, though it's difficult to stay motivated when in such a negative environment. Am rather depressed about it all at the moment to be honest!

I feel like I have a lot more to improve on. a lot more. In fact I have a terrible fear that if I was to apply for jobs now my suckiness would screw my chances at some of the cooler places blowing my chance to apply at them later. Argh.


whats your email? friend of mine is looking for great C# coders.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: