Monitor performance issues & errors in your code

#231: Advice for freelancing with Python Transcript

Recorded on Wednesday, Sep 11, 2019.

00:00 Michael Kennedy: Have you ever wanted to get into consulting? Maybe you're seeking the freedom to work on whatever project you'd like or gain more control of your time. Many folks see consulting and freelancing as the next step in their career, but what do they need to put in place first? What are the challenges they might not see coming? Join me as I speak with Reuven Lerner and Casey Kinsey, two successful software freelancers about their journey and their advice. This is Talk Python To Me, Episode 231, recorded September 11th, 2019. Welcome to Talk Python To Me, a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities. This is your host Michael Kennedy Follow me on Twitter where I'm @mkennedy. Keep up with the show, and listen to past episodes at talkpython.fm, and follow the show on Twitter via @talkpython. This episode is brought to you by Linode and Brighter AI. Please check out what they're offering during their segments. It really helps support the show. Reuven and Casey, welcome to Talk Python To Me.

01:08 Panelists: Thank you, great to be here. Hey, how's it going?

01:10 Michael Kennedy: Hey guys, it's super to have you here. This is a topic I'm really excited to cover because it touches on these things that you can do to sort of take your career to the next level, which is always something I'm really, really excited about. We're going to talk about freelancing, getting into consulting, some of the things that you want to do, some of the things you want to avoid, all that kind of stuff. But, before we get into those, I want to ask you two questions, but not the two questions I normally ask folks because there's a different commonality here. So, let's start with both of you talking about your podcast that you run. I think they're pretty relevant to the conversation, so Reuven you want to kick us off? Tell us about The Freelancer Show?

01:50 Panelists: Sure. I'm one of the panelists, I guess I could say the lead host, lead panelist on The Freelancer Show. I've been doing it about four, five years and it's basically a weekly panel discussion plus occasional guests talking to people about how do you create a freelancing career. That's to say a lot of people are, especially people listening to this podcast right now, are excellent at programming, but in order to be a successful freelancer you need to actually have a lot of business skills too. And so we try to talk to people about everything from marketing, to support, to good clients, to bad clients, to finding a niche and so on and so forth so that you can have a successful business, not just be good at technology.

02:26 Michael Kennedy: That's really cool. I've listened to some of the episodes. I do enjoy it and I'm subscribed to it. It's a good one. Now just to set the stage for us, set the perspective here, maybe just quickly define what freelancing means to you guys.

02:38 Panelists: Oh wow.

02:39 Michael Kennedy: Is it just straight consulting? Is it like if I work for a consulting firm, am I a freelancer? Like what is the, am I personally a freelancer running my own software business? Probably not, right? If I'm an employee, I'm probably not. Where would you put that?

02:52 Panelists: I would say yes.

02:53 Michael Kennedy: You'd say yes, you think I am?

02:54 Panelists: Yeah, I mean I'd say if you are a business owner that's a small enough business and yours is, 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 over the differences too much. I think if it's at the end of the day you get to decide what projects you're working on and you're not reporting to a boss who tells you what to do, I'd put that roughly in the freelancing camp.

03:20 Michael Kennedy: Awesome. Nobody can tell me what time to be somewhere or what to wear. Probably puts me in there. And I'm still employed. And Casey, how about you? Tell us about your show.

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

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

03:38 Panelists: We run a show, that's right, I run a consulting firm, software development software firm and our engineering team produces a podcast called Friday Afternoon Deploy which is tongue in cheek for the thing that we should never do but often find ourselves doing, deploying code on a Friday.

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

03:55 Panelists: Exactly. Many things, it turns out, which is often a topic of the show, but it's aimed at developers. We talk a lot about Python on that show because that's our main backend language here at our company.

04:09 Michael Kennedy: What's your company name, just so people know what it is? Can you say?

04:11 Panelists: Lofty. Lofty Labs, and yeah. We talk about how we build apps, web development, and mobile app development. And really just capture what you would maybe call the water cooler type conversations that happen around our office. And as we're seeing that other developers, it's a point of catharsis for us where we can lament the terrible things that we ship to production that week, and the joys of client services, and all those sort of things. It's a lot of fun. We've been doing it for almost a year now.

04:40 Michael Kennedy: Yeah, that's a good show as well. Very cool. And maybe each of you could just tell me what you do day to day so folks know where you're coming from? Casey, I'm going to start with you.

04:48 Panelists: Sure. So I'm the CEO here at Lofty, which means a lot of different things. We're still a pretty small company. We've got about 8 people and so my job changes everyday. But ultimately this company is the incorporation of my freelance business. So I incorporated as a freelancer and then just naively stumbled into accidentally overbooking myself and hiring people. That's kind of how we got here. And so today I still write code occasionally. I try and keep myself out of the project work to build a more sustainable business. I do a lot of work on sales, marketing, vision, going out and promoting the company and those sort do things. But I don't know, I wear a dozen different hats.

05:28 Michael Kennedy: Sounds like a super cool job, yeah.

05:29 Panelists: It can be, for sure. There's a lot of stuff going on, so I find a hat and go, oh this is a full-time job. Now I'm going to hire someone to do that and they'll have less work to do. And then I just find that there's a new job that I have to do. So that's my job. I hire people and then find out that I have 10 new jobs every time I do.

05:44 Michael Kennedy: Yeah, I know how that goes. Super cool. Reuven, how about you?

05:48 Panelists: I had my freelancing business for about 25 years now since '95. And I started off doing coding and projects, a little bit of consulting, and I was always doing some training as well. And it was in a variety of different languages and technologies. And it was probably about 10 years ago that I said, "You know, I really should concentrate on one thing. I really love the training most of all and there's tons of demand for Python training. Why don't I just do that?" And so nowadays, most days, most weeks, most months, I'm in a different city, different country, different company doing Python training. Everything from Python for non programmers to advanced workshops. And that's most of my time, but I also have a bunch of online courses that I'm increasingly selling, includes some video courses and then a weekly Python exercise which you'll be surprised to hear involves a weekly Python exercise.

06:34 Michael Kennedy: Man, you named that so well.

06:36 Panelists: Truth with advertising and or lack of creativity, they go hand in hand. The idea is to keep people fluent and improve their practices.

06:44 Michael Kennedy: Cool, so you both have a lot of experience in this and you've walked the walk and I think one of the interesting things here is like so I want to quit my job so I could go write all the code I want and it turns out there's all these other things that have nothing to do with code that you have to figure out. So we're going to have a fun time getting into those, right? That's the great irony of it. So we talked a little bit about what is freelancing? Through the sets of both of you, we've seen on the TIOBE indexes, and we've seen the Stack Overflow article, The Incredible Growth of Python, and we know that Python is growing in very large ways at large. But if I have some Python skills, how does that translate over to freelancing? Is Python a good space to be in? I know if I did, say .NET, I could walk up to an enterprise customer and say, "Hey, I want to do consulting with you." 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 'cause they have large businesses. What about Python?

07:48 Panelists: I definitely think it is a good space and it's part of that, part of that it's like growth, right? That Python's been taking off and a lot of that growth comes from it's taking off in a lot of different industries. I think that makes it a pretty marketable skillset, because being a quality Python developer is applicable in the work that we do in Web-based software, cloud platforms, those sort of things. But this huge shift in data science and AI towards Python has opened up. There's a ton of opportunities on that side, whether that's predictive analytics or business intelligence or there's a lot of things like that. There's a lot of great DevOps tools built on or working with Python and so because of that, I think that it's a pretty broad market. And I think that may be different from specifically some other programming languages that are a little more purpose built to singular purposes. Say PHP.

