Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

rt4 posted:

At my workplace, we have a bunch of little scripts that are mostly written in Python. A few are Bash, while a smaller quantity are PHP. These are written by whoever is frustrated enough with a tedious task to automate it.
Would I be a total jackass to write one in Scheme? All the serious programming I've done in the last few months has been Scheme, but I know it's not a very popular language.

(> (count (filter knows-scheme? programmers)) 1))

Don't be that guy who writes a script in a language nobody else uses. If everyone knows Scheme, go for it.

Adbot
ADBOT LOVES YOU

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
Continue my magical journey into contracting, where people will pay me twice as much money for less work. Also, finally learn Elixir properly.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
If you like brackets, Clojure. If you don't like them so much, maybe Java or Kotlin with the appropriate libraries.

Bonus joke answer: XQuery. Shout out to anyone who's had to use this.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

strange posted:

Is there any truth to the idea that you have to consult to make the big bucks in the UK? *eyes American salaries wistfully*
In my (Manchester-based) experience, yes. The highest permie salary I've seen here was ~£90k and typically technical lead-type roles will be ~£70 - 80k, while as a contractor I can get more than that without too much trouble.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
To be fair, you need to add 10 - 20% bonus, pension contributions, etc.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
Depending on exactly where you are in the NW, if you want to earn a decent amount I would seriously consider contracting. It's not really much less secure than a permanent job - I've recently renewed for another year on a government project and I have a month's notice period. Devops people are in especially high demand at the moment, from what I can tell! PM me if you want to chat about it, I'm Manchester-based and can give you an idea of what it's like around here.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
Sounds like you need to tell him to do one (in a nice way). Doing work you aren't paid for is not how you fix systemic problems.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

Cancelbot posted:

I did however interview during this time and wanted to know if; "oh nobody has left in the entire 14 years this company existed" is a gigantic red flag? Manchester/Liverpool area devs tend to do 2-4 years and then move on and so having everyone stay since company inception seems really "off" to me. Not even Google/Amazon/etc. has that retention surely?
Sounds more like a cult. To be fair, at my first company there were a lot of long-time employees, like 10+ years, but I think that's probably an outlier.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

Good Will Hrunting posted:

The difficulty of white-boarding problems matters too. There's an absolute baseline of problems everyone should be able to solve with minimal effort. To me, this encompasses things like efficient array/string manipulation algorithms, hash tables/associative arrays and the like, a "list" type structure, queues, and basic tree traversal. You shouldn't have to get the "trick" solution for maximal optomization but you should effortlessly code a baseline and talk about where to improve. On the tier after that I'd probably say is 2D arrays, more challenging recursive/graph problems, and ~*~*~ DYNAMIC PROGRAMMING ~*~*~ in terms of algo stuff. Then the top tier, to me, is the harder tree-balancing type problems that I have to review considerably before I'm comfortable (AVL trees, whatever those other trees are called I dunno never use em).

This is just what I expect myself to know as a back-end Java engineer with about 4 years of experience. I'm reviwing CTCI again and would be happy to start putting together a categorized list of questions if we want to debate this or provide it as a baseline for newbs/intermediates to study. I'm thinking Beginner, Mid-level, Experienced, Pro-Gosu Tier.
Anyone smart enough to be a decent developer can just look all that stuff up, or use one of the many libraries out there. I have never needed to make my own hash table or red-black tree in 10 years of being a back-end developer (and frankly, if I saw a pull request where someone wanted to, I would have some serious reservations).

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
Everyone has, dude. But my point is that I (and most developers) don't need to think about the bit-twiddling algorithmic side of things. Of course, it's important to know that a certain way of doing things is O(n^2) and so will perform terribly, but I want to think about problems in functional ways and let the compiler/library/whatever decide the algorithmically best way to implement that.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
The most common interviews for Silicon Valley tech companies, maybe. It's probably a cultural thing on that side of the pond, as I've never been asked to do anything like that in any interview, nor have I ever asked someone to. Pair programming something simple is a good enough predictor (in my experience) of whether someone is a joker or not.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
I agree that you have to know when something is going to perform badly. However, I disagree that a good way to check whether someone knows that is to make them implement a search algorithm on a whiteboard.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
On that tangent into the mystical realm of interview philosophy:

