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
Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS

necrobobsledder posted:

Ruby is going to be the new Java but still cooler than Java for a good long

hah

Adbot
ADBOT LOVES YOU

Series DD Funding
Nov 25, 2014

by exmarx
If you don't want to do webdev you don't need to learn JS, there are plenty of places that won't make you touch it thankfully

triple sulk
Sep 17, 2014



Do not willingly take on a Ruby/Rails job in 2016 unless you have zero alternatives. At least with JS stuff you'll have a current skill set that's insanely more employable.

A MIRACLE
Sep 17, 2007

All right. It's Saturday night; I have no date, a two-liter bottle of Shasta and my all-Rush mix-tape... Let's rock.

triple sulk posted:

Do not willingly take on a Ruby/Rails job in 2016 unless you have zero alternatives. At least with JS stuff you'll have a current skill set that's insanely more employable.

What's cool and fun to code these days?

Doctor w-rw-rw-
Jun 24, 2008
Swift

Paolomania
Apr 26, 2006

A MIRACLE posted:

What's cool and fun to code these days?

C++14

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

A MIRACLE posted:

What's cool and fun to code these days?
Rust?

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

b0lt
Apr 29, 2005

A MIRACLE posted:

What's cool and fun to code these days?

mips asm

karms
Jan 22, 2006

by Nyc_Tattoo
Yam Slacker
The answer to that question will forever be php.

feedmegin
Jul 30, 2008

My vote's for Object-Oriented COBOL

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS
The real answer is not to be a hipster and do C# and/or Java.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.

A MIRACLE posted:

What's cool and fun to code these days?
Working programs that people use

withoutclass
Nov 6, 2007

Resist the siren call of rhinocerosness

College Slice
Kotlin owns super hard

mrmcd
Feb 22, 2003

Pictured: The only good cop (a fictional one).

I have been teaching myself go the past two days and I am not sure how I feel about channels.

Urit
Oct 22, 2010
Channels are just Lock<Queue<T>>. Implementation-wise that's all they are, a lock wrapped around a queue of items. Select is super cool, but also can make you hate life since you can't, say, select over an array of channels. [ASK] me about switching to Rust because I wanted generics that badly.

Factious question: Should I put C#/Java on my resume with my C/C++ experience? :v:

Serious question: Assuming I want to stay out of CRUD/Webapp hellholes, what's a well-used, well-regarded language to learn, assuming I have a fairly decent background in programming and already "know" C#, Python and 2 C-like hipster languages (rust and go)? I kind of want to learn JS just so I know it, but dynamic languages make me want to :suicide: because I can't tell how crappy my code is until I try to execute it, and where are my loving types?

mrmcd
Feb 22, 2003

Pictured: The only good cop (a fictional one).

Urit posted:

Channels are just Lock<Queue<T>>. Implementation-wise that's all they are, a lock wrapped around a queue of items. Select is super cool, but also can make you hate life since you can't, say, select over an array of channels. [ASK] me about switching to Rust because I wanted generics that badly.

Maybe the golang tutorial is a bit wonky, but it seems the only way to shutdown many-to-one channels is convoluted two channel boilerplate code, WaitGroup (not covered in the tutorial despite giving you a problem that does exactly that), or just YOLO and let your code panic and die once your computation is done.

Why would you make an asynchronous queue without a poll() timeout. :|

Urit
Oct 22, 2010

mrmcd posted:

Maybe the golang tutorial is a bit wonky, but it seems the only way to shutdown many-to-one channels is convoluted two channel boilerplate code, WaitGroup (not covered in the tutorial despite giving you a problem that does exactly that), or just YOLO and let your code panic and die once your computation is done.

Why would you make an asynchronous queue without a poll() timeout. :|

I assume when you say "many to one" you mean multiple producer single consumer. If you want to be safe, Channels should only ever be closed by the producer side. Never close them from the consumer because of the problem you just described. If you have to close from the receiver side, then yes, a closeChannel, waitgroup on a different goroutine to close the sending side, or build your own reference counting :suicide:. Channels are really bad once you start hitting the simplest of edge cases, and Go doesn't have even simple monomorphized generics so you can't build your own generic channel using an atomic and a ringbuffer or something that's not poo poo. Also they're slow, the stdlib doesn't use channels at all.

Dogcow
Jun 21, 2005

feedmegin posted:

My vote's for Object-Oriented COBOL

