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
necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I'll add that if you have the capacity / ability to get a job with one of the major software companies (MS, Google, Amazon, etc.) you shouldn't even consider government if pay is a primary consideration. If you've got a bunch of degrees under your belt and have been turned down by a bunch of these companies, then you probably have a good shot there. Also, most actual coding work (in defense) is done through contractors really, and the pay (and oftentimes benefits) are better as contractors than as a government employee.

Contrary to popular belief, government is not quite the holy grail of benefits it used to be anymore. Compared to general private sector, it's surely better, but for most highly skilled technical workers (aside from academicians actually - academia is loving hard, period) you're better off going to a contractor rather than full-on government. Almost every talented technical person I know that was in government is now a contractor. Also, the recent federal salary freeze that went into effect is probably a grim thing to hear.

Adbot
ADBOT LOVES YOU

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
There's a large managed services provider in St. Louis (or nearby, rather) that I know is hiring plenty for IT folks.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
The enjoyability of the finance sector varies considerably though. Let's not forget that investment bankers, after all, continuously report among the lowest rate of job satisfaction. Most software engineers aren't as concerned about their salary as their general job satisfaction, which is mostly achieved by writing decent software that makes a meaningful impact to folks.

I don't do software engineering anymore exactly (I do a mix of writing software and IT admin and architecture), but given what I've heard from my peers I should be able to top out at $200k without having to be stuck at one company forever nor hopping jobs every other year like I have been forced to due to many large companies treating even top-performing employees like utter crap. I'm pretty happy with the flexibility I get with my job now and the opportunities it gives me both personally and professionally, so I'm fine with sticking this out for once.

Also, being in finance (especially on the trading side) almost guarantees you'll be in NYC (or another metropolitan area with :psyduck: costs of living like say London, Luxembourg, Tokyo), and $200k in NYC isn't quite the same as NYC in, say, Silicon Valley. On second thought, I'm here in the Valley and I think NYC is arguably cheaper to live in than here.

FinkieMcGee posted:

And yeah, if they use the term "Rockstar" developer, run. Things are probably terrible there and they need a messiah to pull their poo poo together. You probably don't want to be the underpaid bastard that has to do that.
There's no truly foolproof way to not find out a terribad employer (much like screening out all terribad employees) with these sorts of criteria though. I mean, I checked off all the questions and so forth you mentioned and I still got stuck doing 100+ hour weeks while basically on-call 24/7 (not quite because they didn't put up a plan, but because the other resources were loving incompetent) while I became a one-man development and architecture team.

The right spot I feel anyone should be on a team is to be somewhere near the middle in terms of an aggregate combo of skill / talent and experience along with similar work ethic and general attitude. This doesn't mean that you should just try to blend in (far from it) but that you should be able to both mentor someone and learn something from someone else. I've found my job most enjoyable in this sort of general cycle (ok, and with a product I think is kind of neat and meaningful somehow). I've learned to separate the parts of software engineering I really enjoy from the parts I do and made it so I have the freedom to do heads down development while at the least having the satisfaction of billing people extra for wasting your time or forcing you to do stupid crap you disagree with.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Plorkyeran posted:

having certs means that you're a bad developer because a good developer wouldn't need to get them
I have IT certs and can code fine, but it depends widely from developer to developer and industry to industry. Various scholarships and awards should counteract the certifications if anything. It's worked out fine for me though. I've got an offer on the table now that's about as high as you could go as a developer without being in finance given the stats I understand. I'd have been ecstatic to have a job like this if I was out of college, but I'm like 6 years out now and with my exposure to various industries now, anything less than $150k / yr including bonuses seems like I'm a slacker compared to many of my peers.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I have a suspicion that's the guy that gave me my interview with Amazon so long ago. They have a weird hiring process I've heard though, so whatever.

tef posted:

business logic is not really amenable to algorithmic analysis, it shouldn't be that surprising
Business logic problems can oftentimes be handled most efficiently (even measured on a financial basis - the Law of business) via algorithmic analysis. What's gotten in the way of proving this for me for years has been rather simple - politics. It's not whether I can deduce that something's actually NP hard or exponential in funny cases that makes the biggest impact upon my code but whether Randy makes his quarterly commission for getting the customer to fork over $4 million (and make him $250k for the quarter). It's not whether you can optimize the starting settings of a JVM heap but whether you can get a favor from a manager on another team that absolutely hates your guts for no reason besides him being a hard-rear end.

This is all part of why I had to laugh at Y Combinator's Big Ideas suggestion on improving enterprise software - the solution to improving the technical quality of enterprise software is no more of a technical issue than world hunger is about producing enough food for the planet. We should remember, after all, that most software did come from the enterprise so long ago.

On the other hand, I've certainly met some drat smart guys still in enterprise software. The other hypothesis I have is that the resulting software from these cultures is due to the chilling implications of the Milgram experiment.

tef posted:

We focus on writing and constructing new code over learning how to maintain and make code more maintainable.
Only through maintaining other people's code can you learn from the mistakes of others and learn to never repeat their mistakes. Coworkers have told me how easy my code is to understand and maintain, and that's enough for me to call myself a professional software engineer - you don't learn these practices through any means but pure hell experience. But through having to dumb down your code for years, you face the cruel reality that you are probably dumbing yourself down in the process.

dazjw posted:

Interviewing for programmers, not CJs.
There are an increasing number of coding jobs that amount to dev-ops, which is equivalent to an amalgamation of a programmer that can deploy his stuff to production and keep them maintained sufficiently well enough that he can spend some time actually coding. There's also a lot of former IT guys becoming developers (read the forums - there are maybe 20 guys going from IT to dev vs. myself being the only one I've heard of here that's transitioned to IT from pro developer) as their jobs become more and more automated away through a combination of better processes, outsourcing / consolidation, and just plain necessity to scale productivity in today's large environments.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I think repeating the experiences of your forefathers in the form of programmer is a form of hazing and even as great of a problem as reinventing the wheel, but I think there's many reasons why new programmers continue to repeat a lot of fundamental mistakes regardless of platform and we should try to separate what should be learned through trial by fire because there's just no better way to learn it and what should be imparted through indirect knowledge. I'm not about to expect today's software geniuses to be like Mel but I'd hope they understand the spirit of what being good in this field means... and also how Mel is probably not the right guy to hire in most of today's software projects.

tef posted:

When you build a project towards sales criteria instead of designing it, it is easier to sell. Once software had been adopted by the enterprise it is almost a guarantee that it will stagnate. People would rather use broken software they've learned how to use over trying software that works
The thing is that a great deal of business software is acquired rather than built in-house - Oracle is about the only exception in the Fortune 500 I believe. The people that build this software are actually pretty decent normally - I wouldn't have gone to work for a business software start-up if I didn't think my coworkers were every bit as smart and awesome as I felt they should be to succeed.

The consistent process in the past 15 years or so of enterprise software is this:

1. Start-up hires a bunch of smart people to address a business problem
2. Start-up gets 3/4 of the way there
3. Big company notices start-up and buys them out
4. Big company's policies suck and a mass exodus occurs
5. New developers hired to maintain the code