08:46 Michael Kennedy: Like Swift, for example.

08:46 Panelists: Swift for example... Or PHP, right? Where you're definitely building for the web with that. Python's applicable and so you won't find an enterprise company out there that's not doing some Python work too. True they've got big .NET teams, but they've got business intelligence teams and analytics teams and not necessarily in their software product development, but there's Python going on everywhere.

09:06 Michael Kennedy: 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 I'm doing Java, let's say, what it means for me to be an expert in that technology probably is hard to achieve there's probably people that've been doing that for 15 years and they're just really good at it. And how am I going to go? "Well, I've been doing this for three, You should hire me instead."

09:31 Panelists: Sure.

09:32 Michael Kennedy: Right, like that's a hard sell. but there's so many new things in Python that nobody could have been an expert for 10 years in TensorFlow. In the web space, there's so many new modern web frameworks, Masonite, Japronto, et cetera, et cetera. These are a handful of years old maybe. No one has been an expert for many, many years on these things. And so I feel like you could maybe break in as a specialist in some area easier because of that.

09:58 Panelists: So just go back to that something that you had said before, like if you're a .NET developer, you can go to these enterprises, and they're looking for people to solve their problems. The key thing is they're looking to solve problems, and increasingly these companies are increasingly like they're using Python to solve those problems. They're saying, well, we could use .NET, We could use Java, but we want to use Python for a whole variety of reasons. And so yeah, I mean Python is a great space to be in, but I don't think you're going to get that far, just being a Python expert or a technology expert. You want to be an expert in solving some kind of problem that just happens to use Python that's a really hard mindset for a lot of programmers to adopt. Like, I'm going to go, I'm going to use Python really well to analyze log files. I'm going to use Python to do the DevOps, and make the servers run more smoothly. And when you're solving these problems, and you're seeing these companies money, truth be told, they often couldn't care what technology you're using, and you'll be able to find a company that wants to use Python to solve them, and we'll be delighted to have you come do it.

10:56 Michael Kennedy: That's a really good point, yeah. They might not even care, right? I guess it depends on how much they integrate into their larger systems. 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 webpage, right? Like why does that ever happen? So, no those are skills that don't necessarily have to do specifically with Python, but you have to learn them. And then you don't even get started on the web. There's like five other languages, you've got to know.

11:24 Panelists: Right.

11:25 Michael Kennedy: HTML, CSS, JavaScript, some variants may be TypeScript, I don't know, right?

11:30 Panelists: Yes, and I agree with what Reuven's saying because the more that you align yourself with a label like that. And Michael, you mentioned, you can specialize in a framework, and be a specialist there. And that can definitely work, and work well for your business. However, the more you position yourself as specifically that you are putting a shelf life, right? Because you're like he mentioned like these new frameworks are coming out rapidly. 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, and particularly in like front-end web development is a great example. Like those tools don't have that long a shelf life, and you'll be constantly reinventing your positioning to keep yourself at business.

12:20 Michael Kennedy: Right, we just changed our domain name from Consultants for Angular to Consultants for Vueing.

12:25 Panelists: Exactly, we lost all of our SEO. and all of our customers.

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

12:34 Panelists: You can definitely go the freelancing route as an expert in some technology, like the world's expert in, I don't know CSS, the world's expert in caching, and the world's expert in something like that. But even if, unless you are the world's expert or one of them, you're going to be seen by your potential clients as like what's sometimes called staff augmentation. You are doing a technical job, and they could hire someone to do it, but they're going to hire you, and they'd give you decent consulting rates for it. But that's because you're working with the technical team and you're seen as addition to that. 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:14 Michael Kennedy: Yeah, yeah, and you'll probably get the type of outcome that you were looking for in the beginning. 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. You're not going to get that by just being like staff augmentation as you pointed out, right?

13:31 Panelists: That's right. And I mean I'll go even further like, so when I do training, I'm not dealing with the technical teams and their budgets, I'm dealing with the HR department, or that sort of department, the training department, and their budgets, which are wildly different, and I might add different in like better for me. 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 Michael Kennedy: Right, well and if you're talking about training, and consulting and you maybe you sell one week course to that one team and then there are good for years. On the other hand, if you are in the organization, you are taught at the levels you're talking about, it's like we have a plan to move our entire company over to Python in the next two years, we have 20,000 employees, how do we do this? These are not even similar.

14:18 Panelists: That's exactly right. Totally different scopes or problems, and like not to, and I don't want to dog on staff augmentation because that's like half of our business here, so don't get me wrong.

14:27 Michael Kennedy: It's a really interesting way to have a job that still gives you more flexibility, and you probably can charge better rates than, if you're just working locally at a small, I don't know, government agency in a small town, I don't know, making stuff up, right?

14:39 Panelists: There are certain benefits there. I mean, staff augmentation type work can be a little less risky. It can be a little longer term, a little safer when you go into that role, I mean, you kind of are a butt in a chair, and that makes you a commodity whether you like it or not. I mean you really are, like you're going to feel a lot more market forces on the rates that you can charge. You're going to be in often cases in staff augmentation, for like US-based freelancers. You might be in pretty strict rate competition with offshore models and things like that. That's different when you're not doing that kind of augmentation work. 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:24 Michael Kennedy: This portion of Talk Python To Me is brought to you by Linode. Are you looking for hosting that's fast, simple, and incredibly affordable? We'll look past that bookstore, and check out Linode at talkpython.fm/linode that's L-I-N-O-D-E. Plan started just $5 a month for a dedicated server with a gig of RAM. 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. Whether you want to run a Python web app, hosted private git server, or just a file server, you'll get native SSDs on all the machines, and newly upgraded 200GB network, 24/7 friendly support even on holidays, and a seven-day money back guarantee. You need a little help with your infrastructure? They even offer professional services to help you with architecture migrations and more. Do you want a dedicated server for free for the next four months? Just visit talkpython.fm/linode. One thing I do want to dive into is this mindset change that you have to make in order to be a good consultant. Now let me try to start this topic off by way of an analogy from training. Maybe you'll connect with it Reuven. So 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 whatever, something like that, right? Well, in Python we have lots of ways. You could talk to it through DB-API2, just direct SQL queries. You could use SQLAlchemy or one of the other ORMs, you could say, I'm going to use a different database like MongoDB and then use a ODM or talk directly to it. So there's all these ways in which you could solve your database problem. As an employee, if you find one way that works, you're good. Your project is now beyond that step, you're talking to database. The next thing you need to do is add the next feature. As a trainer, if there's the way to talk to directly with SQL, use a ORM, and all these other things you need to know all the ways, the trade-offs of them, 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. I feel like there's a lot of stuff like that in the consulting world as well. I mean obviously training is some flavor of consulting. So what do you think some of the mindset, challenges are of say being just a standard employee where you just go to work, you work for eight hours and you know, hopefully something gets accomplished.

