Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: If you had 3-6 months to demonstrate your skills?
35 points by nimbleal on April 21, 2022 | hide | past | favorite | 33 comments
I'm a long time hobbyist programmer (~20 years) with decent knowledge of a few languages (mainly Elixir, JS and PHP, but dabbled in others). I'm only thinking now of programming commercially — hoping for remote work — but have no portfolio or commercial track record. If you were in my situation, how would you go about proving your abilities to potential employers? Given my current situation, I could reasonably spend 3-6 months doing this.



- How do you have 20 years of experience yet no portfolio? Surely you must have made small projects along the way (in 20 years), or tools, or scripts?

- 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


> How do you have 20 years of experience yet no portfolio?

(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.


It would be in your interest if youre serious to find the projects and consolidate them into a single github account.

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


It's worthwhile to write up descriptions of the projects like goals, technical challenges, etc even if you don't intend to open source the code. Help someone understand your technical problem solving approach.


Pick a problem.

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.


I’m currently in a part-time work situation that more than covers my expenses but leaves me with a lot of time on my hands (I.e a great position to be in). However, for non-career related reasons, I don’t anticipate that lasting more than another six months or so. Thanks for your advice!


Pick a problem.

how would you recommend somebody actually find a problem to work on? do you have any resources?


If it's for practice or portfolios I tend to suggest people solve problems which have already been solved. Find a SaaS service which already exists and just write your own naive version and open source it. Trello, Hacker News, a doc viewer, etc.

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.


For me, the number one issue when learning a programming language is motivation so I chose to pick a problem I personally need solved so I'll feel the need and have the motivation to see it through.


> I'm a long time hobbyist programmer (~20 years) with decent knowledge of a few languages

> 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.


As well as a job, I too am a hobbyist programmer, and have nothing ready to show for it. Bunch of shell scripts, impressive idempotent .emacs, some half-baked ML projects galore.

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?


> wondering maybe you're starting from a fairly low skill level

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 think those are the sorts of things you learn on the job, especially if you get an internship or graduate position. It's more about getting that first foot in the door.

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'd strongly recommend working with others, e.g. by contributing to an open source project. It will help prepare you for professional environments far more than working in isolation on your own projects will.


This!

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.


Choose a successful SaaS product that you like or better that you use. Take a feature (or a couple of features) and create an open-source project that only does those features. Optimise on a specific direction. Performance for example. Performance is UX. Make it work very fast for the end-user.

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.


Just go on Upwork and respond to jobs you are comfortable with and give low ball offers, and an explanation that you are skilled english speaking person with experience that wants to built a recent / modern portfolio which is why you are taking cheap work.

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.


I was a hobbyist and I made an android app, then got a job as a Java dev. It was a simple app with a few screens that looked good and worked. I showed the code to several interviewers. I recommend making an android app in Java because there are loads of Java jobs.


1. Search for jobs you might like to do

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.


Some ideas:

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!


If you are interested in Elixir, supabase is hiring and they are comfortable with unconventional hires, meaning your hobbyist approach could be a plus for them https://github.com/supabase/realtime


Depends on the kind of job you're going for; I don't think there's a single "general programming" project that would win people over regardless of the role

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)


If you’ve been programming casually for 20 years, you’re qualified for any software job you want other than maybe research. Just… decide where you want to be and know that job listings are more of a wish list than real requirements. Go for it. You’ll do great.


You are doing it for 20 years. You can just do preparation for interviews and start applying for junior/intermediate roles.

Specifically, I would grind LeetCode, learn system design questions, and start contacting company recruiters on LinkedIn.


You may be closer to a portfolio than you think. A portfolio is no more or less than documentation of what you have done. Even if it is just old projects and scripts on old computers, you can still write it up -- Explain the problems you solved, the tech you used, some notes on the success of the solution, screenshots of the UI if possible. Put it all up on a web page and you have a portfolio.

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.


You could contribute to an open source project you're passionate about.


Put some stuff up on GitHub that you can put on CV and apply for lots of jobs. At least some places will be desperate for coders and will try quite hard to see if you are remotely suitable, certainly for more junior positions.

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).


In your situation, what I’d do is take some mature code and migrate it to CI actions. This dramatically improves the ease for others to jump in and contribute. This shows you’re productive on your own and able to accelerate others on a team.


These are the steps you should take:

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


I would just apply for intermediate roles where skills align and hope for a 2-hour in person, or 6-hour take home, demonstration task.


Open source contributions I think.


Open Sores.

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.


I hope you meant Open source not open sores. I’m too scared to google for open sores to see if you actually meant that lol




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: