A Salute to Solo Programmers
mondaynote.com
mondaynote.com
At the same time, I really miss talking shop with other devs. And given my extremely young age (only a few years out of school) sometimes it can be hard to be sure I'm making the most efficient choices. There's a lot of times I ask myself...why is this stupid and what am I going to break?
It definitely has its ups and downs. I think the most valuable lesson has been self reliance. No one is fixing this, it's on me. No one is going to refactor this, except for me.
edit: spelling :(
If you want to talk shop you are more than welcome to contribute to one of the open source projects out there (I'm sure you have a few in the stack). I will say it isn't the same as having a partner in crime at work, but you can get your self exposed to new ideas and thinking if you so choose!
I'm in the same position, it's really lonely being the only technical resource. Just someone to bounce ideas off of. On the other side, everything works and when it doesn't I know exactly why within moments because I wrote it all.
There's no need to show upvote points; just order it so I'm more likely to read the things that other people think are worth reading. I can judge it myself without seeing N "this" comments or upvote points beside it.
(Not saying you do it, I see it all the time).
Communication: Keeping both the recruiters and management in the know about what is going on. This means I need to be decent about planning, bug tracking, tool choices, etc.
No one else is really technical here at all so occasionally you run into the hurdle of "It doesn't look like anything is getting done!". It really means I have to be very good at communicating complex topics to the layman. Not a bad skill to add the repertoire by any stretch of the means though.
Building a small team: There was a fresh grad on the social media team with a Comp Sci degree from NYU. "What's he doing in social media" I exclaimed! Get him over here!". I guess he focused on music instead of computer science at school but he's picking things up.
There's a lot to being a one man team.
Working in an engineering team environment has all sorts of benefits. After I moved to my next gig, I think I learned more about dev in my first 3 months at product team, than I had in my last 4 years at previous gig, all thanks to simple code reviews and pairing. It's amazing to hear the thought process of other developers and how they would approach a particular problem.
Enjoy it. Learn everything you can, but keep in mind that you're not getting the full picture. Full software product lifecycle might be very different beast than what you're doing right now.
You're entirely right that you get used to delivering working solutions that are ultimately one-off fixes, but at the same time you also discover how to use technologies that speed up your production in a more pragmatic fashion. It's definitely not a product lifecycle, it's a project lifecycle – different but not any less valuable.
Although, it is unfortunate you have no coworkers. The thing I miss most about working at an agency is being able to poll my many developer colleagues to research and discover different approaches to problems. The fast pace of an agency often means that you aren't the first to discover a problem that occurs on a project, and your colleagues are a highly valuable commodity that you don't necessarily get at a product.
I think for some people this is the only thing they want to do, and it works out well enough for them. I felt like that was me for a long time, but I've begun to wonder how much of this sort of dedication is motived merely by... baser qualities.
In any case: I salute you, solo programmer! —but be careful, eh? It's possible there's a simpler lifestyle that would make you happier.
I'm curious to learn more about your insights regarding the subject, where can I find more information?
Also curious to learn what made you go from thinking "this was you" to thinking another lifestyle could make you happier, which lifestyle? Why?
Edit: Going through your submissions now (:
The main idea was to display a running program's state at the same level of abstraction at which programmers think about their programs. I often found myself writing 'one off' visualizations of data structures for complex pieces of code; this was an attempt at a general solution: it would be able to render all of the different (visual) classes of data structures—the programmer would just need to say which of their data structures should be 'monitored.'
I'm still interested in the idea (i.e. visualizing a program by its state) although I fear it may not be practical for non-trivial programs with complex, large and rapidly changing data structures.
I think you're one of the few people I've come across who seems to get what it's for at all :D
A potential problem with visualizing more complex structures may be that people's mental representations for them probably differ, making it really hard to offer a visualization that maps to each person's mental model of each specific (complex) data structure.
What do you mean by: "There are also controls you can't see that make hierarchically navigating from groups of data structures to single data structures to single elements, easy."?
I'm happy we came across then! I find this type of visualiation to be intriguing, and I may give it a stab in the future.
We should definitely keep in touch.
There are a lot of things that have gone into that question. I would say the biggest thing was that I became aware of the fact that I was always 'in my head' instead of having a more direct interaction with people/environment, and realizing (from a number of sources, but importantly, through meditation) that being not 'in your head'—direct interaction with things—is a major part of feeling content or satisfied (as well as being effective in... most domains). Makes sense if you think about it: you think when you are trying to change something; if nothing needs changing, you don't think and you're content.
Now I'm looking for a balance with social interaction, physical activity, and intellectual work. Since I've been unable to earn money from my own projects, I am giving them up to just do a normal 40hrs/week kind of programming job: if I try to do the job and the projects, there's no time for the balance I want.
After a few years I may get a job that's more physical/social and return to my projects, but for now I need to catch up on finances, and programming is the only way I know how.
Edit: another way of saying the above: anxiety/depression became a problem, and the balance I describe seems to be a major part of the solution.
Some part of me wants to just live in solitude with little or no social interaction at all, but I deliberately avoid it since my rational side tells me I'll end up depressed.
I've been told more than once I should look into meditation, do you know of a good way to start?
Yep! That's the struggle.
This guy has a pretty nice intro, with a quick 10 minute or so practice you can do: https://youtu.be/3Uqoxo_jPXQ?t=3m33s
Then there's this book which works pretty well as an intro because it's a collection of diverse perspectives, from different people, on the subject: http://www.amazon.com/Beginners-Guide-Meditation-Inspiration...
Alan Watts is also generally pretty good—can find talks from him on youtube, and he's written many books.
can you tell us more about that? The passion that drives me is the passion that gets things done. Does she want the paycheck or does she want me? Sometimes I can't give both
But yeah, finding a balance with these things is tough.
The abstract visual debugger is how I imagine people will be doing development in the future. Real time, interactive manipulation of objects which represent parts of the program.
Have you considered applying it to a LISP language, like Clojure ?
I've played a bit with building an experimental lisp editor, which doesn't use textual editing, but graphical representation of the forms, pictograms and symbols for core function calls (like map, reduce, filter, sum, etc), 'slots' for function parameters/call arguments, etc. And it doesn't force you to use your mouse, but allows fast keyboard navigation and various commands for slurping/barfing forms, vi-style.
Eventually, I thought, this should be built in 3D. But I didn't finish it as it was too much work, just played around with the idea.
The cool thing about doing it for Clojure, is that, like any lisp, it can be evaluated in real time and the results animated immediately without restarting the app.
Your visual debugger is making inroads into the same territory I think.
Would you like to explore this idea a bit further together ?
Your experimental lisp editor sounds neat. I'm unfamiliar with slurping/barfing, haha.
I might've been interested in some shared exploring in the past, but I really am giving this stuff up for the time being. If you want to share a demo or discuss some particular idea sometime, or something, I can be reached here, though: westoncb[at google's mail service]
I have almost finished my latest fun project. I'm collecting 25k data points a second. I control 38 servers. I have automated absolutely everything.
i would love to sell it now, but not sure how
On projects that span years you find that you're not actually working alone, you're collaborating with your younger self. A younger self who is more naive, more optimistic, sloppier, and who leaves funny comments for you to stumble across years later.
Preview is one app that is a source of constant admiration and consistency that makes using OS x that much easier. Maybe a single excellent developer can make better call in terms of consistency because applying similar pattern across board is natural where doing so for more than one person requires a whole lot more effort? (communication, keeping up with a style etc.) While on the same subject can there be some way to make reusable components for visual intefaces ala unix commanline and pipes. If so then developers can do well developing bits of code, each doing one thing well and let users construct their own "solutions"
Look at dwarf fortress great example of one guy "doing it on his own"
Terry Davis showing a game using his own graphics libraries, compiled with his own compiler, running on his own OS:
https://youtu.be/EsFPq6I13vA?t=300
Though I suppose the article has a commercial/organisational slant.
Based on just the tweet, it sounds like #1. If so, I can only repeat "I disapprove of what you say, but I will defend to the death your right to say it". And, furthermore, I don't think that, in itself, says he's racist.
Beyond it being an ongoing epic masterpiece of a single man (with contributions from his brother), what's particularly amazing about Dwarf Fortress is how much it has inspired and influenced OTHER games being produced, despite being an extremely niche, unforgiving, and unapologetic game.
Equally, they provide a great crutch for the much greater number of not-very-talented people like me to cobble our ideas together into something approaching a polished product. That's new: I certainly couldn't have hoped to get much done writing 6502 assembler, but with a Cocoa book and a few late nights I'm earning actual money from code I wrote.
Guido worked on Python for many years before anyone joined in: https://www.youtube.com/watch?v=R52mi-Fyk0E
Another important aspect of doing it alone is the ability to market your software. If you're not interested in that too much and don't have a spouse or friend who can take care of promoting, selling, customer support, etc, then it's difficult to make a living with it.
And of course, the competition is fierce and getting stronger every day. Kids are growing up with computers and devices and they write code. I've just spent 30 minutes playing a 10-year old's game (John Carmak's son, btw :) ).
Then there's always the 'open source' way - you start solo and then people join you.
My life as a solo programmer has been in ups and downs - making money while working full time as a programmer and then going solo and spending all my savings on experimental projects which so far haven't been commercially successful.
Now I have to take a job again and be a 'team player'...
I've emailed him and asked if he perhaps blocked me by accident or something and got no response.
Binary size is, of course, a poor measure of program complexity. A solo programmer can easily leverage libraries to drive up their total weight significantly.
One developer vs a team backed with millions of dollars.
1gb vs 100gb.
It can still happen.
[1]: http://libsound.io/
More people than ever are making their own things today.
I hear he spends most of his time now sailing.
funny how OP nods to steve today when he snitched him to sculley back in the day