Software development - would anyone recommend it as a job?

You need the ones that will get you scribbling code on the whiteboard in the interview. These do exist but are in the minority. Quite a lot of them around Cambridge, though the mountain biking there isn't up to much! It's likely to mean a permanent role not contract work.

There is still a massive glut of trained people so unless you can really specialise in a technology then without any specific background it could be quite hard.

That just doesn't ring true (in the SE). Having tried to hire SW programmers it was like getting blood out of a stone to even get a UK CV, we could only get Chinese / Indian CVs from agencies. So I've no idea where this glut is that you're talking about.....

You know all those little problems where sometimes it doesn't work correctly? Well you have to fix those. You have to be able to predict how long it's going to take you too.

Like that a lot, very accurate.

I've been a software developer for over 10 years, started my own software company too and am now just going through some interviews to get back working for a large company again. Seems to be plenty of roles out there as far as I can see (finance work in London). Java or C#. Decent £££ too.

sideshow, it's interesting that you point out I have an "Academic skill set". One of the things that concerns me most is that I feel as though I'm not really gaining any skills. Working in industry, at least if I found a good employer, I would be regularly be getting feedback, training and reviews. At the moment it feels like I'm stumbling from one day to the next and not really sure if I'm learning anything correctly, or whether the things I am learning are worthwhile in the long run. I suppose this is down to my self organisation and possibly supervision so I should take some time to consider that.

Some interesting replies, thanks a lot. Possibly exaggerated my age in the initial post - I'm 28 so possibly not middle aged. I am having a crisis though.

