A follow up on my A Year in Professional Software Development article.
... also yay for 2+ years ...
A Year Later
So here I am a year and a bit on and find myself thinking back a lot over the last couple of years. It's been an interesting rollercoaster ride full of ups and downs.
The key points I highlighted in my older article still hold up and are things that are still relevant today as they were a year ago.
- Seek the opinion & advice of your colleagues
- You code as a team, not as an individual
- Write tests & maintain documentation regularly
- Make the working process work for you
- Take the bad with the good
- The difference between junior & senior is not all that much
That last point though I have more opinions on.
When you're no longer a 'Junior' developer (but also not a senior developer either).
I think it's fair to say at this stage that I'm no longer considered a 'junior' developer (something echo'd by my promotion midway last year in work). I think the distinguishing factor is that you develop a level of certainty to your uncertainty.
I can quickly review the functionality of an API or code library and be able to adopt it onto my codebase fairly quickly, I can write somewhat decent tests for my code where required, and I have an idea of how to prioritise bug fixes/tech debt over new features in my codebases.
More than anything though I have been through the process involved with creating, adopting, maintaining and decomissioning microservices. This has probably been the most valuable source of my learnings over the past year. Seeing how stakeholders can set expectations, how to go about building something that meets the outlined expectations, maintaining it and then opting to see if its worthwhile to maintain the services you build and how unexpected factors can influence decisions along the way.
Continuous Upskilling
I've made it a priority to maintain a certain level of upskilling throughout the past year (although notably less so than my first year). One of the more formal pillars of this would be my completion of the AWS Developer Associate certification. Having used AWS services on and off the last few years this was a nice qualification to obtain outside of work to help fight off the imposter syndrome that comes with the job. Shoutout to the folks at A Cloud Guru I definitely couldn't have passed it without their online udemy course.
I currently have my sights set on completing the Certified Kubernetes Application Developer program later this year.
Personal Projects
When it comes to personal projects I've definitely upped the ante. I went out and purchased a few domains and setup an ecosystem where all my past, present and future work can live - daniel-mcmahon.com. This was inspired by the work over at linktree.
I've updated my GitHub to a more memorable name /dan-mcm and I have multiple live projects including:
In addition to those frontend applications I also the the Inspiration API and my Music Programs which are overdue an update.
Going through the pains of setting up a static site with SSL certification through AWS CloudFront was a worthwhile exercise I definitely recommend to anybody else looking to expand their skillset.
I've taken back up the piano lately and find myself touring the Dublin train stations on a frequent basis - as a result I have a handy business card that I use to direct people towards my revamped Music Centre website.
In addition to providing a centralised hub for my projects, I also took the time to go through them, updating any security dependencies (nobody ever warns you of the maintenance required on old projects). In addition to this I gave the readmes a good polish and even added in some Emoji's and more impressive looking shields.io badges to make them look less 'clinical' - check them out over on my GitHub.
Maintaining Positive Mental Health
I think this is something that isn't talked about enough, and it's particularly important in the tech industry. Imposter syndrome is something that is rampant throughout the industry and it's sort of expected when you enter an industry where the tech is changing rapidly and it's a constant case of the rabbit (developers) chasing the carrot on the stick (new shiny tech).
I think it's important for developers to be realistic with their expectations of themselves. While there are scrum practices surrounding story points and delivery, there are other aspects that you need to maintain and be careful of.
Being kind to yourself is something that is hugely underrated, particularly when you see the portrayal of rockstar developers chugging energy drinks and coding till 2/3am in the morning. Improving is very much a marathon not a sprint. You need to ensure that your output is running at a sustainable rate, there's no point in burning yourself out during the first half of a quarter and being useless for the remainder. Pay attention to your mind and your body and learn when to take the foot off the accelerator.
Personal Perspective
One of my own key focuses with tech was to be a full stack developer, being able to understand how to orchestrate the backend while being able to put up a pretty facade. There are articles out there that talk about being a T developer, that is one that is good at most things but specialises in one very specific technology. I'm still searching for what that key technology might be, but I've found myself enjoying quite a lot of front end work (React/JS), building some tooling to help others write code (AppsScript, Python, Scala), and maintain good DevOps (K8, Docker, ZMON, Grafana) practices.
Tech is an industry where people tend to move on quickly from place to place. I see that around me a lot lately where after a 2 year period quite a few of the people I started with have either changed teams or left. I think thats just the nature of the industry - but it makes you consider your own options and if maybe its time to start a new chapter.
Resources
I often want to give back to the tech community but rarely know how, so here is an attempt at compiling a list of tools and useful resources I've used over the past year.
Shell/Mac
IDE(s) & Themes
- IntelliJ - Java/Scala
- Monokai theme
- Markdown Navigator
- Atom - JS/React/YAML/JSON/Python
Build Tools
- Scala/Java - sbt
- JavaScript/React - npm / yarn
- Golang - Go Modules
JS (React) Libraries/Frameworks
For Multiple Routes in React
Styling Components
Code Styling & Linting
Authentication
Auth Providers
Browser Automation
Server Side
Test Frameworks
Code Styling
Scala Libraries/Frameworks
Test Frameworks
Code Styling
Pre Commit Hooks
API Tools
- WireMock - Fast API Mock Tool
- GraphQL - Fast API Query Language
- Gatling - Load Testing
- Locust - Load Testing
Databases
Documentation Generators
Chrome Plugins
- NoCoffee - Useful for visual impairment design work
- Axe - useful accessibility tool
- Google Tag Assistant - useful when setting up Google Analytics tags
- Github File Icons
- * *
Scrum Stuff
Stock Photo / Icon Libraries
Color Pallets
Containers & Deployment Systems
Continuous Integration/Development
CMS Solutions
- Squarespace
- Shopify - this is amazing for e-commerce work - seemless integration with the likes of Printify and AliExpress. You need to check out this latest Dropshipping business trend.
Domain Registers
Streamers
YouTube
- Daniel Shiffman - The Coding Train (JS tutorials) - Quite fun & watchable does some interesting ML content too
- George Hotz - Founder Comma AI - Complete nutjob
Twitch
Final Note
I've had a particularly difficult year with personal circumstances but throughout that entire period work has been a solid foundation I could rely on both for support and drive, and I'm grateful towards all my coworkers for that.
I hope 2020 will be a better one, and that I'll get the opportunity to write more and possibly speak at a conference or two!
As always if you have any questions or queries don't hesitate to get in contact in the comments below.
In the meantime I look forward to doing the 3 year review with you!
Dan.
Top comments (0)