17:48 Panelists: I think there's a lot there, mindset difference, and like touch on maybe a couple of them. I mean, you know, one thing that stands out there is for me common tooling was always important. So solving a problem in a one off way would work well within the confines of that project. But if I wanted to, and this may be 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 base is more expensive than an employee. And so you really need to be proving that value. And a lot of times that rolls down in this field into time, right. So how can I get in and solve this problem quickly? And that's the value that I'm providing is that I can get in quickly and do it, and that may mean common tooling. So understanding kind of how to generally abstract a problem in the particular example you gave, and say what's one really great tool that I know very well that I can go tackle these kinds of database problems. This is my ORM I work with, or this is how I do these kinds of things that maybe gives you a speed advantage that gives your customer margin. This maybe one example. So I'm sure that most programmers know, like they'd have this experience of a non-technical friend, or family member saying, "I can't figure out how to do X." And you as the technical person you're like, "Well I really don't know anything about X. I can't help you." And they say, "Well, just try." And you walk up to the search screen, and you type something into Google and bam, you have found the answer, and they're like, "See, you did know about it." And you're like, "No, no, I really didn't." And everyone might be right there. The thing is because you have a background steeped in the right way of phrasing questions, you can find the answers more quickly. 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 learning new stuff to know how to do what you need, or learning new technologies, or finding the best way to do it. 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, and I know what questions to ask, and how to parse the answers quickly. And the same is also true in my training, right. So very often people ask me questions I don't know the answer to. And I then use it as an opportunity to learn new stuff, explain it back to them, and then I incorporated the next time around. And so I'll never claim that I know everything, but I'll claim that I can like figure it out because I experience faster than sort of the average person.

20:09 Michael Kennedy: Yeah, it's true. As a consultant and as a trainer, you spend a lot of time getting up to speed on something that you maybe are not an expert at. And so you have this polish skill of just, how do I just learn this thing and make it work? And it's, everyone in technology has to do that. But you do that on a weekly basis probably. And Casey, it's like people come to you guys, they're like, "Hey, we have this project." It's kind of like stuff you've done before, but there's this whole different angle that you maybe have never touched. And so it's probably similar, right?

20:40 Panelists: Totally, I mean we have clients come in, and bring us a project, and we know exactly what kinds of technology we might use, but we don't necessarily have any domain knowledge of their business or industry. And so that's the part that we have to get up to speed, and apply it. And to go back to what Reuven just said, the engineers in our team are sitting in that consultant role for our clients. And I remember in the early days going through some of our billing logs, and going to some of our consultant engineers and saying, "Hey, why didn't you bill for that time?" And they said, "Well, I didn't really know the answer to the problems, so I had to do some research." And I said, "Whoa, here's," And this is something we tell everybody when they start here now. We're not necessarily getting paid to know the answer right off the top of our heads. We're getting paid to solve the problem. And part of the solving problem is knowing how to find the answers to questions we don't know. That book ends really nicely, and what Reuven just said because we actually see that, and that is a good example of that mentality not sort of intrinsically being there for people that go into consulting of like, "Well I wasn't actually writing code, therefore that time wasn't billable." Like no, no, no. But the process of working that out, and working through it, and crafting that beautiful Google search query that dug up the result on the first page is a skill, and that's precisely what we're being paid to do. So I think that's another great example of the mentality.

22:02 Michael Kennedy: That's a core foundation of problem solving. Let me tell you a really quick story. I just recently hired somebody in a half time consultant role for doing some integration, single sign on that kind of stuff with my courses, guy's doing a great job, and I interviewed a couple of people. One of the things when we were talking that was really nice was, he was like, "Oh, maybe we could do this. What do you think about working that?" And I kind of described the problem, or I kind of thought some of the solutions might be, and the guy's like, "That's probably not the right way. Like we can think about it, but I actually think that's not best. Here are the problems, and you should think about it this other way." And I was like, Oh, this guy is, he's got the job. If he's willing to say, "No, you're not doing it right." Like actually I know you're pretty smart at this, but this situation, you should really think about this, and let me just try to guide you away a little bit. I'm like, oh, this is the type of guidance that I, this is the person I want that says, "Not just go, well, Michael told me to do this so I did it right?" And like, "No, no, no, they have some expertise, that I need them to come help me with."

23:04 Panelists: Clear demonstration there of of the difference in mindset of, I'm here to solve the problem and provide expertise not necessarily to implement a task list.

23:14 Michael Kennedy: Exactly, and you know, that was an interview to be hired. It wasn't like he was already hiring the entire, you know, he was, I could've got upset, said, "No, you've got to do it my way." But of course, that's not my reaction.

23:23 Panelists: There are two things that come out of that story by the way, which I think are important for people to realize. First of all, a lot of people who are new to consulting are afraid of that initial meeting of giving away the store. Well, I'm not going to give away any advice because like that's where I'm going to be charging for. And if I give away the advice, they'll think I'm a sucker and they'll like, don't pay me for it. No, no, no. They will be appreciative of using knowledge, and they'll want more of it because it can't possibly be that everything you know, came out of that meeting. The second thing is if you're a consultant, you want to be working for a client who is appreciative of that pushback. If you go to that initial meeting, and you give pushback and the client or potential clients like actually I'm going to tell you what to write, and how to write it. Like you don't want to work for that person, right? You're not in the stenography business.

24:09 Michael Kennedy: That's a really good point. So maybe we could talk about choosing clients who you touched on that a little bit in, even turning down work or firing clients where you feel like it's not working with. So what are maybe some of the red flags or the green flags? Like when you see somebody like, I want to work with this team, or that person or I know to stay away from this time bomb.

24:30 Panelists: We've gotten a lot of those. How long is this show? A long and ever evolving list for us. But I mean there are some definite ones, and unfortunately some of them may not come up until you're in the engagement. You're actually in and doing the work. There's some red flags that come in the production, but we try and assess a lot of that out when I'm initially talking to a potential client. I think that when you start feeling very early on in the conversation, price pressure, it's a pretty good indication that someone's not really aligned in the value that you're providing. And if you're constantly having to defend like, yes, that's going to take some time, and it's going to take some money, you can expect that. I think if that's how the conversation's going before you've been written a check, that pressure's only going to get stronger after the check comes. That's kind of my mentality is like, okay, take everything that the client just told us in this kind of initial prospecting meeting, and anything that was kind of felt like pressure, or prickly or something we didn't like expect that to be cranked up about 10 X after they've actually paid you money because it would.

25:36 Michael Kennedy: 'Cause now you're on the hook.

25:38 Panelists: And they've got skin in the game. It's not likely to get better, right. They're not going to get nicer. They're not going to get nicer, and give you less pressure after you start working for them, Exactly. Or after they start paying you. So that's one thing we look out for is that sort of stuff. And the other thing is, I mean pricing comes a lot into this. Any time that there's friction on pricing, I feel like that's the time to walk away. If you're really having to negotiate your upfront value. If you're in that conversation, you're really having to push hard, like no, it's worth it. It's worth the time. It's worth the money. There's probably a misalignment there on their understanding of the value that they're getting, and that usually gets worse. I think people that have a good understanding, clients that know why they're hiring, and know what that time is worth and that's implicit. Get it. They've done the research, they maybe they've engaged with a consultant before. I think those are good at green flags as well.

26:26 Michael Kennedy: Okay, cool. Reuven, what about you? What are some of your various flags, signals?

