13 ms·
Ask HN: How do I get out of my unhappy coding job?
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.)
- jacquesm 16y agoWorking 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!
- yacoder 16y agoThanks 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.
- sbarre 16y agoAs 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.
- alextingle 16y agoWork on your CV, then apply for more jobs.
- krschultz 16y agoI 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.
- yacoder 16y agoyes, 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.
- greyman 16y agoI 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.
- yacoder 16y agoI 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.
- jotr99 16y agoGet a degree in computer science. Go at night and on weekends if you must.
- arethuza 16y agoI 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.
- yacoder 16y agoI 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.
- barrkel 16y agoHaving 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.
- pcof 16y agoI 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).
- yacoder 16y agoI 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?
- spolsky 16y agoYes. 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.
- yacoder 16y agoIronically 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.
- SandB0x 16y agoI 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)
- pclark 16y agowhat are your top programming languages? you should have put an outline of your CV in this, you sound awesome.
- yacoder 16y agothank 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.
- pclark 16y agowhats your email? friend of mine is looking for great C# coders.
- gruseom 16y ago(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.)
- yacoder 16y agoThank 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.
- starkfist 16y agoDo 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.
- yacoder 16y agoI'm ok for money, but not great (some debt) so can't really make that lovely lovely idea reality :) nice suggestion though!
- ErrantX 16y agoWhere 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.
- yacoder 16y agoWow! 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).
- Mark_B 16y agoBe 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! :-)
- jonpaul 16y agoForget 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!
- j_baker 16y agoI'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.
- edw519 16y agoI 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.
- peregrine 16y agoSome places insist on having a "Product Manager" handle all the face to face communications, which kills it even more...
- wlievens 16y agoI'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.
- dannyr 16y agoQuit. 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.
- jacquesm 16y agoThat 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.
- dannyr 16y agojacquesm, 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.
- jacquesm 16y agoSure, 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.
- chaosmachine 16y agoJust 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.
- olliesaunders 16y agoI'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.
- deleted 16y ago[deleted]
- bensima 16y agoYou 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
- keeptrying 16y agoShort 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.
- a_wanderer 16y ago"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