Hey! You made it to the end. I hope that you have started to realize how freelancing in software engineering can be a rewarding and challenging career path, which can earn you some extra money and grant you some really cool experiences.

Hello, In your opinion, what's the best way to deal with third party costs, for example the hosting costs or storage (S3) with clients, do you charge a monthly fee and take care of it, or do you ask them to create an account and ask for the tokens?
Honestly, my take on this is that these will highly depend on the expected resource consumption of each project. If you receive a project that could take a lot of resources over the long run, I usually prefer to have them create the accounts, since that puts them in control of financial cases. That generally comes with the hassle of asking them for tokens, keys, and all the other things, so, I usually evaluate this really early in the planning stage.
If you're doing a small website, with low resource consumption and/or think the client doesn't have a lot of technical ability, charging a monthly fee or a straight-up one-time payment to cover these costs can work, but make sure to clearly outline the terms in your contract (e.g., what happens if the costs exceed the estimate, when and how you’ll review fees, etc.) -- to be fair, most of the freelance jobs I did to this day never crossed the expected threshold, but, you never know.
For cases A and B, I normally make sure that everything is in the client's name and control. This allows me to easily walk away when project is done and the client will not be in a position later on where they are held hostage to me and my availability regardless of the actual cost. That includes domain names, SSL certificates, copyright notices, cloud infrastructure, source control, etc. (Plus, domain names and SSL certificates not in your client's name may take away some of the site's credibility.)
For scenario C, sometimes it helps to evaluate whether or not what you're building can turn into some Software-as-a-Service (Saas), fully managed and hosted by you (or your self-owned one man corporation). The infrastructure cost can be spread across multiple future clients and/or you can just convince yourself that your out-of-pocket costs will just be part of your future company's success story. Don't be afraid to dream big!
Holy crap! to be honest I wasn't expecting such detailed and well structured response, it was perfectly written and clear. Thank you so much, I really appreciate the time you took to write it and the knowledge that you're sharing with us here. I send you a huge hug from México!
While I agree that Fiverr and the like are probably cr*p, I think there's still potential in more "serious" platforms like Upwork or (a lesser known one which I've come across) Gun.io (don't let the funny name fool you, it has nothing to do with weapons).
As always "it depends", and while I agree that finding customers "all by yourself" (not via a platform) is generally the best and nicest way, it might not always be feasible, or it might just take too much time (been there, done that) - these platforms were built for a reason ...
The only time i tried Upwork. I took some time to answer throughly to the potential client and in the end, a couple hours later there was between 20 and 50 other applications so it is really demotivating. I don't feel like giving the time people deserve for nothing in the end.
Yeah the number of applications on a given job is generally insane, I agree that that's really demotivating - I think that's ALSO a problem for the people who are hiring - who wants to wade through 50-plus applications? I think that's a problem which Upwork should look at - maybe they should cap the number of applications at 20 or 30 or something, I mean, 50 doesn't make sense ...
And those applications can't all be brilliant, on the contrary - I'm seeing a lot of run-of-the mill, low-quality, copy and paste stuff out there ... I think that's where you can make a difference when you're really good, or better than average - try to stand out from the crowd, by presenting yourself in a way that projects a bit more "quality" ... there are also tools which Upwork offers which you can use in order to make yourself "stand out".
Thanks! Yes, copy/paste "heroes" and "cowboy coders" aplenty, but an area where I think you can really make a difference as a dev is communication - asking the right questions, getting to the bottom of the issues, solving the "right" problems ... that's always where I felt you can stand out from the crowd.
Personally, I've never heard of those two you mentioned -- to be fair, I lost most of my interest in those platforms after my bad experience with Fiverr, but, I'll be sure to put that on the list to give a check!
And totally agree, these platforms were built for a reason and you never know when you're going to need them hahah, so, I'll surely keep them on my radar! Thanks a lot for that resource 🚀
Thanks! ... well, Gun.io is a platform which probably virtually nobody has ever heard of (I'm exaggerating a bit ... but only a little bit), but Upwork is, well, it's like the "500 pound gorilla" in the "freelancing platforms space" :)
But ultimately they're just "tools", they're a means to an end - for me it worked, but that doesn't prove anything, I think there was also a huge amount of luck involved - "being in the right place at the right time" ;-)
Hello, I actually wanted to ask like suppose once we have created and given the software (or any product that we were working on) to the client and also received money from them. So basically our work is done here but you know if we create any software then it also need maintainance and database management etc. and this will be forever till that software exists. Now our work was to just deliver the product or the software the client asked for but if the client asks how to manage it further or asks us only to also manage it for long then what should we do in these both cases? Even if we just explain the client everything needs to be done in order to manage that software, the client still does not have a proper knowledge of it and maybe he/she will not be able to manage it properly and if they'll not manage it, the software will automatically start to throw any bugs or errors and they'll blame us for that. Now if the other option occurs that the client wants us to take care of that software further also for the long run but obviously we can't do that. So how can we handle such situations? How will that software and its database will be managed throughout its lifecycle? And what exactly should we tell the client to do in such situations? (Considering that there's only one person and not a team of many people who owns that business for which they asked us to make the software.)
In terms of maintenance per se, if we promised we were going to deliver something in the engineering planning phase, we have to do it. So, bugs and unexpected behaviors are on our end -- I fix and don't charge anything for it.
Hire a HackerNow, sometimes, our clients try to disguise small improvements as bugs -- and those are different things. I usually have a rule of thumb of not charging up to 3 small improvements -- just so we can have a great partnership and the client usually will remember that good faith. If the clients ask a BUNCH of improvements that adds up to some hours of work, than, I think you should charge additionally. After all, those things were not prototyped nor planned, so, adding them at a later stage will impact your costs.
In terms of database usage and infrastructure, I usually try to eyeball the usage/consumption of services by talking to the client and seeing their expectations -- if they are searching for a freelance to create a platform that will have to deal with thousands of customers, you can't put infrastructure costs on your end, but, if you're dealing with a small project, that might be viable.
And lastly, in terms of how to talk with your clients, it's important to remember that they are non-technical people usually, so, try to abstract most of the complexity when talking to them, showing only the high-level overview and the costs each part requires. Here's a quick example:
Instead of saying "It's expected that your customers will use an average of 25 GBs of S3 Storage, and increase the overall CPU usage, so, we are going to need to scale your servers to other EC2 instance ..."
A better way to approach that would be: "Hey, it seems users are sending a lot of big files on our end and it might increase our costs by 20%. Would you prefer that we limit the file size or include that monthly cost (about 50 USD) into your package?"
Na minha visão aqui, o que me ajudou muito a perder parte dessa insegurança no início foi ter algum dev experiente pra me ajudar nas etapas do freela -- então, quando eu orçava, ela revia os valores e me questionava quanto à porque em alguns casos, mesma coisa pra código e outros aspectos.
Isso fez com que eu sempre tivesse a segurança de que, se eu explodisse tudo sem querer, essa dev ia conseguir tocar o freela e entregar, sem deixar o cliente na mão. Nunca aconteceu, entretanto, e no final do primeiro freela, eu descobri que já estava em um nível legal de desenvolvedor sem saber.
Se você já não está no super começo e quer tentar se aventurar sozinho, manda bala! A grande característica dos desenvolvedores é resolver o problema e no final, seu cliente não vai ligar se seu código tiver gambiarras pra funcionar.
Cara, ontem indo trabalhar fui ao seu perfil achar mais coisa para ler e acabei no “Creating a personal brand: How to sell yourself as a developer” no primeiro parágrafo percebi que já tinha lido o texto na semana passada e até favoritado no Chrome, é que naquele momento não percebi que vc era brasileiro, curti mto como vc consegue imprimir sua personalidade mesmo em inglês.
Quanto aos freelas. Boto muita fé que consigo fazer uns projetos legais, mas tenho esse receio em dar o primeiro passo, estou cursando ADS na Fatec SP(estou tendo meu primeiro semestre de Engenharia de software e me identifiquei muito com esse tópico no texto kk), acredito que a exp dos freelas me destacaria para as vaguinhas de Jr. e ainda me garantiria uma renda extra.
Planejo ler seus posts novamente, e pesquisar mais a respeito. Vou estabelecer a meta de me preparar para isso até o final do semestre. Tenho em mente alguns projetos que posso executar como voluntário para ganhar confiança.
Com certeza estabelecer metas pra isso parece ser um ótimo caminho! Espero que você adore o curso de Engenharia de Software hahaha, foi uma das disciplinas que mais me motivou a produzir software profissionalmente -- abraços ao professor Alexandre Cardoso, por isso🫂
E sobre os freelas, com certeza vão te dar uma experiência bem valiosa pra vagas! Tem uma diferença enorme entre falar pra um recrutador que você já fez algum curso XYZ sobre desenvolvimento vs. criar uma solução pra um cliente real. O segundo realmente traz um peso muito maior ao teu conhecimento e é super visto com bons olhos!
But, in the real life, your customer generally will want just that, a solution -- not a specific technology for that solution. So, if they want a blog, of course, you can use WordPress and solve that problem easily, but, you can also do some pretty cool designs on Figma, make that into React code and add Strapi as CMS -- they're both equally fitting solutions, with the added benefit that the later one is way more unique than the other.
So, yes, there's a lot of demand for custom stuff, and me personally, I've had a few clients that even demanded for me not to use WordPress because of X or Y problem they had in the past with that solution.
And although this is not always necessarily true, generally, when you offer a custom solution, clients are more willing to spend more! This is a great analogy on that too, if you'd like more on that.