26:30 Panelists: Yeah, definitely the price pressure thing. Like whenever I talk to someone about doing, I mean nowadays doing training, and they asked me what I charge, and they're like, "Really, really? Guy, can we get a special deal? You know, we're going to give you lots of work." Oh, man. "And we have lots of content. A lot of people to contact, we'll recommend you to lots of people." At least I'm out of the business of being hurt, like being told, well, we'll give you equity of the company. It's like, "Oh please." All these things are just basically a big, big red flags. A good thing is, I mean in the training business, if there is a training manager who knows what they're doing, and like how the whole game is played, and they're from a larger organization that's going to need a lot of training. Wow, that is like the best because I know that I'll be able to come back there, once every month, once every two months, once every six months. It's like basically guaranteed income. So long as I do a good job and they're happy. You also want to know that they're sort of just going to be easy to deal with, and that's a very fuzzy sort of thing. Typically, I'm very bad and maybe because I'm male, but because I'm a programmer, whatever, I'm bad at like feeling the vibes from a client, but when I come home and I tell my wife about like the client I met with, she will very well instinctively be like, "You do not want to work with these people." I'm like, "But, but, but." She say, "No, no, no, no. Like listen to what you're saying. Listen to yourself, and these do not sound like good people to work with." Also, once someone has given you trouble, don't go back to them. Now it's very, it's like the worst advice. The worst advice I ever got in my consulting career wasn't like the first month or two of it where there's this lawyer I met. He said, "Okay, I've been in business for myself for many years, I'm going to give you great advice. Never say no, to work, always take work." This was literally the worst advice I've ever gotten because there's so many bad clients out there. And I actually believe this for a while. I would just like take everything, unless you like are desperate for the money, and it does happen.

28:22 Michael Kennedy: I can imagine when you're getting started though, especially if you're getting started 'cause you lost your job, it wasn't your, you couldn't plan ahead and build up towards it. It's a tough trade off.

28:31 Panelists: It's very hard to say, no, and I'm not saying be principled and homeless. That is not my plan of action here. But if you have the option of like waiting a little bit, and getting a better job, and saying no to people who are clearly just going to cause you trouble, the trouble is not worth it. You're absolutely right on that. And you can say that, and I'm speaking from personal experience here. I think a lot of people have to make that mistake because people told me that over and over, and I'm not worth it, and it's like, but when you're hungry, you have a far less discerning palate. And this is the best saltine I've ever eaten.

29:05 Michael Kennedy: This is the best saltine I've ever eaten.

29:07 Panelists: Exactly. But ultimately, I mean you learn those lessons the hard way, and it's hard to be trying to get your personal business off the ground or your business and need the money, need the revenue and just like let an opportunity pass by. You just want to get your arms around everything. But hopefully someone out there is less stubborn than me and like takes that advice to heart 'cause it really helps. But otherwise it'll probably happen once, and you'll go, "Oh man, that's is what everyone told me." That box gets kind of permanently. I get it now, yeah.

29:37 Michael Kennedy: That's why they said this. Yeah, all right. So that's kind of the red flags for getting started a lot. Although Reuven, you just say if they give you trouble, don't necessarily come back asking for more of it. But what about firing clients? If you find yourself in a negative situation, how do you extract yourself?

29:54 Panelists: I'm very blunt about it. Like I mean, I'll call them and I'll say it usually happens if they don't pay. That makes it pretty easy. That's a pretty big red flag there. That's easy, right. They don't pay it and then they say, "But I'll pay you soon and I really need more work." Ha ha, I don't believe you, and I'm not going to do more work. And I say sometimes I'll be blunt and say I'm sorry, I need clients who will pay me. Sometimes I'll say I've got other opportunities going on, and I'm going to work with those. And sometimes like I just won't call, I won't go over back. You know that's very rare. But you've got to fire clients, you've got to set a course, and by the way, good clients who are not willing to pay you as much as other clients, you have to fire them too. Not because they're bad people, but because if I've got client A who's going to pay me something, and client B who's going to pay me twice something, client B is worth more that way or that, no 2 ways about it. I was personally, I'm too empathetic, maybe too empathetic to be doing what I do, but like I let myself be a doormat in a lot of like early situations like that. And I think that goes back to mindset. I mean you really have to think, even if you're not thinking, Oh, I'm building a business. It's still business, right. You still have to make sure that you're capturing value. And every customer that's not paying, or paying a little bit too little is even if you like them, there's a lost opportunity costs of having someone that pays you appropriately, or on time or you know like there's intangible things. It's not just monetary compensation, it's stress. I really don't like being up at night stressed about an invoice. We don't let people do that to us very often. It's one thing when you have a great customer, and it's a short term problem, like those things come up. But definitely firing clients for us, and for me when I was freelancing, being direct is really good. I really have to psych myself up for that phone call. Like I've spent some time in front of the mirror, you know? Oh yes.

31:41 Michael Kennedy: Yeah, I feel like there's a lot of people who, they're programmers, they love code, they love solving problems, but they don't love confrontation. You know what I mean? And it just seems like there's probably some thick skin that has to be grown and some assertiveness maybe that you have to like build in yourself for some of these conversations are just hard.

32:00 Panelists: You have to fabricate it almost, I mean, not for everyone. I can't speak for everyone's personality. I'm a programmer. Like I like working with machines. I don't like working with people. And so like definitely there's like some psych up to that, but I just make sure and kind of tell myself, and reassert to myself that I don't necessarily owe anyone an explanation. If it's not good for business, it's not good for business. And particularly when you're out of the employee mindset, and you're in the consultant mindset, no one else is looking out for your best interest anymore. Maybe you didn't have that many people necessarily looking out for your best interests as an employee, but you surely have less now, so that's your job.

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

32:42 Panelists: Exactly, yeah. Yes.

32:43 Michael Kennedy: That at least where the companies survive then probably you should survive because you seem to be contributed somehow, or something like that.

32:49 Panelists: You no longer have an advocate beyond yourself with a client, and so that's kind of my mantra when I do, and I was like, I don't necessarily own an explanation. This isn't good for business, we're out. And that's how I kind of handle those conversations.

33:01 Michael Kennedy: This portion of Talk Python To Me is brought to you by Brighter AI, named Europe's hottest AI startup by Nvidia. They're leveraging AI to tackle the challenge of anonymizing video streams to seamlessly replace things like faces and license plates. And I'll let them tell you all about those in their own words. As a member of our team, you will take an integral part in shaping what anonymization means in a digital society. Alongside a highly dedicated international team, you will apply your industry proven Python skills, and deep understanding of algorithms to design and implement data processing microservices, and high performance video pipeline. If you're up for the challenge, apply at brighter.ai/jobs. We are looking for software and streaming engineers, DevOps, AI researchers and team leads. Just visit talkpython.fm/bright to get started.