Just some background - I'm a CS graduate, currently doing a PhD but I don't think I can continue with it (See my previous post about hating my PhD - it hasn't improved). I don't enjoy academia, or really even being around the department. I'm slowly going insane and losing my ability to socialise and interact with the general population.

I'd like to develop more practical skills. Always liked coding when doing my undergrad, and would like to become a "Professional", that is work at a decent company and learn decent practises.

I was really just gauging whether people in the job actually like it in the long term (I've only ever worked on fairly small projects and for short periods of time).

Any things I should particularly look out for in a company?

Once you are demotivated in doing your PhD you will suffer. If you are still in your 1st or 2nd year then get out quick before you become an old man with less opportunity to be employed.

The only reasons you should do a PhD is either to become an academic or you enjoy doing research which may pay you peanuts (most pay peanuts). Your future job (assuming in academia) depends entirely on the funding you receive and gone are days where you are pay salary. My advice get out quick! Run!

Coding is the most tedious and boring work in software (well, that's what the software people told me - they hated it big time). The problem is that companies may not be ready or willing to train you (they prefer you to have the experience in coding in some form when you join them).

But you have the advantage of being enthusiastic with coding, so if you can show them this side of you then you have the chance to get in and to be trained. You will take lots of shite thought ... as you team leader will kick your arse if s/he/they need to spend too much time on you.

Be prepare to handle the stress of coding deadline as I was once told by my software programming mates that you got to be a robot to stay awake. They ended up hiring Indians sw coders ...

In the long term for coders? You pass the job of coding to junior staff and you kick their arses for not meeting the deadline and you will hire Indian software programmers because most of your staff will leave and you are to be blamed ... oh ya ... good software coder(s) will hold the project ransom and you give in ...

One of the things that concerns me most is that I feel as though I'm not really gaining any skills

You don't need skills in entry level dev other than to sit and write good code.

Coding is the most tedious and boring work in software

No, it's not - testing is worse, and project management is worse still imo.

Working in industry, at least if I found a good employer, I would be regularly be getting feedback, training and reviews

LOL!

The companies that batter you with pointless red tape aren't the ones you want. You want the ones that rely on your innate intelligence and aptitude to sort stuff out and get it done - that kind of experience is far better than any training. Those companies are generally small ones.

I was once told by my software programming mates that you got to be a robot to stay awake

chambord - depending on what you did between undergrad and PhD, and especially if you can blag an MPhil or MSc out of your abandoned PhD, then you're not too late to get on a reasonably salaried graduate training programme with a big employer.

Has anyone here used stackoverflow careers, you'd think that might be a good place to look but I've never had the occasion to.

Definitely there are good and bad companies; ones that pressure their employees vs ones that train them. If you are lucky enough to have your pick of job offers then ask around as much as you can to dig up the dirt on them. In your situation I imagine being in a good company on a lower salary beats earning more in a bad one.

Agree with most stuff on this thread apart from the people who said coding is boring. If you agree with them don't go into software And VB isn't that bad, it has its place for some tasks (if you want horror try coding in visual lisp!). Language is irrelevant really it's how you use it.

Oh and about your PhD. PhDs are very self directed and you have to guess the unknown to channel your efforts into something you personally think worthwhile while staying within the remit of a funding application which is probably bollocks and bears little relation to what you will eventually produce. If you knew what you were doing it wouldn't be research would it! On the plus side until your 3 years are up you kind of have a blank cheque and a carte blanche to do this. And you are the customer so you get to work how and when you choose.

If you're unsure about it with 3 years to go still, and you can't address your problems by something simple (like more communication with your supervisor and maybe a program of learning on some specific topics), then you're right it's probably not for you - get out sooner rather than later.

Definitely there are good and bad companies; ones that pressure their employees vs ones that train them

question is, which is the good one here?

If you work in the so-called agile environment, with two week dev cycles, the idea is to keep everyone under a slight bit of pressure all the time...

Language is irrelevant really it's how you use it.

I sort of disagree on that one - on one hand there is the ability to code yourself out of any problem/framework deficiency if needed, and the other one is the naturalness of using certain features in a language, normally to support using abstractions better.

And another one is the maturity of the development 'community' - although there are too many frameworks in the Java world there is a stronger likelihood that you will find support for something you want to do.

I have just had to support Soap with Attachments with WCF and it hasn't been a particularly easy ride. I now need to support something called Schematron, and I think I will give up and just write a bridging 'bus' and use multiple languages.

Well, technically, maybe, but different industry sectors use different languages generally. If you learn C then you're likely to end up writing embedded software; Java and you will probably end up doing enterprise apps.

Complete mastery of a programming language is essential if you are going to be a useful programmer. Maintaining that mastery can be an issue if you have all the other development roles or use several languages!

Whilst excellent programming skills are essential for a development project, it's only a fraction of the skill-set required for a project to be successful. I haven't programmed a computer for ~7 years. I'm too busy to miss it.

Complete mastery of a programming language is the easy part, it is the breadth and depth of all the frameworks that is the issue.

Everybody has the buzzword acronyms on their cv, but they often don't have any depth in that framework.

So nowadays it seems that you just want someone who has the fundamental programming skills and can use google well !

Plus if you use productivity/refactoring add-ons like resharper it fills in stuff from intellisense and resolves references for you so you never learn the frameworks properly anyway.

And then when you combine wrapping any APIs you use into nice abstracted interfaces, you never get to learn them properly as after a couple of weeks you stop actually using such APIs directly anyway. I can't remember the MQ API but I wrote our library that uses it, so if I put that my cv it wouldn't mean a lot.

At interviews we normally ask someone to describe a system that they worked on and then drill down into it - if they were a bit part player it will become apparent.

I also have a short c# function to add a node into a sorted singly linked list, which has a few bugs in it that aren't immediately apparent, and I have found this a reliable test ever since I had a C version.

Basically it tests if they are considering the edge conditions when stepping through the code, like node at start or list, node in the list, and node at end of list, and maybe empty list as well.

15 years experience here. Always received decent pay IMO, and never been short of puzzles to entertain my brain. Plus you get to doss about on STW, obviously.

What area is the PhD in?
Computer science - computer vision really.

You should steam in with that kind of background. If you've not long left in the phd, maybe stick it out - or try and convert it to MSc.

If you want on job training, possibilities for promotion & bonuses, and don't mind working on a big systems where you're a small part of the whole affair, go for a big company. You also get to see a good spectrum of the different specialities within software dev, which means you can pick where you want to head quite easily.

Smaller companies tend to allow you more free reign to code how you want (and make all the mistakes you want) and you'll probably have the chance to have a large input into the end product. Its less likely to find specialists and people will be "wearing a lot of different hats". Career path opportunities aren't easily come by, though, without leaving and going for a position somewhere else.

Both can be good, both can be bad - depends on the company. I've learnt a lot from both ends of the scale.

I'd aim to look for somewhere that values the word "engineering". There's lots of people who know code; far less who can engineer. One doesn't pay so much, the other does. One will be working with your ten gallon hat on, the other will involve decent process & practices. I guess ultimately engineering is the science/art of doing it right, wheras writing code can be done both badly and easily. My experience is that customers ultimately are willing to pay for things that work, a lot more than crap knocked up in a hurry, you can imply a lot about how a company will work from its customers and who they are (i.e. don't work for a startup whose only customer is a nigerian gangster, just to pick a completely random example out of the blue)

I started life as a Programmer, as that what it was called in those days - the days when we handwrote code onto sheets and it was input by the Data Input girls... Now managed 30 years of IT, somehow.

It's a job, and like most others can be good/bad/indifferent. How you'd get into it these days, no idea.

And the good thing of outsourcing work; is that it quickly shows how crap the company is at spec-ing and the like. Because if you need to 'know' something that isn't in the spec to be able to develop the solution, then it's a crap spec. And folk never add enough cost in to cover the management/governance of offshore work, but then tbh they usually also don't add enough cost to cover the management of most contracts.

(i.e. don't work for a startup whose only customer is a nigerian gangster, just to pick a completely random example out of the blue)

If you change the word ganster for MNO (Mobile Network Operator) then you've just described my job! I've just spent a couple of days developing a new feature for one (in BASH if you want to know). I quite like Telecoms, hack away on my laptop at my desk in Cambridge, whilst implementing features on a mobile network in Nigeria. The irony being I have better visibility of their network than they do and I'm 6000 miles away. Just shows how small the world has become....

@chambond, @sideshow's comment is a good one, try and get an MSc out of what you're doing. 28 you're only just getting started in life mate ! Why not try and get something relate to your field, computer vision, digital imaging tv etc. I have a mate who has worked for Adobe and Siemens on similar, here and abroad.

In my day with an quant skill and a phd you went into finance ! It might not be for you but there is still work and contracting available.

"Computer Programming" is a bit broad - a generalisation. If you've an interest and a talent in it why not mess around with some mobile apps, have a play in your spare time. The world is moving towards mobile devices at a fast pace.

Software development - or engineering, or programming - appeals to a certain style or character of person IME - I like, I've been doing it for nearly 30 years, don't think I'd choose anything else TBH - not now anyway!

Have done the gamut of assembler, C, C++ and now C# - along with methodologies, techniques, frameworks. TDD and the like isa bit of a marmite thing but has more pluses than minuses I think.

Have always worked for small, medium or indeed very small businesses and I think if that works out it's a better route - latterly - than the big company style - if that works for you anyway.

Programming a game or small set of routines is one thing, working with a team on a bigger project is another. The scope for lone wolf style of programmers is probably receding fast.

Try it, if you like it go for it. computer vision has a big outlook I'd have thought - likes of military, oil&gas survey work, all that sort of thing..

chambord: just in case someone else hasn't already said it, software development can be a very solitary role it creeps up on you unannounced. Try to stay sociable.

The other thing is that if you don't 'get' software development its not the kind of work you can learn how to do and be good at it. If you have a genuine interest in code and think that you might even code for fun, then go for it but otherwise it will be hard work and deadly dull.

BigData and Cloud are the buzz words of the moment and if you are so inclined you could pick a couple of applications that can utilise both, learn lots about them and then watch the cash roll in as a highly paid consultant....

In my experience whilst many companies are out sourcing to off shore plenty more are still hiring developers in the UK and the quality of developers out there varies enormously but many are crap.

If you don't want to have to keep re-learning a new language ever couple of years as fashions change and want to be able to get into consulting a few years down the line I would get into databases - particularly the RDBMS kind to start off with - Oracle or SQL Server although Postgres and MySQL skills are also in demand.

Once you get your head around that pick up some HADOOP, Hive and Pig skills. These are skills that many data professionals think will be in demand over the next 3-5 years as more and more companies start trying to do stuff with all the unstructured data they can harvest from their websites, sensors, Server logs etc.

The skill will then be to write good MapReduce code to get that unstructured data back into the RDBMS and then into Excel, SharePoint, Reporting Cubes etc. for Self-Serve BI.

Note: None of this may come to pass but there is plenty of hype about it at the moment and Microsoft and the rest are investing heavily. I've seen some great demo's of this start to finish i.e. starting with HADOOP filtering all the way through to PowerBI excel reports on a tablet.

General consensus appears to be that most people enjoy the job, so that's encouraging. I'll keep programming and working on skills and may one day do it.

I'll have (Another) chat with my supervisor and see if we can sort it out. I forget that I'm in a fairly priviledged position really, and I can shape the next 3 years to suit me. I do enjoy the work it's just the feeling that I'm not making any real progress that winds me up, plus I'm almost 30 and there's something niggling in my head that says I should probably have a job by now, or at least be making steps towards a career path.

Meh, one to sleep on again I think. Hopefully wont be making a similar post in a few months time - if I am please be blunt and tell me to sort myself out!

And once again, cheers everyone for the replies - plenty to think about.

Yes. No. Maybe. I quit a PhD at the 11th hour, I wish I had done it earlier tbh as I wasted a good 18 months + trying to fix the unfixable living on no money.

Personally I think how good software is depend a lot on the field of application. Personally I also think the buzz word areas are the dullest, but that is because I like engineering application due to having a more engineering background and it plays to my personal strength to use my subject knowledge. There are lots of niches. Have a look around see what jobs there are.

Friend of mine started as a developer programmer, progressed to contractor, because of his knowledge base as contractor company he now works for asically tied him up to them as technical architect, now he's the guy behind most of your mobile banking apps, stressfull job but he seems to enjoy it

Friend of mine started as a developer programmer, progressed to contractor, because of his knowledge base as contractor company he now works for asically tied him up to them as technical architect, now he's the guy behind most of your mobile banking apps, stressfull job but he seems to enjoy it

Started life as a programmer, graduated to a software engineer and then spiralled off into the world of security. Mostly C and assembler at the start for position systems, the a lot of crypto, A LOT, and then i helped write a firewall daemon and the rest is history.
Truth be told i was a crap software programmer, the minutae annoyed me which wasn't the best. However, even now in my lofty position I understand how stuff works significantly better than many other IT 'experts' because i know the background and how stuff talks to each other. I did a sandwich course precisely to have industry experience and that was *thinks* jeeepers 1994 !

finish your PhD. Then consider R&D jobs. CS skills are in variable demand in a number of R&D-based industries that still exist in the UK. It's also a handy help in getting a transfer to or job in the USA or Canada. A PhD will improve your prospects and employability in the right places.

SW dev can be really rewarding. It can also be incredibly tedious. If you're finding your PhD a struggle for the reasons you stated then the world of work might also be a bind. Give yourself as many options as you can.