Running on Node of course.

mrmcd
Feb 22, 2003

Pictured: The only good cop (a fictional one).

Urit posted:

I assume when you say "many to one" you mean multiple producer single consumer. If you want to be safe, Channels should only ever be closed by the producer side. Never close them from the consumer because of the problem you just described. If you have to close from the receiver side, then yes, a closeChannel, waitgroup on a different goroutine to close the sending side, or build your own reference counting :suicide:. Channels are really bad once you start hitting the simplest of edge cases, and Go doesn't have even simple monomorphized generics so you can't build your own generic channel using an atomic and a ringbuffer or something that's not poo poo. Also they're slow, the stdlib doesn't use channels at all.

Yeah that's pretty much what I meant.

On the plus side, I do like the "laconic and easy like python, strongly typed like a grown up language" aspect. Also, after regurgitating too many try/catch/finally hairballs in Java, the defer keyword is omg yeessss. I assume there's some sort of hidden booby trap there though, because a decade of Java has taught me to expect abuse from my tools.

Also someone with a bit more experience in the language told me that the core golang devs aren't opposed to generics in theory, just that NONE HAVE PROVEN THEMSELVES WORTHY TO MARRY MY PERFECT CHILD or something.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.

Urit posted:

Serious question: Assuming I want to stay out of CRUD/Webapp hellholes, what's a well-used, well-regarded language to learn, assuming I have a fairly decent background in programming and already "know" C#, Python and 2 C-like hipster languages (rust and go)? I kind of want to learn JS just so I know it, but dynamic languages make me want to :suicide: because I can't tell how crappy my code is until I try to execute it, and where are my loving types?
R is fun to work with. The language itself is absolute poo poo, but it opens up a lot of interesting possibilities in terms of data crunching.

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

Urit posted:

Serious question: Assuming I want to stay out of CRUD/Webapp hellholes, what's a well-used, well-regarded language to learn, assuming I have a fairly decent background in programming and already "know" C#, Python and 2 C-like hipster languages (rust and go)? I kind of want to learn JS just so I know it, but dynamic languages make me want to :suicide: because I can't tell how crappy my code is until I try to execute it, and where are my loving types?

Learn TypeScript then, you get all the type checking at compile time C# has to offer, but you can turn it off if you'd like a dynamic JS experience for certain areas.

Progressive JPEG
Feb 19, 2003

Urit posted:

Serious question: Assuming I want to stay out of CRUD/Webapp hellholes, what's a well-used, well-regarded language to learn, assuming I have a fairly decent background in programming and already "know" C#, Python and 2 C-like hipster languages (rust and go)? I kind of want to learn JS just so I know it, but dynamic languages make me want to :suicide: because I can't tell how crappy my code is until I try to execute it, and where are my loving types?

I've been writing some server stuff in Go and it ended up going way faster than I thought it would. With all the native concurrency handling and built-in network support, it feels like Go is meant for that sort of thing. Pretty happy with it so far.

Ultimately language choice for a project is a tradeoff between many options. Maybe Java is the best choice if it's what everyone on the team knows or if it's got the library support you need. Or maybe something like Erlang has properties that make it the perfect choice. In any case you'd ideally be working at a place where learning new tools on the job isn't considered an insurmountable barrier for employees. It's also easier to learn a new programming language once you're already gotten a few under your belt, and then it matters less and less which one is used as long as it fits the needs of the project, but it sounds like you may know this already.

To answer your question: C++

Progressive JPEG fucked around with this message at 06:44 on May 18, 2016

sink
Sep 10, 2005

gerby gerb gerb in my mouf

Urit posted:

Serious question: Assuming I want to stay out of CRUD/Webapp hellholes, what's a well-used, well-regarded language to learn, assuming I have a fairly decent background in programming and already "know" C#, Python and 2 C-like hipster languages (rust and go)? I kind of want to learn JS just so I know it, but dynamic languages make me want to :suicide: because I can't tell how crappy my code is until I try to execute it, and where are my loving types?

In order of arcana:

Much enterprise systems programming is done in Scala, and the types can get mostly as crazy as you reasonably want until all of your coworkers loving hate you. It's especially nice because you can training wheels it by treating it like Java++.

I am seeing more Haskell jobs being posted, and while it has its arguably strong negatives, many languages look to this for inspiration. It also does some things that Scala can't or won't.

And OCaml if you want to work at Jane Street, Bloomberg, or Facebook.

Idris if you want to a strict version of Haskell that allows you to formally verify a program that nobody in the world would ever hire you to write.

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


OCaml's a nice language. If it ever gets a really good standard library, it could become a lot more popular very quickly.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
Haskell is what's powering a lot of interesting projects under the hood though and I think interest in it is monotonically increasing as the bar for systems programming and correctness grows across companies that are hitting severe limitations with the "worse is better" attitude that's brought innovation in enterprise software culture to a standstill. I'm working more with NixOS and NixOps after years doing configuration management in the Ruby ecosystem and the cultural change appeals to the full-blown raging neckbeard part of me that's been in the witness protection program for about a decade. A lot of this would be tougher to write or reason about with something like Ruby or Python (evidence: Saltstack, Puppet, Chef, Ansible are all super duper side effects godzilla monsters in design intent - this is not the intent of NixOS at all).

Also, Erlang may be worth taking up seriously if you get hired to work on RabbitMQ or Chef. But Elixir may overtake it in mindshare given it's been ramping up recently.

sink
Sep 10, 2005

gerby gerb gerb in my mouf

necrobobsledder posted:

Haskell is what's powering a lot of interesting projects under the hood though and I think interest in it is monotonically increasing as the bar for systems programming and correctness grows across companies that are hitting severe limitations with the "worse is better" attitude that's brought innovation in enterprise software culture to a standstill. I'm working more with NixOS and NixOps after years doing configuration management in the Ruby ecosystem and the cultural change appeals to the full-blown raging neckbeard part of me that's been in the witness protection program for about a decade. A lot of this would be tougher to write or reason about with something like Ruby or Python (evidence: Saltstack, Puppet, Chef, Ansible are all super duper side effects godzilla monsters in design intent - this is not the intent of NixOS at all).

Also, Erlang may be worth taking up seriously if you get hired to work on RabbitMQ or Chef. But Elixir may overtake it in mindshare given it's been ramping up recently.

How does NixOS/NixOps compare to stuff like CoreOS? Or are they orthogonal despite the similar names? I've never used either.

It's a bit of a new world for me, but I've been doing a minor bit of configuration and provisioning work using Ansible, and it feels kind of clumsy. (e: words)

sink fucked around with this message at 05:52 on May 19, 2016

Hadlock
Nov 9, 2004

sink posted:

How does NixOS/NixOps compare to stuff like CoreOS?

Unless I'm mistaking it for what we use at work, CoreOS is a hyper-minimal linux distribution whose primary purpose in life is only running Kubernetes and Docker Containers*. It's locked down particularly hard and doesn't come with a package manager to prevent you from doing silly things like trying to install a GUI on it. It doesn't have anything to do with configuration management or deployment automation. Maybe Kubernetes sort of falls in to this but you'd have to have a very broad philosophical opinion about containerized apps and configuration management. CoreOS is merely the gasket between the bare metal and the container.

*It will run Rkt containers but Kubernetes doesn't support Rkt yet

Urit
Oct 22, 2010

Skandranon posted:

Learn TypeScript then, you get all the type checking at compile time C# has to offer, but you can turn it off if you'd like a dynamic JS experience for certain areas.

I can't believe I forgot TypeScript exists, especially since it seems pretty popular. Thanks!

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

sink posted:

How does NixOS/NixOps compare to stuff like CoreOS? Or are they orthogonal despite the similar names? I've never used either.
To explain the NixOS and NixOps side, NixOS is a Linux distribution (optionally, a runtime layer and system layout convention itself somewhat similar to a wider-scope apt or yum) that supports immutable infrastructure concepts as first-class citizens while NixOps is meant for cross-instance management and orchestration - CoreOS is... decidedly not caring about those concerns. If you like Hashicorp's Terraform and Puppet's DSL isn't idempotent enough for you while you are obsessed with keeping images and running images match as closely as possible in prod as your management code, NixOS and NixOps are worth an evaluation if you're an ops-obsessed developer like me.

canis minor
May 4, 2011


Java running on Javascript

serious answer: how about Python?

Urit
Oct 22, 2010

canis minor posted:

Java running on Javascript

serious answer: how about Python?

code:
def reply():
    raise TooDeeplyIndentedException
But seriously, I already write Python - I was looking for something new to think about.

necrobobsledder posted:

To explain the NixOS and NixOps side, NixOS is a Linux distribution (optionally, a runtime layer and system layout convention itself somewhat similar to a wider-scope apt or yum) that supports immutable infrastructure concepts as first-class citizens while NixOps is meant for cross-instance management and orchestration - CoreOS is... decidedly not caring about those concerns. If you like Hashicorp's Terraform and Puppet's DSL isn't idempotent enough for you while you are obsessed with keeping images and running images match as closely as possible in prod as your management code, NixOS and NixOps are worth an evaluation if you're an ops-obsessed developer like me.

Holy poo poo NixOS looks cool, I'm a big fan of immutable ops type stuff so that stuff is like candy for me. I'm kind of the reverse of you - a Dev-obsessed Ops person.

Necc0
Jun 30, 2005

by exmarx
Broken Cake
Oh man I hope I didn't find this thread too late, definitely could use some advice as I'm not only at a crossroad but there's a hard time-limit as well.

I graduated in 2012 with a dual degree in software engineering & computer science and have been working consulting gigs ever since. On the plus side this allowed me to get a ton of experience in all the 'soft' but necessary business skills that so many tech guys lack but on the negative side it's been very rare for me to actually build anything substantial rather than quick one-off jobs. Fortunately I'm one of those tech guys who actually has naturally good people skills so I took to this role readily and have been incredibly successful so far. I've been with my current employer for about 2.5 years now and I've grown rapidly to the point that I have ownership over entire projects and am brought in as an auxiliary firefighter on others as I've developed a reputation as the 'gets poo poo done' guy.

However I started having my doubts last summer when I was given a 'one off' project that involved building an entire scalable, high-exposure, web-service from the ground up rather than just building customizations/configuring our off-the-shelf solution like usual. It'd been almost four years since I graduated and built anything substantial and it made me remember why I got into this field in the first place. Designed and built the poo poo out of it and the system ended up performing so much better than expected our customer expanded their contract almost immediately. That felt good. Real good. The irony was that it was such a fun project that it made me realize this company probably wasn't for me as another project like that probably wouldn't be coming around for another half-decade at least. So I started hitting up my college friends to see what was out there and one of them lined me up with a sales engineering role for a prominent and rapidly growing nosql company. I'm next in line to be hired and they're just waiting for additional sales guys to be hired to justify bringing me on as well. All that's left is hammering out the details like salary once that actually comes to pass which should be happening sometime this summer.

Meanwhile, my current employer is about to sign a massive contract that will require a ton of manpower. Enough that they're asking me if I'd be willing to temporarily relocate out to Portland for 1-3 years (Realistically more like 2-4 years). Normally I'd be all over this but there's been a few things bugging me about them that I'm wondering if I want to commit to this place for the long-haul.

The Good:
- Extremely laid back atmosphere. Everyone treats everyone else like an adult and let's you do your job without second guessing you or micromanaging. Basically the only rule is 'do your job and do it well' and as long as you can do that anything else slides.
- The above leads to being given responsibility as soon as people think you can handle it. I've grown extremely quickly here going from a still-fresh fearful-eyed grad to customer-facing tech lead in 1.5 years. I've been given genuine ownership of high-stakes and high-visibility projects and being able to deliver on those expectations feels good.

The Bad:
- Our (now ex-) CTO sincerely believed himself to be a genius and somehow convinced the other directors to allow him to build an entire development framework from the ground up to build a new edition of our software on top of. Instead of just using something like Spring/Hibernate, ASP.NET, Oracle ADF, etc. He had our engineers build the entire thing from scratch, believing himself to be smarter and more able than all these other companies. Keep in mind we're just a niche software vendor with a few dozen offshore engineers. It didn't end well. The result is that our software is incredibly complex and opaque as a result. As a plus the longer you work here the more valuable you become, moreso than other companies as you quickly become the sole person in the company who understands how certain things work. The problem is nothing is based off an industry standard which is total poison for my resume. If I feel like working here long-term? Whatever, no problem. But every year I'm here is a year that I'm not getting experience in anything relevant to the rest of the industry and it's starting to worry me.

The Ugly:
- Despite this rapid growth and glowing reviews both internal and external management has refused to acknowledge me, even with gentle prodding. I'm now starting to suspect that management just straight-up doesn't respect or value technical talent, rather viewing them as expendable high-turnover resources. I've watched as all our business consultants, who don't get me wrong are plenty talented in their own right, get accolades raises and promotions for half of what their technical counterparts get nothing for.

