Skills I learned in my first 6 months as a software engineer
I joined my current company as a junior software engineer without any prior professional experience in tech. When I hit the six-month mark in this job, I wrote down the things I had learned so far.
I’m sharing this list with two groups of people in mind, who I hope can benefit from it:
- People with no professional experience in tech. Maybe you’re currently a student/bootcamper/general career changer, or just got hired (congrats!), and you’re wondering what kinds of things you might learn early on.
- Experienced developers who need to onboard a completely fresh new hire. You might be curious to know what kinds of skills your new junior might acquire during their first few months.
Please keep in mind that this list is specific to my personal experience,1 and only includes the things I feel comfortable with and do on a regular basis. New juniors will start their role with varying levels of knowledge and experience - just think of this as a single data point I’m throwing out there.
Skills I learned in my first 6 months as a software engineer
General coding/other stuff
- industry-specific domain knowledge: terminology, the general business model, etc.
- real-world Git commands like
reflog
,reset
,commit --fixup
,git rebase
,rebase --autosquash --interactive
,cherry-pick
, etc. - writing integration and functional tests with Django and pytest (factories, mocking, parametrizing, etc.)
- writing async tasks in Celery
- debugging
- rewriting a legacy Stripe payments integration
Architecture, design, best practices
- navigating and developing within a layered/pluginized architecture
- how to do code reviews like a human
- various code conventions (mostly for Python, Git, and avoiding flaky tests)
- writing code with the database in mind (concepts like idempotency, atomic transactions, and durability)
- considering second-order effects (i.e., “How will my new change affect other subsystems that might depend on the existing functionality?”)
- standard IT security practices
Django
- Querying the ORM using field lookups,
filter
,exclude
,Exists
,Q
,annotate
,aggregate
, etc. - Django management commands (for cron jobs and temp jobs)
- class-based views and basic methods like
dispatch()
,get()
,get_context_data()
,form_valid()
- basic templating
Soft skills
- handling blockers and knowing when to ask for help
- asking good questions (not XY questions)
- working in a cross-functional team; managing expectations
Footnotes
In my case, I was nearly done with the Oregon State postbaccalaureate Computer Science program, which gave me fundamental computer science knowledge, plus some experience coding in Python, Javascript, C, and Assembly. Outside of that, I had also done two personal projects - an ETL pipeline in Python and a basic REST API in Go, plus a small open source contribution. I had minimal experience with Django, which my company uses extensively on the backend. ↩︎