The staggering difficulty of being a solo developer

Mark Johnson πŸ‘” on February 20, 2019

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... [Read Full]
markdown guide
 

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

 

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

 

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

 

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.

 

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.

 
 

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

 

...it super sucks! I'm in your same situation, and I had to read a lot and do a lot of mistakes to be where I am right now (where I feel like I can get stuff done mostly "the right way"). Not having someone to mentor you when learning about deploying and testing can be very miserable, even if things are simple in retrospect.

Lucky for us we're hiring at least one new person this year, so I'll be the one to teach this time - a big motivation to get tidy.

 

Clean it up! Hopefully you find someone great that you can learn from just as much. Cheers!

 

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?

 

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.

 

I'm solo developer and self taught. People want to share experiences and ideas with other, I believe that is so important to learn faster

 

I exactly know how do you feel and I agree with all of you wrote in this article! I'm not completely solo developer, but in a team I'm working solo in one specific project and in addition as only Python developer. I don't have any problem with discipline like keep code clean,I'm happy for myself if it looks good:) Git? Just master, no pull request, total loneliness:) The worst is, that if I achieve something great after lot of struggling, I can't be sure, if it is really great, because nobody with more experience is not around.And the feeling that if some expert potencionally make a look to my "piece of art" and review it as a piece of crap is quite a killing:)

 

Loneliness, and you dont know what you dont know are my two.

 

Confession I skipped through to the solution πŸ˜€ the problems were familiar.

Thank you for sharing

 

I'm in a very similar situation! It can be super frustrating. Glad I'm not the only one (tech twitter sometimes makes me feel like it LOL)

 

This post has been super reassuring to feel like I'm not the only one! Keep it up, and reach out if you ever need someone to look at something :)

 

There’s the old saying, don’t be the smartest person in the room. I guess in this case it’s don’t be the only person in the room.

Thanks for sharing. Interesting read!

code of conduct - report abuse