I started my coding journey when I co-founded an ecommerce/manufacturing company six years ago. We needed a "tech guy", and I was the closest thing we had to it at the time. Far from an expert, I built our first site on Wordpress and struggled to even get things to work.
Over time, I built up a little knowledge, bit by bit. I started wrapping my head around HTML/CSS, using Treehouse to learn the basics. When we moved our site to Shopify, I learned more through customizing our theme. It wasn't great. In fact, it was full of hacks and poorly written garbage (be nice to your former self!). It was another 3 years of slogging through the muck on my own before I would get any real code training from a human being.
I was fortunate enough to be able to go to General Assembly's full-stack boot camp. My mind was blown open when I realized everything I was missing working by myself. Having other people's eyes on my work, if only for 3 months, propelled my knowledge forward by leaps and bounds.
Since that intensive course, I've been back on my own. The struggle is real. Here are some of the things that I've found to be the most difficult as a dev team of one:
You don't know what you don't know
This is true for everyone, but especially when you're working on your own. Working on a team, you're exposed to new ideas with a much greater frequency. You'll hear terms you don't know, you'll get suggestions about a better way to do something, and you'll generally have more guidance.
Working by yourself? You're going to be flying blind most of the time. If you want to get feedback on something, you'll have to seek it out. You're going to have to devote a lot more time to research to just get to a baseline awareness of concepts.
How do you even use git?
No really, how? I can't tell you. I can
git add .
and
git commit -m "whats the point of this part"
but I couldn't tell you why it matters for me, other than I need to do it to deploy to Heroku. Obviously on a team, it's crucial. Working by yourself? Well, I'm sure there are benefits, but I sure could not explain them to you.
It's one of the many reasons any future dev hire will hate me, but it is what it is. I don't know how to use git.
It's so much easier to be sloppy
It's a constant challenge to keep your code clean, especially when no one is there to hold you accountable to it. You know deep down that your future self will thank you for tidying up, but you also have to get it done. If someone else is going to be looking at it, you want to make it so they can understand it. On your own? It's a whole new level of discipline required!
You are your own "second set of eyes"
Every developer is going to hit a wall at some point. Your code isn't working, and you just can't figure it out. If you're working on a team, you can tap someone on the shoulder and ask them to take a look. By yourself? Google. Google again. Ask a question on Stack Overflow and pray for a response. Send a tweet. Google again. Walk away. Come back. Pull your hair out. Then find that missing bracket. Rinse and repeat.
The loneliness (oh god the loneliness)
It doesn't help that my office is in a windowless basement, but that feeling of isolation comes mostly from knowing that no one else in my company really knows what I'm doing, how I'm struggling, or how to help. It's real.
Staying motivated
Team accountability goes a long way in keeping you motivated. It's something you just can't rely on when you're coding by yourself. It's up to you to make sure you get things done and ship those features.
So what can you do about it
If there was an easy fix, I wouldn't even be writing this. I can tell you what I'm working on in hopes that it will help: find your tribe. I'm lucky to live in a place like Denver where the developer community is strong. I'm making it a point to get out to events and meet people when I can (though that comes with it's own set of motivation problems). I'm also trying to get more involved in online communities like this one. The weekly #DevDiscuss twitter chat has been great to help me feel less alone!
Are you a solo developer? What are your struggles, and how do you fight through them?
Top comments (36)
Thanks for sharing this!
Technically speaking, my best piece of advice would be to learn the basics of
git
. It can be useful to save your butt from digging a hole you can't get out of. Committing code often will help you keep track of working code and experimental code. Revert things that you had working but since broke.For everything else, it sounds like you are doing the right thing, finding a community and trusted colleagues is probably the most important thing. I know there are slack channels out there that can help (though I don't have any specific ones per se).
Keep it up :)
Thanks for reading and taking the time to respond! That's a solid argument for learning git - I'm sure it's one of those things my future self will thank me for putting the time in on.
I'm a solo developer that works as a consultant to clients. While I've gotten my head around things like GIT there's a big part of it that I still don't understand as I don't get to practice it in a 'collaborative' setting often. For instance, while I can clean up an accidental push to a repo I fully own and control myself, it's harder to do that if you've pushed something to another repo with lots of other devs involved, and it's been accepted etc.
Which is one reason why I like tinkering and contributing to GitHub projects in my spare time, so I can connect with other devs and get a bit more experience that way. It also combats that "loneliness" feeling you get as a solo dev.
Love the open source suggestion. I need to figure out how to get into that world.
I started just by looking at projects with similar topics and interests of mine, eg Wordpress development (where I came across github.com/pojome/elementor and ended up becoming a contributor of code, after writing a feature I had on my wish list) - for me it's essential to contribute to these kinds of projects as you learn so much from them and get to give something back to the projects that help you make money.
Good luck!
Your absolutely right. Although at times the projects you might want to contribute too can be so intimidating :/
Yeah that's true. I started looking at projects that needed small things done like documentation, cleanup of typos in code, etc. and then eventually contributed more serious stuff when the time was right.
And I don't take pull requests too personally, if I submit something and it's rejected I usually try to find out why and then learn from it. If it gets accepted I thank the project manager and high five my cat :)
Really nice !!!! I guess I will try and start like you did :). I guess sometimes the fear of rejection makes it harder to just go for it, and it ain't a win if the cat doesn't get a "hi five" lol
I've been working on and off a solo project for three years.
Definitely get out into any kind of community, actually for me I've found non-computer clubs, friends, neighbours, church, playing music really help keep things balanced.
Feedback on the project itself is harder to find, especially since I've picked a fairly niche area (probably everyone does), but on occasion tech nerds ask me how I'm getting on. Blogging and online discussion focused on the area you are working in would be the best/easiest way to get feedback, though in person is often more ... encouraging :-)
As to keeping the code clean, I'd recommend books like "Pragmatic Programmer", "Clean Code", "The Clean Coder", "Refactoring", "Test Driven Development: By Example" - I use tests to keep the code working, refactoring to keep things clean, and git / git hosting sites to keep it all organized and backed up.
I also use task/bug tracking software (Jira + Structure) to write down absolutely everything I find annoying, and to break down tasks into very small chunks (a test/code/refactor/commit iteration is about 30 minutes on average, I checked a while back). I don't necessarily fix the all the things, but it keeps them out of my head, and that means I can concentrate on the next step.
The other thing I was advised to do was to get part time contract work, so I've found a great company that let me work flexible hours together with other engineers on a completely different project. I've been able to work three day weeks sometimes. They were unusual in allowing me to retain all rights to my own work.
Fun story: Amazon, Google and Facebook keep soliciting me to join them. Once, I responded by email "so can you match my current three day working week, allow me to retain all IP rights to my own work?". The answer was "wow, err, yeah, that's a deal we can't match."
Thanks for the book recommendations! Definitely going to check those out, hopefully the library has some of them. Are they language agnostic? Any you know of that are JS specific?
Bug tracking software is a great suggestion. I've started doing that recently as well. I didn't see the value in it for a long time being the only developer, but it's helped me keep track of things and report progress back to the rest of the company much more easily.
Fairly language agnostic, from memory most of those books tend to concentrate on concepts, though they use Java or perhaps C++. I've seen copies in larger libraries and book stores.
I'd suggest looking at O'Reilly Learning / Safari - you get access to a whole heap of books (40,000 last time I looked), videos and all sorts of other things. It is $400 a year. Personally I decided books are so important, and was spending more each year (most books are $60 - $120 each), so I subscribed years ago and have never since thought about the cost.
Git isn't as scary as you think. Also, eventually, most people create aliases for a lot of git commands. People have posted their aliases on dev.to before, but here's mine if you're interested.
My Git Aliases
Nick Taylor
Thanks! Super helpful!
I wouldn't worry about sloppy code. It's like your own messy bedroom - as long as you know where everything is, it doesn't matter how much crap is on the floor. These things only matter when you're inviting someone else inside to get, ahem, intimate.
And using Google and Stack Overflow as a replacement for people around you is not just a solo dev issue. The person on the desk next to you is no more likely to come up with a solution you understand / agree with than someone on the other side of the world, so many people in agencies use both resources equally.
The key thing is to know when you need help and be willing to ask for it, whatever the medium of help that is. I find I solve 50% of my problems as soon as I start explaining them to a colleague, but the ratio is the same when I start tapping out a question on SO.
As for git, get familiar with it using a GUI and then decide if you want to learn it deeply. I use SourceTree / Tower for my solo projects and adhere to Gitflow religiously, but personally the time it would take me to understand the command line method isn't worth the reward I would get out of it.
The root of the sloppy code worry for me is that some day we'll hire another dev and it will take me a month to clean my bedroom!
Of course. The trick there is to make sure the new dev is junior to you and then tell them that's how it's supposed to be done!
I joke, but my experience of coding 'standards' is that there is nothing standard about them, just increasing levels of being anal about how comments are denoted. Code that works and code that is written on budget is more valuable than code that adheres to PSR3 or whatever. It would be nice to hit all three, but the reality for the majority of us is that anything better than 'sloppy' is a luxury we don't have time for.
This really hits home to me. I am a solo dev at a small company and mt only team mate is named google...
At times it feels like a black hole, and no one truly understands what I do, with a VP that thinks he can code and database. oh and the also have unrealistic exceptions of dead lines...
Definitely relate to all of that. Hit me up if you ever need to commiserate :)
I'm a solo, self-taught dev too. I feel your pain. I've tried to integrate into the community, but the local meetups happen during my work hours, and conferences only come up every so often, so my opportunities are limited.
I read a lot, and I've contributed quite a bit to many of the open source libraries that our app uses (though that's slowed down as my development load has increased). I attended RailsConf as an opportunity scholar last year, which was a great experience.
I've tried to embrace it. Being involved in all areas of the stack is a really cool, and lets me chuckle at all the posts questioning whether full-stack developers really exist. Like all less-experienced devs I make some ugly code from time to time. Refactoring is relatively easy though because it was my code in the first place and it only interacts with other code that I wrote, because I wrote ALL the code. Open source has taught me that altering other people's code is a lot harder.
If I ever get a job working with other developers it's going to be bizarre. I'll have experience up and down the stack and a history of product architecting and management, but no experience in scrum, pair programming, or any of the other techniques that allow developers to be productive together without sabotaging one another.
I haven't gotten in to open source. That's a great idea! I'm thinking about going to the Vue conference next month, that would be an awesome opportunity for learning and meeting people. Keep up the good work, sounds like you're doing some cool stuff :)
My situation is different but I can still relate to this article somewhat - I work with a team but we all work on projects solo. Being a new developer, I wish we could move towards team based development just so I can see how our more experienced programmers tackle a project and get feedback on my code. It's can be difficult for other programmers do review of my code when they don't have any visibility of my projects and their requirements. At the same time, I realize I am lucky that I get to work in a team and I'm able to ask my co-workers questions and brainstorm on possible solutions when stuck on an issue.
One idea I had was to ask if anyone from my team could join a team-based web dev contest, and some volunteered so it'll be a nice practice in team programming. Sometimes if a developer is unable to find a team, they'll pair you with someone. (Example of such contests - air-rallies.org/compete/). It may be something for you to consider, to work on projects w/ fellow devs.
At the same time, thank god for resources like Stack Overflow, dev.to and the like!
Thank you for writing this! I was almost always the lone software developer, and then when I wound up meeting other devs I was terrified that I was doing everything wrong. Now I work as an independent contractor, so I'm still almost always the lone dev. It's brutal. Also I have three kids so it's hard to go to meetups, but I wish I could.
Fight loneliness by going out with people. Friends, family, friends of friends, colleagues - whoever. Go to any kind of meetups to make new connections.
You can also get a pet. And take part in sites such as dev.to if you want developer dialogues (i find that they keep me on track).
Loneliness while working sucks though. You cant turn to anyone. Best you get yourself in some co-worker space, rent a desk and get around other people. These often organize things to do together as well.
Good luck.
Luckily I've got a solid friend group and a really understanding fiance. For me the loneliness comes from not having anyone to talk to about the work I'm doing - there are other people in the office with me, but no one else coding. Hoping to solve that by getting more involved with the local code community!
Can you hire a partner? In person or remotely.
By co-working space i meant a devs only space like this one we have: hub387.com/
But i don't believe you can leave your office and work from somewhere else, or can you?