Which leads me to where I'm at now. I essentially see three possible choices:
Stay where I'm at : Enjoy the fact that I found a company that's actually low-stress and low-bullshit and that my long-term earnings are going to suffer because of it. I've already fallen well behind all my peers in earnings and staying here will effectively cement that. Continue working in a 'straddled' role where I'm not exactly any one role and more of a jack-of-all-trades. Which I don't mind but I feel like I could really be accomplishing so much more than what's available here.

Pivot into the 'soft' skills : I take the sales-engineering role and fully-exploit what I think my 'niche' is, which is the rare competent technical guy who can also give ad-hoc high-stress high-stakes presentations without breaking a sweat. This would include a pretty significant pay-bump but I have no idea what my long-term prospects would look like going down this path. Plus- I'm changing jobs. And while these guys may seem ok now there's no way to tell until I'm actually working there. I've worked for horrendous bosses before and I don't want to risk being in that situation again unless it's really worth it.

Pivot hard into tech/development : I put my resume out now and start looking for a firmer tech role where I'll actually be building poo poo again. I feel like I'd be happiest with my day-to-day work in this category but I feel like I may have blinders on since it's all that I'm experienced with so I'm biased. I know long-term earnings will be healthy going down this route but I'm not sure if it's the best direction for me. I dunno.

All this is made difficult by the hard relocation deadline coming at some unknown point in the future. Maybe as soon as 2-3 months from now, could be as long as 6-8 or maybe never if they wind up not signing the contract.

Sorry for the wall of text. Got a lot on my mind.

Necc0 fucked around with this message at 15:36 on May 25, 2016

Doctor w-rw-rw-
Jun 24, 2008

Necc0 posted:

So I started hitting up my college friends to see what was out there and one of them lined me up with a sales engineering role for a prominent and rapidly growing nosql company. I'm next in line to be hired and they're just waiting for additional sales guys to be hired to justify bringing me on as well. All that's left is hammering out the details like salary once that actually comes to pass which should be happening sometime this summer.
1) It matters which NoSQL company, as even prominent ones can be full of fail, like 10gen (MongoDB). I personally find the future of any given NoSQL company uncertain on a time horizon of 4 years or greater. While I'm skeptical of most or all NoSQL companies, there are definitely some which are definitely to be avoided.
2) So you're not hired yet *actually* and dependent on unclear milestones to land the job? Sounds more than a little risky.
3) Salary hasn't been hammered out so you have no idea how much the new company will value you either and it might be too low

Not sure what path you want to take, but if you're looking out for your future and adjusting for risk, definitely don't rely on that job you have lined up and keep looking IMO.

Hughlander
May 11, 2005

You are four years out of college. There should be one thought and one thought only for this segment of your career:

How can I make the most money.

Job pay is a form of compound interest. If you are in dillhole West Virginia making 50k, your next job might be 52k. If you are in SV making 150k your next job might be 160k. Leave SV for another tech center and it'll go down, but that can mean from 160 to 130. Leave Dillhole for the same tech center and maybe that 52 becomes 70. I'm at the point now where I see the salary range across multiple orgs and it's a really really huge range. 50k difference for people I'd consider equivalent. The reason is their salary history in the past.

Starting out I went from NY to CO to CA doubling the salary each time and it really really served me well the rest of my career.

yippee cahier
Mar 28, 2005

Yes, always keep looking. That one in a million dream job could be hiring, or more likely, you get a few interesting leads or offers that change the dynamics of your initial choices. Maybe you find some combination of the paths you've outlined, maybe you're given a salary offer you can't refuse, maybe you see the poo poo that's out there and feel more content at your current gig. Can't hurt.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I've been in your shoes (seriously, I was a PM / part-time sales engineer for a while as the company struggled to get gigs and I was pitching projects to managers instead of the absentee CEO... oh, no pressure at all) and while everyone's different what's fundamentally important is to understand the following:

1. What are you actually good at right now? Forget what people say you're good at or what you even want to do for a moment since the more questions get answered no or with less certainty the likely optimal path will mean making more drastic changes.
2. Do you have social proof / evidence of what's in (1)? This can be Github, Stack Overflow, Crunchbase, a blog post (with some comments maybe), forum posts. Among entrepreneurs it's personally knowing and getting referrals from already-successful people across a variety of disciplines.
3. Is (1) what you'd be happy doing for at least 5 years longer? If (1) does not match much with what you would be rather happy with, do you have sufficient skill and social proof to get a job with a sufficiently reputable employer? By reputable employer, I mean not bottom 50% garbage-ware outsourcing for miserly companies - these are death for any career regardless of what role you're in I'm discovering unless you can manage to make it less than 40%-ish of your total career time. In fact, if an unsolicited (external) recruiter asks you it is more than likely by just basic statistics that it's a garbage job not long-term beneficial for any talented, ambitious person. The best gigs of any sort are referral-only, period.

If you cannot affirmatively answer the above questions, you will likely need to do what I'm doing and quit working (stop trying to do more than the minimum to stay employed - it's a waste of your time basically and only good for income), build up (2) at least and work on (1) to the extent that you're confident enough to above. If you can't even answer (3) well - then you're just wallowing around unsure of what to do with your life anyway. The worst, however, is if you're quite confident of the above... and it turns out you're wrong (ignorance, self-aggrandization, or maybe too much optimism can play a role here). Almost nobody has become successful at their work when they're disenchanted and unmotivated though, so unless you're making gently caress you levels of money there's little reason to stick with dissatisfying career paths IMO.


The good news for you is that I think you really have only one path forward regardless of which track you want to go - you'll need to have legitimate, serious experience as an engineer before any reputable software company will hire you as a sales engineer. Sales engineering at typical crappy places is just underpaid, overworked sales BTW, which makes it all the bad parts of sales and engineering with few of the advantages of either. Even at a mediocre place to work as a software engineer you should still be able to find something impressive enough to work on and move on fast enough without needing to pull 80+ hour weeks constantly (smoothly leaving high toil environments is hard because you'll be too burned out to interview well unless you're a top-notch machine in which case I have no idea how you wound up in such a poorly managed situation).

Most of the sales engineers (forget the "solutions analyst" kind of roles - that's basically a fancy name for technical sales guy) I've seen have at least 5 years of software engineering under their belt before turning to the Dark Side. You need to have sufficiently relevant experience ("when I was at X, we solved this by doing Y" stories and "oh, here's how to fix X" go a long way to keep you from being fired) to convince your customers you're trustworthy. Additionally, soft skills in sales engineering are linked closely to technical leadership - you'll sometimes need to be the lead engineer in the absence of one that's hired at your customer because they are literally starting a new effort after picking your company's software and may not have the right resources to start the project. For a typical career path, someone will have graduated and been a software engineer at a reputable company and become lead developer on one or two projects that is publicly visible or at least well-known in an industry and be in that role for maybe 2 years with lots of customer facing time while juggling technical deliveries successfully. Then that's about the right time to jump. The alternative path of sales engineers is graduate from sufficiently high reputation school and go into sales or customer-facing consulting (consulting != contracting) then to sales engineering is somewhat rare in my experience. Most of those guys found companies after that position or go into management before 30. For everyone else, they take at least 12 years to land a sales engineer position it seems just from lack of opportunity or lack of sufficient motivation.


It's clear that your current company is primarily a sales culture though ("business X" is another fancy word for "sales to C-levels" IME) and if you want to stay there long-term and get some job satisfaction and/or recognition you'll have to move into less technical roles because unless management is all fired and the board of directors replaced it's not going to change. I've seen companies do even that and fail to change their culture because your customer base's culture ultimately affects how you must organize yourself to handle them, and most enterprises in North America are *surprise* sales cultures. It's kinda similar to how when two people marry they'll start taking on some characteristics of their spouse over time.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
While we're wall-of-texting, here's my story. Tl;dr working for a startup that's barely hobbling along, trying to figure out if I should jump ship and if so, how.

Background: mid-30's, been a software dev all my adult life. I spent several years working in academic software development, because I wanted a) to pivot more towards scientific software development (as opposed to web dev, which I'd been doing previously), and b) to get away from the more toxic aspects of some Silicon Valley software development houses (a.k.a. I wanted a 40-hour work week and decent time off options with no oncall duty). The academic life went pretty well, though it was of course less well-paid than industry work would've been, to the tune of a 10-20% paycut, I'd estimate. The work itself was a mixture of hardware control (manipulating scientific devices and reading values) and application development (writing GUIs to help less-computer-savvy researchers run their experiments). I liked it a lot. Lots of requirements gathering, developing new algorithms, designing hardware abstraction layers, figuring out what our users need vs. what they say they need (invariably wildly different things), etc.

