9 ms·
Who cares what companies want or trying to chase some huge payday. It’s all very boring. What we do is a craft. Those things on lc are the foundations of our
by dpweb 5y ago
Who cares what companies want or trying to chase some huge payday. It’s all very boring.
What we do is a craft. Those things on lc are the foundations of our craft. I want to know everything about my craft, and a lifelong student of it, so I like sites like lc.
I’ll take it over trying read page after page of some big comp sci book.
- omginternets 5y agoMost of the interesting stuff is in papers and books, not on leetcode …
- TaylorAlexander 5y agoIt sounds like that website is a shallow representation of this craft. A big part is working with stakeholders in a project, understanding needs and communicating what is possible. Only a portion of the craft is about writing algorithms.
- baq 5y agoIn the industry computer science knowledge is useful on average once a month when you decide between a hash map or a vector. The hard part is figuring out what the customer actually wants.
- josephg 5y ago> once a month This is incredibly dependant on your company, team and role. I’ve been knee deep in data structures and algorithms for the last year. When I was at (FAANG) years ago I worked with people who did this stuff full time. You’ll find roles which use these skills in AI, AAA game dev, finance, operating systems and so on. But probably 95% of commercial work is styling and wiring buttons. Even at big tech companies most of the work is plumbing. The skills you learn on leetcode are completely irrelevant in those roles.
- giantg2 5y agoDepends on where you are in finance. I work for a financial company an nobody I worked with was dedicated to algorithms. They seem to rather take the finance PhDs and teach them how to code rather than use developers for that stuff. The rest of us are just handling boring plumbing.
- vanusa 5y agoBut probably 95% of commercial work is styling and wiring buttons. We're in agreement that algorithms as such probably make up about 5 percent of industry work. But the other 95 percent -- and I am talking engineering work, not product desgn -- is definitely not simply "styling and wiring buttons". And this is a very myopic view to have.
- llamajams 5y agoYeah I don't know where y'all work, but data structures, algorithms, and design patterns are for breakfast lunch and dinner practically every day at my work. It wasn't so when I just started but as soon as I got out of a jr role all the problems has huge data sizes, things had do get done fast and all that so there's no escaping the fundamentals =\.
- YeGoblynQueenne 5y agoProgramming definitely is a craft, but coding exercises are not the basis of it. The basis is the theory in the big comp sci books you are wary of. I recommend Introduction to Algorithms [1]. Books like that can be really dry and hard to read, and they usually are, but they contain fundamental knowledge about computation that is the only way to solve some hard problems (and there are many hard problems that remain open). Leetcode problems, if they're any good, will simply be exercises based on the concepts in such books. But you won't understand the concepts just by solving the exercises. My experience is that I spent seven or eight years coding in Prolog (that's how I roll, OK? Don't judge!) and while I had become skilled at it, I didn't really understand how it worked until I started my PhD at which point I really had to sit my bum down and read a whole load of stuff I didn't even know existed. You'll probably say "what do I care? I'm not in academia". Yes, but you think of programming as a craft, right? And a crafts-person is happy to constantly improve his or her craft. Well, a PhD is one way to do that, sticking with industry for many years, if you can find the right positions, is another. But one way or another you'll eventually find yourself at a point where just solving coding exercises doesn't give you anything new. That's when you turn to the books. If you don't, then you should be concerned: it means you're not really advancing, not getting better in your craft. I'd have a lot more to say about programming as a craft. Instead, let me point to Peter Norvig's timeless essay: Teach Yourself Programming in Ten Years https://www.norvig.com/21-days.html https://www.norvig.com/21-days.html And to this book by George F. Luger who introduced me to the concept of the "Master programmer": AI Algorithms, Data Structures, and Idioms in Prolog, Lisp, and Java https://www.cs.fsu.edu/~cap5605/Luger_Supplementary_Text.pdf https://www.cs.fsu.edu/~cap5605/Luger_Supplementary_Text.pdf I'm also linking those for anyone else interested in that kind of thing. Happy reading. ___________ [1] It's online here: https://edutechlearners.com/download/Introduction_to_algorithms-3rd%20Edition.pdf https://edutechlearners.com/download/Introduction_to_algorit... No idea if that's a legit download or not.
- deltaonefour 5y agoI hate it when someone calls it a craft. First off programming is one of the easiest engineering disciplines out there. That's why it's so easy to learn without a degree. It's like calling plumbing, "the art of plumbing." Sure it's a "craft" but don't be so full of yourself. Also lifelong student? Have you ever felt that everything you learn is just the industry moving in circles?
- svantana 5y agoIf this was the case, then why are most applications full of bugs, including those written by trillion dollar corporations? To me, coding is a lot like physical construction - anyone who can swing a hammer can build a treehouse, but try to scale that to a skyscraper and it will go badly. At that point you need careful planning and lots of specialized knowledge to do it proper.
- deltaonefour 5y agoThe things you describe, managing complexity, is hard because there's no science around it. There's no optimization method for calculating the best way to organize code. It's not even formally defined what "organization" is. As a result everyone just makes up anecdotal "patterns" without proof that those patterns satisfy any quantitative "efficiency" criteria. Again this "efficiency" criteria doesn't really exist, we have some numerical metrics for measuring certain things but we can't really say definitively which is more organized the windows code base or the linux code base. So in terms of these kinds of things. Nobody really knows who does what better. Does hiring people who can solve LC type problems result in more "organized" code? How can we know when we don't even have the word "organized" defined? The existence of this problem in CS doesn't make CS harder because everybody is basically ignoring this problem and just picking arbitrary solutions aka "patterns" to solve things. Coding is like physical construction, unbounded by the rules of physics and therefore MUCH MUCH easier then engineering a boeing 747. Try learning building a 747 from a bootcamp. You can't. Coding bootcamps exist because it's freakishly easy to learn programming while engineering a 747 is freakishly hard, hence the lack of bootcamps for building airplanes. It's like making legos to fulfill your goal. In the end the thing we build with these legos likely isn't the most theoretically efficient thing but it works and we didn't need super high intelligence to build it and we don't need someone smart either. The thing with programming is this. It makes you feel smart. The reality is, your not.
- jollybean 5y ago"What we do is a craft." Nobody except you cares about your craft though. They care if you can accomplish the things they need accomplished. If your craft is 'building quality decks' - and they want a 'quality deck' - then great. But if your craft is 'building byzantine window structures with 4 plane glass imported from Italy', well then, it's going to be hard to work on a house if that's all you care about. Software Development is a skilled trade, it's more like Carpentry than it is academic, it just has some elements that can be very academic.
- vanusa 5y agoWhat we do is a craft. But it's an extremely narrow slice of this "craft". Right?