Ask HN: How does an old timer find contract work
I'm 72 years old and have been programming professionally since I was 27. I’ve kept up with the times reasonably well, considering that no one can now keep up with more than a few branches of software’s evolution. Sparing you the history: over the past 8 years I’ve worked extensively with javascript, full stack, taught full stack at a bootcamp for a year, written a couple very large applications, and worked a bit on other projects.
I would like to find more opportunities to continue doing what I love the most. At this stage contract work ranging from ~20 hours per week up to > 40 hours per week occasionally is probably the best value.
Yes, there is a question.
How should I go about finding such jobs?
(Also, I’m unclear about how to briefly fit my 45 years experience into a resume format)
46 comments
[ 3.2 ms ] story [ 112 ms ] threadLean on face to face networking? Programming Conventions? I got my last couple jobs based on who I know, not from applying in a big 'o cattle call.
> briefly fit my 45 years experience into a resume format
Chop it to just the last 10 years? That's what I did (as a green 45 yo with 20+ years experience). Then, during the interview I talked a bit more about my full experience.
Best of luck!
Have an online presence in some area. Open source something related to what you want to work on.
Help them find you.
The minority who are willing to look past your age (who will also be the better ones to work for) will pick up on your persistence and see it as a positive trait and hire signal.
As to the resume - there's lots of advice out there on resume advice for older workers. Truncating / condensing lists of older gigs is one of the standard techniques.
The rest of what you do is a variation of the same advice as applies to younger candidates - just that in your case it will have even more protective benefit,
For example - even though it may bore you a bit, be sure to both read (or carefully skim) as many modern books as you can that are relative to your field, as well as to stay up on the "shiny" stuff (cloud, containers, CI/CD) even though your gut instinct will (rightly) tell you they may be overhyped or less important than knowing the core principles.
That is - at least know what they are, what problems they attempt to solve and what they are basically made of. This will make is substantially less easy to dismiss you as a dinosaur (inflexible / crusty / less nimble than younger candidates).
Finally: wear your age with pride. You've lived through times, and have seen things these people can only read about (for those who even read these days). You have a rare perspective to offer, and the better folks out there will see that and dig that aspect of you. And will be proud to have you in their corner and on their team.
Anyone who learned C back in the '70s or '80s can pick up most newer languages quickly. Relational databases, the core of every non-trivial business application, date from the '80s.
My advice: don't worry about or focus on your age, don't make excuses, don't try to persuade people you haven't turned into a dinosaur. Focus on business needs and how you can solve problems and add value. Ageism in tech certainly exists but you mainly run into it when a team of younger people interview someone their dad's age and don't see a good fit with the team. And they're right about that -- I won't work 18 hrs/day for free pizza and beer anymore, and I don't play foosball or need a nap room.
Although it's against the linkedin terms of service (and I do not currently use it), octopus crm is a good place to look for thr framework, octopus automates it, but you can just do what octopus does, follow the same playback, manually.
Every day like a few people's posts, write a glowing reference/reccomendation for someone you've worked with or for on their page, endorse a few people for skills, and send out 10 personal messages to people in your field. To find those people search . Like if your into semiconductor robotics just search for that with those keywords, then filter it by people in management, then further by anything else you want to filter by (location, etc) and then connect with those people (send a friend request) and in the note just say hi, I'm X, I do X, I noticed you do to, just wanted to connect.
Do that for a few weeks and someone will reply back asking for your help.
I hope this helps, if it doesn't ignore it and do something better.
[edit] That said, for a freelancer, LinkedIn has less value unless you are active in the same communities that your customers are.
I think the worst way to find a job is filling out applications online and blindly sending in hundreds of resumes. LinkedIn at least sits a notch or two above that.
I'm sure LinkedIn has value for some people, probably even some freelancers. It never did for me, I always found referrals and word-of-mouth work better.
I'm not sure how people find freelance work for big companies like Google though, unless they go through an agency that has prior connections.
That's not a good match for me because I prefer smaller companies with well-defined discrete business problems and shorter timelines, and because I usually live overseas and travel a lot -- full-time remote in other words, and not available for daily stand-ups or lots of meetings.
I generally don't work for startups. I have, but they too often lack the focus to get good requirements from, need a lot of interpersonal interaction with the team, and want to pay in equity. Great gigs sometimes but not for me. For me the best customers are small/medium businesses not in the tech industry, profitable and established, who can't attract/hire/keep software/system admin talent. For every job opening at a startup you can find 100 small companies who can't get anyone.
Maybe it comes from my age, but "connecting" or "liking" someone on social media doesn't equal "meeting" people, cool or otherwise. A referral is a referral, perhaps, but I think one from someone I worked with or for who can vouch for me counts for a lot more than one from someone I "connected with" on LinkedIn.
My personal address book keeps my "network" safe from anyone harvesting them from my LinkedIn profile, another bonus.
Exactly. You don't just like them and stuff. That's just the beginning, you have to actually meet them and build a relationship. This isn't always in person, often a zoom call every so often to "talk shop" is how to start. Of course it wouldn't do anything if your just liking their pages and connecting with people. You have to put in the effort to go further, meet with them on zoom or in person, keep that relationship going. Extend those olive branches. It's just that you do it facilitated by linkedin and not at a conference or trade mixer or whatever.
There is no harm in people "harvesting" your stuff. That's what you want, you want to put up there your career accomplishments, the people you know, so that you can be found by the people that need you and your services.
If you find value in LinkedIn, great. I don't doubt that some people find ways to use it to build an actual professional network. I didn't try that, everyone in my network already knew me personally, and I had little incentive to expand beyond that. Personally I never got any job or freelance gig leads from LinkedIn, but I didn't try hard to use it for that either. I never had any trouble finding jobs or freelance work through word of mouth, friends, referrals. I did write "your mileage may vary" because I don't know that my experience with LinkedIn matches everyone else's.
Word of mouth and professional connections work best. With your long career you must know a lot of people who run companies, or still work in the field. And they know people. Word of mouth and referrals remain the best way to get leads.
Freelancers should focus on solving problems. Employees get hired to fill roles. Freelancers don't need a resume. They need demonstrated expertise that they can apply immediately to solving business problems. My approach comes down to getting the (potential) customer to list and describe their top five or ten pain points or needs, in priority order, then knocking those out for them. If you can deliver no one cares about your age or what you did before or where you went to school 50 years ago. Working remotely also helps, because you won't get the "not a good fit with our culture" excuse (i.e. "too old").
If you mean contracting like a temp employee that usually works more like an employee arrangement -- resume, interviews, etc.
You can work through an agency (disclaimer: 10X Management represents me). A good agency does the marketing, contracts, legal, invoicing, payment for you (for a cut). They can expose you to opportunities you would not otherwise know about.
Focus on your strongest skills, don't try to do everything. For example I concentrate on relational databases/SQL (core ideas and techniques almost unchanged since the 1980s), Linux system admin and cloud infrastructure (old hat to anyone who grew up with Unix), and web application development. I started freelancing by finding customers who had abandoned or broken projects (plenty of those, like 60% - 90% of all software projects) and offering to fix the problems. Debugging and maintenance pay just as well or more as green-fields development.
I have several articles about freelancing on my web site typicalprogrammer.com. No ads, sign-ups, pop-ups, or affiliate links. Good luck.
From most people I have heard is that they usually freelance as part time
I started freelancing part-time when my full-time employer started losing money and laying people off. I had a friend who ran a web design company, he would hear from his customers how they needed web programming, so he sent that work to me. He introduced me to another design firm that had even more clients who needed help. From there it kind of snowballed. By the time I quit my f/t job I had replaced my income with freelance work.
You don't have to freelance full-time, 40 hrs/week. You need to work enough at a good rate to get the income you want. If you were making $100k at a full-time job that's about $50/hr. If you can get $100/hr freelancing you can either work 40 hrs/week and make $200k, or work 20 hrs/week and make $100k.
My advice: Get some customers first. Concentrate on establishing long-term relationships. That will mean doing some not-so-fun work and maybe expanding your range, learning the business domain, doing a little extra for the customer. Try to keep non-billable time to a minimum. Don't spend a lot of time/money on stuff like incorporating, fancy web site, business cards, complicated banking, accounting, lawyers. The biggest non-billable time suck for a lot of freelancers is finding and bidding on jobs. The less churn you have with your customers the less of that gig-hunting you have to do. You want to build a good base of steady customers who will refer you to other customers. Ideally you get your customers on monthly retainers, which turns you into a predictable fixed monthly cost instead of an unpredictable account payable.
Remember that as a self-employed freelancer you have to pay all of your Social Security, Medicare, and health insurance, so factor that in when determining your rate.
In the freelancing articles on my web site (typicalprogrammer.com) I suggest charging for specific tasks and deliverables, not big vague fixed-fee projects, not hourly. That doesn't always work, it depends on the customer and the task. You should have a target rate in mind, of course. If you want to make $100/hr and your customer needs a task done you estimate how long you think it will take and multiply by your rate to get a fixed fee for that deliverable. Then stick to that. Estimating large software projects challenges even the most experienced programmers and managers, but with some experience you should be able to estimate well-defined tasks that take less than around 40 hours. That also keeps you from getting in the position of your customer owing you a lot of money, or you owing them a lot (because you took a 50% deposit up front on a $20k project and you can't deliver, or you client refuses to pay the remainder). I vary my exposure based on my experience and trust with the customer, but for a new customer I would not want to get more than $2,000 to $4,000 in the hole, so I will break their tasks down into small measurable deliverables I can bill for.
This is further clarified in the rest of the comment, but I wanted to call attention to this. Be really careful with this line of thinking. It's not an apples-to-apples comparison, especially given higher costs and potential downtime between contracts. I recommend billing about 30% more than you'd expect out of a salaried position.
> I suggest charging for specific tasks and deliverables, not big vague fixed-fee projects, not hourly.
Why do you recommend this? For beginner freelancers, time and materials is an excellent way to go. For fixed bid (on any scale), if you overestimate something and get it done quicker, you get a nice bonus. However, if you underestimate something on a fixed bid, you're now eating the difference. In my experience, software projects tend to trend higher than estimated way more often than lower. This seems like a recipe for an unexperienced freelancer to get screwed by their first engagement.
Big fixed-fee projects -- tens or hundreds of thousands of dollars and schedules that run for months -- open up too many opportunities for misunderstandings, and leave both parties exposed to owing or expecting amounts large enough to lead to lawsuits and arbitration. Instead I propose a more agile (in the original sense of the term) process, where the freelancer and the customer first break the project down into smaller pieces, in order, that have clear deliverables and price tags. That gives some advantages:
- More frequent review and feedback from the customer, which keeps expectations aligned.
- Less money at stake at any time for both sides.
- Customer sees constant and measurable progress, which will either make them feel better about the schedule and budget, or support discussions about a possibly unrealistic schedule and budget.
- Project has more velocity and more feedback loops. The customer develops trust in the developer for delivering, and the developer learns more about the business domain and the actual requirements.
I have seen many freelancing projects written up as fixed-fee that then go sideways. A couple of years ago a customer came to me after losing $65,000 on a web site rewrite that dragged out for eight months, and at the end what they got was not usable. Not a huge amount of money but that represented the customer's entire budget for the project. So we reviewed how that happened. The contract was typical: $65,000 total, half up-front to start, with vague requirements (a single page) and a schedule that seemed realistic before any work started. The developers staged exactly one demo site in eight months for review, got some feedback, then started billing for "change orders" based on their opinion that the customer was changing the requirements mid-project. Once the entire budget got spent the developers stopped work, demanding more money. Lawyers got involved, arbitration scheduled (mandatory in their state), that's still dragging on. No web site to show for it.
In hindsight it seems obvious the customer should have required the developers to maintain a staging site and push changes at least weekly, with a process for the customer to give feedback and change direction. If the project was broken out into iterations, with clear deliverables, the customer could have seen much sooner that the developer was off-track or not producing, and the developer would have known about requirements changes much earlier in the process. If they had decided to call it off at any time neither side would owe or expect tens of thousands of dollars.
Writing complete and unambiguous requirements for non-trivial software projects remains a holy grail of programming. Almost no experienced developers can do it, and in my experience customers can't even start -- they think in terms of how their business works but may not even know how to describe that in sufficient detail. Knowing this well-documented fact of software development that every professional should understand (since we've known about it since at least the 1960s), agile as described in The Agile Manifesto outlines an alternative approach based on frequent small releases, review and feedback, iteration, measurement. I think that approach has a higher probability of success, or at least lower probability of massive and contentious failure, than the usual price tag with vague specs as a one or two page exhibit on a boilerplate contract.
Focusing on deliverables forces both parties to define what they expect. Developers have a better chance of giving good binding estimates if they have clear specifications and bite-sized tasks with clearly-defined criteria for "done." The bigger and more vague the specs the more chance for m...
Well okay, but don’t do that? Estimates are estimates, not commitments. You can make it clear that it’s an estimate, that you’ll stay in constant communication re: status/progress, and that costs/timeline could change, and then charge strictly time and materials. If the estimate changes, it changes. Clients who understand this model are my best clients. Clients who view estimates as an unbreakable agreement are my worst. That’s the single biggest differentiating factor between them. It’s usually an indicator that they generally understand software as a practice, and not an outsourced service in the same bucket as lawn care or something.
Sure, don't do that. And yes, stay in constant communication with the customer. If you can estimate at all then you can break the tasks down to make the estimates even more realistic and achievable.
I have certainly seen ridiculously high estimates that indicate either incompetence on the part of the developers, or the developers preying on and defrauding the customer.
An ethical freelancer should not play these kinds of games, using the customer's trust and ignorance to get more money out of them.
In too many real contracts, when the developer discovers they grossly underestimated and have run out of money on their fixed-fee budget, they ask the customer to spend more. The customer now has a terrible choice. They are "pot committed" as poker players say. Can they enforce the original contract and estimate, losing any velocity and good will by calling in lawyers (and wasting money and time on that)? Does the work done so far have any value to them? I've seen developers hold their customer for ransom when this happens. And I've seen project budgets double through the use of "change orders," like the customer reviewing work in progress and asking for changes that the developer should have anticipated.
I once got a call from an attorney friend who told me his firm got an estimate for $20,000 to upgrade the law office to high-speed internet and set up every PC (15 in all) and two printers on a new LAN. Then $1,500 month for a maintenance contract. That number seemed high to my friend, not crazy high, but he had no point of reference so he asked me. I quickly found that Comcast had business cable service to that building for less than $200/month. The printers already had ethernet, some of the PCs did, the rest would need $20 ethernet cards. Then some cable and a router and few hours to install and set it up. I told him I would do it for $2,500 plus materials, no monthly maintenance fee, and just the monthly Comcast bill. That was in the pre-wifi days. I have seen stuff like this happen many times and to me it just looks deceptive and predatory.
> This is further clarified in the rest of the comment, but I wanted to call attention to this. Be really careful with this line of thinking. It's not an apples-to-apples comparison, especially given higher costs and potential downtime between contracts. I recommend billing about 30% more than you'd expect out of a salaried position.
I agree with most of that. 130% of base salary is a good guideline. Employers use the same napkin math to factor in payroll taxes and benefits. As a self-employed contractor you have to pay for all of your taxes (you will get some more deductions) and your health insurance (which you can usually deduct, though that particular deduction is a political hot potato). But yes, you need to consider the additional costs of freelancing when determining your rate.
As for downtime between contracts, I think it's obvious that's the freelancer's problem. You can't overcharge your customers to make up for downtime. If you establish trust and long-term relationships and get referrals you won't have a lot of downtime between projects unless you want to take time off. I had full-time hours as a freelancer just a few months after I started, entirely due to building some good relationships and getting referrals from satisfied customers.
If you intend to scour the freelancer marketplaces like Upwork, you will have both downtime and significant non-billable time spent on getting projects, negotiating and going through that process. Rather than thinking about finding the next project all the time, I looked for customers that needed steady work, either system admin or programming, or both, because they couldn't afford a f/t person or couldn't find/attract/hire. Lots of smaller businesses don't have resources in-house and couldn't find and keep a competent person even if they could pay a f/t salary. You only need a few customers like that. Leave the big green-fields fixed-fee projects to the larger outsourcing firms. I found cleaning up the mess they left was itself a lucrative niche.
To make a living freelancing you have to both eliminate unwanted downtime and reduce non-billable time, which mainly goes into finding the next project. I know some freelancers have effective "sales funnels" so they always have new work coming in. That can work. My approach was less sales and more building relationships that led to more work with a small number of steady customers, and solid referrals that I didn't need to find or sell myself to or bid on against other freelancers.
I have written before that you know you're succeeding as a freelancer when the customer didn't consider anyone else for the job. Winning 10% of the jobs you bid on means you wasted a lot of time on jobs you didn't get.
To avoid ageism, focus on online communities on Twitter and Discord. They don't even need to see your face. 99% of the time they are happy to do a text or voice chat.
If they won’t turn you on to work, there’s probably a reasonable reason.
Working with peeps who know you and your work doesn’t require a resume.
And the first step for finding work is always seeking rejection - because that’s the typical outcome of a phone call - on the phone not writing a resume.
A resume is only needed when someone asks for one.
Good luck.
(FYI, that’s a burner email— I’ll reply from a different one)
You don't. I have a way less experience and I still only show my last 10 years. As I said somewhere, if someone is interested in my experience in managing a (now) 15 years old specific software then I is not interested in them.
Also I'm in favour of 'CV should fit on a single page'. If someone looks for talent then this is more than enough to interest them and nobody looks at the second page anyway.
As far compressing your resume, my suggestion would be to pick and choose the few past experiences / accomplishments that you are most proud of or are most relevant to the kind of opportunities you're seeking. In other words, what would you actually want an interviewer to ask you about. Don't include dates. This approach is better than trying to write a detailed accounting of your entire career, even condensing each role down to a single bullet point. I'm coming from the perspective of someone who has screened resumes of and interviewed more experienced candidates in the past. It is definitely a bit of a turnoff when you receive an 18 page resume containing an essay about every project the candidate has ever worked on.
Same for listing keywords / technologies you've worked with -- no need to list every language you've worked with since 1975 (unless you're looking for roles as a COBOL or PL/I maintenance programmer). Focus on relevance.
Let's look at the opposite end of the spectrum. People that have more requests for work than they have time. This is common, especially in your field (programming).
So - a hack I like to suggest. Befriend one of these people! They exist on reddit, twitter, etc. Find them, they love humble bragging "ah I turn down jobs all the time nbd".
These people are like magnets for jobs, and because of that, they are also extremely credible sources of referrals. Hey xyz! I heard you are turning down a lot of jobs because you're too busy. Do you mind sending those my way?
Hope that helps.