davimack
I work in biotech. Companies don't blink at anything. $3,000 / day? Yup. No problem.
Money doesn't mean anything to a company where the entry price is 15 years of infrastructure build and raw materials that run in the millions if not billions. If it does, you have a braindead manager, so move on.
In my experience (20+ years of writing software professionally) I've never built an automated test. I've never used an automated test.
My preference is to write code and push it straight to production without even debugging it. tested afterwards, certainly, but if you're in such severe doubt that you're going to ruin the system, you need some serious code review.
My strong belief is that you cannot test your code into goodness, that is something that only a person can evaluate. By making myself better at coding, by not relying upon something else to make my code good for me, I am way more efficient than I could be otherwise. Given, this may limit the types of projects that I engage in, and certainly changes the project flow. However, when I look at my productivity as compared to others, I don't find any problems in my method.
Only human eyeballs can find some problems, despite how many cases you throw at something with automated testing.
For the rest of my stack, it's mostly Visual Studio, and it's shifted a bunch over those 25 years: VB5 -> VB6 -> VB.NET until .NET 2.0 -> C#
Whatever changes there have been in HTML & JS, I've gone through, plus some of the DHTML weirdnesses that came along the way.
I'm going to say that, other than databases, there's about the same amount of needed change. And even with databases, those do change, in that you might want to get a bit more of a life and use something other than MSSQL for a change, which amounts to such a shift as the others have been.
The problems for me were the chaos and ambiguity, coupled with pressure.
I took on responsibility because there was nobody else to do the work & the work had to be done, but also because that's been my work experience: part of being that Principal Developer or Architect is being the backstop, to catch all the crap that the team can't handle.
I was told to 1) design and execute an ETL migration from the ERP system that they've purchased (and we're already about 6 months late), and 2) do an upgrade on a fragile system that'd been a piece of shit for the past 20 years, and which they expected to get done cleanly in a couple weeks.
I tried.
I worked over a month without rest, fun, friends, blogging, fiction reading, sex, church, or music ... waking in the middle of the night to start again, nap, repeat.
Naturally, while I was doing that, I was feeling like shit. But, I wrote it off as maybe just something off with my diabetes meds (repressing the issues rather than dealing with them). I developed gastritis. I had an endoscopy, colonoscopy, ultrasound, hoping to find some physical reason for this rather than this being me working myself to death.
There were more than one of me, at one point, and I'm still feeling like someone got into my head with a blender and just stirred it all up. For weeks, I was trying to figure out (at home) why the fuck I was so weird at work, and at work I was trying to figure out how to access information that I'd apparently decided I shouldn't have because it would upset me. I had compartmentalized, and created a persona to endure the misery that was work (but, hey: because it was made of me, it had some sense & started wondering why it was a fucking idiot).
I've been out for a month, on medical leave, seeing a therapist. I have chills, night sweats, hot/cold, tingles. My memory wanders. There are huge chunks missing, or ... hiding (and I'm letting them be, in hopes they'll come back). I have random panic attacks and - bonus! - I get one with every single meal, because of course the vagus nerve is in there somewhere, as is gastritis still (healing), and the vagus can do that sort of thing to you.
I get distracted and have to tell myself that, no, I'm not looking for a new job right now, that I need to take the time to heal.
I wake up at 3 in the morning in a panic and have to tell myself that, no, I don't have any work that I should be doing.
To come back from this? Lots of therapy, I fear. And time. And to figure out how not to be a workaholic.
Oh: the projects failed, of course. That's part of it, as well, because naturally I'm a perfectionist and an overachiever and a people-pleaser. So, yeah.
Nobody could have broken me more thoroughly.
Oh. Because I use different mental states to code, and I've built those to be triggered by music, I've helpfully got a whole music collection full of pain and misery, on tap!
Well, the engineer writing the test code knew these devices were odd, and that sometimes they'd just fail. So, s/he put in an if block to the effect that, "if this fails once, run the test 30 times and, if it passes 25/30 times, call it a pass." So, every now and again, the entire automated testing line comes to a halt and sits there for 31x the amount of time it should take, and it's not a short test (maybe sat there 30 minutes each iteration).
--edit: this is my personal experience and may not be used as tax advice in the legal sense--
I've considered a wide variety of things, but always come back to this: if I keep on saving at my current rate, I can not have to make any profit whatsoever, whereas if I start out now with something (a bakery, say), then I'll need to keep on making a profit, so that I can retire some day. I've got another 10-15 years in software and then I'm done and can do whatever. Check out http://www.mrmoneymustache.com/2012/01/13/the-shockingly-sim... to figure out where you land on that scale.
Why the imbalance in tech jobs posted here?
You know, it's odd, but it seems that the majority of jobs posted on here seem to skew towards the hot/new/sexy/niche languages/frameworks/technologies, rather than following along with what's actually in more common use. Or maybe it's that the jobs posted here are looking for people who want to be on the bleeding edge of things? This seems particularly to come from those who are YC funded,...
I use Brief on FireFox with Live Bookmarks. Let's me control frequency of downloads, navigate using keyboard, etc.
If developers aren't evaluated as people, but as units who are expected to hit some threshold of "intelligence," then that says something about the company asking you to take the test.
If everybody who tested well included everybody who was intelligent, or able to code well, you might be able to use it as a proxy. If not, you're missing out as a company.
The students who achieve the highest grades in school aren't those at the peak of the IQ range - they're the ones who actually have to put in the study time to learn the material, rather than cruising on previous knowledge. Do you want the person whose IQ score is better, or do you want the one who will do the work? If you want the better IQ score, what will you do to get them to perform when asked to do what might be regarded as drudgery?
Or are you saying that they give IQ tests to screen out the really bright bulbs, so as to isolate those who are willing to slog through whatever they're given?
Amen. IQ tests, or tests to see if you're psychologically a "good fit for the organization," are a sign that they haven't a clue what they're looking for, they don't trust their own judgment, and couldn't identify a good developer in a million years.
As a proxy for developer performance, IQ tests are utter crap - but IQ tests are something that's intelligible to your run-of-the-mill idiot manager, so they get done.
Psych tests are similar - they're saying that they can't figure out by talking with you whether you're a nice person or a psychopath. Which, OK, to be fair, psychopaths might hide it fairly well ... but if so they'd hide it well enough on the test, as well.
Totally agree it's down to how human they are towards you. If they're willing to see you as an individual vs. whether they want a new part of their machine.
(note: would be happy for you to have left the "offensive" word in - 2,000 lines of code for a single function screams for a refactor, and says that the original dev had no clue how to write good code. if the code makes you want to cuss, well....)
But it doesn't only happen in this industry: my niece is a graphic designer & has been asked to provide samples of her work on projects ... to the interviewer's specification. She's done it, because she really needed the work, but felt terribly taken advantage of, and I'd agree: it's predatory.
I have the luxury of telling people that, no, I won't take their 1) IQ test, 2) Personality Test, or 3) their Coding Challenges. Not everybody does, certainly.
The appropriate thing to do is to either state up front that you'd need to be compensated for your time, or acknowledge that you're giving away work as a way to possibly get in the door & just write the best solution you can write - not leaving it incomplete, necessarily, either, as that is a sort-of halfway position that makes you look bad.
If it's just the tactical objective, you'd need to find someone on the inside who would be willing and able to convince everybody else that you were the person for the job - and that includes the HR end of things as well. It would be easier, actually, for that person to sell a new position than to get you into a position which has the requirement of a PhD.
If it's the long-term you're considering, though, some of the other posters have pointed it out: you don't acquire the skills simply by reading about the subject (although reading about the subject is an immense part of the PhD). You must also contribute something to the subject, in a particularly rigorous manner - that creation, in other words, will be measured not simply by its outcome but by the process used and the documentation of that process produced.
The PhD isn't about understanding a field (that's a Master's). Rather, it's about understanding how to conduct research in a particular field, on top of having that mastery of the field. What you're seeing when you read papers is only the content of the field, not the process by which that was generated.
You have essentially said, "I've looked at a lot of paintings, and I really like paintings, and I know about different styles of paintings" ... but you have not painted.
For a lawyer, if they put in 100 hours to come up with a 2-page letter, they charge for those 100 hours. The next time a client comes to them with a similar problem, they charge for 100 hours.
Software developers charge for time actually spent working on a particular project. If they reuse code, they don't (typically) charge anything. If developers were to charge for the number of hours spent writing that code they're reusing, they'd be more like lawyers.
A lot of what fascinated me was the underlying grammar and syntax of language and how, if you knew how to manipulate those symbols ("words") through the use of an appropriate tool (diagrams, but not the ones you remember from when you were a kid learning to write sentences) you could manipulate sentences almost like they were tree-structures - without changing the meaning.
That said, to _succeed_ as a developer, I felt compelled to go out and get a Master's in Information Systems ... but that was about career success (nobody wanted an English Major to be their IT Project Manager, for some reason).
2) When pages have low contrast, but I don't want to say View / Style / No Style (alt+v, y, n - in firefox), I'll select the whole page.
3) When pages have extra-wide text lines without sufficient spacing between lines (i.e., they do not conform to typographical rules for reading ... for example, Hacker News comments), I'll select individual lines in order to better follow the length of the line.
4) When interrupted in reading a lengthy article, so as not to lose my place, I'll double-click (middle wheel button is keyed to double-click) my reading position to highlight just that word.