33:54 Panelists: There are times also when bad things happen, and I've still decide to keep working with a client. I just changed my, like how I worked with them. So I had one training client. The way it works is I say, it's a daily price for the training for up to a certain number of people and beyond that you pay per person. Try to persuade them from doing that. And the first time I did training for this company, they said to me, "Okay, we didn't have anything over that number, so we don't have to pay anything extra." I said, "No, but there were more people than that there." And they said, "Oh no, that couldn't possibly be." And I said, "Okay, look at the invite you sent out on the calendar. Right, there were 25 people on the invite, you have to pay for the five extra people above 20." And so we went round and round and finally they agreed. They were like, "Oh, okay, well maybe if we invite them that many." So I decided to do it more training with them, and on the first day, like before we even started, I took a photo of the roster of the people who were going to be there. Training ends and they say, "We didn't have above the number." And I send them the photo, I say, "But these are all the people who are in the room, and signed in." That couldn't possibly be, we can't fit that many people in the room. As you said, I didn't want to have this confrontation, but I was like, here's like the photograph evidence. So I wanted to keep working with them 'cause it's not that often I do training for them, and they did pay on time, but now I know like how to steal myself for working with them again, and they get lowest priority. When I have other companies that are willing to work with me because I just don't mind that sort of agitation.

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

35:23 Panelists: I like to think about the idea of, and this may sound kind of brutal, but that you should always be kind of working to fire your bottom 20% of your clients because that definitely leads, I mean that is going to force you to improve your client base, but that may mean that your bottom 20% might not be clients that you hate. And obviously there's discretion to be shown, their relationships are important. Don't get me wrong, but like that's the sort of mentality that I like to keep is that someone's the lowest priority, someone's at the bottom, and the next opportunity that comes up that is optically looking better than that, we're going to bump them off. And I think that that may seem a little cold, but honestly it's healthy for business. It keeps you on a progressing, improving trajectory with your client set.

36:09 Michael Kennedy: Yeah, I can definitely agree.

36:09 Panelists: I have a Fortune 100 company that do a lot of training for, and they send me a question, once every six to eight months. Are we paying you above average, average or below average of your other clients? And basically they want to make sure that they're not in that bottom 20%. And indeed, like when I raised my rates, I waited, they were the last ones I told I was raising my rates. I raised them over the course of a year for new clients and others . Then I went to them and I said, "You're now paying the least of anyone else, if I'm going to justify working with you, you've got to raise the rates." And that combined with their survey, they were like, "Okay, done." They want to preserve the relationship. And they realized they can't be the cheapskates.

36:48 Michael Kennedy: Yeah, yeah. One of the things that's really, really, I think undervalued when you're an employee, but when you build these relationships with these large companies, like the one you acknowledge are extremely slow, and hard to build. But if you look at it from their perspective, they have so many people they can reach out to, but they want to just know, who can I call? Who can I trust? I've got this problem I need it solved, I need some training Python Reuven's been great. I'm not going to go shopping for more because I don't need to start that over, and have a failed class for 20 engineers. Let's just stick. So once you build these relationships, they're pretty sticky.

37:22 Panelists: Moreover, when you said they're slow to build, everyone always told me that working with big companies took a long time. So slow. So twice in the last year, twice in last year, like Fortune 100, 500 companies reached out to me and said, "We want you to do training for us." So like I didn't have to market to them at all. They reached out to me. It took six months before each course happened. Just getting through like procurement and stuff like that. Everything and let's talk about in dates, and content and on and on. And that's because they were really excited to work with me. Imagine I'm cold calling someone trying to convince them to work with you, it's can take way longer than six months, way, way, way longer. But once those relationships happen, right then you're in and you're in for a long time unless you really mess it up, Can at least six months. Those long sales cycles are challenging for obvious reasons. But like when it does drag out longer than that, you have this like whole different risk when you're working with big businesses like that, and you're trying to build that relationship, which is like you're 14 months into like getting something put together, and then your advocate like restructured moves away, different department fired and it's just gone. And it happens all the time with those long sales cycles. 'Cause just the window for something like that to happen is that much bigger. That's always fun.

38:35 Michael Kennedy: Yeah, that's happened to me and that's been bad. So, let's touch on just a couple of other topics here that I think are really interesting. Reuven, you said you charged daily, and you charge kind of a flat rate up to a point. Let's just talk about what should we charge, and then what is the structure? There's all sorts of interesting things, like there's hourly, daily, weekly, there's flat fixed rate for a project, and then there's this whole concept of like creating like productized consulting where somebody might pay like $1,000 every month, and then they can call on you for a certain amount of effort or things like this. So what are your all thoughts on how you should charge maybe early in your career of this freelancing story and then as you get established?

39:22 Panelists: Well, the easiest thing when you start off is to do hourly rates. And everyone talks about it, everyone thinks about it. And when I do project work, I still do largely hourly rates because everyone just sort of go like, it's the easy, it's the path of least resistance. It's not the path of greatest income, and it leads to all sorts of sort of friction because no matter what you do, the client is going to assume that you're padding it. So one of the nice things about me doing training now is indeed, and there are different ways to charge for training also, but I just charge as you said, like a daily rate for up to X people, or X by the way differs per country because they asked different numbers of questions, or are differently aggressive. And then basically a sort of penalty on top of that. And that has freed me from all of this business of the hourly stuff, and it is one of the reasons why I enjoy the training so much.

40:10 Michael Kennedy: Yeah, it's pretty clearly bounded, and there's not a lot of scope creep. It's not like, well that feature was super hard to implement actually, we didn't realize it. Like it was super hard to tell them about ORM today. I don't know, right, it doesn't make any sense.

40:22 Panelists: In theory like they could complain, well you didn't touch on such and such a subject, that was in the syllabus as much as you promised. But that has literally never happened. Like no one cares to that degree. I was too busy taking photos to prove the attendance in the room. I definitely started with hourly rates. I think most people do, like you said, Reuven, it's path of least resistance. It's kind of old as sand. Customers are used to transacting in that way of, I mean people all the time come and sit down with us for an initial conversation, and say what are your hourly rates? 'Cause that's just what their expectation is. I did that, I agree. Not the path to building the most income, but it definitely the way to get started easily.

41:02 Michael Kennedy: I was going to say before we move off of that. Like you know what I'm thinking, let's suppose I make $40 an hour as an employee. I don't know, like what would my consulting equivalent be? Because as we'll touch on in a minute, there are other fees, other taxes, other sort of friction and charges in your life when you're a consultant that doesn't happen when you're an employee. So what is like a good starter multiplier that you might like throw out there? Is that possible?

41:28 Panelists: I don't know that I have a multiplier like off the top of my head because over time I've gotten to where that's probably, I'm an engineer so it's probably over complicated, but here's my advice.

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

41:40 Panelists: What I tell people when they ask that kind of question is whatever you do, don't take the income you want to make, and divide that by 40 hours a week, and set your rate there 'cause you're wrong. 'Cause what's going to happen is you're going to take a vacation, you're going to get sick, so on and so forth.

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

41:58 Panelists: Exactly. And so what my advice always is, is to figure out what the constituent pieces of overhead would be. All of the stuff that costs you time at the very least, start there on top of that. Take the income that you think you're worth. I think objectively you could go get on the open market, and that's a good starting point as your basis, but then take 52 weeks, 40 hours a week, you got 2080 hours, and then start deducting from those hours. Change that denominator and say, "Okay, I'm going to take two weeks of vacation." So now it's 2000 hours. And I think everyone needs to factor vacancy into their rates. You're just not going to have projects cleanly lining up to one another. And it may feel kind of icky, this idea that you're charging people for time that you weren't working, but that's business and you have to do that. Like every time you rent a hotel room, this'll help. Every time you rent a hotel room, know that you are paying for that hotel room, and you're paying for a little piece of every other empty room in that hotel because they're not running their business model under the assumption that every room is 100% booked all the time, they'd go broke. And it helps me when I see that, and I know that as a consumer, I'm actually paying for it. They're like, okay, this is legitimate. So I factor in a vacancy percentage, like of some expected time, maybe it's 10 to 15, maybe 20% of your time might be vacant. You need to find what works there, and use that to start deducting from that denominator of hours, and then take that income your worth, and maybe now you're dividing that by 1900 hours instead of 2000, or you're dividing it by 1500 hours, whatever it is, you need to be honest with yourself about it and set your hourly rate from that. And then from there you've got overhead in your pricing. Every time you line up two projects cleanly together, sweet, more profits. And that's kind of where I would start.

