Being a solo developer is hard for numerous reasons:<p>1. You miss bouncing ideas off others (which most of the time results in quick useful feedback)
2. You are at a very high risk of missing deadlines since there're no mandatory hours to put in !
3. Without a boss/peer team the risk of distraction is very high, often jumping between projects or dropping some of the projects altogether.
4. Technical risks like - no code reviews, no good QA etc.<p>I'm sure there are many more. But what I'm interested to know is , if there're any suggestions/recommendations for making the best of solo development and overcome some of the limitations mentioned above.
You can still stand on the shoulders of others when you are a solo developer. That might sound obvious, but you can offload an enormous amount of brain-power to the work of others due to the neural nature of the net. I consider the net my 'exobrain' and it's worth learning how to get answers rapidly using multiple different search engines. Google is handy, but it's worth investigating the native search capabilities of other sites.<p>One obvious search mechanism is, of course, Stack Overflow. HN's Algolia search is another. Personally I run Searx[1] locally and permanently have it open when coding.<p>[1] <a href="https://github.com/asciimoo/searx" rel="nofollow">https://github.com/asciimoo/searx</a>
For all the reasons listed, and because working alone means there is no one with which to share the misery when things don't go well, the objective best practice is probably to find another developer to work with.<p>The second best practice might be remaining aware of all those risks.<p>The third best practice? Perhaps realizing that all of those things are sort of normal among ordinary humans and just to accept that fact.<p>Good luck.
One suggestion I can make is to make objective facts your friend.<p>Judge yourself against genuine accurately measured metrics. Hold yourself to some minimum/acceptable/excellent standards.<p>Example:<p>Problem: You are at increased risk of turning into a hermit.<p>Expectation: I must attend no less than 6 meet ups per year (roughly 1 every 2 months). I should strive for 12 per year.<p>(Some of you might say that's too low, you can adjust for yourself, don't get too excited by setting yourself stressful goals.)<p>Have some excel spreadsheet or something and measure it.<p>The gist of my suggestion is one word, quantify.<p>This can be easier said than done and it's certainly not the only option. However it's a good option because metrics don't lie and in the absence of other methods to keep yourself in line you have to rely on an honest source of truth.
Are you talking about doing freelance or doing your own thing?<p>Anyway some things I've found useful:<p>Freelance: Do work in a company first because it (hopefully) gives some exposure regarding QA/CR and generally putting code out there. The whole process.
For deadlines, if you have a deadline you're about to miss you better work harder and require a longer deadline for the next project. Each new project I take on I require longer and longer deadlines, if it is impossible just say no.<p>Solo: Use the app/service yourself constantly for the bugs, create beta tests for the rest. I've found that you only need 1-2 people as beta testers if they are genuinely interested in the product. I've had essay written to me about features.
Measure the hours you spend on each task, then view them in aggregate.<p>If you were your only employee, would you be happy with the output?<p>Pair up with another solo shop for pairing/code reviews.
It's not clear if you're asking about solo developer or "solo company" as it were. Anyway, typically if you're doing a startup the advice is to get a partner. Then maybe you're not so solo anymore. If that's not possible, then expect to spend lotsa time on marketing instead of coding :)
I am working Solo, but I get to bounce ideas off my spouse who also works in IT though it is sporadic at best. I am proactively trying to do this more, as it helps to air my ideas and it is much easier to recognize rabbit holes.<p>I am by no means an expert in this but the following things helped. At present my time is limited and if I don't take efforts to monitor my activities, I easily fall prey to distraction and procastination.<p>* Maintaining a list of things to do. If the first thing you do when you sit down to work is wonder what is it that you have to tackle next, thats a recipe for loss of productivity. If you have a list of tasks ( as granular as possible), ordered by priority if possible, you can hit the ground running.<p>* Try to have more realistic expectations of what you can accomplish. Try to estimate how long each task will take for you to do and then double that estimate. Knowing how long each task is gonna take will cut down on anxiety.<p>* If you are a solo founder starting out, product validation is much more important than QA. Once you have customers though, it is important to avoid any disruption in services.<p>* Release often even if only you will see. Make incremental updates. Always start with something very small but working and keep adding features. Immediate visual feedback of seeing your changes at work will do wonders for your morale.<p>* If you are doing multiple projects, some preliminary documentation should be in place so you can context switch easily from one project to another<p>* Though all these help me a lot, I have just started following most of them and it needs lots of discipline. I need to be mindful of what I am doing. Whenever I slip, I just try to get back up and start again.<p>* I also need to find a way to handle situations where I run something and it needs a minute or two to finish. I end up wandering to HN or News or Youtube and lose track of time. Maybe another list of micro tasks :)<p>Another idea is to use spacemacs. I have been a vim user for a long time. The idea of using emacs for browsing , task tracking and coding sounds appealing as probably there is lesser chance of distraction. Can someone comment on whether it is a good idea or another wild goose chase?<p>All that said, if I am exploring a new feature or tech, it often lacks structure due to it's lack of clarity and the time estimate for it is widely off the mark. Yet to find a way on how to tackle this. For now, the only option is to set some hard deadline. If there is no light by the deadline, that line of exploration has to be dropped. Maybe the unpredictability just has to be embraced and accepted.<p>Also, there was a website with stackoverflow kind of setup for solo founders and freelancers to interact and 'feel like an office' setup. Unfortunately I have not used it in some while and forgot theurl.