A Programmer’s Oath? Maybe not…
May 09, 2019
One more episode of Joshua solo before we have a number of guest hosts and the return of Kel as a regular co-host! Today Joshua rants a bit about the expectations of the industry and how it affects newer developers.
-
00:02
Joshua
Welcome to Getting Apps Done. A mostly non technical podcast with the goal of helping you deliver software.. Because if you didn't ship it, it didn't happen.
-
00:15
Joshua
Hey folks, so.... I read something on Twitter today that caught my attention. Somebody posted a programmers oath. Now I don't have any problem with that as a theory. There are lots of oaths that have a lot of weight behind them that do help people produce better things and do better things and that's great. Except this one, I think it was completely unrealistic and I think it missed a point.
-
00:39
Joshua
What this person proposed was that the programmer's oath should basically amount to, I will never release code that isn't better than the last release.
-
00:48
Joshua
Now there are a couple of big problems with this that I think are problems throughout the industry that causes a lot of problems for new developers in particular, but all developers in general. First off, better isn't objective. It's subjective. Better for you might not be better for me. In fact, it could be worse for me and what's better for me isn't necessarily better for anybody else.
-
01:10
Joshua
So saying that you're going to make something better than the last time is really difficult. And in most cases, particularly when we are talking about software that is going out to lots of people, you might actually make it better... For a handful of people... And worse for another handful of people, and that's just the way it goes. That's not necessarily a good or a bad thing. That is just the way it is. Now, if you're making it worse for everybody, okay, yeah, that's bad. We shouldn't be doing that. We should be trying to make it better.
-
01:37
Joshua
The other problem I have with this is it's just completely unrealistic. Even if you know exactly what's going to be better for everybody under the sun and you strive to do that, sometimes you're going to fail. You're going to bomb because it happens. It happens to everybody.
-
01:52
Joshua
You can go out and you can ask any successful developer or accountant or solicitor (lawyer), whatever, they're all going to say at some stage they failed because that's just the way it works. Sometimes you don't get everything just right. Sometimes you'll get part of it right and part of it wrong and that's normal. That's okay, that's good because that's how we grow. That's how we learn. That's how we improve things. And to say that we're never going to do that just sets us up for disappointment, failure and all the things that come along with that.
-
02:22
Joshua
And this is something that I think is really important because a lot of developers... I've been speaking to a lot of developers and Kel has as well, particularly new developers struggle a lot with anxiety. They struggle with this concept of whether or not they're good enough to do what they're doing, whether they're smart enough to be developers in the first place, and most of it that I've seen has been completely unfounded.
-
02:46
Joshua
The people asking me, "am I good enough to be a developer", are already developers. They just haven't realized that there are already developers that are building software. That's probably more complex than Facebook was when it started to be a success. And there's this expectation from them, from companies, from the industry that for whatever reason as juniors they should be able to build something better than Facebook. What is that? I don't understand that at all from any aspect of that.
-
03:12
Joshua
And in a lot of ways I feel very, very lucky that I started development when I did because 20 some odd years ago it wasn't anything like it is now. Programmers were kind of a rare breed or they were... We were the stereotype. Everybody thought we lived in basements and didn't talk to people...
-
03:29
Joshua
And there was only so much we could do. The weren't as many resources. There weren't as many options and in a lot of ways while we thought it was bad at the time it was really great because we didn't have a lot of decisions to make. We didn't have a lot to stress over. You picked the one thing that you were interested in because it matched closest to what you wanted to do and you got on and you learned it because there were only a handful of resources anyway, so you just got on with it.
-
03:53
Joshua
Now just getting started, there are so many different options. Do you do front end? Do you do backend, do you do web apps, do you do mobile, do you do desktop? Do you do AI, machine learning, whatever. There are so many different options just at the start to decide what you're going to do if you're going to be a developer.
-
04:12
Joshua
Then once you decide something or you start to go down a couple of different paths to experiment, the sheer volume of resources that you have available to you, which seems like it should be a really great thing. Having tons of stuff available to help you seems like it should be good, but then you've got another decision to make.
-
04:27
Joshua
Which resources should I pick and which ones are right? Which one's wrong? Particularly because a lot of software development is very opinionated and what one person says may not be with the next person says even if they're both completely right, but for a new person they have no idea that both can be completely right at the same time. And that's scary. It's daunting. There's just a lot of stuff out there to try to figure out.
-
04:48
Joshua
And then you add in this expectation that they have to know all this stuff to be valuable. Now that word I think is the key thing there. If a developer is going to swear some kind of oath... What I would prefer, they swear, instead of saying that they are going to always make it better than it was last time, I would prefer that they say that they are going to strive to always provide value.
-
05:12
Joshua
Because when it comes down to it, that's what we're doing. When we build software, we are attempting to use our technological knowledge to provide value to other people or ourselves even, but the idea is we're providing value to people. We are making their lives easier. We're giving them the opportunity to do things that they couldn't do before. We are changing the way they see things for the better.
-
05:34
Joshua
That's what we're trying to do and as long as we are striving to do that, I think that's good enough. I don't think we need to be perfect. We don't need to know everything. We don't need to always make it better than it was last time for everybody because we can still provide a lot of value without doing that.
-
05:51
Joshua
We can provide value to a handful of people that can provide value to a particular niche. We can provide value to ourselves, to our friends, to our family, to our company, our employers, our employees, our coworkers, to lots and lots of people without it being perfect and being better for everybody.
-
06:08
Joshua
And that's great. I, that's what we are all looking for is value in life, value in purchases, value in the things that we use and the tools that we choose. That's what we're looking for in life and that's what a software developer can provide. And a lot of these junior developers that I've been talking to are already in a position that they can provide a huge amount of value and they don't realize that and they're not looking at the value they can provide today. They're looking at what they think other people and companies want them to provide and they're getting stuck.
-
06:41
Joshua
They aren't allowing themselves to get out there and just get on with it. I mean, I'll be honest with you, the first paying job I had was to build a website. At the time, html probably only had about a dozen different tags. I only knew about half of those and I didn't really know what they did.
-
06:59
Joshua
I did know what the <BLINK> did though. And I knew not to use it....
-
07:02
Joshua
Uh, but in all seriousness, I was nowhere near prepared for a software development career. But I provided value to those people and that's all they were looking for. They didn't care if I knew C++ inside and out or C inside and out or Cobol inside and out. They didn't know if I knew html inside and out. All they wanted to know was that I could get the work done that they needed done and provide value to them, and I did and it worked and they paid me for it.
-
07:32
Joshua
And that was the first time I realized, actually, this is something really great for me personally and this is what I want to do. It took me a long time to go from that stage to where I am today, but all along the way, I was providing value for different people.
-
07:45
Joshua
Maybe more value today than then, but realistically they had a need. I filled it. That's no different than customers who come to me today have a need and I fill it for them because they're looking for value and I'm providing it. The level of value is kind of irrelevant as long as there's a need for it.
-
08:02
Joshua
Which is another thing that I've been seeing a lot is that everybody's talking about junior versus senior developers and the path to becoming a senior developer. And first off, that winds me up a little bit because I see all these things advertising some course that will make you a senior developer. I'm sorry. No course under the sun is going to make you a senior developer unless it makes you go out and spend the next three or four years developing software for clients because the reality is senior means that you have experience, you need experience to have experience. That's just the way it works and the fact that people are profiting off that does slightly annoy me.
-
08:34
Joshua
But I also don't think we need to all be striving to become senior developer straight away because junior developers can provide value. Regular, plain old, not junior, not senior developers provide value. In fact, I would say that's probably the largest group of developers out there. So they're providing the most value.
-
08:52
Joshua
Senior developers provide a level of value and in fact, to be honest, a lot of it has nothing to do with code. It has nothing to do with programming. It's all the soft skills around the code and the programming that help them align that. And again, they are the ones who are identifying value and how we can provide value. And that's why it's good to strive to become a senior developer. Because again, we're looking to provide value and being in that position, having that experience allows you to do a better job of that, but it's not absolutely necessary.
-
09:23
Joshua
You can still provide value. You can rely on others to help you find what value you can provide. You can work with a team that together, combined, you can find those pieces of volume. There are so many different ways to do this. You don't need to be a senior developer. You don't need to be perfect. You don't need to always release something that is better than last time, because it's just unrealistic and it's setting yourself up for failure.
-
09:46
Joshua
That's all I've got today. I told everybody this might be a little, slightly ranty podcast episode, and it might've been, so thank you for bearing with me.
-
09:55
Joshua
I will put some transcripts up at gettingappsdone.com. Please be sure to check out my website at joshuagraham.info. Check out Kel's website at piffner.com And if you've got some feedback or you have some opinions on whether or not you think we should be producing better software or if we should be producing value instead or attempting to produce value, please drop me a note. I'd love to hear from you. I'd love to chat. Until next time. Thanks for listening.