However, the grant that funded the project I was on eventually failed to be renewed, so we decided to make a startup and get funding directly from our (fairly wide base of) users instead of from the government. That happened late last year. "We" in this case is me and my coworker, just the two of us. Said coworker took on most of the "business infrastructure" tasks, stuff like licensing, taxes, payroll, invoicing, etc, while I focused more on our software. This worked well for about half a year...and then my coworker burnt out, and was basically AWOL for most of a month while I struggled to keep things together. The fact that we'd been in a "one truck" situation (number of people who need to get hit by trucks to hose the company) should have been a red flag to me, but I didn't want to be involved in the more business-y side of things, so I let it slide. My mistake.

My coworker's more or less back now, except that (against my advice) he keeps trying to work long hours, in order to "catch up", and inevitably ends up having to take multiple days off to recover when he overextends himself again. He's also working stupid hours (coming in at 2PM or later) because of his hosed sleep schedule, which makes coordination difficult at best since I'm more of an early bird myself. Plus he's a lovely communicator at the best of times. I've been trying to compensate by organizing our work more and taking on a more managerial role, but there's only so much I can do without actual leadership authority and the necessary background in accounting, billing, etc. that currently only said coworker has. And I'm not a manager anyway, though I'm considering learning to be one.

Meanwhile, while we're still alive (despite having zero investment capital; we're getting by month-to-month on meager sales and one-off contracting jobs), we're definitely not making even mediocre salaries. It's enough for me to eat and pay my mortgage, but I'm not really banking anything, let alone putting anything in the retirement account. And while I really like the company's mission, it's really loving hard to maintain motivation when I'm working solo all the time. On the other hand, the bio/life sciences community in the SF Bay Area is small enough that jumping ship prematurely could be diplomatically difficult. Plus defining "prematurely" could be very difficult, as my coworker is even more intrinsically motivated about the project than I am, so he's basically guaranteed to keep it hobbling along and apparently healthy even if I were to quit.

So basically, I'm wrestling with a few things here:

* Sunk cost: I do want the company to succeed, and I've already dumped a lot of effort into it; I'd hate to see all that go to waste. Not to mention I own a substantial fraction of the company (though how I would leverage that ownership, I have no idea)
* I don't want to throw my coworker to the wolves by abandoning him to try to run the company solo.
* The pay sucks.
* How would I justify to a potential employer (who cares about our company) that I left our company without it declaring bankruptcy or having some other obvious self-destruct?

I don't feel trapped exactly, but this is a very tricky situation, at least from an inside perspective. Any advice?

Necc0
Jun 30, 2005

by exmarx
Broken Cake

Doctor w-rw-rw- posted:

1) It matters which NoSQL company, as even prominent ones can be full of fail, like 10gen (MongoDB). I personally find the future of any given NoSQL company uncertain on a time horizon of 4 years or greater. While I'm skeptical of most or all NoSQL companies, there are definitely some which are definitely to be avoided.
2) So you're not hired yet *actually* and dependent on unclear milestones to land the job? Sounds more than a little risky.
3) Salary hasn't been hammered out so you have no idea how much the new company will value you either and it might be too low

Not sure what path you want to take, but if you're looking out for your future and adjusting for risk, definitely don't rely on that job you have lined up and keep looking IMO.

1 - It's Marklogic. I was pretty skeptical about NoSQL as well until I started researching these guys and they're definitely on to something. I don't think they'll do anything like replace SQL but there's definitely a sizeable niche that they can nuzzle into that they've barely even begun to tap.
2 - I'm not quitting anything unless I have a firm offer. I'm not that dumb :v:
3 - Looking at Glassdoor and talking to my friend who's trying to recruit me I know that even if I totally gently caress up negotiations I'll be up a solid 20% over my current salary. PLUS they have a real bonus structure unlike my consolation prize bonus that I get now. In all likelihood it'll be a 40-50% raise.

necrobobsledder posted:

1. What are you actually good at right now? Forget what people say you're good at or what you even want to do for a moment since the more questions get answered no or with less certainty the likely optimal path will mean making more drastic changes.
2. Do you have social proof / evidence of what's in (1)? This can be Github, Stack Overflow, Crunchbase, a blog post (with some comments maybe), forum posts. Among entrepreneurs it's personally knowing and getting referrals from already-successful people across a variety of disciplines.
3. Is (1) what you'd be happy doing for at least 5 years longer? If (1) does not match much with what you would be rather happy with, do you have sufficient skill and social proof to get a job with a sufficiently reputable employer? By reputable employer, I mean not bottom 50% garbage-ware outsourcing for miserly companies - these are death for any career regardless of what role you're in I'm discovering unless you can manage to make it less than 40%-ish of your total career time. In fact, if an unsolicited (external) recruiter asks you it is more than likely by just basic statistics that it's a garbage job not long-term beneficial for any talented, ambitious person. The best gigs of any sort are referral-only, period.

I don't know what the correct word for it is but I'd say my current role is pretty close to #1. Essentially I'm the technical point of contact for my customer and have to ensure that everything is running smoothly. For any issue I have to ask myself: is this a valid request, how to we best address this, should i do this work myself or is this a job for engineering/operations/sales/whatever, even if it IS their job can i trust them to do it if this is a high risk portfolio, how do i make sure they're doing their job and make sure they meet deadlines/ensure they're providing quality work, how do i ensure my client is providing us with the information we need in a timely manner, how do i ensure their developers are properly integrating with our service, etc etc etc you get the point. It's a demanding job that requires technical skill, people skills, and a LOT of organizational creativity which unfortunately doesn't translate well to the typical 'here's my github'. I know this is my 'forte' because I've always been a sort of social wheeler & dealer all my life.

As for satisfaction, it's really hard to say. I enjoy the work I'm doing now but I just can't shake the feeling that there's better work out there. If some angelic deity descended from the clouds tomorrow and said 'ye shall only work this job forevermore' I'd be fine with it but a little disappointed. As for social proof that's not at all a problem for me. I didn't even ask any of my friends for work but when some of them found out what my pay situation was they all started trying to recruit me. Two of my ex-coworkers from my current company have both reached out to me to try and pull me along with them. Plus the project managers here regularly get into spats over how my time will be allocated to their projects. Put simply I take pride in my work and I think everyone I work with appreciates that.

So the sales-engineer job is a referral to a company that I think has a lot of potential plus I actually came off with a good impression of them when speaking to their engineers. The ex-coworkers was for a salesforce job (:barf:) so that was a no-go. Basically I feel like I'm in a position where normally I could be choosy but this Portland deadline has sort of thrown a wrench in things which has gotten me all flustered.

Actually- typing this all out has helped organize my thoughts on this. I'm gonna reach out to the sales-engineering guys and let them know the clock is ticking and see what they can do. If we can't make something work I'll start hunting but remain picky. If nothing good pops up in time I'll just go to Portland.


Necc0 fucked around with this message at 18:33 on May 25, 2016

Adbot
ADBOT LOVES YOU

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
To be fair, working at Salesforce is a lot more enjoyable from what I know having interviewed with them before (and not going through because of budget or location reasons primarily) than using their software. For some frames of reference, I've talked to people that are at Salesforce now and went through a Google acquisition and are much happier at Salesforce. Heroku still exists and isn't bleeding 50%+ of its engineers YoY unlike every acquisition I've been a part of (4 now).

The only word of warning I can give for giving people a time deadline to interview you is I did that once before by noting I had an offer and the employer was so committed to timely, rigorous interview processes for everyone that they dropped me. Or at least that's what they told me anyway, it could very well have been code for "we think you're an rear end in a top hat."

TooMuchAbstraction posted:

While we're wall-of-texting, here's my story. Tl;dr working for a startup that's barely hobbling along, trying to figure out if I should jump ship and if so, how.
....

I don't feel trapped exactly, but this is a very tricky situation, at least from an inside perspective. Any advice?
Sounds more like you're at a 2-man start-up as a co-founder than you being an employee at a start-up. SV is rather tolerant of "failure" and you could give a hand-wavy reason for leaving as "I had trouble scaling the company fast enough to meet my expectations and felt it best for the company to leave that task to someone better qualified." That's not a lie, doesn't blame anyone but yourself, and gives a subtext that you wanted a more established company with more money basically. But your real priority IMO is to be honest to the other person most invested in that company - your co-founder - and try to work something out together. If he's burning out and you basically are too, you guys have a mutual uh... "frame of emotion" to work with.

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