- First off, I read their CV. How many years experience do they have? What would I expect them to know, given that? I tend to assume they are competent developers after a few years and I don't need to actually ask things like 'when would I use a vector over a list', but it does help me gauge whether they know more/less than I think they ought to.
- Get them to do a pair programming exercise with me, in a vaguely TDD kata style. Very generic problems like 'hey, a bank wants to implement a bank account' tend to work well, but you can also go to classic programming things like the Game of Life if you want to tease out data structures a bit more.
- Watch how they write code. Are they actually able to function on a basic level as a developer? Surprisingly many people aren't. Do they write tests? Again, bizarrely many people don't. Are they pleasant to work with? Is their code actually nice, or is it a mess?
- When they're finished, push them a bit. How would you extend that example? Why did you use data structure x over y?
- Get them to draw an architecture diagram for a system they've worked on. Can they explain it properly? Can they say which bits could be improved?
- Generic chat about the company/whatever, the secret aim of which is to check whether they've been bothered to show enough interest to think of decent questions and can sometimes throw up red flags if they ask things that no reasonable person would ask.

I'd be interested to hear how others interview candidates!

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

fantastic in plastic posted:

If a company asked me to spend a full work day on a take-home, I'd tell them to gently caress off. Something that's estimated to take two hours is pushing it a little for me, but I might play ball if I like the company.
Agreed, I don't work for free. If they want me to do a day's work, they can pay me my day rate.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
It might be easier to think of it in head/tail terms, each recursive call conses one more item onto the accumulator:

code:
||| Reverse a list onto an existing tail.
reverseOnto : List a -> List a -> List a
reverseOnto acc [] = acc
reverseOnto acc (x::xs) = reverseOnto (x::acc) xs

||| Return the elements of a list in reverse order.
reverse : List a -> List a
reverse = reverseOnto []

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

Good Will Hrunting posted:

Genuinely think I should dive deeper into a functional language. I work with Scala at work but only really in the capacity of using it like a wrapper for Java, we have so much interop with Java that it prohibits certain things.

E; http://learnyouahaskell.com/ this is... something
Er, I wouldn't go right to Haskell, unless you love monads and semigroups (though maybe you do if you know Scala?). Try Clojure or Elixir instead.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

Ghost of Reagan Past posted:

Transcend this mundane reality and learn Haskell, actually.

EDIT: For the record, Haskell is a very weird language and doesn't have many jobs, but I like it a lot because my brain is fundamentally broken.
High five, fellow odd language-liker. I'm learning Idris at the moment, it seems totally impractical for use in the real world but it sure is interesting.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
I'm a contractor and my client has asked if I'd be willing to provide 24x7 support for a few months. I've done on-call before and I don't like it very much, but if the money's right I'll think about it. What kind of rate should I be charging? My initial thoughts were x% of day rate for being on-call and y*hourly rate if I actually get called, minimum 2 hours to stop people taking the piss, but I don't know what x and y should be.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

Jaded Burnout posted:

Personally I would set both to 2 * hourly rate.
If they'd pay 100% of my hourly rate just for being on call, I'd probably do it. 3 x day rate per 24 hours would be very nice, but I'm not sure if it'd fly.

Good Will Hrunting posted:

What's the SLA on the product? Like are you going to be expected to turn around bug fixes at 4am? Because make sure you account for the overhead of having to be interrupted at 4am: meaning things taking way longer because you're half asleep and then you have to go back to sleep and proceed with your normal work day in a reduced state etc. On-call rotation put a massive damper on my productivity at my last job and I wasn't compensated for it at all even though I was first or second in command of the non-emergency rotation depending on the week and had my own dedicated week entirely.
:iiam: though I'd expect it to be more around making sure the system is operational rather than fixing bugs and releasing new code. Having been woken up at 0300 for some stupid bullshit before, I'm well aware of what a pain it is!

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

toadoftoadhall posted:

I doubt the value of what I produce, and the value of the product, and the value of most software products.
This probably just means you're realistic, as most things are indeed garbage. Serious advice, though: Get a hobby or two, go for some walks, and stop working hours you're not paid for. Nobody is properly productive if they're in the office for 10 hours a day.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

strange posted:

To me it feels like a natural fit for Erlang, but I suspect that's too much of a paradigm shift. Is it too much of an rear end in a top hat move to pick something like Go?
Yes. Yes, it would be. If you nobody cares what language you use and you want to use something functional and Erlang-y, try Elixir which people can't seem to shut up about in my area.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

comedyblissoption posted:

The problem is that dynamically typed languages are bad ityool 2018.
Perhaps, if you think that set only contains JavaScript.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

Jose Valasquez posted:

Python is bad too
:agreed:

Clojure's good, though.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
It's a bit hard to put into words. I suppose the closest I can say is that Python has too much magic and its documentation tends to be frequently terrible. Also, its creator hates functional programming for some reason.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

Shirec posted:

The conclusion I’ve drawn is that all languages are bad in one way or another.

Any thoughts on my plan to learn Java or should I switch to something else?
A good conclusion. For me, anyway, all languages have their annoying bits, but there are some that are worse than others due to annoying syntax/poor libraries/irritating community/terrible curse. Still, if someone wanted to pay me enough money, I'd do Fortran or Cobol or whatever. Mostly, I think how much you enjoy a job has a lot more to do with your colleagues and the general atmosphere of the company. Java is worth knowing if you want 'a generic enterprise-y language which you will probably be able to get a job using'.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

BurntCornMuffin posted:

It's not a bad plan, then. However, if you really want to have a deeper level understanding that "Engineer" implies, as you get comfortable with Java, follow that act with some C, then take some of those C projects and run them through an assembly debugger so you can see what's happening underneath all the comfortable abstractions.
I don't think this is necessarily good advice. The last time I did assembly/C was in university and I have literally never needed it.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
Of course! My point was that saying, "You should definitely learn C and assembly," to a developer just starting out is not really great advice. "You should learn C and assembly if you are interested in them or you want to work in an area that uses them," is more like it, though a bit less pithy.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
Why not, I don't know, actually take a break? I know the US is some kind of hellscape when it comes to having a reasonable amount of holidays, but try doing something non-computer related. I'm serious. Go for a walk in the country or whatever, it'll be good for you.

If you really, really, must do something that you think will help you work-wise, try something that isn't anything to do with your day job. Go through the exercises on http://www.4clojure.com or read https://www.scottaaronson.com/democritus/

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
My current plan is to retire in < 10 years, thanks to contractor money. Then I can do whatever I feel like doing! I'll probably do more Code Club/similar things, which I've done before and thought was a good way of giving something back.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
If someone expects you to work for free on a regular basis by staying later than your normal hours, tell them to do one.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
Nthing the above, never write anything in a resignation letter beyond, "My last day is x, thanks for the opportunity, bye."

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
There isn't a :rolleyes: big enough. I feel sorry for you guys in the States.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
In ten years of being a dev I had literally never heard of tries until that post. It's almost as if you don't actually need to know about them unless they're useful for your problem domain? :thunk:

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

Good Will Hrunting posted:

:allears:

Another thing I missed yesterday that my interview mentioned (that I had *never* heard of) was an "inverted index"?
Conversely, I have heard of that because I used to work on a big-rear end NoSQL search thing that had lots of indices for good performance!

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
I feel for you Good Will Hrunting, you would practically never get asked a question like that on this side of the pond. What's the point? Who needs to be able to bust out an optimal Collatz solver!?

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
It depends a little bit on whether the company is saying that you should stay late, or whether you just feel like you have to. Personally, I don't like to work for free and value my time, so when I've been in the former situation I just said no and found another job. In challenging jobs, I find that after 7 hours of coding/fixing P1 issues/whatever I'm not productive any more and may as well go home anyway.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

Munkeymon posted:

Write a scraper and find out :byoscience:

e: jeez how many other months of '03 are gonna show up on this page?
Hello, did somebody say 2003? I feel very old now.

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe
I like this one: http://haskellbook.com/

Feel free to skip over the first chapter on lambda calculus, though.

Adbot
ADBOT LOVES YOU

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

chippy posted:

I'm thinking about moving into contracting and can't decide if it's a good idea or not. Would appreciate some advice.
I'm a contractor in the UK. In my experience, the market is pretty good right now for finding work. I think you will need to bite the bullet and give notice without having something in hand, but I'd say it's fairly likely that you'd be able to find a role. To be honest, a lot of contractors I've worked with haven't been genius 10x ninjas. The key skills are good at convincing clients you will be able to help and getting productive fast (like within a few days, ideally). Send me a PM if you want more specific advice about anything!

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply