Solve it.
Publish the code on github.
Do that in a few different languages.
Over 6 months figure you could cobble together 10 hacky minor (but working!) projects and 2 decent ones.
Do a decent job of a README.md which explains the problem the tool solves and put one of those nice animated GIFs showing the tool working or just screenshots so people can grok what the problem you're solving is and that you have a working solution (and nice screenshots will frankly discourage me from downloading your semi-hacky code).
Put link to github on your resume.
I would also say that if by "I could spend 6 months doing that" you mean that you want to quit your job and spend 6 months programming before you run out of money, I'd strongly suggest against that. Spend an hour or two a night and/or more on the weekends and stretch things out to a year or more. The stress of being unemployed and NEEDING to find a job is not going to be your friend here.
how would you recommend somebody actually find a problem to work on? do you have any resources?
If you're looking for a problem to work on which will allow you to sell your solution later on, that's a different kettle of fish.
- Post whatever you have on github, polish it up of course, with proper README files with description, installation, etc -- whatever would be necessary for someone to take a look and reasonable have enough understanding after a minute or two of what it does and how to compile it/run it
- Write a few blog posts on whatever interesting, useful or challenging things you've seen in 20 years (github will also host you site for free (https://www.google.com/search?q=github+blog+free), or use wordpress, medium, etc)
- Contribute to whatever interesting projects you've seen -- start with a bug you've come across that's annoying but conceptually simple to fix, very easy way gateway into contributing to open source
- Link your github, open source contributions, blog on your resume
- Spend the remaining 2.5 to 5.5months grinding leetcode and interview prep material
(There is another similar question below)
I never anticipated doing this as a career, so the projects are just scattered over the hard drives of old laptops. Also, some of them are a bit too idiosyncratic (for e.g, in recent years I mostly treat PHP as a functional scripting language — with no good justification other than finding it fun — rather than doing OO stuff) for mainstream applicability.
That's great about the PHP FP, great blog material and or interview talking points. Mentioning FP, and other core CS skills on a resume, would help as well.
Speaking of, as a new "commercial" programmer core cs skill, ability to solve problems protactively and desire to learn regularly and with a keen interest will go a long way after landing the job
> but have no portfolio or commercial track record
A 20-year hobby, dedicated enough to be "decent", but nothing to actually show?
Not trying to take a jab or anything, it just more leaves me wondering maybe you're starting from a fairly low skill level. There's plenty more to software engineering than just languages.
In which case, maybe a 3-6 month full-time course? I work with a guy who was a carpenter. He did a 3-6 month (can't quite remember) full-time coding course. It was very practical - Javascript, HTML, etc. He then took an internship at our company. I'm not sure of the salary, but it would have been fairly low. But just through hard-work he's now a terrific mid-level engineer, and he could move on to another company with a solid story to put on his resume.
I suspect a lot of people might be against coding courses and more leaning to DIY self-learning. But not everyone can stay on track, it's hard to know exactly what to study, a good coding course can point you in the right direction with jobs, and it looks better on your CV. Just my 2c.
I don’t see why it is so surprising. Finishing and polishing something off is often 80% of the work and 20% of the fun, if you’re not paid for it then why bother if it’s a hobby?
It's a fair assumption but unfortunately I think I would lack in specifically the areas that online courses don't tend to address, i.e everything that's involved in working on a large codebase as part of team that's not algorithms, testing and language stuff. I don't know anything about deployment and management for e.g.
I didn't know anything about CI or CD when I graduated.
If you're interested:
* Get familiar with Git (just the basics - clone, checkout, log, add, commit, diff). * Basic bash commands / GNU tools. Are you familiar with Ubuntu? You could try installing it and playing around in the terminal.
Beyond that companies can have pretty different deployment processes with varying degrees of custom solutions. It's kind of expected you'll have to learn their way of deploying code.
If they're into C#/Microsoft stuff, man that's like a black box to me and I have no clue haha.
You could also read a bit about SCRUM and Kanban. They are, I don't know what you'd call them, "project/product management methodologies"? Both are pretty common.
But I wouldn't fret too much - you can drive yourself mad thinking you need to know everything upfront. If you're honest about your skill level, they'll have honest expectations, and can help you learn anything you need to know along the way.
I went from being a hobbyist dev -> leading a team at a large tech company. The biggest learning I had to do was around writing code with others. It’s one thing to be good at writing code/making a project. It’s another to write code others can understand and work in a project with multiple devs.
I’d definitely recommend finding some open source projects and contributing to them.
The other thing to take into mind is that while you may be newer to team based development most likely if you’ve been working for X number of years you’re not new to working with teams. A lot of the same skills apply.
Every hobbyist with years of experience has likely contributed to Open Sores Software.
Better yet, just interview somewhere for a job. Likely, even their junior devs will know a lot more than you. Persist. You may get hired. If so, learn from those junior folk and get a better position next time.
Do this not in a big rush, but slowly. It is more important to work on this everyday than to spend a night to finish something.
Write about your journey while building this. Setup a simple technical blog (use write.as, hashnode.com, ... ) and document every few days a problem and how you think about solving that problem, your decision process and the solution you choose and implemented. Make sure you show the code there. I cannot underline this enough: do not invest time to setup your own blog. Use something existing, just focus on writing.
Use Github or Gitlab. Create there MRs/PRs and review them yourself. Then refactor based on your own reviews. This will show how you think but more than this it will contribute a lot on growing as a developer. Do the reviews first thing in the morning before starting working on the project so that you look at your code with fresh eyes. Ask for code reviews from other programmers if possible.
Then register, yourname.dev and post the work their with a resume or something similar and a little bit about you etc.
You can put the work on github if that's applicable as well.
Add a few side projects interfacing with API's as well. Just pulling basic data and manipulating it a little bit. Provide working demos and the code on your site.
Explain that most of your coding knowledge was learned through the Department Of Corrections inmate education program and the 20 yr gap in your work history is because you owed a debt to society.
2. Read the skills they're looking for
3. Learn those skills. If that's not feasible, return to 1
4. Create some simple projects on Github to demonstrate them, and blog about them to explain what you've done, why you're doing it, etc.
5. Apply for jobs like the ones you found in 1, referring to your new portfolio.
There's no point just aimlessly creating projects - make sure you do things that demonstrate skills that are in demand.
Also, your projects don't need to be massively complicated. I got offered a load of roles just from a blog post I made about how to use a JS library that was popular at the time.
If you have no formal training, you might consider taking a few CS courses on Coursera and adding those qualifications to your CV too.
If you’re interested in an Elixir job then an acquaintance of mine has a site that might be a useful resource: https://underjord.io/jobs.html – there’s a mailing list there to get notified about Elixir job opportunities.
He also has a YouTube channel with videos about Elixir and other stuff: https://www.youtube.com/c/underjord
Also: On 2022-05-01 there will be new hiring threads here on HN. There’s always three threads: Who is hiring? • Freelancer? Seeking freelancer? • Who wants to be hired? So maybe just post in the who “Who wants to be hired” thread and see what happens? :)
https://news.ycombinator.com/submitted?id=whoishiring
Godspeed!
Based on what you've mentioned, sounds like you're a web person? Maybe back-end or full-stack?
I've heard people say a CMS is a good baseline "I can do web dev" project. It's a CRUD app, but one of moderate complexity which involves some interesting problems. Demonstrates full-stack skills, and also leaves room to tune it to your particular strengths (front-end ninja? do a fancy SPA; back-end focused? do it all server-rendered with some Bootstrap styles and maybe have it support multiple databases or something. etc.)
But in general: if possible, do projects that are specific to the job you want (if getting a job is the goal of them)
Specifically, I would grind LeetCode, learn system design questions, and start contacting company recruiters on LinkedIn.
After all, portfolios are just like resumes in that their purpose is to grab the attention of someone to get a conversation started. Focus on telling a story that makes people want to hear more.
Not strictly programming but perhaps a useful gateway drug: how about learning the dark arts of AWS management? Massively useful, non-obvious, well-structured and with ample learning material, it gives potential employers, certainly smaller firms, a good reason to hire you. If you’re a coder with unclear track record, hmm, but if on top of that you’re good at cloud setup wrangling, that’s a win.
It’s what I’m considering doing every now and then, anyway.
Another approach, slightly cheeky but whatever, is to make a blog with at least 20-odd entries (I know, it’s not nothing), but backdate the posts, so it looks like you’ve been doing it for a while. Maybe add some comments from a few “dedicated readers”. It’s not really misleading, anyone looking at your blog would mostly care about the content, but creates more of an impression of continuity (which it sounds like you have, just not documented).
Start with your resume and get that perfect
Create a site with details from your resume
Pick a few scripts/pieces that exist, clean them up and add them to github
Spend the rest of time on:
- leetcode - Building one thing