Advice to a young unemployed computer science graduate: use freelance work to build a portfolio

I’ve recently spoken to a few young CS graduates who can’t find jobs. These are folks who got their bachelors degrees at schools one tier down from the super elite, e.g., University of Michigan rather than Stanford. I.e., a similar situation to what was recently covered in a New York Times article about a Purdue CS graduate who couldn’t find a job better than Chipotle and an Oregon State University graduate who applied to more than 5,700 positions.

Hiring a fresh CS graduate is risky for an employer because universities teach students how to work for an engineer, not how to be an engineer. Assignments in CS undergrad come in neat packages in which everything is doable within the allotted time. Engineering starts with talking to a customer to find out what is wanted/needed and then figuring out what is doable and which capabilities should be scheduled into which release of a program (the highest value and easiest-to-build capabilities go in v1.0). An employer thus has no idea whether a fresh CS graduate has or will ever develop any of the skills required to be useful. (I remember helping one very capable MIT graduate whose customer was unhappy with him. He’d spent all of his time on a paid project refactoring and reengineering code such that it was, in his view, more maintainable. He had let all of the customer’s requested features slip. The work that he’d done on the internals was invisible and undetectable to any user, admin or otherwise. He didn’t understand why he wasn’t a hero.)

What advice did I have for young people stuck in this situation? I advised against trying to cram for the puzzle tests that the most sought-after employers use as screeners. I advised signing up for freelance projects on Upwork or similar, charging nominal amounts if necessary to win clients, and then using the freelance projects to put together a portfolio. “If you were going to build a house would you hire an architect without looking at a portfolio of previous houses that the architect had designed?”

I’m not sure that I have found on the Web an example of what would be persuasive. https://benscott.dev/ is great from a visual/design point of view, but it doesn’t show the client’s perspective. I would prefer to see a portfolio that includes a photo of the client and what was the essence of the original request and then some screen shots showing that the client-requested features actually were developed. Finally, the project blurb should contain something about which tools were used, e.g., MySQL/Node.js or SQL Server/Microsoft .NET/C#.

Readers: What else would you say to a recent BSCS grad who is applying everywhere and getting interviewed almost nowhere?

Separately, if all else fails I think there are plenty of jobs selling marijuana in New York City, with at least 15 shops within 3 blocks of my Lower East Side hotel.

