Hey, this is the Daily Overpass!
My name is Eric and I make apps!
Now today, I want to talk about hardware guys and software guys.
Okay, so I have a little confession to make.
I don't know very much about hardware.
So, I've been a software developer for nearly 20 years.
God, 20 years!
I can't even believe I'm saying that.
That's like longer than some of you, guys, have ever been alive!
But I've been like a software developer for the last 20 years and whenever somebody asks
me questions something hardware-related, I usually fumble about, trying to sound I know
what I'm talking about but I don't.
Coz I'm always been more concerned with the software side of things.
Like to give you an example, a couple of weeks ago, I was stopped by a neighbor when I was
getting into my car, just coming in to work in the morning, and one of the neighbors stopped
me.
"Oh yeah, excuse me."
"Uhm, Yeah?"
"Your name is Eric, right?"
I said, "Yeah, we've met like four times before, I'm just -I'm not very memorable."
"Yeah, yeah.
So, Eric, you're a computer guy, right?
By the way, they've spoken with an English accent if you're wondering, but I can't do
that.
"Yeah, so Eric, you're a computer guy, right?
I said, "Yeah..."
"Yeah, so we're thinking about buying a new computer and we're wondering what can you
recommend like what's the best computer to buy?"
And I thought, and I said, "I'm more of a software guy than a hardware guy.
I'm probably not the most qualified person to say that."
And he thought, to him I'm just a computer guy.
So he just - he just ignored that question and started to asks questions like you know,
"Is it better to get 4 gigabytes of memory or 8 gigabytes of memory?"
And I'm thinking, "8 gigabytes of memory?"
(laughs) You know, 8 is more than 4 so I'm like - but I'm like I'm trying to get out
of the conversation, I don't want to show my ignorance in this area.
It's really hard.
Lots of times I'll talk to people and they'll say "How many courses is this program running
under, you know, using A-course or 4-course..."
Dude, I can't tell you.
Well, I code to the API and I code to the platform that I'm on.
So, when I started learning software development, it was like Visual Basic 5, 20 years ago.
Visual Basic 6, C# (C-sharp), and then JavaScript, then all the other platforms there, or mobile,
also Java and everything like that.
We're always coding on top of the platform.
And Java coding on the virtual machine which by very definition, it's not the actual machine.
As opposed to like C developers, C++ developers, those guys are really close to the metal.
They're thinking about releasing memory, allocating things here and there, they're like really
like low-level, very clever and in fact, I've never been very good at either of those languages.
From time to time we work with those kinds of developers because we do mobile applications
that connect with devices for clients via Bluetooth or Wifi, and I'll meet the developers
of those platforms.
They're the hardware guys.
So they're writing things, they're thinking in terms of battery usage, We want to make
sure we don't drain the battery too quickly, we need to send this amount of bytes, we could
just squeeze a little bit of data in there.
If we could just squeeze this in there.
And it was like they don't wanna fizzle out the machine and everything, which as a software
developers, we use the platforms that we do.
We're very spoiled in that- in that sense.
We can just - we could almost do whatever we want.
And when I talk to the C guys, they say, "Oh, mobile development, that must be very difficult.
And I say, "Uhm, I think what you, guys, do is probably harder."
I really do.
Coz we have all these APIs to use and we don't really have to think so much of the hardware.
Oh, what we do to a certain extent like if you're testing a mobile app, you should test
it with the worst phone you have.
You don't test it with your newest phone because you want to go with the lowest common denominator.
Same as if you're doing a website, or something like that and you want to throttle down the
bandwidth so you could see how it perform to the lowest so you reach the widest audience
possible.
So, if you're doing an Android app, you want to get that old nasty phone that you have
from 3 years ago, and try that out 3, 4 years ago, try that on the lower version of Android.
Just make sure that it works there coz you know that the faster process it should - it
should work a lot better.
But today I just want to create that distinction coz a lot of times I'll tell people that and
they're surprised.
You know, I don't really know a lot about hardware., I'm a software guy.
And software guys, we can make mistakes and we just switch it around.
One of the clients we're dealing with, they were saying how they were surprised flexible
we were with the code.
They say, "Can you change this?
Is it too late to change this?"
And I say, "No.
We can change it.
It's not that difficult.
We just swap some things around."
When they do hardware work, that's expensive.
They make a mistake in hardware, that's to specify everything exactly upfront because
when they saw mass-producing these stuff, that can get really expensive.
They freight things out, they make big mistakes.
These hardware guys - software guys, "that's pretty easy."
So, my question to you, guys, are you a software guy or a hardware guy?
Or are you the unicorn who's both?
I wish I could be both.
I used to build my own computers back in the day like buy all the components and everything
like that, and set everything up.
But for the last 10 years or so, I haven't really worried about it.
I'm more thinking about the APIs when new platforms come out, when new frameworks come
out, that's when I learn levels - I'm several levels above the machine but you know...
How about you, are you fascinated by the hardware or the software side of things?
Anyway, that is it for today.
I will talk to you, guys, again tomorrow!