Learn Python with Talk Python's 270 hours of courses

#231: Advice for freelancing with Python Transcript

Recorded on Wednesday, Sep 11, 2019.

00:00 Have you ever wanted to get into consulting? Maybe you're seeking the freedom to work on

00:04 whatever project you'd like or gain more control of your time. Many folks see consulting and

00:09 freelancing as the next step in their career, but what do they need to put in place first?

00:13 What are the challenges they might not see coming? Join me as I speak with Reuven Lerner and Casey

00:18 Kinsey, two successful software freelancers, about their journey and their advice. This is

00:24 Talk Python to Me, episode 231, recorded September 11th, 2019.

00:28 Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the ecosystem,

00:46 and the personalities. This is your host, Michael Kennedy. Follow me on Twitter where I'm @mkennedy.

00:51 Keep up with the show and listen to past episodes at talkpython.fm and follow the show on Twitter via

00:57 at talkpython. This episode is brought to you by Linode and Brighter AI. Please check out what

01:03 they're offering during their segments. It really helps support the show. Reuven, Casey, welcome to

01:07 Talk Python to Me. Thank you. Great to be here. Hey, how's it going? Hey guys, it's super to have

01:12 you here. This is the topic I'm really excited to cover because it touches on these things that you

01:19 can do to sort of take your career to the next level, which is always something I'm really,

01:23 really excited about. We're going to talk about freelancing, getting into consulting, some of the

01:28 things that you want to do, some of the things you want to avoid, all that kind of stuff. But before we

01:33 get into those, I want to ask you two questions, but not the two questions I normally ask folks because

01:37 there's a different commonality here. So let's start with both of you talking about your podcast

01:44 that you run. I think they're pretty relevant to the conversation. So Reuven, you want to kick us off?

01:49 Tell us about the Freelancer Show. Sure. I'm one of the panelists, I guess I could say the lead host,

01:54 lead panelist on the Freelancer Show. I've been doing it for about four or five years.

01:57 And it's basically a weekly panel discussion, plus occasional guests talking to people about

02:02 how do you create a freelancing career? That's to say, a lot of people are, especially people listening

02:06 to this podcast right now, are excellent at programming. But in order to be a successful

02:11 freelancer, you need to actually have a lot of business skills too. And so we try to talk to people

02:15 about everything from marketing to support to good clients to bad clients to finding a niche and so

02:22 on and so forth so that you can have a successful business, not just be good at technology.

02:26 That's really cool. And I've listened to some of the episodes. I do enjoy it and I'm subscribed to it.

02:30 It's a good one. Now, just to set the stage for us to set the perspective here, maybe just quickly

02:36 define what freelancing means to you guys.

02:38 Oh, wow.

02:39 Is it just straight consulting? Is it like if I worked for a consulting firm, am I a freelancer?

02:45 Like what is the, am I personally a freelancer running my own software business? Probably not,

02:49 right? If I'm an employee, I'm probably not. Where would you put that?

02:52 I would say yes.

02:53 You'd say yes? You think I am?

02:54 Yeah. I mean, I'd say if you are a business owner, that's a small enough business and yours is,

03:00 as is mine, then I'd definitely call you a freelancer. I mean, there's so many different terms like freelancer, consultant, contractor, and I tend not to quibble

03:09 over the differences too much. I think if at the end of the day, you get to decide what projects

03:14 you're working on and you're not reporting to a boss who tells you what to do, I'd put that roughly in

03:19 the freelancing camp.

03:20 Awesome. Nobody can tell me what time to be somewhere or what to wear. It probably puts me in there.

03:25 And I'm still employed. Casey, how about you? Tell us about your show.

03:29 Yeah. Well, first, thanks for the special treatment, getting questions differently for us.

03:34 Yeah. I don't make this up for everyone. I just wanted to let you know this is special.

03:37 We run a show. So I run a consulting firm, software development consulting firm,

03:42 and our engineering team produces a podcast called Friday Afternoon Deploy,

03:47 which is tongue in cheek for the thing that we should never do, but often find ourselves doing,

03:52 the point code on a Friday.

03:53 Push deploy, go get a beer, what could go wrong?

03:56 Exactly. Many things, it turns out, which is often a topic of the show, but it's aimed at developers.

04:03 We talk a lot about Python on that show because that's our main backend language here at our company.

04:08 What's your company name? Just so people know what it is. Can you say?

04:11 Lofty. Lofty Labs. And yeah, so we talk about how we build apps, web development, and mobile app development,

04:18 and really just kind of capture what you would maybe call the water cooler type conversations that happen around our office.

04:26 So it's aimed at other developers. It's a point of catharsis for us where we can lament the terrible things that we shipped to production that week

04:34 and the joys of client services and all those sort of things.

04:38 It's a lot of fun. We've been doing it for almost a year now.

04:40 Yeah, that's a good show as well. Very cool.

04:42 And maybe each of you could just tell me what you do day to day so folks know where you're coming from.

04:47 Casey, you want to start with you?

04:48 Sure. So I'm the CEO here at Lofty, which means a lot of different things.

04:52 We're still a pretty small company. We've got about eight people.

04:55 And so my job changes every day.

04:57 But ultimately, this company is the incorporation of my freelance business.

05:02 So I incorporated as a freelancer and then just naively stumbled into accidentally overbooking myself and hiring people.

05:11 That's kind of how we got here.

05:12 And so today, I still write code occasionally.

05:15 I try and keep myself out of the project work to build a more sustainable business.

05:19 I do a lot of work on sales, marketing, vision, going out and promoting the company and those sort of things.

05:25 But I don't know. I wear a dozen different hats.

05:28 Sounds like a super cool job. Yeah.

05:29 It can be for sure. There's a lot of stuff going on.

05:32 So I find a hat and go, oh, this is a full-time job now.

05:35 I'm going to hire someone to do that and I'll have less work to do.

05:37 And then I just find that there's a new job that I have to do.

05:39 So that's my job. I hire people and then find out that I have 10 new jobs every time I do it.

05:44 Yeah, I know how that goes. Super cool.

05:47 Ruben, how about you?

05:48 I've had my freelancing business for about 25 years now since 95.

05:51 And I started off doing coding and projects, a little bit of consulting.

05:56 And I was always doing some training as well.

05:59 And I was in a variety of different languages and technologies.

06:00 And it was probably about 10 years ago that I said, you know, I really should concentrate on one thing.

06:05 And I really love the training most of all.

06:07 And there's tons of demand for Python training.

06:10 Why don't I just do that?

06:11 And so nowadays, most days, most weeks, most months, I'm in a different city, different country, different company doing Python training.

06:19 Everything from Python for non-programmers to advanced workshops.

06:22 And that's most of my time.

06:24 But I also have a bunch of online courses that I'm increasingly selling, including some video courses.

06:28 And then weekly Python exercise, which you'll be surprised to hear involves a weekly Python exercise.

06:34 Man, you named that so well.

06:36 Truth in advertising and or lack of creativity.

06:39 They go ahead and hand.

06:40 And the idea is like to keep people fluent and improve their practices.

06:44 Cool.

06:44 So you both have a lot of experience in this.

06:47 And you've walked the walk.

06:49 And I think one of the interesting themes here is like, so I want to quit my job so I can go write all the code I want.

06:55 And it turns out there's all these other things that have nothing to do with code that you have to figure out.

06:59 So we're going to have a fun time digging into those, right?

07:02 That's the great irony of it.

07:04 So we talked a little bit about what is freelancing.

07:08 You know, I'll throw this out to both of you.

07:10 We've seen on the TOB indexes and we've seen the Stack Overflow article, the incredible growth of Python.

07:17 And we know that Python is growing in very large ways at large.

07:22 But if I have some Python skills, how does that translate over to freelancing?

07:28 Is Python a good space to be in?

07:31 I know like if I did say .NET, I could walk up to like an enterprise customer and say, hey, I want to do consulting with you.

07:37 And they would probably take that because those are both places that use that technology and they're willing to pay tons of money to solve problems because they have like large businesses.

07:47 What about Python?

07:48 I definitely think it is a good space.

07:51 And it's part of that.

07:52 Part of that's that growth, right?

07:53 That Python's been taking off.

07:55 And a lot of that growth comes from it's taking off in a lot of different industries.

08:00 I think that makes it a pretty marketable skill set, right?

08:03 Because being a quality Python developer is applicable in the work that we do in web-based software, cloud platforms, those sort of things.

08:14 But this huge shift in data science and AI towards Python has opened up.

08:21 There's a ton of opportunities on that side, whether that's predictive analytics or business intelligence or just a lot of things like that.

08:29 There's a lot of great DevOps tools built on or working with Python.

08:33 And so because of that, I think that it's a pretty broad market.

08:37 And I think that may be different from specifically some other programming languages that are a little more purpose-built to singular purposes.

08:45 Say PHP.

08:46 Like Swift, for example.

08:47 Or PHP, right?

08:49 Where you're definitely building for the web with that.

08:52 Python's applicable.

08:53 And so you won't find an enterprise company out there that's not doing some Python work too.

08:57 True, they've got big .NET teams.

08:59 But they've got business intelligence teams and analytics teams.

09:02 And not necessarily in their software product development.

09:04 But there's Python going on everywhere.

09:06 You know, one of the things that struck me as you were speaking, and I totally agree with what you were saying there, is if I'm doing C++ or if I'm doing Java, let's say,

09:16 what it means for me to be an expert in that technology probably is hard to achieve.

09:23 There's probably people that have been doing that for 15 years, and they're just really good at it.

09:28 And how am I going to go, well, I've been doing this for three.

09:30 You should hire me instead.

09:32 Sure.

09:32 Right.

09:32 Like, that's a hard sell.

09:34 But there's so many new things in Python that nobody has been an expert for 10 years in TensorFlow.

09:40 In the web space, there's so many new modern web frameworks.

09:45 Jason Knight, Jopranto, et cetera, et cetera.

09:47 These are a handful of years old, maybe.

09:50 No one has been an expert for many, many years on these things.

09:52 And so I feel like you can maybe break in as a specialist in some area easier because of that.

09:58 So just to go back to something that you had said before, Michael, like, you know, if you're a .NET developer, you can go to these enterprises and, you know, they're looking for people to solve their problems.

10:06 The key thing is they're looking to solve problems.

10:08 And increasingly, these companies are increasingly like they're using Python to solve those problems.

10:13 They're saying, well, we could use .NET.

10:14 We could use Java.

10:15 But we want to use Python for a whole variety of reasons.

10:19 And so, yeah, I mean, Python is a great space to be in.

10:21 But I don't think you're going to get that far just being a Python expert or a technology expert.

10:27 You want to be an expert in solving some kind of problem.

10:29 That just happens to use Python.

10:31 That's a really hard mindset for a lot of programmers to adopt.

10:35 Like, I'm going to go, I'm going to use Python really well to analyze log files.

10:39 I'm going to use Python to do the DevOps and make the servers run more smoothly.

10:44 And when you're solving these problems and you're saving these companies money, truth be told, they often couldn't care what technology you're using.

10:50 And you'll be able to find a company that wants to use Python to solve them and will be delighted to have you come do it.

10:55 That's a really good point.

10:57 Yeah.

10:57 They might not even care, right?

10:58 I guess it depends on how much they integrate into their larger systems.

11:03 You know, but knowing how to scale websites or how to create proper databases with indexes so it doesn't take five seconds to load your stupid web page, right?

11:12 Like, why does that ever happen?

11:13 So, you know, those are skills that don't necessarily have to do specifically with Python, but you have to learn them.

11:20 And then you don't even get started on the web, right?

11:22 There's like five other languages you got to know.

11:24 Right.

11:24 HTML, CSS, JavaScript, some variant, maybe TypeScript.

11:29 I don't know, right?

11:30 Yes.

11:30 And I agree with what Ruben's saying because the more that you align yourself with a label like that, and Michael, you mentioned, you know, you can specialize in a framework and be a specialist there.

11:41 And that can definitely work and work well for your business.

11:44 However, the more you position yourself as specifically that, you are putting a shelf life, right?

11:52 Because you're like you mentioned, like these new frameworks are coming out rapidly.

11:55 And so the more that you can differentiate yourself as a problem solver or a solver of a particular type of problem, rather than a person who wields a specific tool, you're no longer bound to the shelf life of that tool.

12:10 And particularly in like front end web development is a great example.

12:14 Like those tools don't have that long a shelf life and you'll be constantly reinventing your positioning to keep yourself in business.

12:20 Right.

12:20 We just changed our domain name from consultings for Angular to consultants for Vue.

12:25 Exactly.

12:25 We lost all of our SEO and all of our customers.

12:28 Something you talked about that I think is really interesting and I want to dig into a little bit is mindset.

12:34 You can definitely go the freelancing route as an expert in some technology, like the world's expert in CSS, the world's expert in caching, the world's expert in something like that.

12:43 But even unless you are the world's expert in one of them, you're going to be seen by your potential clients as like what's sometimes called staff augmentation.

12:52 You are doing a technical job and they could hire someone to do it, but they're going to hire you and they give you decent consulting rates for it.

13:00 But that's because you're working with the technical team and you're seen as an addition to that.

13:03 But if you're solving high level business problems, saving them lots of money, helping them to achieve their goals, then you're going to be dealing with people at a higher level at the company and they will pay you appropriately.

13:13 Yeah.

13:14 And you probably get the type of outcome that you were looking for in the beginning.

13:19 Right.

13:19 If your outcome is I want more freedom, I want more autonomy, I want to choose my projects, I want to sort of be my own boss.

13:27 You're not going to get that by just being like staff augmentation, as you pointed out.

13:31 Right.

13:31 That's right.

13:31 And I mean, I'll go even further.

13:32 Like, so when I do training, I'm not dealing with the technical teams and their budgets.

13:37 I'm dealing with the HR department or that sort of department, the training department and their budgets, which are wildly different.

13:44 And I might add different in like better for me.

13:47 And then like the two don't have anything to do with each other because they see the training as a strategic advantage for the company and for the employees as opposed to, okay, we'll just get this website out faster.

13:59 Right.

13:59 Well, and if you're talking about training and consulting, you know, maybe you sell one week course to that one team and then they're good for years.

14:06 On the other hand, if you are in the organization, you're taught the levels you're talking about.

14:10 It's like, we have a plan to move our entire company over to Python in the next two years.

14:14 We have 20,000 employees.

14:15 How do we do this?

14:16 These are not even similar.

14:18 That's exactly right.

14:19 Totally different scopes of problems.

14:21 And I don't want to dog on staff augmentation because that's like half of our business here.

14:26 So don't get me wrong.

14:27 It's a really interesting way to have a job that still gives you more flexibility.

14:30 And you probably can charge better rates than, you know, if you're just working locally at a small, I don't know, government agency in a small town.

14:37 I don't know, making stuff up, right?

14:39 There are certain benefits there.

14:40 I mean, staff augmentation type work can be a little less risky, right?

14:44 It can be a little longer term, a little safer.

14:46 When you go into that role, I mean, you kind of are a butt in a chair, right?

14:50 And that makes you a commodity, whether you like it or not.

14:54 I mean, you really are like, you're going to feel a lot more market forces on the rates that you can charge.

15:00 You're going to be, often cases in staff augmentation, you know, for like US-based freelancers, you might be in pretty strict rate competition with offshore models and things like that.

15:12 That's different when you're not doing that kind of augmentation work.

15:15 When you're working at the higher levels of the business, you don't necessarily have those same market forces that you're competing with.

15:20 This portion of Talk Python to me is brought to you by Linode.

15:25 Are you looking for hosting that's fast, simple, and incredibly affordable?

15:28 Well, look past that bookstore and check out Linode at talkpython.fm/Linode.

15:34 That's L-I-N-O-D-E.

15:35 Plans start at just $5 a month for a dedicated server with a gig of RAM.

15:40 They have 10 data centers across the globe, so no matter where you are or where your users are, there's a data center for you.

15:46 Whether you want to run a Python web app, host a private Git server, or just a file server, you'll get native SSDs on all the machines,

15:53 a newly upgraded 200 gigabit network, 24-7 friendly support even on holidays, and a seven-day money-back guarantee.

16:00 Need a little help with your infrastructure?

16:02 They even offer professional services to help you with architecture, migrations, and more.

16:07 Do you want a dedicated server for free for the next four months?

16:10 Just visit talkpython.fm/Linode.

16:13 One thing I do want to dive into is this mindset change that you have to make in order to be a good consultant.

16:21 Now, let me try to start this topic off by way of an analogy from training.

16:26 Maybe you'll connect with it, Ruben.

16:30 If you're an employee and you have some project and you have to figure out, let's say, I need to talk to a database to do something or something like that, right?

16:39 Well, in Python, we have lots of ways.

16:41 You could talk to it through DBAPI2, just direct SQL queries.

16:45 You could use SQLAlchemy or one of the other ORMs.

16:48 You could say, I'm going to use a different database like Mongo and then use an ODM or talk directly to it.

16:53 So there's all these ways in which you could solve your database problem, right?

16:55 As an employee, if you find one way that works, you're good, right?

17:00 Your project is now beyond that step.

17:02 You're talking database.

17:02 The next thing you need to do is add the next feature.

17:05 As a trainer, if there's a way to talk to it directly with SQL, use an RM and all these other things, you need to know all the ways, the trade-offs of them.

17:16 And you just have to have this mindset of like, it's not enough to just know how to solve this problem, but I need to know how to dive into the lower level and consider the trade-offs and consider all the things at a level deeper, I think, than if you're just an employee.

17:29 I feel like there's a lot of stuff like that in the consulting world as well.

17:34 I mean, obviously training is some flavor of consulting, right?

17:37 So what do you think some of the mindset challenges are of, say, being just a standard employee where, you know, you just go to work, you work for eight hours, and, you know, hopefully something gets accomplished?

17:48 I think there's a lot there, mindset difference, and I touch on maybe a couple of them.

17:52 I mean, you know, one thing that stands out there is, for me, common tooling was always important, right?

17:58 So solving a problem in a one-off way would work well within the confines of that project.

18:04 But if I wanted to, and this maybe is getting a little ahead and thinking more about how you market and position yourself, but if you're coming in as a consultant, you're probably from an economic basis more expensive than an employee.

18:17 And so you really need to be proving that value.

18:19 And a lot of times that rolls down in this field into time, right?

18:23 So how can I get in and solve this problem quickly?

18:26 And that's the value that I'm providing is I can get in quickly and do it.

18:31 And, you know, that may mean common tooling.

18:33 So understanding kind of how to generally abstract a problem in the particular example you gave and say, you know, what's one really great tool that I know very well that I can go tackle these kind of database problems?

18:44 This is my ORM I work with, or this is how I do these kind of things that maybe gives you a speed advantage that gives your customer margin, right?

18:52 Is maybe one example.

18:54 So I'm sure that most programmers know, like have had this experience of a non-technical friend or family member saying, I can't figure out how to do X.

19:04 And you as a technical person are like, well, I really don't know anything about X.

19:08 I can't help you.

19:08 And they say, well, just try.

19:09 And you walk up to the search screen and you type something to Google and bam, you have found the answer.

19:15 And they're like, see, you did know about it.

19:17 And you're like, no, no, I really didn't.

19:19 And everyone might be right there.

19:21 The thing is, because you have a background steeped in the right way of phrasing questions, you can find the answers more quickly.

19:28 And so I always, when I was doing consulting projects, I would say to my clients, I'm probably going to have to spend some time, a third of the time, a quarter of the time learning new stuff to know how to do what you need or learning new technologies or finding the best way to do it.

19:42 But I'm still going to be able to do that faster than someone who doesn't have experience because I have this accumulated knowledge.

19:48 And I know what questions to ask and how to parse the answers quickly.

19:51 And the same is also true in my training, right?

19:53 So very often people ask me questions I don't know the answer to.

19:55 And I then use it as an opportunity to learn new stuff, explain it back to them, and then I incorporate it the next time around.

20:02 And so I'll never claim that I know everything, but I'll claim that I can like figure it out because of the experience faster than sort of the average person.

20:09 Yeah, it's true.

20:09 as a consultant and as a trainer, you spend a lot of time getting up to speed on something that you

20:15 maybe are not an expert at. And so you have this polished skill of just how do I just learn this

20:22 thing and make it work, right? And it's, you know, everyone in technology has to do that, but you do

20:27 that on a weekly basis, probably, right? And Casey, you know, it's like people come to you guys and

20:33 like, Hey, we have this project. It's kind of like stuff you've done before, but there's this whole

20:36 different angle that you maybe have never touched. And so it's probably similar, right?

20:40 Totally. I mean, we have clients come in and bring us a project and we know exactly what

20:45 kinds of technology we might use, but we don't necessarily have any domain knowledge of their

20:51 business or industry, right? And so that's the part that we have to get up to speed and apply it.

20:56 And to go back to what Ruben just said, you know, the engineers in our team are sitting in that

21:00 consultant role for our clients. And I remember in the early days going through some of our

21:06 our billing logs and going to some of our consultant engineers and saying, Hey, why didn't

21:10 you bill for that time? And they said, well, I didn't really know the answer to the problem.

21:15 So I had to do some research and I said, Whoa, here's, and this is something we tell everybody

21:19 when they start here. Now we're not necessarily getting paid to know the answer right off the

21:25 top of our heads. We're getting paid to solve the problem. And part of the solving problem is

21:30 knowing how to find the answers to questions. We don't know that bookends really nicely.

21:34 And what Ruben just said, because we actually see that. And that is a good example of that

21:39 mentality, not sort of intrinsically being there for people that go into consulting of like, well,

21:45 I wasn't actually writing code. Therefore that time wasn't billable. Like, no, no, no. But the

21:49 process of working that out and working through it and crafting that beautiful Google search query

21:54 that dug up the result on the first page is a skill. And that's, that's precisely what we're

21:59 being paid to do. So I think that's another great example of the mentality.

22:02 That's a core foundation of problem solving. Let me tell you a really quick story. I just

22:07 recently hired somebody in a halftime consultant role for doing some integration, single sign on,

22:14 that kind of stuff with my courses. Guys doing a great job. And I interviewed a couple of people.

22:19 One of the things when we were talking that was really nice was, I was like, Oh, maybe we could do

22:24 this. What do you think about working that? And I kind of described the problem or I kind of thought

22:28 some of the solutions might be. And the guy's like, that's probably not the right way. Like we can think

22:32 about it, but I actually think that's not best. Here are the problems and you should think about it this

22:38 other way. And I was just like, Oh, this guy's, he's got the job, right? If he's willing to say,

22:42 no, you're not doing it right. Like, actually, I know, know you're pretty smart, but this situation,

22:48 you should really think about this. And let me just try to guide you away a little bit. I'm like,

22:52 oh, this is the type of guidance that this is the person I want that says, not just go,

22:57 yeah, well, Michael told me to do this. So I did it right. Like, no, no, they have some

23:00 expertise that's that I need them to come help me with. Right.

23:04 Clear demonstration there of the difference in mindset of, you know, I'm here to solve the problem

23:09 and provide expertise, not necessarily to implement a task list.

23:14 Exactly. And you know, that was an interview to be hired. It wasn't like he was already hired and

23:18 then talking, he was, I could have got upset and said, no, you've got to do it my way. Right.

23:22 But of course, that's not my reaction.

23:23 There are two things that come out of that story, by the way, which I think are important for people

23:27 to realize. First of all, a lot of people who are new to consulting are afraid at that initial meeting

23:32 of giving away the store. Well, I'm not going to give away any advice because like, that's what I'm

23:37 going to be charging for. And if I give away the advice, they'll think I'm a sucker and they'll like,

23:41 not pay me for it. No, no, no. They will be appreciative of you seeing knowledge and they'll want more of it

23:46 because it can't possibly be that everything, you know, came out of that meeting.

23:49 The second thing is, if you're a consultant, you want to be working for a client who is appreciative

23:55 of that pushback. If you go to that initial meeting and you give pushback and the client or potential

24:00 client is like, actually, I'm going to tell you what to write and how to write it. Like, you don't want

24:04 to work for that person, right? You're not in the stenography business.

24:07 That's a really good point. So maybe we could talk about choosing clients. You touched on that a

24:14 little bit and even turning down work or firing clients where you feel like it's not working.

24:19 So what are some of maybe some of the red flags or the green flags? Like when you see somebody like,

24:25 I want to work with this team or that person, or I know to stay away from this time bomb.

24:30 We've got a lot of those. Red flags are a long and ever evolving list for us. But I mean,

24:38 there are some definite ones. And unfortunately, some of them may not come up until you're in the

24:43 engagement. You're actually in and doing the work. There's some red flags that come in the production,

24:47 but try and suss a lot of that out when I'm initially talking to a potential client.

24:51 I think that when you start feeling very early on in the conversation, price pressure,

24:58 it's a pretty good indication that someone's not really aligned in the value that you're providing.

25:03 Right. And if you're constantly having to defend like, yes, that's going to take some time and it's

25:07 going to take some money. You can expect that. I think if that's how the conversation is going

25:12 before you've been written a check, that pressure is only going to get stronger after the check comes.

25:17 That's kind of my mentality is like, okay, take everything that the client just told us in this

25:23 kind of initial prospecting meeting and anything that was kind of felt like pressure or prickly or

25:29 something we didn't like, expect that to be cranked up about 10x after they've actually paid you money

25:34 because it will.

25:35 Because now you're on the hook.

25:37 Yeah.

25:37 Yeah.

25:38 And they've got skin in the game.

25:39 It's not going to get better, right? They're not going to get nicer. They're not going to get

25:42 nicer and give you less pressure after you start working for them, after they start paying you.

25:46 Right.

25:47 So that's one thing we look out for is that sort of stuff. And the other thing is, I mean,

25:52 pricing comes a lot into this. And anytime that there's friction on pricing, I feel like that's

25:57 the time to walk away. If you're really having to negotiate your upfront value, right? If you're in

26:03 that conversation, you're really having to push hard, like, no, it's worth it. It's worth the time.

26:07 It's worth the money. There's probably a misalignment there on their understanding of the value that

26:11 they're getting. And that usually gets worse. I think people that have a good understanding,

26:16 you know, clients that know why they're hiring and know what that time's worth. And that's implicit,

26:20 get it. They've done the research. They've, they, maybe they've engaged with a consultant before.

26:24 I think those are good green flags as well.

26:26 Okay, cool. Reuben, what about you? What are some of your various flag signals?

26:31 Yeah, definitely the price pressure thing. Like whenever I talk to someone about doing,

26:35 I mean, nowadays doing training and they asked me what I charge and they're like, really,

26:39 really? Yeah. Can we get a special deal? You know, we're going to give you lots of work

26:44 and we have lots of content, lots of contacts. We will recommend you to lots of people,

26:49 right? At least I'm out of the business of being heard, like being told, well, we'll give you equity in

26:53 the company, which like, oh, please, you know, all these things are just basically a big, big red

26:59 flags. A good thing is, I mean, in the training business, if there is a training manager who knows

27:06 what they're doing and like how the whole game is played and they're from a large organization,

27:10 that's going to need a lot of training. Wow. That is like the best because I know that I'll be able

27:15 to come back there, you know, once every month, once every two months, once every six months,

27:18 it's like basically guaranteed income. So long as I do a good job and they're happy.

27:21 You also want to know that they're sort of just going to be easy to deal with. And that's a very

27:25 fuzzy sort of thing. Typically I'm very bad. And maybe because I'm male, maybe because I'm a programmer

27:32 or whatever, I'm bad at like feeling the vibes from a client. But when I come home and I tell my wife

27:38 about like the client I met with, she will very well instinctively be like, you do not want to work

27:44 with these people. I'm like, but, but, but she said, no, no, no, no. Like, like, listen to what you're

27:48 saying. Listen to yourself. And these do not sound like good people to work with. Also,

27:52 once someone has given you trouble, don't go back to them. Now it's very like the worst advice,

27:57 the worst advice I ever got in my consulting career was in like the first month or two of it,

28:02 where there's this lawyer I met. He said, okay, I've been in business for myself for many years.

28:06 I'm going to give you great advice. Never say no to work. Always take work. This was literally the

28:12 worst advice I've ever gotten because there's so many bad clients out there. And I actually believe this

28:17 for a while. I would just like take everything unless you like are desperate for the money.

28:21 And it does happen.

28:22 I can imagine when you're getting started though, especially if you're getting started because you

28:26 lost your job. It wasn't your, you couldn't plan ahead and build up towards it. Right. It's a tough

28:31 trade-off.

28:31 It's very hard to say no. And I'm not saying, you know, be principled and homeless, right? That is not

28:36 my, my, my plan of action here. But if you have the option of like waiting a little bit and getting a

28:43 better job and saying no to people who are clearly just going to cause you trouble, the trouble is not worth it.

28:49 You're absolutely right on that. And, and you can say that, and I'm speaking from personal

28:54 experience here. I think a lot of people have to make that mistake because people told me that over

28:59 and over and over and over. Not worth it, you know? And it's like, but when you're hungry, you have a far

29:03 less discerning palate and the best saltine I've ever eaten.

29:07 Exactly. But, but ultimately, I mean, you learn those lessons the hard way and it's hard to be trying to get your

29:14 personal business off the ground or your business and need the money, need the revenue and just like let an

29:20 opportunity pass by. You just want to get your arms around everything. But hopefully someone out there is, is less

29:26 stubborn than me and like takes that advice to heart because it really helps. But otherwise it'll

29:31 probably happen once and you'll go, Oh man, that's what everyone told me. And that box gets kind of

29:35 permanently. I get it now. Yeah. That's why they said this.

29:38 Yeah. All right. So that's kind of the red flags for getting started a lot. Although Reuben, you just

29:45 say if they give you trouble, don't necessarily come back asking for more of it. But what about firing

29:50 clients? If you find yourself in a negative situation, how do you extract yourself?

29:54 I'm very blunt about it. Like, I mean, I'll, I'll call them and I'll say, but it usually happens if

29:59 they don't pay. That makes it pretty easy. That's a pretty big red flag there. Yeah. That's easy. Right.

30:03 They don't pay. And then they say, but I'll pay you soon. And I really need more work. Ha ha. I don't

30:08 believe you. And I'm not going to do more work. And I say, sometimes I'll be blunt and say, I'm sorry,

30:13 I need clients who will pay me. Sometimes I'll say, I've got other opportunities going on and I'm going to work

30:18 with those. And sometimes like, I just, you know, won't call them back. You know, that's very rare,

30:23 but you got to fire clients. You've got incentive clients. And by the way, good clients who are not

30:29 willing to pay you as much as other clients, you have to fire them too. Not because they're bad people,

30:34 but because if I've got client A who's going to pay me, you know, something and client B is going to pay

30:38 me twice something. Client B is worth more. Nothing, no way about, you know, two ways about it.

30:43 I was personally, I'm too empathetic, maybe too empathetic to be doing what I do,

30:48 but like I let myself be a doormat in a lot of like early situations like that.

30:52 And I think that goes back to mindset. I mean, you really have to, even if you're not thinking,

30:57 oh, I'm building a business, right? It's still business, right? You still have to make sure

31:01 that you're capturing value, right? And every customer that's not paying or paying a little bit too

31:06 little is even if you like them, there's a lost opportunity cost of having someone that pays you

31:12 appropriately or on time or, you know, like there's intangible things. It's not just monetary compensation,

31:17 it's stress. I really don't like being up at night stressed about an invoice. We don't let people do

31:23 that to us very often. It's one thing when you have a great customer and it's a short-term problem,

31:28 like those things come up, but definitely firing clients for us and for me when I was freelancing,

31:32 being direct is really good. I really have to psych myself up for that phone call, you know,

31:37 like I spend some time in front of the mirror, you know? Oh, yes. Yeah. I feel like there's a lot of people who,

31:42 you know, they're programmers, they love code, they love solving problems, but they don't love confrontation.

31:48 You know what I mean? And it just seems like there's probably some thick skin that has to be grown

31:54 and some assertiveness maybe that you have to like build in yourself for some of these,

31:58 some of these conversations are just hard, right? You have to fabricate it almost. I mean,

32:02 not for everyone. I can't speak for everyone's personality. Yeah. For me, I think I would.

32:05 I'm a programmer. Like I like working with machines. I don't like working with people.

32:09 And so like definitely there's like some psych up to that, but I just, you know, make sure and kind

32:15 of tell myself and reassert to myself that I don't necessarily owe anyone an explanation, right? If it's

32:21 not good for business, it's not good for business. And particularly when you're out of the employee

32:25 mindset and you're in the consultant mindset, no one else is looking out for your best interests anymore.

32:31 Maybe they, you didn't have that many people necessarily looking out for your best interests

32:34 as an employee, but you, you surely have less now. So that's your job.

32:38 At least you had a shared interest with the people at the company, right?

32:42 Exactly. Yeah.

32:43 Yes.

32:43 At least when the company survived, it probably you should survive because you seem to be

32:47 contributing somehow or something like that.

32:49 You no longer have an advocate beyond yourself with a client. And so that's kind of my mantra

32:54 when I do that. I was like, I don't necessarily own an explanation. This isn't good for business.

32:57 We're out. And that's how I kind of handle those conversations.

32:59 Yeah.

32:59 This portion of Talk Python to Me is brought to you by Brighter AI, named Europe's hottest

33:05 AI startup by NVIDIA. They're leveraging AI to tackle the challenge of anonymizing video

33:10 streams to seamlessly replace things like faces and license plates. And I'll let them tell you

33:16 all about those in their own words.

33:18 As a member of our team, you will take an integral part in shaping what anonymization means in a digital

33:23 society. Alongside a highly dedicated international team, you will apply your industry proven Python

33:29 skills and deep understanding of algorithms to design and implement data processing microservices

33:35 in a high performance video pipeline. If you're up for the challenge, apply at brighter.ai

33:40 slash jobs. We are looking for software and streaming engineers, DevOps, AI researchers,

33:47 and team leads. Just visit talkpython.fm/bright to get started.

33:54 There are times also when bad things happen and I've still decided to keep working with

33:58 a client. I just changed my, like how I work with them. So I had one training client. The

34:03 way it works is I say it's a daily price for the training for up to a certain number of people.

34:07 And beyond that, you pay per person, trying to dissuade them from doing that. And the first

34:11 time I did a training for this company, they said to me, okay, we didn't have anything over

34:15 that number. So we don't have to pay anything extra. I said, no, but there were more people than that

34:20 there. And they said, oh no, that couldn't possibly be. And I said, okay, look at the invite you sent

34:25 out on the calendar, right? There were 25 people on the invite. You have to pay for the five extra

34:29 people above 20. And so we went round and round and finally they agreed. They were like, oh, okay,

34:34 well maybe if we invited that may fine. So I decided to do more training with them. And on the first day,

34:38 like before we even started, I took a photo of the roster of the people who are going to be there.

34:43 Training ends and they say, we didn't have above the number. And I send them the photo. I say,

34:49 but these are all the people who are in the room and signed in. That couldn't possibly be,

34:53 we can't fit that many people in the room. As you said, I didn't want to have this confrontation,

34:58 but I was like, here's like the photographic evidence. So I wanted to keep working with them

35:03 because not that often I do training for them and they did pay on time. But now I know like how to

35:08 steel myself for working with them again. And they get lowest priority, right? When I have other

35:13 companies that are willing to work with me because I just don't have that sort of agitation.

35:17 You know, I'll do training for you, but we're setting up a time-lapse camera.

35:20 Yeah.

35:21 I like to think about the idea of, and this may sound kind of brutal, but that you should always be

35:29 kind of working to fire your bottom 20% of your clients because that definitely leads, I mean,

35:35 that is going to force you to improve your client base, but that may mean that your bottom 20%

35:40 might not be clients that you hate. And obviously there's discretion to be shown there. Relationships

35:44 are important. Don't get me wrong. But like, that's the sort of mentality that I like to keep is that

35:49 someone's the lowest priority, someone's at the bottom. And the next opportunity that comes up

35:56 that is optically looking better than that, we're going to bump them off. And I think that that may

36:01 seem a little cold, but honestly, it's healthy for business. It keeps you on a progressing,

36:06 improving trajectory with your client fit.

36:08 Yeah, I can definitely agree.

36:10 I have a fortune 100 company that I do a lot of training for, and they send me a question once

36:15 for six to eight months. Are we paying you above average, average, or below average of your other

36:22 clients? And basically they want to make sure that they're not in that bottom 20%. And indeed,

36:27 like when I raised my rates, I waited, they were the last ones I told I was raising my rates. I raised

36:32 them over the course of a year for new clients and other existing clients. Then I went to them and I said,

36:35 you're now paying the least of anyone else. If I'm going to justify working with you, you've got to

36:39 raise their rates. And that combined with their survey, they were like, okay, done. They want to

36:44 preserve the relationship. And they realized they can't be the cheapskates.

36:48 Yeah. Yeah. One of the things that's really, really, I think undervalued when you're an employee,

36:53 but when you, when you build these relationships with these large companies, like the one you

36:57 acknowledged are extremely slow and hard to build. But if you look at it from their perspective,

37:02 they have so many people they could reach out to, but they want to just know who can I call? Who can

37:07 I trust? I've got this problem. I need it. So I need some training Python. Ruben's been great. I'm not

37:12 going to go shopping for more because I don't need to start that over and have a failed class for 20

37:17 engineers. Let's just stick. Right. So once you build these relationships, they're pretty sticky.

37:22 Moreover, when you said they're slow to build, everyone always told me that working with big

37:26 companies took a long time. So twice, twice in the last year, twice in last year, like fortune 100,

37:32 500 companies reached out to me and said, we want you to do training for us. So like I didn't have to

37:37 market to them at all. They reached out to me. It took six months before each course happened.

37:42 Just getting through like procurement and stuff like that.

37:45 Everything. And let's talk about it and dates and content and on, on, on. And that's because

37:50 they were really excited to work with me. Imagine a cold calling someone trying to convince them to

37:56 work with you. It's going to take way longer than six months, way, way, way longer. But once those

38:01 relationships happen, right, then you're in and you're in for a long time unless you really mess it

38:05 up. Got at least six months.

38:06 Those long sales cycles are challenging for obvious reasons. But like when it does drag out

38:11 longer than that, you have this like whole different risk when you're working with big

38:14 businesses like that and you're, you're trying to build that relationship, which is like you're 14

38:19 months into like getting something put together. And then your advocate like restructured, moves away,

38:25 different department fired, and it's just gone.

38:28 Yeah.

38:28 And it happens all the time with those long sales cycles because just the window for something like

38:32 that to happen is that much bigger. That's always fun.

38:35 Yeah. That's happened to me and that's, that's been bad. So let's touch on just a couple of other

38:40 topics here that I think are really interesting. Reuven, you said you charged daily and you charge

38:47 kind of a flat rate up to a point. Let's just talk about what should we charge and then, you know,

38:53 what is the structure? There's, there's all sorts of interesting things like there's hourly,

38:56 daily, weekly, there's flat fixed rate for a project. And then there's this whole concept of

39:03 like creating like productized consulting where somebody might pay like a thousand dollars every

39:09 month and then they can call on you for a certain amount of effort or things like this. Right. So

39:14 what are your thoughts on how you should charge maybe early in your career of this freelancing story?

39:20 And then as you get established, look, the easiest thing when you start off is to do hourly rates,

39:25 right? And everyone talks about it. Everyone thinks about it. And when I do project work,

39:29 I still do largely hourly rates because everyone just sort of goes like, it's the easy, it's the path

39:36 of least resistance. It's not the path of greatest income. And it leads to all sorts of sort of friction

39:43 because no matter what you do, the client's going to assume that you're padding it.

39:48 So one of the nice things about me doing training now is indeed, and there are different ways to

39:51 charge for training also, but I just charge, as you said, like a daily rate for up to X people,

39:55 where X by the way, differs per country because they ask different numbers of questions are

39:59 differently aggressive. And then basically a sort of penalty on top of that. And that has freed me from

40:06 all this business of the hourly stuff. And it is one of the reasons why I enjoy the training so much.

40:10 Yeah. It's pretty clearly bounded and there's not a lot of scope creep, right? It's not like,

40:14 well, that feature was super hard to implement. Actually, we didn't realize it, right? Like,

40:18 it was super hard to tell them about ORMs today. I don't know, right? It doesn't make any sense.

40:22 In theory, like they could complain, well, you didn't touch on such and such a subject that was

40:26 in the syllabus as much as you promised, but that has literally never happened. Like no one cares to

40:31 that degree.

40:31 I was too busy taking photos to prove the attendance in the room.

40:34 Yeah.

40:37 I definitely started with hourly rates. I think most people do. Like you said, Ruben,

40:40 it's, it's path of least resistance. It's kind of old as sand, right? Customers are used to

40:46 transacting in that way of, I mean, people all the time come and sit down with us for initial

40:51 conversation and say, what are your hourly rates? Cause that's just what their expectation is.

40:54 I did that. I agree. Not the path to building the most income, but it definitely the way to get

41:01 started easily.

41:02 I was going to say, before we move off of that, like, you know, what I'm thinking,

41:04 let's suppose I make $40 an hour as an employee. I don't know. Like what would my consulting

41:11 equivalent be? Because as we'll touch on in a minute, there are other fees, other taxes,

41:17 other sort of friction and charges in your life when you're a consultant that doesn't happen when

41:22 you're an employee. So what is like a good starter multiplier that you might like throw out there?

41:27 Is that possible?

41:28 I don't know that I have a multiplier like off the top of head because over time I've

41:34 gotten to where that's probably, I'm an engineer, so it's probably overcomplicated, but here's my

41:39 advice.

41:39 We have a machine learning model for it.

41:40 What I tell people when they ask that kind of question is whatever you do, don't take the

41:44 income you want to make and divide that by 40 hours a week and set your rate there. Cause

41:48 you're wrong. Cause what's going to happen is you're going to take a vacation, you're going

41:52 to get sick, so on and so forth.

41:53 There's going to be latency between a project starting or something like that as well. Yeah,

41:58 exactly. And so what my advice always is, is to figure out what the constituent pieces of overhead

42:04 would be. All of the stuff that costs you time at the very least start there on top of that,

42:10 take the income that you think you're worth it. That I think, I think objectively you could go get on

42:14 the open market and that's a good starting point as your basis, but then take 52 weeks,

42:19 40 hours a week. You got 2,080 hours and then start deducting from those hours, right? Change

42:25 that denominator and say, okay, I'm going to take two weeks of vacation. So now it's 2,000 hours.

42:29 And I think everyone needs to factor vacancy into their rates. You're just not going to have projects

42:34 cleanly lining up to one another. And it may feel kind of icky, this idea that you're charging people

42:40 for time that you weren't working, but that's business. And you have to do that. Like every time

42:45 you rent a hotel room, this'll help. Every time you rent a hotel room, know that you are paying for

42:50 that hotel room and you're paying for a little piece of every other empty room in that hotel,

42:54 because they're not running their business model under the assumption that every room is 100% booked

42:59 all the time. They'd go broke. And it helps me, right? When I see that, and I know that as a consumer,

43:03 I'm actually paying for it that like, okay, this is legitimate. So, you know, I factor in a vacancy

43:08 percentage, like of some expected time, maybe it's 10 to 15, maybe 20% of your time might be vacant.

43:14 You know, you need to find what works there and use that to start deducting from that denominator of

43:19 hours and then take that income you're worth. And maybe now you're dividing that by 1,900 hours

43:25 instead of 2,000, or you're dividing it by 1,500 hours, whatever it is, you know, you need to be honest

43:30 with yourself about it and set your hourly rate from that. And then from there, you've got overhead in

43:36 your pricing. Every time you line up two projects cleanly together, sweet, more profits, right?

43:41 And that's kind of where I would start.

43:43 And that aligns the incentives to have you do that kind of stuff, right? Like it encourages you to do

43:48 those things. But yeah, it sets you up to not die if it doesn't happen. That's a great mindset thing.

43:53 So I cut you off. You're talking about hourly and then some other options.

43:56 Well, I definitely started hourly. We still have one legacy client here at our business that's on an

44:02 hourly rate. But we moved to daily and eventually now we're at a place where weekly rates are what

44:10 fit for us. And that kind of factors into how we package and sell our services. We, you know,

44:15 we're doing a lot of R&D work. We're selling, we use Agile and the Scrum methodology. And so we're

44:21 actually selling sprints. And when we work really hard to get customers mentally in a place where they

44:28 understand that what we're doing is we're not committing to individual line items of scope.

44:33 We're committing to some high level business objectives and we're setting a realistic plan

44:39 for how we're going to work on this for the next 12 weeks. And we price it from there. And they

44:43 understand that the budget controls are in their hand. Every time they come into a sprint planning

44:47 session and say, hey, we'd like to prioritize this. We say, fantastic. This is what fell off the bottom.

44:51 And if you still want to do that, we're going to need to do another sprint.

44:54 That's relatively new for us, admittedly, but it's worked really well. We work on that kind

44:59 of concept of weekly rates and it's gotten us out of the haggle of nitpicking individual hours,

45:05 of shipping someone a timesheet of like, okay, I see you spent 42 hours. Tell me what those two hours

45:11 were specifically for, right? You know, that's no fun. That's kind of where we've gotten because the

45:17 hourly model, you are, to some extent, you're kind of diametrically opposed to the interests of your

45:22 customer, whether you like it or not. It is in the customer's best interest for you to spend the least

45:27 amount of time as possible from a financial perspective. And it's in your best interest from a financial

45:32 perspective purely to spend the most amount of time as possible. Like if you look at it purely as economics,

45:37 you have that tension. And when you move away from the hourly model, that tension can be resolved.

45:43 But that doesn't make it easy. And a lot of times that involves customer education and finding that right

45:48 client fit. So another red flag for me, client says, no, you got to build by the hour. You're not a fit

45:54 for how we engage here. We won't do our best.

45:55 That's interesting. I love the selling the sprints because that sells business value. And that speaks

46:00 to the people paying the bills and making the decisions. And it's short enough that you deliver

46:07 something that they can evaluate and decide how it's going, right?

46:11 And I think that's really important when I talked about like starting out, figuring out what your rate is

46:16 by looking at what your open market rate might be as a basis. If you want to charge above market,

46:22 I think you can go and do that. And I think you should. But you got to figure out what value you're adding

46:28 in order to be worth above market rate. And there are plenty of ways to add value of being more than just a coder.

46:35 And, and, and, you know, for my business, that process of bringing that methodology and allowing

46:42 the customers to have budget controls and ways to check in and good defined scopes along the way

46:47 is the value that we're adding that justifies the premium that they pay for our services rather than

46:53 building it in house or using a, you know, a cheaper firm or something like that.

46:57 Yeah. Super cool. And for what it's worth, the guy that I hired, it's a weekly halftime.

47:02 So it's nice and clear. It's just like, Hey, you know, what do you work on this week? And it's, it's not,

47:07 I already know what next week's going to cost. Right. So it's, it's pretty straightforward. I like that.

47:11 Let's wrap this up with some of the conversation around kind of where we started. Like I'm a programmer.

47:18 I love coding. I love working on software. I want to go freelance. And it turns out I need to find clients.

47:26 I need to do marketing. Oh my gosh, there's extra taxes in accounting. Do I need insurance?

47:32 Do I need an LLC? Should it be an S corp? Do I need, I don't know, whatever. There's all these other

47:37 things. So what are the things that people don't know that they just didn't realize they signed up

47:43 for a self-education in when they go down the freelancing route?

47:47 I mentioned a little bit before, but you know, people who are technical and want to become consultants,

47:52 there's nothing wrong with that. But now you are running a business and that means you're dealing

47:59 with all these other things. And so you need to at the very least make a list of all.

48:03 Even as a business of one, right?

48:05 Right.

48:05 You don't have to be like Casey with a whole bunch of employees. You get a big chunk of this right away.

48:10 Absolutely. Absolutely. You've got to like figure out the tax thing. Very, very important. In the US,

48:17 you've got to deal with health insurance stuff, right? Like there are all these things that your

48:20 employer previously dealt with that you probably didn't even think about very much.

48:25 retirement.

48:26 Oh, yes, yes, yes, yes. That's super, super important, right? All these different things

48:31 that like you never even thought about or you saw it on your paycheck stub and now you have to actually

48:35 deal with it. You're also taking on all the risk, right? One of the reasons, right? In case it was

48:39 mentioning this earlier, one of the reasons why consultants charge much more per hour than employees

48:44 in the end is because now you're taking on the risk of not having work or things not getting done or

48:50 they're not paying you and on, on and on. So I would say if you're going to start consulting,

48:54 have a cushion of some cash. People talk about different amounts of time. Let's say six months,

48:59 right? Longer would be even better. It doesn't have to be a lot, but that's to be enough that if,

49:03 as you know, with my clients, it took six months for them to actually do something and pay,

49:07 you can survive that because you're going to have a lot of meetings. You're going to talk to people.

49:11 You talked about the long spin-up cycle to get started, but there's also, we pay you when

49:17 maybe you ship a sprint. And oh, by the way, that's net 30 or net 45. Did you know? So you got to

49:23 wait till the next month and then another 30 days, like, wait, that's like nine months. What just

49:27 happened here? Right?

49:28 I remember the shock that I had when I discovered in Israel, it's pretty typical to play net plus 60.

49:32 And I was like, wait, I just finished the work. What do you mean you're going to pay me in another

49:37 like two and a half months? How can that possibly be? And then of course, you know, one of my favorite

49:43 lines, that's our standard policy, right? And you've got to get used to it. So right. Even if

49:50 you find a client right away and start working with them right away, it's probably going to be at a

49:54 three, four months until you see any money.

49:55 That is exactly what I am. I'm my first freelancing client. I just dove right into it. I did have some

50:01 money put back and I'll add to that, like of having a cushion, have both a cushion and a willingness

50:07 to cut back your lifestyle to extend the duration of that cushion. Cause I think I went in with like

50:11 three months of cushion and then I got into a project and I got net 60 and it like, I ate ramen

50:17 for many weeks waiting for this check to come. And then this check came and I was like, Oh my God,

50:23 you know, it was three months worth of work in one check. And it was like, it was like the biggest

50:27 check I had ever cashed, but it was, I was so hungry. You know, I thought about eating it.

50:31 And so I wasn't as, as prepared from, from a financial standpoint to jump into it. And so,

50:38 but fortunately I guess like my mentality, I was willing to shut off all of my bills and like,

50:45 I haven't had cable since. So that was kind of freeing and just like cut back on a lot of things

50:50 and basically go into financial hibernation waiting for that first check to come. You know,

50:55 so cashflow is a tricky thing that you don't, I never thought about before getting into the

50:59 business. And now, now we look, cashflow is a constant thing. I'm always looking at

51:02 because you can do the work and you know, from day one of the first day you wrote some code,

51:07 it could be 60, 90 days before you ever get any money.

51:10 Yeah. I also go through that. Obviously like with sponsors of the show, right? They maybe

51:14 book stuff far ahead, but then, right. There's like you said, net 30, net 45, and there's just a lot of

51:20 delays. Luckily on the course side of things, it's all wired straight up to Stripe. So somebody puts

51:26 their credit card in the money's in the bank. Two days later, there's sort of these two parts and they

51:31 counterbalance each other pretty well in my world.

51:33 I agree. Like I definitely, I know. So I typically run like two big sales a year. Like I do a birthday

51:38 sale. I do a black Friday sale. And I know that if my clients in those, at those periods, again,

51:44 that's for my online courses. If my consulting, my training clients during those periods are

51:49 paying slowly or, you know, it's another 30 days until I see it, those sales can actually help to fill

51:54 in the blanks. Exactly.

51:54 And I'll throw a tip out there. When you're negotiating those payment terms,

51:59 we had a lot of success in, I say we, I mean, this was, this is something I did when I was still

52:04 individually freelancing, man, throw a 1% discount on due on receipt. And you'll be surprised at how

52:11 many companies go for that. Because I mean, when you're dealing with a large organization,

52:14 like unless it just causes an absolute burden in their process, they'll take 1% discount any day.

52:20 And so offering some little things like that can really help in speeding up your cash flow.

52:26 And that saved me a couple times of like, I shouldn't even admit, but I think there've been

52:30 times where we offered a 10% discount. It's like, it's cheaper than factoring an invoice

52:34 to get some cash through. And so that's something else that I didn't realize. And I think is a,

52:39 this is something that you'll learn that is a really good thing. Not necessarily like,

52:42 oh, I didn't know that. And this is awful. Is that everything is negotiable.

52:47 It's not like walking into the AT&T store to buy a phone. You can negotiate every term of a contract

52:52 and you should.

52:52 It's really hard though, to get that, you know, for a lot of people to have that negotiation.

52:57 Cause again, like conflict adverse, just want to please and get this job and whatnot.

53:03 Well, I would say maybe this helps is as a business, when we present a contract,

53:06 I'll tell you right now, we present the contract and the terms in the contract are like,

53:10 this is what we're offering up with the expectation that they're going to negotiate with us.

53:15 And like, we present a contract with, that doesn't have our best terms.

53:19 We're expecting people negotiate and we factor that into it. So know that other businesses are

53:23 doing that. They're giving you, they may not be giving you their best terms. There actually

53:26 probably is some flexibility because savvy companies kind of know that that's going to happen. So

53:32 negotiate, like, don't be afraid of it. Often it's being expected.

53:35 I love those tips. I love those tips. I may take some of them.

53:38 I'll take a royalty on those. Yeah. 1% of the 1%.

53:42 I had a big company contact me. It was probably like a year, year and a half ago

53:46 and everything sounded great. And they said, Oh, and by the way, you're going to have to send us

53:51 what's called in Israel, like a tax receipt in order to get paid. Now tax receipt basically says,

53:56 I have received the money and thus I owe the taxes on it. And they said, and then we'll pay you net plus

54:00 60. I was like, wait, you're telling me that to pay the taxes before I paid. I said, you realize

54:05 it's not legal anymore in Israel that I can just send you sort of a general invoice.

54:09 And this company basically said, well, tough luck. This is what we've been told by our like

54:14 masters in California who don't care about Israeli law. And I said, all right, I'm not going to do

54:19 this. Oh, wait, wait, wait, wait, wait. Actually, we found a way that we can funnel.

54:22 I just remembered. Yeah.

54:26 Right. We can funnel it through a third party.

54:28 There was that other contract in my pocket.

54:32 And I said, am I going to have to pay for funneling through this third company? Oh no,

54:37 we'll pay for that. Don't worry about it. So if you just show a bit of backbone, very often,

54:42 they will be willing to back down. I mean, at the end of the day, these are just people doing their

54:46 jobs, right? Like at the end of the day, it's just people. And if you are giving a good product or

54:50 service, they want to look good to their bosses. And so they want to show they brought a good supplier

54:54 that makes them look good. So, you know, a little bit of money is not going to affect it.

54:58 And I think that there's a delicate balance there on when we talked about red flags earlier.

55:02 I think that, you know, if you have to push a little bit to get your best deal, that's okay.

55:06 But if you have to push too much, that can take you into the territory of, do I really want to work

55:10 with this group? Like if they really brought me an awful deal, like that's one of the worst things is

55:15 like you turn down a deal and then like you're so far off on price or something that you're,

55:20 you know, they say, well, we're willing to pay this rate and it's 25% less than your rate.

55:24 And you say, nah, no, thanks. And they go, okay, nevermind. We'll pay your rate. It's like, okay,

55:27 well, like that doesn't give me a lot of confidence that you're not trying to work me over here. You

55:33 know, like if you were comfortable with that rate in the first place, why'd you make this offer? So

55:37 you got to balance that. Definitely. Someone brings you a bad deal and you have to negotiate to survive.

55:41 That's probably a bad, bad customer.

55:44 That's good advice. You know, I want to come back really quickly to this hourly versus weekly

55:49 and net 30 and getting paid after and all this stuff. So when I started this whole thing that I'm

55:58 doing with the podcast and the courses and stuff, there would be times where maybe I would sell six

56:02 months worth of ads or like you said, Ruben, there'd be some like a new course launch and that would bring

56:08 in a lot of revenue, but then it would take two weeks or sorry, two months for me to write the next

56:13 course or for those ad slots to be used up before I can do it again. So I would get these big checks

56:19 like Casey talked about. They're like, sweet, look at this. But then I would have to go a really long

56:25 time without getting, it was no longer every two weeks, my direct deposit shows up. It could be months

56:30 and it's unknown what the next destination is going to be. And obviously preparing as you all spoke

56:37 about, it makes a lot of sense. But the other part I want to talk about, just get your thoughts on what,

56:41 you know, sort of helping my family adjust to this world that they didn't necessarily, they were

56:47 supportive of, but didn't necessarily buy into. Like I know my wife and I, we would be financially

56:52 planning and like, oh, we got to pay these bills or this too much coming up for the kids or whatever.

56:57 And all of a sudden all that had to get reworked. Like what are y'all thought on, on this? I think

57:02 that's maybe something you have to adjust to. Even when the money is good, it's still like way more

57:08 erratic. I definitely had some personal adjustment, but I'll defer to Reuven. Maybe he has insight.

57:12 I was fortunately had the disposition of being single when I made that jump. And so when I, when I met my

57:19 partner, I was already in freelancing. And so she just sort of, she kind of knew what she was getting

57:25 into jumping into it. And so that, that sort of self-selected. So I don't have any advice there.

57:29 That may not be helpful. I had to work that over for myself.

57:32 But you had the ebb and float.

57:34 Yeah. And I had to manage my own cash for those long periods of time and being conservative

57:39 financially is really smart there. But outside of, I had the luxury of not having to adapt.

57:44 It wasn't affecting anyone else's lifestyle, but my own. So I was fortunate in that regard.

57:49 That's cool. You kind of got to be a financial camel.

57:51 Yeah, exactly. Yeah. Retain, retain money.

57:54 Reuven, go for it.

57:55 Exactly.

57:57 My wife and I met when I'd already been freelancing for about four years. And for her, it was kind of

58:02 weird that I didn't know exactly how much I was going to make each month. And like, it went up and

58:05 down. She would definitely say to me, okay, like, you know, how's next month looking? So that we'd know

58:10 if we could buy something or if we couldn't buy something. And, you know, one of the nice things about

58:15 training is that I now sort of schedule things way far in advance. So I know what a month is going to

58:20 look like pretty much, you know, even three, four, five months in advance where I'm going to be and

58:24 what it's going to be looking like, which has definitely helped with our stability and our good

58:28 things. I should add, by the way, my kids were all born. I have three kids. They were all born like

58:32 years after I started freelancing. And I remember saying to them a few years ago, you know, most adults

58:37 go to the same place each day and work with the same other people each day. And they were like,

58:42 no way. That sounds crazy.

58:44 That's awesome.

58:47 I would say the biggest sort of the two things that my wife and I should have done years ago when we got

58:53 married, which sounds like Casey was smart enough to do, was we started finally a few years ago budgeting.

58:58 Like, let's figure out how much we're going to be like spending. And that took off a lot of pressure

59:04 for me for earning as much as I possibly can every month. As long as I can earn my salary,

59:09 I'm calm. And anything above that is gravy, but I don't have to be killing myself to earn,

59:13 you know, as much as possible 24 hours a day. The other thing we started doing as part of this

59:17 whole budgeting thing was, as Michael said before, we started saving for retirement years too late.

59:23 I mean, we'll still have something for retirement and everything. You cannot start putting away money

59:27 for retirement early enough. I cannot stress this enough, especially to young people thinking about

59:32 freelancing. Start ASAP and don't look back.

59:35 And also a latecomer to that. I mean, like, I think that overall goes into,

59:39 if I could do it all over again, I wish I could, before jumping into this world,

59:43 really train myself up on just some financial literacy that I was lacking, because that would

59:49 have been helpful in the beginning. And it pays off dividends long run on the retirement side.

59:54 And I was well out of freelancing and into running a company before I even started thinking about

59:58 that, which is unfortunate. But definitely, if you can factor that into your model,

01:00:02 you'll be that much more successful.

01:00:03 Absolutely. The retirement stuff does feel like something like, I can just kick that down the

01:00:08 road. You know, I cannot put off taxes because I might go to jail. So we got to do that. And I

01:00:13 got to have clients. So I better learn marketing. But I could probably kick retirement down until I've

01:00:19 got a handle on the other stuff. And you know, maybe that is the right thing to do, but

01:00:22 shouldn't kick it very far.

01:00:23 It's one of those things that I think we can lie to ourselves pretty easily, especially if you're

01:00:27 going into consulting or freelancing, under the pretense of entrepreneurship, right? It's really

01:00:33 easy when you're excited, and you're motivated, and things are going well to be like, hey, you know

01:00:38 what, I don't need to think about retirement, I got to grow this business. I'm going to be charging

01:00:42 $1,000 an hour in five years. And I'll, you know, I'll just work for a year and retire on that, or,

01:00:47 you know, and maybe you will, right? I don't think there's anything wrong with having those sort of

01:00:51 aspirations. But the pressure is a lot less when you know that you don't have to, right?

01:00:57 Financial pressure sucks. That's my advice. And so I do everything I can to not have any.

