1. 8

Dear crustaceans, may I pick your collective brains for some advice?

For various personal reasons, I am increasingly interested in remote working. I am equally interested in permanent, salaried remote work and freelance/consulting remote work.

However, most of my work experience to date has been in very remote-unfriendly fields: mainly HPC and now robotics. I’ve done lots of C, C++, assembly, a bit of Fortran. I don’t see a lot of remote job ads for this sort of thing.

In my ever decreasing spare time, I’ve programmed in dozens of other languages… but never more than small personal projects. I don’t have much spare time so I’d like to focus on learning something - probably by contributing to an open source project of some sort - that would help me to get remote work in the future. Any ideas? Browsing Stack Overflow’s job ads suggests that most remote jobs go to “full stack” developers working on websites. Is that true? What does “full stack” really mean anyway? (For a happy, fleeting moment, I thought I could get paid to use Forth. Sadly, I think it’s a different sort of stack.)

  1.  

  2. 10

    When web agencies/developers say “full stack”, in my experience they mean “jack of all trades, master of none”.

    Someone who is equally happy writing php or nodejs as browser javascript or css. Possibly SQL. In todays climate they probably expect ‘devops’ which for the type of shops saying ‘full stack’ probably means “search for a docker image that sounds reliable and cross your fingers”.

    Given your history with compiled languages, perhaps mobile app development is a good route? It’s definitely a market with demand right now.

    Alternatively look on some of the remote specific job boards. https://github.com/lukasz-madon/awesome-remote-job/ may also help.

    1. 8

      When web agencies/developers say “full stack”, in my experience they mean “jack of all trades, master of none”.

      I always interpreted it as a way of saying “I am unaware of any abstraction layer lower than the virtual machine”.

      1. 2

        I always interpreted it as a way of saying “I am unaware of any abstraction layer lower than the virtual machine”.

        I think “full stack” is a web term, where the stack basically ends at the virtual machine. In web you basically outsource the lower parts to your SaaS provider anyway.

        I have never seen “full stack” desktop developers or “full stack” HPC “full stack” compiler developers or whathaveyou.

      2. 1

        When web agencies/developers say “full stack”, in my experience they mean “jack of all trades, master of none”.

        I worried as much.

        […] perhaps mobile app development is a good route? It’s definitely a market with demand right now.

        Thank you. I will take a look at that.

        https://github.com/lukasz-madon/awesome-remote-job/ may also help.

        Thanks for that too!

      3. 7

        SQL is something that everyone needs to learn better (including, sadly, the people doing the interviewing). I often see people doing something in two dozen lines of JS or Python (and two or three round-trips to the DB) that could be done in a single, well-written query.

        Otherwise, Python is what everyone uses, JS is what management thinks everyone should use, and Go is the new hotness.

        1. 5

          When I was in charge of a product, we did as much as possible in SQL. For most requests, we would get JSON from Postgres and send it straight to the client. The longest queries we had were about 200 lines (we used CTEs a lot), but I believe that they were shorter than corresponding JavaScript, and we only needed one roundtrip to the database instead of several per request. It worked well.

          I agree that SQL is underrated.

          1. 2

            SQL is something that everyone needs to learn better

            Any books or other resources you would recommend for upping ones (Postgre)SQL game to mastery?

            1. 1

              SQL is something that everyone needs to learn better

              I rarely deal with databases in my current job (I mean, “real” databases, rather than just flat files of data). I can write simple SQL queries, and have done for personal websites, but I don’t know it well. Thank you - that’s clearly something for me to study more.

              […] Go is the new hotness.

              That’s promising. I really enjoyed the small amount of Go I did recently.

            2. 5

              Working remote requires trust. Trust can be built by long-term commitment, real interest and care for your (langage) community. Trust is often transitive: people there can recommend you so that’s easier for you to work remotely. Try to get closer to people who have talent : don’t pretend you’re interested if you’re not, don’t try to seduce them. Don’t try to be the brilliant jerk. Get better. Help people. Don’t pretend to be someone else, try to focus on what you like most, and learn to like what you need. Choose to get closer to good team players, avoid your local brilliant jerk. Pair program with them on open source projects. Add value. Target exotic yet super efficient functional languages, i.e. Elm if you’re focusing on web technologies. Be pragmatic. Once you’re rewarded by trust and perhaps a remote position, stay with them, take care of newbies. As a bonus : such a community also helps a lot on the social side of working remotely - that’s not easy for everyone.

              1. 2

                Trust can be built by long-term commitment, real interest and care for your (langage) community.

                That’s a really interesting point, thank you. I don’t think I’ve ever really been involved in a language community since I stopped using Perl, some years ago. I don’t see much community in my current areas.

                Don’t pretend to be someone else, try to focus on what you like most, and learn to like what you need.

                I’m good at the first two - that’s how I’ve ended up where I am. Now it sounds like I’ll have to learn to like something different. That isn’t necessarily bad though, different can be good.

                Target exotic yet super efficient functional languages, i.e. Elm if you’re focusing on web technologies.

                I would love to do that. I worry that if I target the exotic, I reduce my job opportunities too much. Perhaps this worry is unfounded.

                1. 2

                  I worry that if I target the exotic, I reduce my job opportunities too much. Perhaps this worry is unfounded.

                  I think it cuts both ways. There are fewer jobs in “exotic” languages, but that also usually means fewer (or no) local experienced candidates (especially for employers outside of Silicon Valley), so companies are forced to be a little more creative. If you’re writing Java or Ruby, it’s harder to stand out from the local talent pool. Also, I suspect employers who are more willing to try exotic languages are also more willing to try exotic working arrangements like distributed teams.

                  1. 1

                    Another way to state “learn to like what you need” is “take care of yourself”. I don’t think that’s optional. :)

                    Exotic and efficient languages indeed narrow down job opportunities. It’s not a problem if you can count on trust, and it can even be an advantage WRT your income.

                2. 4

                  I am doing remote work for 5 years now and it is always on the JVM. I am working in the big-data area, but I have touched the frontend from time to time as well.

                  For me personally the biggest hurdle with remote work is not the remoteness, but the time zone difference. I am 9 hours ahead of the company I work for, so that can be very challenging at times, but so far, it seems to work okay.

                  1. 1

                    I am doing remote work for 5 years now and it is always on the JVM.

                    That’s interesting, thank you. I was once quite proficient at Java - back in the days of Java 1.5/6 - but I didn’t like it much so have avoided it for the last decade or so. There’s a lot more running on the JVM these days though. Do you see much demand for Clojure, for example?

                    I am 9 hours ahead of the company I work for

                    I used to be 8 hours ahead of most of my company (I was in a satellite office). I loved it! I got most of my work done when the rest of the company was asleep.

                    1. 1

                      This is my second remote Java job in a row and it was always pure java. In BigData-land you see a lot of scala, but not much clojure.

                  2. 3

                    Two remote work job sites I keep an eye on are We Work Remotely from DHH and what was 39signals, and remotive.io - which is more startup focused.

                    …but my hunt for remote work hasn’t been successful yet…

                    1. 2

                      Thank you, I will watch those sites too. Good luck in your own hunt!

                    2. 3

                      What’s that quote about asking ten engineers for advice and getting ten different answers? :-)

                      I’ve been full-time remote for quite a few years now. The languages I use daily are Python, and for automation related work, Ansible. I don’t code in Java at all, but sheer weight of worldwide use would indicate that might be a solid bet for you too.

                      For personal projects I’m a big fan of Go, and hope to make use of that more on the professional side of my life eventually. I see it on the rise.

                      1. 1

                        I have written a fair bit of Python but usually as glue code. I managed to convince my manager to let me use Go for a recent project and loved it. I am a Plan 9 fan and it all felt very familiar and well designed. However, in my current field - robotics - pretty much everything is C++.

                      2. 2

                        How remote are you looking for? Like go to office once a week, month, year, only for interview, or never?

                        My current company does 100% remote for fulltime, like multiple workers living multiple timezones away from any office, and we’re like 90% web and mobile. My impression of the market is that it’s more like the kind of companies that are okay with 100% remote are likely to be doing web work. It’s probably good to get a good understanding of at least one of the big interpreted languages - PHP, Ruby, Python, plus Javascript and SQL. Even more so, to have a good understanding of how all of the parts of the web work together, including HTTP requests, servers, logging, basic unix server sysadmin, etc, and be able to diagnose and solve problems at any level.

                        If you don’t have the spare personal time to do something like build a dynamic website yourself or quit and take a class for a while, you might find it more useful to try and get some type of intermediate job between what you do now and what you really want to do. Maybe an in-house job working on a C/C++ web backend, so you already know like 50% of what you’re doing in the C++ code, and can be productive while you get up to speed on SQL, Javascript, and HTTP mechanics. Do that for a year or two, and write utility scripts in Ruby or Python while you’re at it, and then take a look at transitioning again to a more mainstream web shop.

                        1. 1

                          Like go to office once a week, month, year, only for interview, or never?

                          That depends on how far away the office is. Once a month would be fine. Once a week would be acceptable it if were close. Never would be awesome :)

                          I have actually done most of the things you suggest, over the years. Maybe I’m not quite as inappropriately skilled as I thought I was. Maybe I just need to think more carefully about my past experience when applying for a job. I don’t know - I’d be uncomfortable claiming lots of web experience when I’ve just written a few personal sites and modified an internal corporate web GUI. Thank you, you’ve given me something to think about!

                        2. 2

                          Being able to work independently is much more important than technologies you know. If you can demonstrate:

                          1. That you can go and work unsupervised and come back in a week with something good. (This is important in all jobs, but even more so in remote jobs.)
                          2. That you can learn new technologies quickly.

                          Then it matters much less if you know the language at hand (for good companies).

                          You ought to be able to explain both of these decently in cover letter/resume, with examples etc.. (Long version, not specifically targeted to remote work: https://codewithoutrules.com/2018/01/23/job-with-technology-you-dont-know/).

                          1. 1

                            Then it matters much less if you know the language at hand (for good companies).

                            This certainly should be true. It has definitely been true when I have hired people. However, I rarely see this attitude in job ads.

                            1. 1

                              People who write job ads aren’t usually very thoughtful about what they write. It’s just rote regurgitating of the standard format for job posting. (Lynne Tye is person who is trying to improve this from company’s side - see my interview with her - https://codewithoutrules.com/2017/12/01/interview-lynne-tye/ - and her job site - https://www.keyvalues.com/).

                              If you pitch yourself in way that actually meets their needs, you can get the job regardless, because they’re like “oh right we do need that” even if they can’t consciously articulate it.

                          2. 2

                            Most fully remote positions tend to be with companies developing web-delivered products. They might be building something the company owns and sells, or something the company needs to do it’s other business (product jobs) or alternatively, the company could be contracting project work to clients and maintaining a full-time staff with which to implement them (project jobs). These might a web agency for example, who businesses pay to build a site or make changes to their site, or a group that mainly rents out teams of their salaried employees to enterprises who need to build some software, but don’t need/don’t have the resources to manage their own in-house team, like Atlassian.

                            In these web-delivered areas, “full stack” usually means you work on both sides of the client-server divide. So, you might be working on say, Java / Python / node / Ruby for the part of the application that handles web/api requests, as well as needing to be able to interface from there to a database, so usually some form of SQL. And the front-end is nearly-always HTML, CSS and JavaScript + various libraries / frameworks.

                            Wether or not you’ll be expected to also administer+secure Linux machines, web and database servers is mostly a factor of how big the company is, more than anything else. On larger teams, I’ve had to get DBA approval for anything that changed the structure of tables or constraints, and on the smallest teams we’ve had developers on a roster for cleaning the shitter.

                            1. 1

                              Most fully remote positions tend to be with companies developing web-delivered products.

                              Thank you, that’s something I suspected but wasn’t sure about.

                              In these web-delivered areas, “full stack” usually means you work on both sides of the client-server divide.

                              OK. That’s harder for me. I’ve done a little bit of front-end work, e.g. web GUIs for managing hardware devices, but it is far from my expertise. I’m also terrible at graphical UI design!

                              Wether or not you’ll be expected to also administer+secure Linux machines, web and database servers is mostly a factor of how big the company is, more than anything else.

                              Somehow, regardless of company size, I always seem to end up administering servers. I’m not quite sure how that happens…

                              Thank you for your advice.

                            2. 2

                              In my experience “full stack” has always meant “expert in JavaScript, so you can program the front end and the back end (using Node.js)”. Knowledge of databases and HTML+CSS included of course, but the main point is the JS.

                              I also have the impression, like you mentioned, that for full remote work, web development is what is expected. Because the medium allows it very easily.

                              1. 2

                                I also have the impression, like you mentioned, that for full remote work, web development is what is expected.

                                Thank you. I guess this is a bullet that I am going to have to bite.

                                1. 2

                                  If you need direction, feel free to ask me. me@greduan.com 😁

                              2. 2

                                When I read the title I thought you were looking for languages that were designed for remote work, but on opening the question I saw you are looking for languages that are in demand for remote work …

                                I actually think that the former question is more interesting. What would a language look like, if it was designed specifically to address remote work?

                                And to answer your question, I was working two years in remote mode, for a team that was around 600 km away from me. We used Python almost exclusively, but it was not web development: it was a backend service for a mobile client. I love Python very much, but that experience showed me that using it in a distributed team requires a lot of discipline and a lot of code conventions. It is not easy to convey complex requirements over a phone line.

                                1. 1

                                  You’re right, that would be a more interesting question. Slightly less practical for my present need though :)

                                2. 2

                                  So, if you want to pick a language or language(s) that enables remote work, the main thing I’d suggest is picking one that has enough jobs in it to allow for a large selection of jobs. By far the most important thing in a remote situation is going to be being part of a team that has a good culture of communication and documentation, this will trump whatever language you choose.

                                  I’ve worked in C# since 2013, and have worked remotely doing so twice, once because I was a high schooler that was cheaply available to do so after an on-prem internship and had done good work during said internship, and a second (and current) time because I had the recommendation of a friend into the job.

                                  I’m a bit hesitant to add any more advice on the matter, because the rest of how to get a remote job really varies from person to person, depending on if you’re skilled at negotiating, or can get the recommendation of a friend, or can build a very in demand skillset (mobile comes to mind based on other comments) that makes it so that you don’t have to negotiate as hard.

                                  All of my friends (2 doing C# web dev, one working in the iOS stack) that are currently working remotely ended up in a rather long process of getting to that point, either in job searching or waiting for the right opportunity, but it can and does happen outside of the Ruby/php/nodejs sphere, it might just take longer to find a job that is a good fit. Like any job search, networking is helpful.