43:43 Michael Kennedy: And that aligns the incentives to have you do that kind of thing. Like it encourages you to do those things. But yeah, it sets you up to not die if it doesn't happen. That's a great mindset thing. So I cut you off. You're talking about hourly and then some other options.

43:56 Panelists: Well, I definitely started hourly. We still have one legacy client here at our business that's on an hourly rate, but we moved to daily and eventually now we're at a place where weekly rates are what fit for us, and that kind of factors into how we package, and sell our services. We're doing a lot of R&D work. We're selling. We use agile and the scrum methodology, and so we're actually selling the sprints. And when we work really hard to get customers mentally in a place where they understand that what we're doing is we're not committing to individual line on ends of scope, we're committing to some high level business objectives, and we're setting a realistic plan for how we're going to work on this for the next 12 weeks. And we price it from there. And they understand that the budget controls are in their hand every time they come into a sprint planning session and say, "Hey, we'd like to prioritize this." We say, "Fantastic, this is what fell off the bottom, and if you still want to do that, we're going to need to do another sprint." That's relatively new for us, admittedly, but it's worked really well. We work on that kind of concept of weekly rates, and it's gotten us out of the haggle of nitpicking individual hours of shipping someone a time sheet of like, okay, I see you spent 42 hours. Tell me what those two hours were specifically for. That's no fun. That's kind of where we've gotten 'cause the hourly model you are to some extent, you're kind of diametrically opposed to the interest of your customer, whether you like it or not. It is in the customer's best interest for you to spend the least amount of time as possible from a financial perspective, and it's in your best interest from a financial perspective purely, to spend the most amount of time as possible. Like if you look at it purely as economics, you have that tension, and when you move away from the hourly model, that tension can be resolved, but that doesn't make it easy. And a lot of times that involves customer education, and finding that right client fit. So another red flag for me, client says, No, you've got to bill by the hour. You're not a fit for how we engage here. We won't do our best.

45:55 Michael Kennedy: That's interesting. I love the selling the sprints because that sells business value, and that speaks to the people paying the bills, and making the decisions, and it's short enough that you deliver something that they can evaluate and decide. Yeah, how it's going, right?

46:11 Panelists: And I think that's really important, when I talked about like starting out, figuring out what your rate is by looking at what your open market rate might be as a basis. If you want to charge above market, I think you can go and do that and I think you should, but you got to figure out what value you're adding in order to be worth above market rate. And there are plenty of ways to add value of being more than just a coder. For my business, that process of bringing that methodology, and allowing the customers to have budget controls, and ways to check in and good defined scopes along the way is the value that we're adding that justifies the premium that they pay for our services rather than building it in-house or using, a cheaper firm or something like that.

46:57 Michael Kennedy: Yeah, super cool. And for what it's worth, the guy that I hired, it's a weekly halftime, so it's nice and clear. It's just like, "Hey, what'd you work on this week?" And it's not, I already know what next week is going to cost. So it's pretty straightforward. I like that. Let's wrap this up with some of the conversation around kind of where we started. Like I'm a programmer, I love coding, I love working on software. I want to go freelance. And it turns out I need to find clients. I need to do marketing. Oh my gosh, there's extra taxes and accounting. Do I need insurance? Do I need an LLC? Should it be an S corp? Do I need, I don't know, whatever. There's all these other things. So what are the things that people don't know that they just didn't realize they signed up for a self education in when they go down the freelance route?

47:47 Panelists: I mentioned a little bit before, but you know people who are technical, and want to become consultants, there's nothing wrong with that. But now you are running a business, and that means you're dealing with all these other things and so you need to very least make a list of all...

48:03 Michael Kennedy: Even as a business it's a one, right?

48:05 Panelists: Right.

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

48:10 Panelists: Absolutely, absolutely. You've got to like figure out the tax thing, very, very important. In the US you've got to deal with health insurance stuff. Like there are all these things that your employer previously dealt with that you probably didn't even think about very much.

48:25 Michael Kennedy: Retirement?

48:26 Panelists: Yes, yes, yes, yes. That's super, super important. Great, all these different things that like you never even thought about, or you saw it on your paycheck stub, and now you have to actually deal with it. You're also taking on all the risks. One of the reasons, right, Casey has mentioning this earlier, one of the reasons why it's almost charged much more per hour than employees in the end, is because now you're taking on the risk of not having work or things not getting done, or they're not paying you and on and on. So I would say if you're going to start consulting, have a cushion of some cash, people talk about different amounts of time, let's say six months. Longer would be even better. It doesn't have to be a lot, but it has to be enough that if as you know with my clients, it took six months for them to actually do something, and pay, you can survive that because you're going to have a lot of meetings, you're going to talk to people.

49:12 Michael Kennedy: You talked about the long spin up cycle to get started, but there's also we pay you when maybe you ship a sprint. And oh by the way, that's net 30 or net 45 did you know? So you got to wait until the next month, and then another 30 days like wait, that's like nine months, what just happened here?

49:28 Panelists: I remember the shock that I had when I discovered in Israel, it's pretty typical to play net plus 60, and I was like, wait, I just finished the work, what do you mean you're going to pay me in another like two and a half months? How can that possibly be? And then of course, one of my favorite lines, that's our standard policy. And you've got to get used to it. So right, even if you find a client right away, and start working with them right away, it's probably going to be other three, four months until you see any money. That is exactly where I am, my first freelancing client, I just dove right into it. I did have some money put back, and I'll add to that, like of having a cushion have both a cushion and a willingness to cut back your lifestyle to extend the duration of that cushion. Because I think I went in with like three months of cushion and then I got into a project, and I got net 60 and it like, I ate ramen for many weeks waiting for this check to come. And then this check came and I was like, "Oh my God, you know, it was three months worth of work in one check." And it was like, the biggest check I'd ever cashed, but it was, I was so hungry, I thought about eating it. And so I wasn't as prepared from a financial standpoint to jump into it. And so, but fortunately I guess like my mentality, I was willing to shut off all of my bills, and like I haven't had cable since, so that was kind of free. And just like cut back on a lot of things, and basically go into financial hibernation waiting for that first check to come. So cashflow is a tricky thing that you don't, I never thought about before getting into the business, and now we look cashflow as a constant thing. I'm always looking at 'cause you can do the work, and you know from day one of the first day you wrote some code, it could be 60, 90 days before you ever get any money.

51:10 Michael Kennedy: Yeah, I also go through that obviously, like with sponsors of the show. They maybe book stuff far ahead. But then right there's like you said, net 30, net 45, and there's just a lot of delays. Luckily on the core side of things, it's all wired straight up to Stripe. So somebody puts their credit card in, the money's in the bank two days later, there's sort of these two parts, and they counterbalance each other pretty well in my world.

