20 ms·
Things I Don’t Know as of 2018
- tigershark 8y agoIt’s kind of scary that Dan Abramov doesn’t know about ML languages or typescript... I hope that he is just being humble, because otherwise I wonder if it was a complete lie when Facebook said that they were pushing on ReasonML instead of react.js. I know that he was not initially involved and that the first prototype used ocaml as a primary language before falling back to JavaScript. I really appreciate Dan work and his multiple and very helpful posts, but as someone that enjoys functional languages and hopes to see a full featured ML react, or at least a full support for typescript, I really hope that Dan can see the advantages in the “functional way” given that he is now one of the main actors.
- danabramov 8y agoI think you’re a bit confused here. Facebook isn’t “pushing” anything. There’s a React team. I’m on that team. We develop React. Facebook uses it all over the place. There’s also a Reason team. (Its creator also wrote React originally.) They work on Reason and its React bindings. Facebook uses it in some places. We talk to the Reason team of course. But there has never been a plan to force all React users to use Reason. I don’t know where you heard that. If you like it, that’s cool. If not, that’s cool too. We’re just sharing what we use. I’m not sure what your practical concerns are (are Reason bindings or TS typings not good enough?) but I’d like to hear them! Of course I know “about” ML and TS. If I didn’t know about them I wouldn’t mention them. :-) I haven’t developed anything meaningful in either of them but it’s not like I’m clueless about what types are. I’ve been using C# for years.
- tigershark 8y agoThanks for your answer, I think that at the time of ReasonML presentation and a couple of other times I had the impression that there was quite of a push on that direction, but I may be wrong.
- danabramov 8y agoThere’s not really such a thing as a “push” at FB — each product team is independent and decides what to use based on its own criteria. So there’s never an org-wide mandate to adopt a certain technology. Reason has some adoption but it’s happening organically.
- guru_meditation 8y agoIMHO, teams using a certain stack have agency to see that stack win the hearts and minds of other developers. Additionally, the opinions of popular leads, managers etc on what should be used will count more. Winning their mindshare will win you a lot of FB org. Winning a lot of FB org will exert a tremendous influence on the Open Source community as you now have large numbers of engineers working on open source projects on premium pay. I believe this is how it works in most modern large engineering orgs. After reaching a certain critical mass of adoption, a team will be hard-pressed to use anything else, especially if reusing other team's components requires you to master, say, Redux anyway.
- nikivi 8y agoGreat post. I tackle the problem of being aware of things I don’t yet know or fully understand by maintaining an [open Trello board](https://trello.com/b/cu32qF3q https://trello.com/b/cu32qF3q) that lists topics I want to learn in a visual way. I then mark off topics I am focusing on learning now and topics I want to learn ‘Next’. This helps me greatly. I also try to learn things in context of projects I am working on and the direct knowledge I need to solve the problems I have.
- matchagaucho 8y agoThere's a risk of being a "Jack of all trades, master of none" in Software Engineering. Companies pressure Engineers to be "Generalists" because it lowers salary rates and makes people more replaceable. But it's the Specialists (like Dan) that drive actual innovation.
- chpmrc 8y agoAnd the data proving this is where?
- ahoka 8y agoWhat about 'T-shaped' people?
- munchbunny 8y agoI bet if you got fifty programmers (as a representative sample) in a room and asked them to define "T-shaped" you'd get a wide range of answers that generally reflect a T shape but don't really align on what the horizontal part should be.
- Viliam1234 8y agoThere is still the trade-off between the generalist part and the specialist part. (And other things, such as family.)
- tchaffee 8y agoDo you think companies really have a policy of intentionally pressuring engineers with those motivations in mind? That sounds a little conspiracy theory. In my personal experience what's really happening at your average widget maker is they don't need someone who can write database software or a UI library for browsers. They see that the front-end person can get her work done in 2 days a week, so they try to find something else for her to contribute to. Specialists like Dan don't work for the average company, and he wouldn't even be of much use to them either. And specialists like Dan wouldn't have a job if it weren't for the millions of generalists using his work. EDIT: In another comment Dan himself mentions that Facebook tries to hire generalists.
- revskill 8y agoThe title should be: Things i didn't need to know as of 2018.
- yawaramin 8y agoHi Dan, I'm surprised and amazed by your patience and cool-headedness here. In my opinion that's the foundational quality of every good developer, everything else comes out of that. Seeing your replies here tells me all I need to know.
- miguelrochefort 8y agoThat's pretty much exactly the list I would come up with myself. I'm very surprised by how accurate this is...
- yawaramin 8y agoTwo things come to mind: > I was considered by all my masters and my father a very ordinary boy, rather below the common standard of intellect. -Charles Darwin > That any civilized human being in this nineteenth century should not be aware that the earth travelled round the sun appeared to be to me such an extraordinary fact that I could hardly realize it. > “You appear to be astonished,” he said, smiling at my expression of surprise. “Now that I do know it I shall do my best to forget it.” > “To forget it!” > “You see,” he explained, “I consider that a man’s brain originally is like a little empty attic, and you have to stock it with such furniture as you choose…” > “But the Solar System!” I protested. > “What the deuce is it to me?” he interrupted impatiently; “you say that we go round the sun. If we went round the moon it would not make a pennyworth of difference to me or to my work.” -Sir Arthur Conan Doyle, A Study in Scarlet
- whoisthatreally 8y agoWho is this guy and why should I care? I've never heard of him, or used this "ReactJS" thing he's apparently involved in. Can we please not turn ordinary software developers into celebrities? There's no need for this.
- dennisgorelik 8y agoDan Abramov lists things that he knows at least a little bit. He, obviously, does NOT list things that he does not know at all. (How can you describe something that you do not know?)
- kimar 8y agoCould it be that Dan's personal threshold for "knowing" things is just higher than that of most of us? Surely there are things on that list which he could pick up effortlessly if need be (eg: flexbox, sass).
- yangshun 8y agoThe author, Dan Abramov, is a really smart, great and humble guy who has had immense contributions to the front end ecosystem and community. It's interesting that people who don't know that will view that post negatively but people who know what he has accomplished would be inspired by it. To end off, pay your respects at: https://dan.church/ https://dan.church/
- giminoshi 8y agoRead this entire thing without realizing it was freaking DAN ABRAMOV. This is a weightier article than I realized. WOW.
- conwy 8y agoWhy is this kind of “confessional” necessary? This strikes me as very American - this need to think you’re “the greatest” at everything and then beat yourself up when you realise you can’t be. Look... do we say Beethoven was a lousy composer because he never conceived the 12-tone system or mastered extended techniques or knew anything about Indonesian music? How absurd! Those were all things for later composers to discover and specialise in. Specialisation is just fine, thank you. It’s perfectly fine to consider oneself a good programmer!, having mastered only one or two languages. Americans, please quit the silly moaning and self flagellation and get on with your day jobs. Thanks.
- Insanity 8y agoYou might not mean to do it, but the tone in this message seems to be quite condescending. I believe you are making a generalization that is quite unnecessary. Surely not all Americans are like that, and I am sure plenty of Europeans share that mindset. (I am one of them, I like being the best in something as I am competitive. In sports, games or programming). In my neck of the woods, the stereotype for this kind of behaviour would be Japanese more than American btw. Either way, I do agree that this post is a bit useless. No one is expected to know absolutely everything there is to known. Why know the web when you program embedded devices for the car industry, for example :)
- sphuff 8y agoDan Abramov is a Russian living in the UK.
- InGodsName 8y agoHe works for an American company.
- basejumping 8y agoWhat's your point?
- zapzupnz 8y ago
- I_am_tiberius 8y agoI thought Dan wrote react dnd in typescript.
- acemarke 8y agoNope. Dan wrote it in JS originally, then handed off maintainership of it a while back (possibly before he wrote Redux in 2015). Looks like it may have been ported to TS this year: https://github.com/react-dnd/react-dnd/pull/1017 https://github.com/react-dnd/react-dnd/pull/1017
- anonytrary 8y ago> People often assume that I know far more than I actually do. That’s not a bad problem to have and I’m not complaining. It is also not a good problem to have, either. There will always be a few people who think you know everything, and a few people who think you know nothing. The only plausible reason why everybody would think you know everything is that you act like you know everything around everybody. Put differently, if most people think you know more than you do, it would imply that you are not very humble in your interactions with most people. > Folks from minority groups often suffer the opposite bias despite their hard-earned credentials, and that sucks. Does it suck, though? It is much better to be underestimated than to be overestimated. I've read a lot of Dan's articles. He offers a lot of interesting insight and advice in pretty much every article he's written. The guy comes off as a know-it-all! Not saying it's bad, but it something to introspect on if you constantly find people overestimating your abilities.
- azangru 8y ago> Does it suck, though? That's the mainstream narrative as regards to minority groups in tech :-) I too am not convinced that being underestimated sucks. Being overestimated may be stressful when you keep trying to fit the image that others may have formed of you and to meet their expectations. When underestimated, the most likely way is upwards, towards greater appreciation; when overestimated, one quite possible way is downwards, amid general disappointment of those who had higher expectations of you. I am not sure which is better.
- thatswrong0 8y agoI wouldn’t say he comes across as a know-it-all.. everything he’s written that I’ve read has to do with React or a few closely related subjects. And his writing never has a tone of superiority or “this should be obvious” that is, IMO, a requirement to be a know-it-all I personally kind of figured he knew a lot about everything Webdev related since he knows so much about React, but that’s obviously not the case now that he’s listed all that out. In fact, now I don’t feel like the extent my knowledge is as limited as I did because I have a basis for comparison! Which I.. figure might be the point of the article?
- alangpierce 8y ago
- Apreche 8y agoI don't know anything about the person who wrote this, but I know almost everything they don't know. Am I a much better programmer/engineer than I thought?
- kojeovo 8y agoYou're either way more knowledgable than most, or there's a bit of Dunning-Kruger in play. Hard to tell. What you know is only a small part of the game anyways.
- throw20180103 8y agoTo be honest, this article scares me from using react/redux, because the author don't know how types works. (I can't be the only one)
- acemarke 8y agoDan previously used C#, so he knows what static types are. He just said he hasn't used _TypeScript_ specifically. Redux is a simple library that you can read through in a few minutes. It's working great for hundreds of thousands of users. Why would Dan's background scare you off from using it? As for React, there's more than just Dan on the React team. (In particular, Seb Markbage is an incredibly deep thinker, and the rest of the team is great too).
- throw20180103 8y ago"and I already forgot most of C#" Does not inspire confidence here. It scares me off for the same reason that hundreds of thousands of people use dynamic languages, and I still believe that this is far from being a good idea. The same way that hundreds of millions of people believe in god, and I still think this is absurd.
- zbentley 8y ago> It scares me off for the same reason that hundreds of thousands of people use dynamic languages, and I still believe that this is far from being a good idea. > The same way that hundreds of millions of people believe in god, and I still think this is absurd. Well, that takes the idea of a 'programming language holy war' to a very literal place.
- PacifyFish 8y agoThis is so refreshing. Kudos to Dan Abramov for putting countless cases of imposter syndrome to rest, at least temporarily.
- alexpetralia 8y agoTotally agreed. I feel many engineers feel this way but can't say it. Really impressed to see the humility here.
- barberousse 8y agoBecause there's substantially more 'perceived' pressure when you don't know for a fact that thousands of developers rely on your work or trust your authority via your follower count. Power absolutely changes one's mental context for taking action, and Dan Abramov is one of the most empowered people in the front-end world.
- new_guy 8y agoThere's three kinds of article you can write: 1, things you know about 2, things you don't know about (this article as an example) 3, things you don't know you don't know about (hackernoon and medium are full of this kind of c*ap, people creaming their pants over switching their computer on for the first time) There's absolutely zero value in the last two, they add so much noise and worse they make the author look like a complete idiot, even if they're not. I genuinely don't understand why people are so insistent on broadcasting their ignorance/stupidity though? The only article of worth is the first kind, writing about your subject area, that adds value and is how people learn.
- josephpmay 8y agoIt's interesting and notable because of who wrote it. The author created one of the most-used programming frameworks, yet there are a lot of things he doesn't know. This type of article can actually be super helpful for people with impostor syndrome, as it shows that you don't need to be an expert in everything to create work that millions of people use and love.
- anonytrary 8y ago> The author created one of the most-used programming frameworks, yet there are a lot of things he doesn't know. There are far more accomplished people in the world who know far less about far more topics. This case doesn't seem particularly extraordinary.
- deleted 8y ago
- sp527 8y agoThis has always felt to me like an inconvenient truth most people are too uncomfortable to voice aloud. Maybe we all fear that we're the singular hapless fool adrift in an industry of savants?
- munificent 8y ago> Maybe we all fear that we're the singular hapless fool adrift in an industry of savants? Yes, that's literally the definition of Imposter Syndrome.
- sp527 8y agoI think there are several elements particular to the tech industry that elevates this problem past ‘classic’ Imposter Syndrome. So that label feels a bit reductionist to me, though not entirely incorrect.
- commandlinefan 8y agoI don’t feel that _I’m_ a hapless fool - I know how much effort I’ve put into learning what I know. I do feel (and have much evidence to support) that all of the non “technical” people that surround me think I’m a hapless fool every time they ask me a question and I don’t know the answer immediately off the top of my head, no matter how many times I did know the answer. I’m surrounded by “product managers” and “agile coaches” who imply that I’d better get everything done in minutes or they’ll “replace me with somebody who does”.
- deleted 8y ago[deleted]
- benjaminsuch 8y agoI love Dan. One of very few developers I really admire. And it's quite nice to see that we have very similar knowledge gaps.
- palerdot 8y agoThis is the most inspiring article of 2018, both in tone and content. Huge thanks to Dan for this writeup.
- simplecomplex 8y agoSometimes there’s an unrealistic expectation that engineers know everything, but senior engineers I’ve worked with and hired knew most of that list... at least somewhat. Yes, comfort with bash and a knowledge of how networking actually works is something I expect someone working on computer software for 10+ years to have gotten familiar with at some point. I also expect people who build libraries inspired by prior work (FRP) to actually learn a bit about the prior work. I’m surprised he has not dabbled with functional programming.
- Spearchucker 8y agoIt would be great if we all met each others' expectations. And yet it doesn't work that way. A step up from where you're at is to realize that tech, ANY tech, is easy. If brute-forced by rote it can be even be learnt by those without the aptitude. What IS difficult to master, is people.
- simplecomplex 8y agoNo, tech is not easy. I dont think I’ve met a software engineer in my entire 20 year career who would characterize programming as “easy”. I don’t think of law, medicine, and architecture as easy either. I’m sure I could have been an architect, if I spent years learning it like I did programming. But that doesn’t make it easy. Software engineers command huge salaries because it’s not easy. Just because anyone can learn anything doesn’t make everything is easy. I don’t understand why tech celebrates amateurism and ignorance... We don’t all know everything but we shouldn’t wear our ignorance like a badge of honor either.
- Spearchucker 8y agoMastering tech is easy relative to mastering people. I know. I've done the former for 32 years at companies like Microsoft and Nokia. Still learning the latter. Not sure how this celebrates amateurism or ignorance.
- orlybgg 8y agoYou do not about Elgato Stream. Read it out there https://techvella.com/elgato-stream-deck/ https://techvella.com/elgato-stream-deck/
- oraphalous 8y agoVery surprised that he is not expert at functional programming... I always assumed that all the folks behind React were driven by a desire to make web programming more functional generally - that this was an ideal toward which they thought we should be working. And furthermore assumed that this was informed by a deep understanding of functional programming generally and the reasons why it is desirable as a programming methodology. That inspired me to learn more about functional programming... which definitely wasn't a bad thing to do. But I guess I have just been projecting - I have a friend who I've always considered smarter than me who raves about functional programming... and I guess I just thought this is what smart people generally have come to realise is the god's truth about programming. It's good to know in a way that Dan is not in fact this religious about it. I wonder how other React devs feel.
- ByThyGrace 8y agoI wonder, do we have the same friend...
- tybit 8y agoFWIW the creator of react, Jordan Walke is a lot more along the lines of what you had imagined the react team to be like. He is a massive proponent of ML and is currently working on (also the creator of) ReasonML, a new syntax for OCaml, and react in ReasonML. I think there’s an interesting point in there as to the attributes needed to build something new vs scale something existing to a new level. They’re both clearly great at the things they seem to prefer doing.
- danabramov 8y agoI think everybody on the React team is on board with functional principles (like separating side effects from computation and relying on referential transparency). But there’s a reason “deep” functional programming hasn’t gone mainstream — many people (including me) find it hard to contort their product code to express their thoughts in 100% functional way. React has always been about taking the pragmatic parts of FP and making them easy to benefit from without buying into learning category theory or something like that.
- mettamage 8y agoI would like a list to see what he does know, according to himself. Somehow I get giddy making a comparison between what he knows and doesn’t know. I want to make a mental model of what a real dev looks like, even if it is a biased one.
- Nikspatel007 8y agoHe wrote a post on that too. https://overreacted.io/the-elements-of-ui-engineering/ https://overreacted.io/the-elements-of-ui-engineering/
- jtolmar 8y agoHere's some other senior dev's list: Don't know: start with Dan's list, it has many similarities. I know more Bash, but not enough to write a shell script more complex than my aliases file. I vaguely know z80 and 6502 assembly. I know Java extremely well, but am faking C++ and C#. I understand flexbox but not CSS floats. I don't even know what sockets and streams even are in this context, they don't sound like the sockets and streams I know. I don't know node. I do know graphics and algorithms. More don't know: the only front-end frameworks I know are Backbone, raw javascript, and various immediate-mode graphics APIs. I barely understand the AWS services I use. I don't understand matrix decomposition and that's actually relevant to things I do. I have to look up basic SQL commands when I'm writing it. Do know: graph search algorithms in excessive depth, sequential Bayesian filtering in excessive depth, most of 2D graphics, 3D graphics up until you need to sample the local region in world space, most of procedural terrain generation, 2D computational geometry, 2D physics, sensor error characteristics for various sensors, GPS from the high level down to pseudoranges (but not down to signal analysis), rather a lot about data formats and compression, video game networking models The "do know" list isn't exhaustive. The "don't know" one even more so.
- mywrathacademia 8y agoFrom your "do know" list you sound like a video game developer. I would think that a video game developer would be strongest in C++. Are you telling me your "do know" list is applied using Java?
- guelo 8y agoIs that guy really an experienced developer? He's obviously talented but experience and talent are different things. It sounds like he has less than 10 years under his belt.
- throwaway98121 8y agoIs 10 years the bar for what counts as an experienced developer? Why is 10 the magic number? I would say someone with 5 years experience could be senior to someone with 10 years under their belt, granted the former worked on the right projects that gave them valuable experience, with some combination of design, understanding trade offs, implementation, and social/management skills managing delivery of their features or taking complexity and simplifying it (both technically and from a requirements perspective). You could work 10 years and not hit those points. I expect someone with 10 years is hands down more experienced than someone with just one year under their belt, but otherwise, looking at how long you’ve been in the industry is kind of meaningless without understanding what it is that you did.
- danabramov 8y agoI’ve been learning programming since 12, got first software job at 18. I’m 26 now. So depends on how you count.
- guelo 8y agoAnd not that many technologies.
- danabramov 8y agoNo, not that many. I've worked with C# and .NET ecosystem (WinForms, ASP .NET MVC, NHibernate, EF, MSSQL), later Django/Flask/Python, later Xamarin/Cocoa and Rx, yet later Backbone, AngularJS, React. Haven't worked with low-level stuff at all.
- guru_meditation 8y ago
- alangpierce 8y agoNot to derail the core message, but one learning approach I've enjoyed in the past is to come up with a list like this and then try to learn a little bit about all of them. Doesn't need to be deep knowledge, just a basic "hello world" or equivalent to get your feet wet. It's a lot harder to get breadth when you stick to technologies that solve a problem you're facing, so sometimes it's fun to just explore a technology for the sake of seeing what it's like. Maybe with a more solid basic understanding, you'll recognize a case in the future where it could be useful or where it would be fun to throw into a side project. Also, some technologies may stand out as more fun and things that you naturally want to dig into further. Of course, that doesn't mean you now know any of these things, but even some small experience breaks through a psychological barrier, from something intimidating and unknown to something a bit more tangible.
- cbanek 8y agoThis! Also, I find that when I start to learn about something, as long as I'm just going thru the motions on a hello world, and actually look up what the things do, I learn the most. Coming in with that beginner mindset you learn faster, then it's kind of a slow crawl to become an expert. The first week of playing with a new language / domain / piece of software I think I learn the most. It's the 80/20 rule at work. Plus I find just having a small amount of knowledge and understanding where a piece of technology fits in the greater scheme of things to be really useful.
- heydonovan 8y agoAfter reading this, I feel like I've imposter syndrome as well. I know about 80% of those topics pretty well, but I don't think I could ever get a job as a junior dev. Maybe I focus too much on learning things that interest me, and not enough on things that land you that software engineer title.
- Aeolun 8y agoSo the main thing you are missing is the actual coding?
- system2 8y agoWhat language though? You can know C+ pretty well but still, suck at many other concepts that can be helpful operations. It really depends on the company you try to land a job with. What do you consider "actual coding"?
- heydonovan 8y agoHah! Probably. I'd rather learn about distributed systems, the idiosyncrasies of bash, how file systems work, dive into how http/2 & ipv6 will solve some of our problems, etc. Absolutely love fixing bugs in code though, but the actual act of coding an application from scratch bores me. Can't explain it!
- sophiebits 8y ago(I manage the React team at Facebook.) This is like me! I love fixing stuff and enjoy coding from scratch much less. I don’t have specific tips for you, but I promise it’s possible.
- erulabs 8y agoThis is an awesome article! I like the idea of being more forthcoming with what we don't know. > Containers. I have no idea about how to use Docker or Kubernetes. (Are those related?) I have a vague idea that they let me spin up a separate VM in a predictable way. Sounds cool but I haven’t tried it. > Deployment and devops. I can manage to send some files over FTP or kill some processes but that’s the limit of my devops skills. I'm working hard on trying to tease out a method to educate developers about DevOps / Kubernetes... It's hard to explain to people who have not been on-call or walked into a company on their first day as a devops, but I am strongly in the camp of "Kubernetes is live-saving, game-changing, etc". I tend to fail to explain to most product-focused developers successfully - Either too low level, too high level and hand-wavey, or they walk away with a sense of "man one day, that might be cool", rather than "We could get going on this _today_!". The most success I've had is in demonstrations (I have a raspberry Pi Kube cluster with 4 pies, with which I can physically unplug power, network, disk, etc and show off Kube's self-healing and auto-discovery powers), but at companies with day to day stresses, not so much. Plus the demo only scratches the service of cool features of even the Deployment API object. Shameless self promo, but I'm working on a project with a friend that hopefully helps. I want product-focused developers to have a "Heroku" moment about kube and understand the immense benefits they get from designing their applications with a "cloud-native" mindset. That the small cost is _vastly_ worth the benefit. The project is here: https://kubesail.com/ https://kubesail.com/. My "thing I dont know as of 2018", just for good measure: How to build complex front-end applications without making a complete mess of things!
- ryandrake 8y agoI also admit that I still have no idea what a Kubernet is or what Docker and containers orchestration or any of those things are all about. I mean, I visited their web sites and read a few wikipedia articles. But I'm primarily an embedded/mobile guy and whatever problem space containers solve is something I've just never even remotely encountered. Same with enterprise software development. It's kind of neat that the world of software engineering is so big that one can go 20 years into their career and be totally experience-deficient in large spaces of the industry.
- akhilcacharya 8y ago
- akhilcacharya 8y agoI was really surprised to see algorithms on this list. I would have presumed everyone at Facebook would be a cover-to-cover expert at the sorts of algorithms you'd see in coding interviews.
- rossdavidh 8y agoIt's good to know algorithms, but in (for example) sorts, it is a much worse error to write your own sort (based on the best algorithm), than to check if your problem has already been well solved by an existing library you can import without great cost. Not everything needs to be an import, but really in over a decade of development for multiple different organizations solving different problems, I've never seen a case where writing your own sort was a good idea. The same is true of many other algorithm categories. Not to say it's not good to know about, but that's how you can be a quite productive programmer without knowing algorithms like bubblesort off the top of your head. If, for example, you need to hash/salt passwords correctly and you haven't done that lately, even if you remember for certain how to do it, you should look it up to see if the best method has changed in the last year. Knowing algorithms off the top of your head might almost be a negative, if it makes you less likely to check with a bit of research first when it's time to use one.
- plahteenlahti 8y agoAccording to his tweet [1], there is a separate hiring track for front end engineers that does not include that much algorithmic knowledge. I was surprised too. [1] https://twitter.com/dan_abramov/status/1078658656344903683?s=21 https://twitter.com/dan_abramov/status/1078658656344903683?s...
- RonanTheGrey 8y agoFacebook can afford (nay, NEEDS) to rise to that level of specialization. But that's only going to be true at the level of a megacorp, like Facebook, or Google, or Microsoft. For even moderately sized companies, someone with wider knowledge will fare better, because such companies aren't going to spend $500k/yr on someone who doesn't know algorithms (or on someone who ONLY knows algorithms). The marginal cost to Facebook is near zero, the marginal cost to a smaller company certainly is not.
- 29athrowaway 8y agoYou can make a living as a frontend dev without having to touch those topics much. Other devs: desktop app devs, mobile devs, backend devs, devops devs, network devs, data scientists, game devs get exposed to those a little bit more. If you are interested in learning a lot of those at the same time, write a server in C. https://beej.us/guide/bgnet/html/multi/index.html https://beej.us/guide/bgnet/html/multi/index.html
- guru_meditation 8y agoIf you are not working on Browser frontend, you will also enjoy the API stability. Here's an older verison of the same guide by the same author, more than 2 decades ago: https://web.archive.org/web/19970812031954/http://www.ecst.csuchico.edu:80/~beej/guide/net/ https://web.archive.org/web/19970812031954/http://www.ecst.c... Amazing how little has changed. I strongly suspect anyone will remember the UI framework du jour 10 years from now but Berkeley sockets have staying power. Despite occasional efforts to replace (OpenTransport anyone?).
- kwizzt 8y agoThat's a great book. We were using this book as a tutotial/reference during our http server assignment in college.
- aaronfc 8y agoTo be honest, knowing your limitations that well is a ver good thing. Probably many people would say "yes, I know" knowing not much more than what he summarized for some of the items of the list with just a few words. Didn't know him, but I like him now.
- _trampeltier 8y agoWenn du weist, dass du nichts weist weist du mehr als wenn du nichts weist das nicht weist. If you know what you don't know anything, you know more than if you don't know anything and you don't know.
- Tade0 8y agoThis piece made me realise one thing: the most valuable part of my knowledge is not systematized. To put it in a different way: If someone asked me what I know I couldn't show it in any other way than "watch this".
- deleted 8y ago[deleted]
- pepijndevos 8y agoWhat I miss from this article is what he does know. Not to boats, but to contrast. I know some of the things he does not know, and I'm sure he knows things I don't know. But without knowing what his expertise is, it's easy to think you know more than him.
- Kiro 8y agoHe's one of the most prominent React core developers. The author of Redux etc. Many JavaScript and React developers (myself included) consider him a rockstar.
- yakshaving_jgt 8y agoYou don’t think that’s a problem? I don’t think there’s any value in being a name in programming. There is certainly value in a dollar sense (to their own career prospects at least), but I don’t understand why people would be like “wow! It’s $name! They’re famous!” If someone non-junior knew no shell scripting and had no FP knowledge — or thought that JavaScript counts as FP [spoiler alert: it doesn’t] — I wouldn’t hire them.
- danabramov 8y agoPersonally I’m not saying JavaScript “counts” as FP — which is why the post says “unless _you_ count”. ;-) But there are certainly FP subcultures in the JS community which only use the functional subset: https://github.com/jfmengels/eslint-plugin-fp https://github.com/jfmengels/eslint-plugin-fp https://github.com/fantasyland/fantasy-land https://github.com/fantasyland/fantasy-land https://ramdajs.com/ https://ramdajs.com/ That subculture is what I was referring to. If you’re splitting hairs over such definitions without acknowledging the cultural aspect and use that as a hiring criteria I wouldn’t want to work with you either.
- yakshaving_jgt 8y agoCulture means different things to different people. If a candidate were to suggest they were only interested in the “pragmatic parts of FP”, implying that developing an understanding of category theory is somehow frivolous and not pragmatic (which I think you did earlier), I would acknowledge this as a poor culture fit.
- lucb1e 8y ago> serverless Have you ever used shared hosting or know how this works? Then you can cross this off.
- k__ 8y agoShared hosting includes automatic capacity scaling and on-demand pricing?
- naniwaduni 8y agoFor most use cases, the required capacity ranges from zero to still small enough to fit on a single host. Any half-decent shared host ought to be able to scale you at least as far as a single database server on commodity hardware will suffice.
- k__ 8y agoNot the answer to the question, but you're right.
- sidcool 8y agoThis is a very good article. What stumps me though is how the 10x engineers/architects make such sound technical choices without knowing a lot of things. I perennially feel ignorant of Computer Science concepts that many others seem to possess. This article helps me to understand it's not only me. But I would still like to make the best tech choices most of the times...But the problem is..WHAT TO LEARN NEXT? THERE'S BILLION THINGS, WHAT TO PICK UP?
- pg_bot 8y agoYour thought process is backwards. Instead of starting with a technology you want to learn, start with a problem that you have. Then do research on tech that can solve your problem and you will learn by solving the problem you have. Most technology companies are also terrible at explaining what they do so you need to be able to do a bit of reading to understand their value proposition. For example Docker, their website's homepage states. Future proof your Windows apps and drive continuous innovation Protect your legacy, invest in your future. Which is techobabble nonsense, and doesn't tell me a fucking thing about what Docker does. Docker isn't just for windows apps, so I don't know why they are alienating linux users. It makes no sense, and I would assume most people would move on unless they already knew what it was. This is sad, because I like and use Docker and want them to succeed. How I would describe Docker to the uninitiated. Docker is a file. In that file you can run a series of commands to install and compile all the software necessary to run your application. Once you execute the file, it outputs another file which you can send to someone else who will automatically know how to run it. That's all it is, there is no reason for confusion.
- yawaramin 8y agoThey make good choices because they work in teams where members have different strengths and help each other.
- douglaswlance 8y agoI have an Airtable that I maintain of everything I want to learn (mostly harvested from job listings), then I sort them by priority.
- commandlinefan 8y ago
- Abimelex 8y agoSimilar here, just bookmarked it as TODO for 2019 :)
- image888 8y agoA developer confesses
- Walkman 8y agoI know most of these things in detail, I can understand them and use most of them daily. I know NOTHING about JavaScript at all. It's ok, you work on frontend, I'm on backend.
- deleted 8y ago[deleted]
- InGodsName 8y agoIt's on tangent but I owned an agency before and my employees under NDA wrote opensource projects for celebrity developers. It was effectively a GhostCoders for hire service. Out of them a few developers got very popular. It was a matter of luck more than anything. Anything can catch wind anytime, we just needed to keep up with the trend. One way to catch this is coding style. Since, we employed GhostCoders - style varied considerably if a person looked deep - they could detect it, tho we tried to create a guidelines per celebrity programmer still picking up a particular style is quite difficult. Hammering out dozens of project every month for a celebrity programmer needed that we hire multiple coders as no one would work all living hours. Every project was a greenfield project, so hiring ghostcoder wasn't difficult at all. Once you've proved your Opensource worth, companies would employee you as a celebrity coder and you just need to blog, tweet and give talks. Illusion of work is sometimes more important than the real work. But even the ones who didn't get that popular accured a portfolio of contributions which helped them get a well paid cushy job. Once you've breached a significant popularity threshold, you don't have to go through any interview and people assume you possess superior knowledge about everything. This is why we still offer ghostcoding service to turn you into a popular Opensource developer, you might also recoup costs through Patereon. So reading this i am not very surprised.
- yakshaving_jgt 8y agoThis is disgusting. I’m not condemning you for finding a gap in the market — that’s totally fair play. But the fact that this can exist and that we have a culture of celebrity in software development at all (especially in such a dishonest way) is just disgusting.
- InGodsName 8y agoYes, this is hacker news. We've to find hacks in the capitalism to get ahead in life. As long as it's legal, it's good for us. Since we pay well, don't see any problem.
- yakshaving_jgt 8y ago
- henrikeh 8y agoA really curious aspect of this list is the “scale”/depth of the various topics. Some are very specific: “Node backends”, “GraphQl”; some are very general: “algorithms”, “functional languages”. It is well established that “knowing more” is not really a thing; we just learn to further understand relations and distinctions, feeding our ability to know of more things we have yet to learn.
- azizinnnjo 8y agoI very much enjoy working as a programmer, but, to be honest, there is constantly a little anxiety in the back of my mind that I do not get FP/docker/devops/insert-latest-buzzword-here enough not to look like a clueless coder in a watercooler-side chat with a fellow. So I really appreciated this article, it made me feel better about myself :-)
- commandlinefan 8y agoIt’s deeper than that - you won’t just look like a “clueless coder”, you’ll find yourself unemployable. I learned early on that it doesn’t matter what credentials you have or how much experience you have, never admit there’s anything you don’t know, or they’ll pass on you to hire somebody else who confidently insists that he does know absolutely every single thing there is to know. I feel bad for the author of this piece, because putting his name to this _will_ cost him employment at some point in the future.
- siquick 8y agoThe author created the key state management tool for one of the world's most used front end libraries - I think he's gonna be ok!
- pelotom 8y agoThe idea of Dan Abramov having trouble finding employment is beyond comical.
- commandlinefan 8y agoWell, I hope so - the author of Homebrew ended up having trouble finding employment: https://twitter.com/mxcl/status/608682016205344768 https://twitter.com/mxcl/status/608682016205344768. Stranger things have happened.
- leesec 8y ago
- in38years 8y agoKnowing what you don't know is better than not knowing what you don't know. It shows a wide breadth of knowledge and I suspect that with the desire and time, you could become an expert in any of these things.
- badsavage 8y agoI still don't know that what is love? baby don't hurt me
- badsavage 8y agoHave no clue about how will ethereum scale too