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
Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



Cuntpunch posted:

Double the money? Depends on the contract length. I'd take double the money for a year and then scoot off with my new happy base salary, sure.

Eh, dunno if I'd count on a doubling sticking.

Adbot
ADBOT LOVES YOU

kayakyakr
Feb 16, 2004

Kayak is true

Paolomania posted:

Hey people that have gotten to team lead roles: what was the path you followed to get there and how did you get promoted to that position? Was it right place right time? Did it happen due to company growth? Was there churn that helped? Did you bust your rear end with that specific goal in mind? Did you have to change teams/companies for the opportunity?

I'm wondering how to approach my next step. Tell me a story.

Be a guy the company trusts to interface with clients/product. Help the PM's. Give good code reviews. Hop on priority/bugfix tickets. Be a better poo poo umbrella. Generally transition from the developer that's trying to be 10 times more productive on your own and instead be the developer that makes other developers more productive.

duz
Jul 11, 2005

Come on Ilhan, lets go bag us a shitpost


Munkeymon posted:

I've heard things about the latest major version that make it sound almost like a bad language instead of a downright toxic one. For double the money.... maaaybe.

Yeah, it has working* typing now and they've been able to remove a bunch of the dangerous functions. That doesn't help the disaster of legacy code out there, but at least you can at least write new stuff that isn't that bad. Composer still exists so you can end up having an npm like ecosystem growing in your project, so you win some and you lose some.


* Just for function parameters, return values and with 7.4 class properties, variables themselves are still loosely typed

spiritual bypass
Feb 19, 2008

Grimey Drawer

duz posted:

* Just for function parameters, return values and with 7.4 class properties, variables themselves are still loosely typed

More incentive to write short functions :eng101:

Lord Of Texas
Dec 26, 2006

Paolomania posted:

Hey people that have gotten to team lead roles: what was the path you followed to get there and how did you get promoted to that position? Was it right place right time? Did it happen due to company growth? Was there churn that helped? Did you bust your rear end with that specific goal in mind? Did you have to change teams/companies for the opportunity?

I'm wondering how to approach my next step. Tell me a story.

Hang around and listen to your current team leads.

Pay attention to what they do that works and doesn't work.

Learn the nuances of the business/systems you're working on (aka domain knowledge).

Speak up, but don't be the person who butts in with every single thought that crosses their mind.

Recognize others when they do a good job. Help them do a good job in the first place.

Most of all, don't be afraid to highlight/showcase your accomplishments. Don't assume that others will seek to understand why what you did was so great. It's very feasible to show humility while still marketing yourself.

csammis
Aug 26, 2003

Mental Institution

Cuntpunch posted:

Being the most productive, knowledgeable, and professional member of the team when the previous lead moved on. But it was never a solo "because I can write code" thing - it was a combination of
-handling PM/POs really well
-being able to communicate both to technical and non-technical colleagues
-being very fluent in the business domain
-proactively being the guy that the rest of the team asked questions to and looked to for guidance
-the previous lead moving on

This was exactly the path that I took as well.

vonnegutt
Aug 7, 2006
Hobocamp.
Pick up Camille Fournier's The Manager's Path. It's a quick read and specific to tech, starting with how to do 1:1 mentoring and moving all the way up to VP level. It explains better than most how management (in any role) is different and what you should do to do it effectively.

Mao Zedong Thot
Oct 16, 2008


vonnegutt posted:

Pick up Camille Fournier's The Manager's Path. It's a quick read and specific to tech, starting with how to do 1:1 mentoring and moving all the way up to VP level. It explains better than most how management (in any role) is different and what you should do to do it effectively.

I thought "The Manager's Path" + "An Elegant Puzzle: Systems of Engineering Management" (Will Larson) were both particularly good.

leper khan
Dec 28, 2010
Honest to god thinks Half Life 2 is a bad game. But at least he likes Monster Hunter.

Mao Zedong Thot posted:

I thought "The Manager's Path" + "An Elegant Puzzle: Systems of Engineering Management" (Will Larson) were both particularly good.

Elegant puzzle seemed very good but not terribly actionable from my view as an IC. There’s some good in there for sure, but it’s very clearly targeted at people already running teams.

Paolomania
Apr 26, 2006

Thanks all. Helpful info all around.

feedmegin
Jul 30, 2008

Volguus posted:

But yeah, replace dd with a JS app. Soon enough they'll want to have an OS in JS.

Good news! https://node-os.com/ :sun:

Cuntpunch
Oct 3, 2003

A monkey in a long line of kings

Looking forward to the first "oh poo poo, my machine is bricked because someone unpublished a trivial one-line package from NPM and the OS relied on that to bootstrap itself."

feedmegin
Jul 30, 2008

Pie Colony posted:

Languages are just tools. Carpenters aren't thought of as hammer engineers. You don't need to "specialize" in a language unless you're making the language.

Welders (for example) are a thing, though. People often do specialise in a particular language. If im interviewing a PHP guy who is applying for an embedded C role, 'oh you know a computer language' is um not going to be sufficient for me.

kayakyakr
Feb 16, 2004

Kayak is true

vonnegutt posted:

Pick up Camille Fournier's The Manager's Path. It's a quick read and specific to tech, starting with how to do 1:1 mentoring and moving all the way up to VP level. It explains better than most how management (in any role) is different and what you should do to do it effectively.


Mao Zedong Thot posted:

I thought "The Manager's Path" + "An Elegant Puzzle: Systems of Engineering Management" (Will Larson) were both particularly good.

Bought both, thanks. Starting elegant puzzle first because I got it digital, but gonna swap it for managers path when it gets in.

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

feedmegin posted:

If im interviewing a PHP guy who is applying for an embedded C role, 'oh you know a computer language' is um not going to be sufficient for me.

That's more because embedded C requires a different way of thinking than PHP does. If you were interviewing for a web dev role in Javascript, say, then that PHP guy might get more attention (which is not to say that PHP and Javascript are equivalent, but they're both pretty high-level languages). Or if they knew x86 assembly but not embedded C.

feedmegin
Jul 30, 2008

TooMuchAbstraction posted:

That's more because embedded C requires a different way of thinking than PHP does. If you were interviewing for a web dev role in Javascript, say, then that PHP guy might get more attention (which is not to say that PHP and Javascript are equivalent, but they're both pretty high-level languages). Or if they knew x86 assembly but not embedded C.

Thats my point. Languages and the domains they are used in and the way of thinking they require aren't interchangeable so specialisation in at least a family of languages is absolutely a thing. Someone with your username should know this :shobon:

Steve French
Sep 8, 2003

It's more that writing embedded C is a very different task from, say, writing a website in PHP. Yes, the language is different, but that's not the biggest difference or primary reason why the skills might not be very transferable.

A more honest analogy might be whether you'd hire a web developer with primarily PHP experience for a role doing web development in Java, Go, Ruby, Python, or JavaScript. I'd imagine many would consider it.

On the other side, I had a lot of experience writing C early in my career doing kernel and database development. I am not experienced in writing embedded code, and from the little I did do in college my impression is that my experience while writing C was more transferable to building backend server systems to scale in something like Java than to embedded C programming.

feedmegin
Jul 30, 2008

Steve French posted:

It's more that writing embedded C is a very different task from, say, writing a website in PHP. Yes, the language is different, but that's not the biggest difference or primary reason why the skills might not be very transferable

It IS a big part of it though.

Manual memory management

Caring about how much memory you use in general

'What's a pointer?'

What is endianness

What is binary

What data structures are built in, you've got a hash table right?

How do I add strings together, I can just use + right?

There is a poo poo ton of difference between high level languages and something like baremetal C. You can't just handwave that away, sorry. If you're saying one high
level web language is much like another, maybe I guess? But believe it or not quite a lot of development occurs outside of that bubble.

feedmegin fucked around with this message at 20:38 on Sep 21, 2019

Cuntpunch
Oct 3, 2003

A monkey in a long line of kings

feedmegin posted:

It IS a big part of it though.

Manual memory management

Caring about how much memory you use in general

'What's a pointer?'

What is endianness

What is binary

What data structures are built in, you've got a hash table right?

How do I add strings together, I can just use + right?

There is a poo poo ton of difference between high level languages and something like baremetal C. You can't just handwave that away, sorry. If you're saying one high
level web language is much like another, maybe I guess? But believe it or not quite a lot of development occurs outside of that bubble.

You're not describing anything relevant to the *language*, you're describing things relevant to the *domain*. Rust has manual memory management as well. Endianness concerns (or things like them) can crop up even in high-level languages when dealing with raw streams of data. Binary knowledge and the tricks around it can also be found elsewhere.

This is a lot like saying that an embedded programmer couldn't possibly do work on a webstack because without experience in Javascript, he'd be entirely incapable of understanding the difference between POST and PATCH, or handling questions like "what is a closure?"

Sure, jumping domains is difficult, but if you know any C-like dialect, you can more or less pick up the others to a functional point within a relatively short timespan.

Pie Colony
Dec 8, 2006
I AM SUCH A FUCKUP THAT I CAN'T EVEN POST IN AN E/N THREAD I STARTED
Don't get me wrong, there ARE people that actually specialize in a language. But that's not the right way to approach general software engineering.

You're ultimately being paid for your speciality in a problem domain. Some domains are more specialized than others (building web apps vs. building flight software). But programming languages typically aren't problem domains, they're implementation details. You need to understand why you chose your implementation, but you don't need to let it define you.

In the context of the original post, you can actually write good code in PHP. And you can write PHP for your entire career and still only need to mention PHP once on your resume. If you talk instead about how your understanding of a domain lines up with the company's needs, you will be an attractive candidate no matter what.

e: ^ gently caress i let this tab sit open for a bit and this guy steals my word

feedmegin
Jul 30, 2008

Cuntpunch posted:

You're not describing anything relevant to the *language*, you're describing things relevant to the *domain*. Rust has manual memory management as well. Endianness concerns (or things like them) can crop up even in high-level languages when dealing with raw streams of data. Binary knowledge and the tricks around it can also be found elsewhere.

This is a lot like saying that an embedded programmer couldn't possibly do work on a webstack because without experience in Javascript, he'd be entirely incapable of understanding the difference between POST and PATCH, or handling questions like "what is a closure?"

Sure, jumping domains is difficult, but if you know any C-like dialect, you can more or less pick up the others to a functional point within a relatively short timespan.

I'm sorry but 'manual memory management is nothing to do with the C language' is a loving galaxy brained take. If you think 'I don't have garbage collection any more' is, just, like, trivial for someone that's always had it then you've known some very different programmers from me.

Cuntpunch
Oct 3, 2003

A monkey in a long line of kings

feedmegin posted:

I'm sorry but 'manual memory management is nothing to do with the C language' is a loving galaxy brained take. If you think 'I don't have garbage collection any more' is, just, like, trivial for someone that's always had it then you've known some very different programmers from me.

You continue to be unable to separate language from domain.

Would you hire, for an embedded C role, a developer whose sole experience was doing desktop app development with C++11?

leper khan
Dec 28, 2010
Honest to god thinks Half Life 2 is a bad game. But at least he likes Monster Hunter.

feedmegin posted:

I'm sorry but 'manual memory management is nothing to do with the C language' is a loving galaxy brained take. If you think 'I don't have garbage collection any more' is, just, like, trivial for someone that's always had it then you've known some very different programmers from me.

It’s not like you get to just forget about the lifetime of your memory if you’re in a constrained environment even if you have garbage collection.

feedmegin
Jul 30, 2008

Cuntpunch posted:

You continue to be unable to separate language from domain.

Would you hire, for an embedded C role, a developer whose sole experience was doing desktop app development with C++11?

Mate, those are two different languages.

Blinkz0rz
May 27, 2001

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

feedmegin posted:

Mate, those are two different languages.

Would you be the kind of person who wouldn’t hire a c# developer for a java position?

feedmegin
Jul 30, 2008

Blinkz0rz posted:

Would you be the kind of person who wouldn’t hire a c# developer for a java position?

C++ has RAII and shared_ptr and we are specifically discussing memory management.

School of How
Jul 6, 2013

quite frankly I don't believe this talk about the market
What exactly is embedded development in 2019? It's my understanding that "embedded" means writing code for a situation where you have very little RAM and very little processing power.

The Raspberry Pi Zero has a half gig of RAM, a 1 GHz processor, costs 5 dollars and is the size of a credit card. What situation exists today that a Pi Zero would not suffice?

minato
Jun 7, 2004

cutty cain't hang, say 7-up.
Taco Defender
A friend of mine is working on an embedded solution for a drinks fridge controller. It manages the compressor motor, monitors temperature, and is "smart" in that it'll turn off the LED lights and motor after hours to save power. It's for markets where power is both unreliable and expensive, so the aim is power efficiency. They're supposed to produce 10s of thousands of these things, and it's tendered out, so cost is a huge concern; saving $1 on a single component means saving $10,000+.

A Raspberry Pi is massively overpowered and expensive for this. The same control (and much better power consumption) can be achieved with microcontrollers that cost a few cents; but the downside is very low memory.

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


There's also a lot of stuff in robotics where you need part of a system to be in a certain place where there's no room for something as large as a Raspberry Pi (or the robot itself is much smaller).

Bodrick
Jan 3, 2009

In the unlikely event it gets outside, use full force to feign ignorance and pretend nothing happened.

School of How posted:

What exactly is embedded development in 2019? It's my understanding that "embedded" means writing code for a situation where you have very little RAM and very little processing power.

The Raspberry Pi Zero has a half gig of RAM, a 1 GHz processor, costs 5 dollars and is the size of a credit card. What situation exists today that a Pi Zero would not suffice?

Anything powered by a non-rechargable battery.

Phobeste
Apr 9, 2006

never, like, count out Touchdown Tom, man

Bodrick posted:

Anything powered by a non-rechargable battery.
So in general what goes into choosing parts for an embedded system, where here I pretty much mean "this thing's job is something other than 'being a computer'" is

- absolute cost
- cost/performance ratio
- supply chain concerns and quality concerns at scale
- battery performance, even rechargable (because you don't want to charge it every two hours)
- availability of specific peripherals required by the domain
- availability of manufacturer support
- physical space requirements, not just for the soc or som's footprint but also its on board support hardware

Sometimes that calculus drops you into a zone where you're going to have a couple gigs of memory (but sometimes that's because you need a couple gigs of memory, for instance streaming high def video, and memory concerns are right back in force); sometimes it drops you into The Zone Of Pain involving pics or psocs; sometimes you want a cortex-m or something.

You'll notice that I used a pretty broad definition of embedded programming and that's because it's a really broad field! And that's really what defines an embedded programmer: experience with resource constraints and weird peripherals and terrible runtimes and compilers not because they're always going to be using a device that only has an assembler for an asm dialog with syntactically significant whitespace, has so little storage that you have to trade off string support and built in math constants, and has so little ram that you have to have a week of meetings about whether you can justify using a long but because you often end up using something that has some weird restriction, and understanding that these restrictions exist and how to handle them when they do pretty much only comes from experience.

edit: oh I also want to emphasize that this doesn't necessarily mean embedded development is harder, I'm not one of those annoying embedded supremacists that sneers at memory management. The challenges are just very different. You don't care about scaling to thousands of connections or making your content easily-CDNable, you care about instruction cycles so you can sleep long enough to eke that last 10 microseconds out of your average sleep time that will push your battery life under average load from 20 hours to 24 and hit your design goals. I agree with tactlessbastard that this makes it a different specialization but I think it's less "welder vs carpenter" and more "cabinetmaker vs house framer".

Phobeste fucked around with this message at 23:08 on Sep 22, 2019

csammis
Aug 26, 2003

Mental Institution
As an embedded firmware engineer I almost replied to the question about when you need embedded programming but then I realized I didn’t know how!! to answer.

Doghouse
Oct 22, 2004