I've seen this happen with almost every acquisition done by a Fortune 500 company that's not a software-oriented company (there's maybe a handful that are).

kitten smoothie posted:

Then the client buys a license to a product that does none of that stuff out of the box, and signs off on a contract to have the vendor's consultants develop some custom bolt-on to address all the stuff the salesman promised.
I've been on the side of the team developing the product as well as the consultant billing out hours to mash poo poo together to fulfill the customer's requirements, and I'm of the feeling it's siloization / stovepiping of different functions that cause this problem combined with the fact that Fortune 500 customers act like babies where MY BUSINESS PROBLEMS are so unique to them they want it done exactly the way they do it... when the process is loving inefficient and won't scale out. This is a big part of why most enterprise software doesn't do what customers want out of the box - their requirements are very specific to them, and the developers would have to go to each and every Fortune 500 company and code a slight variation for each customer (which can change depending upon which CTO is in charge and the company's stock price or something). It's thus the burden of the developers to enable faster time for implementation and to make sales easier. This to me involves designing software to be as versatile as possible - this is orthogonal to the usual developer problem of solving a series of individual problems. These problems are not solvable through technical means because the problems are constantly shifting, too - you're trying to code against a moving target. So the best you can do is determine where the target could land and make sure it can at least function then.

That consultant does not want to have to maintain that code he had little wiggle room for design, he wants it to work well enough, document it, and make sure it becomes someone else's problem.

I'll just summarize the state of enterprise software with a single image. If you think there's a technical means to change this state of idiocy, you're loving delusional.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

shrike82 posted:

Seriously, I'm just having a hard time even imagining a coding job which doesn't require some level of knowledge of algorithms or data structures. What would software they write even look like?
Middleware development, sometimes security analysis (like hell a fuzzer is that big of a deal until you get into optimal fuzzing strategies), ETL stuff, and systems integration. There is an incredible amount of software out there that requires basically minimal understanding of the most mundane data structures.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I think a lot of the reason people ask for whiteboarding problems when they know of the downsides is that they'd rather have candidates that are so good even when handicapped and under pressure and all that they can still come up with working code and decent designs for problems. This unfortunately gets into the adverse selection problem we tend to have in hiring and well... if not all of us can make $370k+ / yr, not all of us can randomly recall different ways to do variations of the knapsack problem off the cuff, but we should be able to frame it properly and give some basic analysis that you'd expect someone to figure out in the time of the interview.

Side projects indicate a level of passion that goes beyond your day to day job oftentimes. Writing projects is one thing (some great guys I know went home and took care of a stressful family situation and did just as well as those that spent all day and night in front of a computer), but I think it's totally fair to ask what they read about. I'm a bit slightly wary of anyone that doesn't at least browse for new stuff outside their job and can tell me about what "those cool people" are doing. This is a bit more relevant for folks in the DC area where most coders are employed in defense and their skills & experience are oftentimes irrelevant or incommunicable to industry (say, you worked on Stuxnet doing the PLA exploit - who the heck in industry would care about that work?).

Ithaqua posted:

That means "someone else accepted, you didn't get the job". If a company wants you, they'll let you know.
In much of private industry this is true, but wife just got an offer after two weeks from the date they said they'd respond just from sheer internal delays in the paperwork and people going on vacation. This is also fairly common in federal jobs to take forever even to accept a candidate. I'll say that if it gets delayed this much, that's a bit of a warning flag too.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I need to make it very clear that development is literally pumping out (reliable, stable, "good") code - you build poo poo, plain and simple. Systems integration on the surface seems to have a lot to do with development, but they share maybe 20% of everyday tasks. Integration is oriented around gluing stuff together. The closest experience most developers get into the everyday mundane crap of systems integration is sitting in meetings with 3+ other teams talking about how to pass variables between services and what sort of common APIs and services to use. For system integrators... well that's 50%+ of your job. Horrifying, isn't it? Welcome to my life for the past 3 years.

As for "integration" there's bazillions of definitions of how that works so it's helpful to know what the actual tasks and additional functionality is. It can be anything from making some REST calls and feeding that back into a text output file (I poo poo you not, there's guys I know that do this at $200+ / hr - welcome to enterprise!) all the way to ripping apart existing code and building new app modules / plugins consisting of new code entirely. Most "integrations" tend to be on the former side of difficulty in technicals and almost everything that's difficult is the politics or dealing with broken software built by sub-par developers that exist in large companies. I've found out the long and painful way that it's really.... not development and that it can make you pretty dumb at actual development.

For a construction analogy, developers are the ones doing the hard, necessary work of actually building software, and system integrators are responsible for getting multiple sets of teams to agree on building plans and to iron out differences whether they're political or technical in nature. This tends to almost only matter in huge gently caress-off companies because they're the only ones that acquire companies often enough that it's a big concern. Otherwise, most developers do stuff like supporting some vendor's OAuth service, 2-factor authentication, or merely accessing some API as everyday stuff that's somewhat tangential to their primary task of building a product or service.


With that said, if you're doing HCI and IS sort of stuff, you're going to be headed closer to what they want for MLIS degrees (more about information architecture)... what they want librarians to have today. Otherwise, you may be able to wing it in UX / UI design but because almost everyone will want you to be a good prototyper, you'll be typically tasked with development as a primary duty rather than writing about what makes one kind of color better than the other for some text output. You will not be staring at a text editor for more than half a day with the former track - you'll be in meetings more, trust me.


I say all this as a recovering systems integration "developer." It really isn't about writing software and I had the distinct impression for the longest time that I'd be led to opportunities to do it because software systems and IT systems from a general systems perspective are hardly different, but the reality is that development actually mandates knowledge of data structures and algorithms to do anything more than trivial stuff while you can go very, very far doing integrations without having the faintest clue why quicksort could ever be faster than an insertion / selection sort. The actually somewhat interesting integration gigs I've done were always when I was a pure developer, absolutely never when I was a consultant. In that road it's always been about "we bought software x, y, z... they don't do what the sales guys told us they'd do together... fix it."

Do you know what I'm doing to go back to being a developer? Writing crap I'm going to put on github or online, that's what. Old sites I wrote 7+ year ago that never really took off might be back on the table for me, hell. I suggest anyone else trying to get anywhere close to development to do the same. Just loving code, it's the only way to prove you can do anything in the end and it'll go further along in terms of networking opportunities and interviews than a degree would. Even for large companies degrees are just a form of barebones gating in hiring to avoid systematically hiring that really awful neckbearded guy that really doesn't do anything which is fairly common among smaller companies.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

pigdog posted:

That's why I got interested in that field, because as a dev I got so sick of wasting time doing rework, guesswork and debugging of systems that aren't even under my control, or finding out that the customer wanted something different entirely.
Basically how I ever got interested in it, but the point stands that it's really not that relevant for any organization except larger ones where the proverbial left hand doesn't know what the right is doing and coding / development is a minor role. It's basically useless for most companies that'd want you to just make some app. The worst part is that without the political will to do anything for anyone else (typical for most enterprises), as a technical guy it's like being tasked to go into the White House and get Universal Healthcare passed through the house and senate. Most older enterprises operate, specifically in technology, operate nowadays a lot like how the Soviet Union did before it collapsed. But they won't because there's too much drat money being funnelled in from companies that are so clueless they'll just keep throwing money in the hopes something is finished. This is how we have projects go $2 BILLION over budget and multiple years late.

psydude posted:

Believe it or not, I actually wouldn't mind all of that (it's one of the reasons why I was looking into integration type stuff in the first place). My second job involves a lot of coordination of teams and resources from different backgrounds, so I'm used to playing the politics game and actually kind of enjoy the dynamic workload that it provides.
If you don't mind the thought where the pinnacle of one's career would be reading all of this (or even writing the books) in this article http://msdn.microsoft.com/en-us/library/bb466232.aspx then you probably have little point in being in anything in technology whatsoever. When some of the biggest enterprises in the world follow so many of these methodologies and have lots of highly paid people to go write all these powerpoints yet fail so spectacularly at actually achieving any of the goals of these frameworks, what's the point in making the sisyphean task of herding thousands of very, very selfish mice to move together one's career? Oh right, that's what managers and executives are for - things that have nothing to do with coding or technology.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
The funny thing is that there's a crapload of horrible lol enterprise and defense work to be had in Silicon Valley as well (Lockheed, Northrop, etc. all have a sizable presence in south bay). I was slinging lol enterprise code when I was there (but it was way easier for me to find a gig doing something actually interesting with offers flying at me all the time).

I had the damnedest time looking for a commercial software company in the DC area that wasn't something started by an MBA-toting sales exec that wanted to dip into tech and all marketing and advertising centric. The pay winds up being pretty freakin' mediocre too (mid-level dev for most commercial places here is maybe $5k / yr higher than what an entry level grad would get at a defense contractor). Most of the stuff here from the traditionally-acceptable companies like Amazon or even Google are in IT operations essentially because of the Ashburn datacenter, which is mostly about hitting up the government dollars crackpipe as far as I'm concerned. Even for the IT guys if you're not minding doing just EMC SANs, have done it for maybe 5 years, and you have a TS clearance, you'll get $160k+ / yr no sweat. The area had a bit of a fall-out with AOL / Time Warner having lay-offs recently and the last mega-huge private sector company here being Enron... well I kinda don't blame people for hating on private companies in the area.

DC area is incredibly awesome as a sales and customer-facing managerial / executive professional if you're in the commercial sector aside from niche companies like aforementioned Bethesda and Mythic. But sales is like the opposite of this subforum and generally not considered a first-pick.

het posted:

I think there's just a dearth of unemployed talent and a lot of the employed programmers aren't looking to jump ship in light of how the economy's been in the last 10 years.
I've been on my contract for less than a month and I've seen two people here on-site leave because they wanted more technical work - a guy literally dropped ship for a 1099 and he's got a family (brave man he is). Anyone remotely competent and smart in defense (even contracting-side) tends to get promoted up into management positions. Then they quit and the cycle begins anew.

Adbot
ADBOT LOVES YOU

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
One thing that always bothered me about the code you write in interviews is that it doesn't tell you anything about what the person necessarily knows about what they think is shippable production code. We could get into the minutiae of standards and crap that plague programmer conversations around the world, but I think throwing some code in front of a guy and asking him to critique it would quickly tell you things that actually matter faster than testing whether he can produce clever code on the spot. Things like:

1. He can spot buffer overflow vulnerabilities instantly
2. He can see a deadlock / race condition situation
3. He knows not to nitpick non-functional stuff like bracing standards for Java or C during a fuckin' code reading interview (but if it's for Python he should know the standard)

It's one thing to try to impress programmers that you're basically a code junkie hacker, but it's another to prove that you're able to do the daily bullshit work of most programming jobs in the world competently. Perhaps if you're interviewing for one of those 1%er jobs you'll have to prove it all, but that's why you're just so drat good and you can pass every single interview you ever get called in for, right?

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