22 thoughts on “Advice to a young unemployed computer science graduate: use freelance work to build a portfolio

  1. Make a significant contribution to an active open source project (i.e. on github) that will be recognized be as many users as possible. This could demonstrate to a potential future employer that you were able to listen to the customer and implement the requirements.

    Better than signing up for freelance projects, because the freelance project could be proprietary, limiting the amount of disclosure to future employers. The open source project should also be significantly more visible than a freelance project.

    The other advice, if the person cannot find a job, would be to go into trades, it will be a long time before AI starts replacing trades and there are a large number of skilled trades people at near or above retirement age. If you graduated in electrical or computer engineering, becoming an electrician should be very easy and could lead to more potentially interesting work and opportunities than being a code monkey or working for meta on the newest brain washing app for kids. You can also move to an affordable area in the country, lots of trade jobs everywhere, and have a much easier time purchasing a house and raising a family.

    • One issue that I have with open source projects is that there isn’t a customer. A lot of it is programmers writing code for other programmers.

    • Not everyone can be an influencer in Stuart, FL. 🙁

      Re: Trades

      Tradesmen are in demand, and not a bad idea, keep in mind that it is hard physical work young un’s often don’t want to do. Also, if they get into these jobs, they really need to think about owning their own trade business, and having others do the work when their back starts hurting. Have you ever worked in a crawl space or attic or under a 6000 lb SUV on a Chinese lift? I have. There is a reason people don’t want to do that at all, nevermind their whole career.

      Re: Entry Level Jobs

      I told my teenage niece, “If I had to do it over, I wouldn’t even go to college.” She asked me what I would do instead. “Work in a Chipotle half-time and a MJ shop half-time, complementary jobs.” OK, I just made that up, but I told her something like that. While I was working at some entry level job, I would be thinking about starting my own business, and building that into something. Stay off social media and do stuff IRL. Do something fun–my friends from high school were ski bums in Colorado, giving lessons and meeting girls. I wish I had joined them, I wouldn’t be much worse off, financially.

      Re: Open Source/CS

      Yuck–open source is the gift that keeps on taking–especially by FAANG. I’ve done plenty of it, and it is thankless and the entitlement of GPL commies is off the chart. One CS idea would be working on a startup consultancy to fix the slop code that A.I. generates, but again you have to have something that pays for the ramen in mom’s basement until your business hits.

      I think the best idea, overall, is to have rich parents that give you a trust. So you can live…in Stuart, FL.

    • I agree with @Pavel — join one or more open-source projects and contribute as much as you can. This is far more valuable than freelancing early on because, with freelancing, you are often on your own without mentorship or collaboration. Open source, on the other hand, gives you opportunities to interact with others, learn from code review feedback, and work with established codebases. Once you built credibility and experience in one or more open-source projects, you can then consider moving into freelance work.

      I was a contributor, voter, project manager, and later a porter for a well-known open-source project under Apache (I went emeritus over 10 years ago). This came after many years of development experience and working with multiple companies, including two startups. Having my name associated with such a well-established open-source project has not only earned me respect but also given me a stronger voice within my current Big company.

    • I also agree with @Pavel about trade jobs. Pursuing a career in plumbing, electrical work, carpentry, or even mechanics is often a much better option than IT work these days. It’s far less expensive to get certified, much quicker to get started, and there’s strong demand with plenty of opportunities in these fields. For decades, our government has encouraged young people to pursue liberal arts degrees that bring little value to graduates or to the country.

      In addition, universities today no longer teach Computer Science the way they did in the 70s, 80s, or even 90s. The curriculum has become overly high-level, with students relying heavily on IDEs to guide their work. The days of learning about memory types, memory management, pointers, and the operating system layers are gone. Even debugging has become so abstracted that students are shielded from examining raw data in memory. This is why so much of today’s software is bloated, slow and consume a lot of resources.

    • @Trust No. 1, Yes, a trade job can be hard on your body. However, you are typically working 8 to 9 hours a day, 5 days a week, and earning a very decent income. Even during those hours, you get breaks, and the work tends to be slow going and steady.

      Compare this to coding: we often put in 10+ hours a day, deal with constant crunch times, and still have to carve out time to hit the gym just to stay healthy and fit. With a trade job, your work is your workout.

      I manage a small property on the side, and working on it, whether it is electrical, plumbing, carpentry, or even landscaping, feels like a refreshing change. It is physically engaging and satisfying, and I mostly do it on weekends!

    • @GeorgeA

      Re: Becoming a tradesman

      Agreed. I’m all for more people becoming tradesmen. Caveat: people who grew up on screens need to know what they are in for, and having gone through aging myself, how to plan for getting older.

      I also agree, sitting hunched over a computer in a chair for 10 hours is easily one of the worst things for your health, mental and physical. I spend my leisure time fixing broke dehumidifiers, it’s a good workout.

  2. All the local municipalities and counties throughout FL are constantly hiring IT workers at all levels – not so much software developers but some, and a CS degree is the usual education requirement. Certifications are helpful: networking, computer security, etc. Starting salaries vary widely, usually the larger cities pay more, often much more.

    @Pavel: Yes, pursue a career in a trade is not a bad idea. (Or re-train as an RN!)

  3. Forget about anything remote or top tier. Suspect there’s a glut of guys chasing 1 remote job or they’re all chasing Nvidia. Open source was the big thing 30 years ago. Not as much as leet coding now, either because the industry is now a spectator sport or because everyone has a forked github project he credited himself for inventing. Leet coding is what the industry wants now & fighting the industry is futile. Lions review what the top guys are spewing on linkedin. It seems 1 stint in a top tier company sets them up for life & from then on, they just hop around the top tier. Even though lions never became wealthy or got into a top tier company, a strong indicator of success was forking lion software & putting themselves in the credits. It might have predicted ambition.

  4. I guess if employment target is one of top software companies then right open source project is the way to self-introduce, along with puzzles of course. Not some personal git repo with 3 followers. Freelance is better for all other businesses. It is usually easy to demo freelance portfolio, just point to a client website.
    Also it is important to show how use of ML speeds up developement process, but after remote interview, not during it.
    Trades will be automated in 20 years time, they are conceptually simple and military already uses compact moving robots.
    Maybe master in Computer Security is another option. Recall that all those who could not find job in 1990 went to CS grad school instead.

  5. Open source advocates: Aren’t there too many open source projects and open source programmers for a young/new person to distinguish him/herself? If I’m an employer and I have never heard of Project X why should I be impressed that an applicant has contributed to Project X? Being able to listen to a customer, write down what is needed, build it and launch it, however, is a demonstration of economic value!

    • @Philip, For a young or new person to land their first freelance gig, they need to either demonstrate past work or have someone to vouch for them. This makes starting out in freelancing much harder. Open-source, on the other hand, doesn’t have this barrier.

      That said, as you pointed out, joining and contributing to an obscure open-source project with no recognition isn’t very effective. It is better to pick a well-known project, such as those hosted on Apache or GitHub. Nowadays, projects related to search, big data, or distributed systems are particularly valuable, which is what companies are looking for, thanks to overhyped AI, and provide great learning and exposure opportunities.

    • The industry is more dependent on open source investment now than it ever was. Most workers seem at least minimally aware of the reality & what happens to their jobs if that source of capital goes away. There are just thousands of projects doing the same thing now, where 30 years ago it was a lot more diverse.

    • FYI, not an open source advocate… What’s wrong with a small-scoped, closed source app? I’ve done it, and any “public ivy” graduate should be able to as well.

      It’s a good way to keep up ones coding skills, could might make some money especially if it’s useful, and one doesn’t have to “give away the store”. Incorporate a business, and call one’s self an entrepreneur on the C.V. Make closed source great again.

      One aspect of FOSS which stuck in my craw was doing “pull request” patches on “spec”. Fixing a bug or adding a feature, and having some finicky hipster coder ignore or reject it. Do not do this. I think JWZ shares some of my opinions:

      https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=819703#158

      He has a Law too:

      https://en.wikipedia.org/wiki/Jamie_Zawinski#Zawinski's_Law

    • Philip, U of Michigan CS program is ranked #10 in the US, by US World and News report. It is much higher regarded then Purdue’s program, admission to which is not competitive. If your friend did not get hired out of college, through internships or career placement services then he has some issues or demands. Suggest to him to look at specific companies he wanrs to work at, which open source projects their top developers lead on github, and start contributing to those projects. It is not likely that he wants to do technical pre-sales. All large companies have their analysts who do requirements and some kind of requirement to deployment pipelines where requirements are signed off and formalized. If he wants to learn business side he could sign up with some temp agency to get on some office floor, if he knows typing and excel.

  6. It seems like like the trades or health care related jobs like nursing will continue to be in demand after the Aipocalypse.

    The freelance idea might not work as well as you think. I looked for interesting stuff there for a while and I even did the actual thing that they asked for a couple of times and all of it led to nothing. But maybe I was doing it wrong.

  7. > Engineering starts with talking to a customer to find out what is wanted/needed and then figuring out what is doable and which capabilities should be scheduled into which release

    In any organization of any scale, engineers don’t get anywhere near customers. Roles are narrowed to specialized personnel.

    Example: a program manager will give a product manager a high-level business goal. Xhe’ll then get a business analyst(s) to get requirements from customers. Then the PM will generate at functional spec for the requirements. Then a UX designer(s) will transform it into a product spec. Then an architect will create a technical design. Then engineers will get assigned pieces of the technical design to implement. If the engineer need to store any data, xhe’ll have to work with the data architecture team (they’ll do the data modeling per corporate standards) and schedule the DBA team to make schema changes in production. Then the QA people will get their turn. If enough resources (people) are involved, the product manager will bring on a project manager to handle scheduling + meetings + draw Gantt charts.

  8. Tell them to be patient. In ~6 months the entry level and college hire pipeline is going to be thrown wide open. Junior devs that show they can actually use AI tools to accelerate their software development output in meaningful ways (2x+) will be the ones that get hired. The desired outcome for most CEOs is to replace 90% of their existing senior devs (high cost) with armies of jr devs (low cost) under the assumption that with AI tools a jr dev can get close to the output value of a sr dev. Then tell them that getting the job as a jr dev will be the easy part. Keeping that job and getting promoted to the ranks of the sr dev (remember this will be artificially fixed at a low number like 10%) is where the new cliff is going to be. If they don’t get this then tell them to go watch Logan’s Run and get the popcorn ready.

  9. If he is at all talented, he should get on a plane to SF and socialize every day. He will be hired by a startup within a month.

    This advice may not help a typical mediocre CS grad, unfortunately.

    Fresh CS grads are bimodal. Good ones self-taught before college. 100% of these people are employed.

    The rest picked CS at random from the white collar professions and need costly hand holding to deliver mediocre code for 1-3 years before they improve or switch to product, sales, marketing, etc.

    With an industry average of 2 years per job, this deal makes little sense for many employers today.

  10. If you think about it, those same large Internet companies that leveraged open source for their server software (without substantially reinvesting the bounty in open source projects) have now trained their AI products on it to “replace” developers. Screwed over twice. I guess they might *try* to use Jr. devs, sounds like what they would do. My suspicion is that Sr. devs are going to be needed to filter the code slop into something useful. Interesting times.

Leave a Reply to Trust No. 1 Cancel reply

Your email address will not be published. Required fields are marked *