I was playing Harvest Moon 64 with this kid who lived on my street and my cows were not doing well and I got so raged up and frustrated that my eyes welled up with tears and my friend was like are you crying dude. Are you crying because of the cows. I didn't understand the feeding mechanic.
I've been at a job I like for a year, but I think I'm underpaid. Seems like the market has gone bonkers recently in my area, and I'm getting linkedin messages about openings several times a day, most of them touting much higher salaries than mine. Is this a legitimate reason to ask for a raise? Or should the argument generally be performance based?

School of How
Jul 6, 2013

quite frankly I don't believe this talk about the market

minato posted:

A friend of mine is working on an embedded solution for a drinks fridge controller. It manages the compressor motor, monitors temperature, and is "smart" in that it'll turn off the LED lights and motor after hours to save power. It's for markets where power is both unreliable and expensive, so the aim is power efficiency. They're supposed to produce 10s of thousands of these things, and it's tendered out, so cost is a huge concern; saving $1 on a single component means saving $10,000+.

A Raspberry Pi is massively overpowered and expensive for this. The same control (and much better power consumption) can be achieved with microcontrollers that cost a few cents; but the downside is very low memory.

The Pi Zero is $5, and that's retail. If you order them in bulk you can probably get them for a few bucks less each. It also draws as much power as a USB mouse. The compressor that cools the fridge in a drinks fridge draws probably orders of magnitude more power than a USB mouse. Why would a Pi zero be overkill?

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

The PI zero would work fine for that application and might be a good choice for a lower quantity or prototype. There aren't any guarantees they are going to keep making the PI, but a custom design you can have made whenever. You can get EOL guarantees on the parts if you want. For a 10k piece run, buying a PI is more expensive than the parts that make it up. And you likely don't need half of them. I don't think you can buy the PI pre-programmed.


e: A PI Zero is overkill for this application, you could do it with much, much less capable devices. But overkill can be ok.

taqueso fucked around with this message at 00:27 on Sep 23, 2019

School of How
Jul 6, 2013

quite frankly I don't believe this talk about the market

taqueso posted:

There aren't any guarantees they are going to keep making the PI, but a custom design you can have made whenever. You can get EOL guarantees on the parts if you want.

The PI zero website says they will be in production until at least January 2026. Even if the Pi Zero goes out of production, it's just a tiny linux computer. You can just substitute in a competitor board, and the only thing that has to change is the way you copy the image onto the board during installation. The actual app don't actually have to change.

quote:

For a 10k piece run, buying a PI is more expensive than the parts that make it up. And you likely don't need half of them.
Still, it's just 5 bucks. What product can't afford to cost an extra 5 bucks? Using a Pi, you don't even need a fancy pants "embedded developer". You can just use any ol' javascript developer, which also saves you money.

quote:

I don't think you can buy the PI pre-programmed.
The PI uses microSD card for memory. Pre-Installing software on the Pi just means mass copying a bunch of SD cards. You can hire a few high schoolers for minimum wage to copy 10K SD cards and they can probably finish in a few days.

The Fool
Oct 16, 2003


Yes, $5 per unit + JavaScript + hiring high school students screams production ready to me.

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


csammis posted:

As an embedded firmware engineer I almost replied to the question about when you need embedded programming but then I realized I didn’t know how!! to answer.

I was thinking of taking this route. I regret doing otherwise.

For some reason I'm reminded of this:

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

School of How posted:

The PI zero website says they will be in production until at least January 2026.
Nice.

Adbot
ADBOT LOVES YOU

minato
Jun 7, 2004

cutty cain't hang, say 7-up.
Taco Defender

School of How posted:

Still, it's just 5 bucks. What product can't afford to cost an extra 5 bucks?
Because, as I said, this contract was under tender. If they can do it with a $0.05 microcontroller vs a $5.00 one for a 10k piece run, then their tender price is significantly lower than any competitor who decides to use a Pi.

And while the Pi has low power requirements, a minimal microcontroller has even less, which is important for that environment where power to the fridge may be unreliable; the microcontroller can be more easily powered by a backup battery or even a big capacitor when the mains power goes out.

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