batou
Joined 11 years ago
Joined 11 years ago
Perhaps that is the problem? :-)
More seriously, the thing has really leaky abstraction boundaries which is a main pain point. I have to write and manage a lot of boring enterprise code and creativity and expressiveness go a long way to introducing a lot of additional work.
The coalesce operator in C# 5 is welcome but then introduces another problem:
var x = myObject?.Property1?.Property2?.Property3;
If x is null, why and where?This is all in-memory manipulation of data. Mainly rules engine stuff for us.
FirstOrDefault being passed 2 rows = non-determinism. This one is always fun when your SQL server doesn't guarantee the order of rows returned so every time you hit .FirstOrDefault you get a different item. Never happens in dev due to the tiny datasets fitting in a single page.
There's also Single being passed 2 rows = crash. SingleOrDefault being passed >1 rows = crash.
And when it does crash it's entirely not helpful because the lambda block reports no state information in the stack. Inevitably this leads to adding precondition checks to avoid "Hey everyone, one of the 20 LINQ expressions in this method blew with more than one element in the sequence".
Then there's the fact that you don't know the size of the set of data nor really think about it. So if someone passes in a collection of 10 rows in dev and it works out that it's O(N^2) and has a random .ToList() in it then you're up shit creek in the memory and time departments when that 10000 items collection appears in production.
None of this unique to LINQ but it hides a lot of problems behind a wall of pain.
From extensive experience; there be dragons.
YMMV basically.
I long for a simple vehicle again.
As for everything else, browser is Firefox still (ick) and the only services I use are an IMAP box and domain.
I gave up music on my phone, contact sync, email on my phone, navigation, everything. A simpler life seems to be better for me.
This is a really hard and uncomfortable thing after years of convenience along the same lines of going back to CDs after using mp3s but it's worth it.
I just sat through an hour of shit like that. My eyelids were so heavy they nearly became a singularity.
I did find that you can play recruiters off against each other quite easily to negotiate a higher rate. Also when you sign, you sign with the company not the recruiter and have a solid contract in place. Never work for sharecropper recruiters like some of the bigger ones.
If they want to get rid of you after 2 weeks, make sure there's an exit fee. That is usually 100% for me if under 6 months of contract left. I did 2 weeks at a company on a 3 monther at £550 a day and completed the work but was paid for the 3 months.
The particular sector I worked in was finance and that is still heavily recruiter driven unfortunately.
Also the advice about marketing yourself is crap. Recruiters are the #1 way of landing contracts. They're finders and you're paying a finders fee for that service. They have the big guys with oodles of cash to get hold of.
If you can't get a gig through a recruiter then you either don't have skills that are in demand or don't come across as someone who they'd want to sell.
If you don't go through the recruiters, you end up being left with the cheap arse companies that won't pay up anyway. If you're sneaky about it, you and the recruiter can get the client to pay the finder's fee.
Once you're in the system, build up a network of contacts and then move through that rather than using the recruiters. I'm doing that at the moment and ended up taking a perm position that was better paid than the contract rates were (without all the hassle of IR35, rolling a Ltd etc)
Edit: Forgot to say that the tech is fine; a member of my family operates a usenet server over in Switzerland for our family. Works well for that sort of thing and avoids facebook etc.