I have been working in distributed systems for 6 years or so. It is a field ripe with difficult problems and active areas of research. Some things people don’t even think of as distributed systems suffer from many of the problems inherent in that field. For example, a system using a database with asynchronous replicas - especially if latency is not extremely low - using those replicas for read scaling, is an eventual…
100 times this. The replicated DB with master-slave and the CAP theorem was something that got me interested in Distributed systems in the first place. Google Spanner, I feel, is a marvel of modern tech. Thanks!
Do you recommend a full time degree in DS or actual projects?
Are you specifically targeting better career opportunities? Now is as good a time as ever to be a seasoned Full Stack engineer. Pursuing an MS and shifting specialties seems very expensive. Despite all the support other commenters are giving, I believe you should be very hesitant about making such a career shift.
I am targeting a specialized work which hopefully would pay well. For example, someone working on the Google Spanner DB. Full stack is better paying, but after some time it feels like doing the same thing over and over again.
What downsides do you foresee in making the career shift? (Apart from a risk to salary)
Are you specifically targeting better career opportunities? Now is as good a time as ever to be a seasoned Full Stack engineer. Pursuing an MS and shifting specialties seems very expensive. Despite all the support other commenters are giving, I believe you should be very hesitant about making such a career shift.
Fwiw, my experience has been that many of the job openings spurring the growth in advertising for Full Stack engineers are actually glorified Front End roles, with very little work at the interface or on the back end. I suspect that, due to bias against Front End developers (and javascript :) ), hiring managers are have trouble justifying senior front end developer positions and so are resorting to overqualifying the…
IMHO, front end specialization is not as trivial as we think. Building websites may be simple, but building a fast front end is still quite an engineering task.
I vote yes for distributed systems, no for the Masters' Degree. If you already know how to code, it's easy to get into other fields and train yourself, thereby not losing money. You can also write open source code if you don't think you could find the appropriate job instantly.
I have been inclined to pursue this, but I won't probably get a role in a company if I don't have enough experience with DS, and to get experience I need to be good at it, it's a classic chicken & egg situation.
What open source projects do you suggest to get started with?
I vote yes for distributed systems, no for the Masters' Degree. If you already know how to code, it's easy to get into other fields and train yourself, thereby not losing money. You can also write open source code if you don't think you could find the appropriate job instantly.
How much is it autodidact friendly compared to Full Stack engineering? What would a "hello world" or "first learning project" of distributed systems even look like? I can only think in terms of learning via building a concrete project eg. a to-do app built on whatever tools you want to learn.
Yes, there's no simple HelloWorld for Distributed systems. One must understand a great deal of theory before committing to a role.
Don't you need to know some of Distributed Systems to consider yourself Full Stack engineer?
I believe a basic understanding is enough to be a Full Stack engineer. For example, it would be enough to understand that my horizontally scaling backend would imply stateless servers. It may not be necessary to understand how the clocks are synced across my clusters.
Fwiw, my experience has been that many of the job openings spurring the growth in advertising for Full Stack engineers are actually glorified Front End roles, with very little work at the interface or on the back end. I suspect that, due to bias against Front End developers (and javascript :) ), hiring managers are have trouble justifying senior front end developer positions and so are resorting to overqualifying the…
growth in advertising for Full Stack engineers are actually glorified Front End roles Right. People think I’m a hater because I say “full stack engineer” is just title-inflation for webdev, but I’m just telling it how the entire rest of the world sees it. Throughout most of the history of the web, the same people wrote the CGI scripts, and any SQL in them, as wrote the HTML; working this way is perfectly normal for a…
IMHO, it's got more to do with the expansion and change of the Front End developer role, than direct title inflation per se. Now, a front end developer has to maintain consistent behaviour across a panoply of platforms - each under constant change and growth, whereas the scope of actual 'web development' has remained a relatively static. It's becoming less and less realistic to expect one person to be able to effectively handle both roles any more, without making compromises on UI behaviour and compatibility.
How much is it autodidact friendly compared to Full Stack engineering? What would a "hello world" or "first learning project" of distributed systems even look like? I can only think in terms of learning via building a concrete project eg. a to-do app built on whatever tools you want to learn.
Yes, there's no simple HelloWorld for Distributed systems. One must understand a great deal of theory before committing to a role.
Until no one actually owns phones and all you have are shared shells that can be picked up anywhere.
Unfortunately, as with the idea of batteries for electric cars that can be swapped out at the charging station, there is an incentive to hold onto better units, and quickly return inferior units to the pool. It's a case of Gresham's Law. So the utopia of interchangeable shared units of anything will only be viable if those units are completely indistinguishable. If there's any kind of distribution of quality, the inc…
You would have to swap out stock anyway as all physical things degrade with use. It would be a natural culling of devices that would need to be pulled from circulation regardless.This idea doesn't exclude owning your own more powerful device that may have been left at home or a friend's house. You're not interested in the physical object and keeping it for long periods of time. It's a short-term convienince proposition.