51:33 Panelists: I agree, like I definitely, I know. So I typically run like two big sales a year. Like I do a birthday sale, I do a Black Friday sale, and I know that if my clients at those periods, I get this for my online course, and then if I consulting, my training clients during those periods are paying slowly or it's another 30 days until I see it, those sales can actually help to fill in the blanks, exactly. And I'll throw a tip out there when you're negotiating those payment terms. We had a lot of success in, I say we, I mean this is something I did when I was still individually freelancing, man, throw a 1% discount on due on receipt, and you'll be surprised at how many companies go for that because I mean when you're dealing with a large organization like unless it just causes an absolute burden in their process, they'll take 1% discount any day. And so offering some little things like that can really help in speeding up your cashflow. And that saved me a couple of times of like, I shouldn't even admit, but I think there've been times when we offered a 10% discount. It's like it's cheaper than factoring an invoice to get some cash through. And so that's something else that I didn't realize and I think is a, this is something that you'll learn that is a really good thing. Not necessarily like, oh I didn't know that, and this is awful, is that everything is negotiable. It's not like walking into the AT&T Store to buy a phone. You can negotiate every term of a contract and you should.

52:53 Michael Kennedy: It's really hard though to get that, for a lot of people to have that negotiation. 'Cause again like conflict adverse, just want to please and get this job and whatnot.

53:03 Panelists: Well I would say maybe this helps us as a business when we present a contract, I'll tell you right now, we present the contract, and the terms in the contract are like, this is what we're offering up with the expectation that they're going to negotiate with us. And like we present a contract with that doesn't have our best terms. We're expecting people negotiate, and we factor that into it. So know that other businesses are doing that. They're giving you, they may not be giving you their best terms. There actually probably is some flexibility because savvy companies kind of know that that's going to happen, so negotiate like don't be afraid of it. It often it's being expected. I love those tips. I love those tips. I may take some of them. I'll take a royalty on them. Yeah, 1% of the 1%. I think a company contacted me it's probably a year and a half ago, and everything sounded great and they said, Oh, and by the way, you're going to have to send us what's called in Israel, like a tax receipt in order to get paid. Now taxes, he basically says, I have received the money and thus I owe the taxes on it, and they said, "And then we'll pay you net plus 60." I was like, "Wait, you're telling me that to pay the taxes before I get paid." As you realize it's not illegal anymore in Israel that I can just send you sort of a general invoice, and this company basically said, "Well, tough luck. This is what we've been told by our like master's in California who don't care about Israeli law." And I said, "All right, I'm not going to do this. "Oh wait, wait, wait, wait, wait. Actually we found a way that we can follow, I just remembered, yeah." Right, we can funnel it through...

54:27 Michael Kennedy: There was that other contract in my pocket.

54:32 Panelists: You know what I said? I'm I going to have to pay for funneling through this third company? "Oh no, we'll pay for that. "Don't worry about it." So if you just show a bit of backbone, very often they will be willing to back down. And at the end of the day, these are just people doing their jobs. Like, at the end of the day it's just people, and if you are giving a good product or service, they want to look good to their bosses, and so they want to show they brought a good supplier that makes them look good. So you know, a little bit of money is not going to affect it. And I think that there's a delicate balance there on when we talked about red flags earlier. I think that, if you have to push a little bit to get your best deal, that's okay, but if you have to push too much, that can take you into the territory of do I really want to work with this group? Like if they really brought me an awful deal, like that's one of the worst things is like you turn down a deal, and then like you're so far off on price or something that they say, "Well, we're willing to pay this rate." And it's 25% less than your rate. And then you say, "Nah, no thanks." They're like, "Okay, never mind, we'll pay your rate." It's like, okay, well like that doesn't give me a lot of confidence that you're not trying to work me over here. Like if you were comfortable with that rate in the first place, why did you make this offer? So you've got to balance that. Definitely someone brings you a bad deal, and you have to negotiate to survive. That's probably a bad, bad customer.

55:44 Michael Kennedy: That's a good advice. You know I want to come back really quickly to this hourly versus weekly, and net 30, and getting paid after and all this stuff. So when I started this a whole thing that I'm doing with the podcast, and the courses and stuff, there would be times where maybe I would sell six months worth of ads or like you said, Reuven, there'd be something like a new course launch, and that would bring in a lot of revenue, but then it would take two weeks or sorry, two months for me to write the next course, or for those ad slots to be used up before I can do it again. So I would get these big checks like Casey talked about their highlights, so we look at this, but then I would have to go a really long time without getting, it was no longer every two weeks, my direct deposit shows up big, it could be months, and it's unknown what the next destination is going to be. And obviously preparing, as you all spoke about, it makes a lot of sense. But the other part I want to talk about is just get your thoughts on it more, sort of helping my family adjust to this world that they didn't necessarily they were supportive of but didn't necessarily buy into. Like I know my wife and I, we would be financially planning and like, oh we got to pay these bills, and this tuition coming up for the kids, or whatever and all of a sudden all the had to get reworked. Like what are you all thought on this? I think that's maybe something you have to adjust to, even when the money is good, it's still like way more erratic.

57:08 Panelists: I definitely had some personal adjustment, but I'll defer to Reuven, maybe he has insight. I was fortunately had the disposition of being single when I made that jump. And so when I met my partner, I was already in freelancing, and so she just sort of, she kind of knew what she was getting into jumping into it, and so that sort of self selected. So I don't have any advice that I may not be helpful. I had to work that over for myself. I had to manage my own cash for those long periods of time, and being conservative, financially is really smart there. But outside of, I had the luxury of not having to adapt. It wasn't affecting anyone else's lifestyle but my own. So I was fortunate in that regard.

57:49 Michael Kennedy: That's cool, you kind of got to be a financial camel.

57:51 Panelists: Yeah, exactly.

57:52 Michael Kennedy: Reuven, go forth.

57:57 Panelists: My wife and I met when I'd already been freelancing for about four years. And for her it was kind of weird that I didn't know exactly how much I was going to make each month, then like it went up and down. She would definitely say to me, "Okay, how's next month looking?" So that we know if we could buy something, or if we couldn't buy something. And yeah, one of the nice things about trainings is that I now sort of schedule things way far in advance so I know what a month is going to look like pretty much, even three, four, five months in advance, where I'm going to be and what it's going to be looking like, which has definitely helped with our stability, and other good things. I should add, by the way, my kids were all born, I have three kids. They're all born like years after I started freelancing, and I remember saying to them a few years ago, "Most adults go to the same place each day, and work with the same other people each day." And they were like, "No way, that sounds crazy."

58:46 Michael Kennedy: That's awesome.

58:47 Panelists: I would say the biggest, sort of the two things that my wife and I should have done years ago when we got married, which sounds like Casey was smart enough to do, was we started finally a few years ago budgeting, like let's figure out how much we're going to be like spending. And that took off a lot of pressure for me for earning as much as I possibly can every month. As long as I can earn my salary, I'm calm, and anything above that is gravy, but I don't have to be killing myself to earn, as much as possible 24 hours a day. The other thing we started doing as part of this whole budgeting thing was as Michael said before, we started saving for retirement years too late. I mean we'll still have something for retirement but you can not start putting away money for retirement early enough. I cannot stress this enough, especially with young people thinking about a freelancing start ASAP and don't look back. And I also a latecomer to that. I mean like, and I think that overall goes into if I could do it all over again, I wish I could before jumping into this world, really trained myself up on just some financial literacy that I was lacking because that would have been helpful in the beginning, and it pays off dividends long run on the retirement side and I was well out of freelancing, and into running a company before I even started thinking about that, which is unfortunate. But definitely if you can factor that into your model, you'll be that much more successful.