01:01:03 Yeah, let me like wrap that back around. We talked about like getting clients, we talked about

01:01:07 the right clients, the red flags. If you don't have that financial pressure as much, you can make better

01:01:13 choices at the beginning of projects and the beginning of engagements that keep you happier.

01:01:18 Right, you're not forced into like, I'm really in the corner here, I got to just take it.

01:01:22 Sales solves everything. And one of the biggest problems it solves is it is simply, it's not about

01:01:27 selling, closing every deal that comes in front of you and making a bunch of money.

01:01:31 One of the greatest luxuries of having a good pipeline of clients is the flexibility to be

01:01:38 choosy with which ones you work with. I mean, that's a beautiful luxury that you don't have when

01:01:42 you're hungry. But if you can get there, ultimately, you're always picking for better client fit. So

01:01:48 aim to be choosy. That's a great goal to have more than any other financial goal. Like I would tell

01:01:53 people, don't be focused on how much money I can make. Be focused on the idea of I will get to pick

01:01:59 the projects I work on. Because for me, that's a much healthier life to live, like from a stress

01:02:05 perspective.

01:02:05 I'm gonna go even further than that. I agree with everything you say. But the fact that I now

01:02:10 have some like choosiness and financial stability has also helped my emotional health and my marriage,

01:02:16 right? It means that I can actually concentrate on these relationships. And I'm not constantly stressed

01:02:22 over Oh, my God, Oh, my God, Oh, my God, I don't have enough days of consulting work next month.

01:02:26 What are we going to do to pay for XYZ?

01:02:28 Absolutely. Yeah, it's good all around. All right, there's so many more things we could talk about.

01:02:32 We might have to do a follow up show at some point. But I wouldn't be respectful of your time. So

01:02:37 probably gonna have to wrap it up there. Now I'm gonna ask the two regular questions at the end and

01:02:42 give you all a chance for a final call to action. So if you're gonna write some Python code, what editor

01:02:46 do you use? Reuben, start with you.

01:02:47 The only editor that exists, as far as I know, GNU Emacs.

01:02:50 I've heard vicious rumors that other editors exist.

01:02:55 Another list.

01:02:56 It's both an editor. Yeah, it's an editor and an operating system. It's all good.

01:03:01 Yeah, definitely call. I was hardcore PyCharm for a long time. But I made the shift to pure evil. And I use Visual

01:03:11 Studio code. That's cool. I still go back to PyCharm every once in a while.

01:03:14 Yeah, I like both of those. And I definitely think the momentum around PyCharm is growing. It's doing some cool stuff. So also nice. All right. And then notable PyPI package, maybe not the most popular one, but something you came across like, oh, man, this is super cool. People should know about

01:03:27 this. Casey?

01:03:28 Casey? No, let Reuben go first, because I got to look one up because it's awesome, but I can't remember the name of it. All right. Go, Reuben.

01:03:34 Okay, I'm just going to go like a super ridiculously easy default, the one I use every day for my teaching, which is Jupyter Notebook. You know, Jupyter Notebook, Jupyter Lab. I know it's like boring and everyone uses it. But oh my God, it has changed my teaching dramatically. Because not only can I show them what I'm doing, but I can then send them the document and they can play with it themselves at home.

01:03:51 Super cool. Casey, you find yours yet?

01:03:52 I'm going to put a little addendum in there because I just found something. Actually, you're right. I just found something this week called Git Auto Push. Git Auto Push takes your Jupyter Notebook, commits it to Git, and pushes it to GitHub. And then you can share when you're doing live lectures. Has changed my life in three days of using it.

01:04:11 That's pretty sweet.

01:04:11 Oh, that's awesome.

01:04:12 We could use that on a client project. We do a lot of Jupyter stuff. Very cool. Jupyter Labs and Jupyter Hub are also really neat. Mine is AsciiMatics.

01:04:20 AsciiMatics.

01:04:21 Yeah, you got to check this out and maybe find an example of it implemented somewhere. But it's a, I'm reading from the description, a package to help people create full screen text UIs from interactive forms to Ascii animations on any platform.

01:04:35 So it's like build a console UI that is animated like the Matrix, and it is awesome. It serves no actual practical purpose whatsoever that I know of, but it is so cool. It's like building UIs from the movie Hackers.

01:04:50 Yeah, yeah, that's a great one. I'll go ahead and throw one out as well. I just ran across something called HTTPX, which is a library that is 100% compatible with requests, but adds on HTTP2, as well as several levels of async integration and some other cool stuff.

01:05:07 So very cool if you're looking to do a little more than just straight requests.

01:05:12 All right. Final call to action, guys. Someone out there listening, they're excited. They're like, okay, I think I've got all these lined up. That was great advice. I want to get started. What do they do? What are the first steps? What's first month look like?

01:05:23 Maybe this isn't helpful advice, but it's the advice that I give all the time, which is you want to jump into freelancing. If your first question is, how am I going to find my first client? My advice is don't do it.

01:05:36 I don't mean don't ever do it, but I do think that you should know who your first couple of clients are before you make the jump. It's going to take the pressure down quite a bit. And that may mean either taking a position in the consulting world to get a taste of that business if you hadn't had it, or just bootstrapping your network.

01:05:53 Call on people that you've worked with. At least get that lined up before you quit your day job. And like for me, I was able to make a few phone calls. I had some good contacts. And from the day I decided I was going to quit my day job to go on into freelancing, it took me like three weeks. I had a couple potential projects lined up, and then I pulled the trigger. So it doesn't necessarily mean like stay in your career for another year, but definitely know who those first couple of projects might be and try and stagger them.

01:06:18 Good advice. Do the legwork to not land in an empty pool when you jump.

01:06:23 Totally. Yeah. That hurts your legs.

01:06:25 All right. So I'm going to extend the swimming and pool metaphor here. So it's a very common to think that if you're going to succeed in freelancing or in business in general, you want to be all things to all people. And this turns out to be not the case. You want to be, as it were, the big fish in the small pond.

01:06:45 You want to be really well known for something. The analogy that I've heard numerous times is if your sink is clogged and you open the yellow pages and you see lots of plumbers and one plumber says, I unclog sinks.

01:06:56 Well, maybe there aren't a lot of people who need that particular service, but the people who need it are going to jump to that ad.

01:07:01 You want to be the person who solves one particular problem really, really well. And I would say before or while you're starting up, Philip Morgan's book, The Positioning Manual, is fantastic, both in helping you to figure out what do you want to work on?

01:07:16 What is your niche? And does a great job of getting rid of your fear at doing this. They're like, wait, I'm going to be turning away 90% of my clients. Isn't that the most idiotic thing I've ever done? And no, it's actually the thing that's going to save you and make you stand out.

01:07:29 Yeah, that's really good advice. It's a great analogy, right? If you get sick, if you have a heart attack, you don't want somebody who's a general practitioner. You're going to go find the doctor who is a heart specialist.

01:07:42 If you get accused of murder, you're not going to get the general attorney. You're going to get the criminal murder defendant, right? Like, yeah, you kind of want to be in that place. That helps you definitely get first reached out to and also maybe have higher rates, justify higher rates.

01:07:55 For sure.

01:07:56 All right. You guys, this was a really fun conversation. Hopefully it helps some folks out there and keep doing what you're doing. It's pretty awesome.

01:08:02 Thanks so much. It was great.

01:08:03 Awesome. Thanks, Mike.

01:08:03 Yep. Bye, guys.

01:08:04 This has been another episode of Talk Python to Me.

01:08:09 Our guests on this episode were Reuven Lerner and Casey Kinsey, and it's been brought to you by Linode and Brighter AI.

01:08:15 Linode is your go-to hosting for whatever you're building with Python.

01:08:19 Get four months free at talkpython.fm/linode. That's L-I-N-O-D-E.

01:08:25 Work in the hottest new area of Python, machine learning, with Europe's hottest AI startup, Brighter AI.

01:08:32 Visit talkpython.fm/bright to apply today.

01:08:38 Want to level up your Python?

01:08:39 If you're just getting started, try my Python Jumpstart by Building 10 Apps course.

01:08:44 Or if you're looking for something more advanced, check out our new async course that digs into all the different types of async programming you can do in Python.

01:08:52 And of course, if you're interested in more than one of these, be sure to check out our Everything Bundle.

01:08:57 It's like a subscription that never expires.

01:08:59 Be sure to subscribe to the show.

01:09:01 Open your favorite podcatcher and search for Python.

01:09:03 We should be right at the top.

01:09:04 You can also find the iTunes feed at /itunes, the Google Play feed at /play, and the direct RSS feed at /rss on talkpython.fm.

01:09:13 This is your host, Michael Kennedy.

01:09:15 Thanks so much for listening.

01:09:17 I really appreciate it.

01:09:18 Now get out there and write some Python code.

01:09:20 I'll see you next time.

01:09:40 Thank you.

Back to show page
Talk Python's Mastodon Michael Kennedy's Mastodon