01:00:04 Michael Kennedy: Absolutely, the retirement stuff does feel like something like, I can just kick that down the road. I cannot put off taxes 'cause I might go to jail. So we've got to do that, and I got to have clients, so I better learn marketing. But I could probably kick retirement down until I've got a handle on the other stuff. And maybe this is the right thing to do, but it shouldn't take it very far. It's one of those things that I think we can lie to ourselves pretty easily, especially if you're going into consulting

01:00:28 Panelists: or freelancing under the pretense of entrepreneurship. It's really easy when you're excited, and you're motivated, and things are going well to be like, Hey, you know what, I don't need to think about retirement. I got to grow this business. I'm going to be charging $1,000 an hour in five years, and I'll just work for a year and retire on that. And maybe you will, right. I don't think there's anything wrong with having those sort of aspirations, but the pressure is a lot less when you know that you don't have to. Financial pressure sucks. That's my advice. And so I do everything I can to not have any.

01:01:03 Michael Kennedy: Yeah, and let me like wrap that back around. We talked about like getting clients. We talked about the right clients, the red flags. If you don't have that financial pressure as much, you can make better choices at the beginning of projects and the beginning of engagements that keep you happier. Alright, you're not forced into like, I'm really in the corner here, I got to just take it.

01:01:28 Panelists: Sales solves everything, and one of the biggest problems it solves is it simply, it's not about selling, closing every deal that comes in front of you making a bunch of money. One of the greatest luxuries of having a good pipeline of clients is the flexibility to be choosy with which ones you work with. I mean, that's a beautiful luxury that you don't have when you're hungry. But if you can get there, ultimately, you're always picking for better client fit. So aim to be choosy. That's a great goal to have more than any other financial goal. Like I would tell people, don't be focused on how much money I can make, be focused on the idea of, I will get to pick the projects I work on because for me, that's a much healthier life to live, like from a stress perspective, I'm going to go even further than that. I agree with everything you say, but the fact that I now have some like choosiness, and financial stability has also helped my emotional health and my marriage. It means that I can actually concentrate on these relationships, and I'm not constantly stressed over, Oh my God, oh my God, oh my God, I don't have enough days of consulting work next month. What are we going to do to pay for X, Y, Z?

01:02:28 Michael Kennedy: Absolutely, yeah, it's good all around. All right, there's so many more things we could talk about. We would have to do a followup show at some point, but I want to be respectful of your time, so probably going to have to wrap it up there. Now I'm going to ask the two regular questions at the end, and I'll give you all a chance for a final call to action. So if you want to write some Python code, what editor do you use? Reuven I'll start with you.

01:02:48 Panelists: The only editor that exists as far as I know, can be Emacs. I've heard this is rumors that other editors exist.

01:02:58 Michael Kennedy: Yeah, it's an editor and an operating system. It's all good. Casey?

01:03:05 Panelists: I was hardcore PyCharm for a long time, but I made the shift to pure evil, and I use a Visual Studio Code.

01:03:12 Michael Kennedy: And it's cool.

01:03:12 Panelists: I still go back to PyCharm once in a while.

01:03:14 Michael Kennedy: Yeah, I like both of those, and I definitely think the momentum around PyCharm is growing and it's doing some cool stuff, so also nice. Alright, and then Notable PyPI package, maybe not the most popular one, but something you came across you're like, "Oh man, this is super cool. People should know about this." Casey?

01:03:28 Panelists: No, let Reuven go first 'cause I got to look one up 'cause it's awesome but I can't remember the name of it.

01:03:33 Michael Kennedy: Alright, go Reuven.

01:03:34 Panelists: Okay, I'm just going to to go like a super ridiculously easy default. The one I use every day for my teaching, which is Jupyter Notebook, yeah Jupyter Notebook, JupyterLab. 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 Michael Kennedy: Super cool. Casey, you find yours yet?

01:03:53 Panelists: I'm going to put in 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. That's pretty sweet.

01:04:12 Michael Kennedy: Oh, that's awesome.

01:04:12 Panelists: We could use that on a client project. We use it a lot. We do a lot of Jupyter stuff, very cool. JupyterLabs and Jupyter hover also really neat. Mine is ASCII Maddix.

01:04:20 Michael Kennedy: ASCII Maddix.

01:04:20 Panelists: Which is a... Yeah, you got to check this out, and maybe find an example of an implemented somewhere, but it's a, I'm reading from the description, a package to help people create Fullscreen texts UIs from interactive forums to ASCII animations on any platform. 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 Michael Kennedy: Yeah, yeah, that's a great one. I'll go 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 HTTP/2 as well as several levels of async integration, and some other cool stuff. So very cool if you're looking to do a little more than just straight requests. Alright, final call to action guys. Someone out there listening. They're excited. They're 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 the first month look like?

01:05:23 Panelists: 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, and 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, 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 of 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 up.

01:06:18 Michael Kennedy: Good advice through the legwork to not land in an empty pool and you jump.

01:06:23 Panelists: Totally, yeah, that hurts your legs. All right, so I'm going to extend the swimming pool, a metaphor here. So it's 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, 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." Well, maybe they're on a lot of people who need that particular service, but the people who need it are going to jump to that ad. 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 a Philip Morgan's book, "The Positioning Manual" is fantastic, both in helping you to figure out what do you want to like work on, 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. Is 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 Michael Kennedy: Yeah, that's really good advice. Yeah, it's a great analogy. If you get sick, you don't know want, if you have a heart attack, you don't want somebody who's a general practitioner, you're going to go find a doctor who is a heart specialist. If you get accused of murder, you're not going to get the general attorney, you're going to get the criminal murder defendant, like, yeah, you kind of want to be in that place that helps you definitely get first reached out to you, and also maybe have higher rates justify higher rates.

01:07:55 Panelists: For sure.

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

01:08:02 Panelists: Thanks so much, this is great. Awesome, thanks Mike.

01:08:04 Michael Kennedy: Yup, bye guys. This has been another episode of Talk Python To Me. Our guests on this episode were Reuven learner, and Casey Kinsey, and it's been brought to you by Linode and Brighter AI. Linode is your go to hosting for whatever you're building with Python. Get four months free at talkpython.fm/linode that's L-I-N-O-D-E. Working in the hottest new area Python, machine learning with Europe's hottest AI startup, Brighter AI visit talkpython.fm/bright to apply today. Want to level up your Python? If you're just getting started, try my Python Jumpstart By Building 10 Apps course, 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. And of course, if you're interested in more than one of these, be sure to check out our Everything Bundle. It's like a subscription that never expires. Be sure to subscribe to the show. Open your favorite podcatcher and search for Python. Which should be right at the top. 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. This is your host, Michael Kennedy. Thanks so much for listening. I really appreciate it. Now get out there and write some Python code.

Back to show page
Talk Python's Mastodon Michael Kennedy's Mastodon