TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: I've been a programmer for 6 years, and I can't solve basic CS problems

404 点作者 cs0超过 6 年前
Hi HN.<p>My fianceè is currently enrolled on CS50 Introduction to Computer Science online.<p>I&#x27;m a programmer and have been for around 5-6 years, I started with VB.NET since I first started learning, then progressed onto Web Development at a large agency for 4 years (PHP, JS, React) and I&#x27;m now back with VB.NET.<p>I&#x27;ve worked with a few &quot;complicated&quot; (they were to me) projects in the past, but now I&#x27;m being tasked with guiding my fianceè with this course.<p>Some of the problems which she is expected to solve are pretty simple problems, but I just can&#x27;t seem to get the hang of any of them on my own.<p>I would have thought that my last 5-6 years of experience would at least help me here. I can point out basic syntax errors and help with debugging, but when it comes to me trying to solve these problems on my own, I don&#x27;t know where to start.<p>It makes me question how I was hired in the first place.<p>Sorry for the rant, but I was just wondering if anyone else felt like this.

84 条评论

swatcoder超过 6 年前
Think of it this way: application development, software engineering, and computer science (and data science and ... etc) sometimes use the same tools but are all different disciplines.<p>Universities traditionally focused on Computer Science and their graduates would often need a lot of grooming before they could really be independently and reliably productive in the commercial words of application development or software engineering. Importantly, it was less grooming than someone who studied something like English or Sociology or History, but it was still a different discipline than what the job market demanded.<p>You jumped into the job market directly. You learned to develop applications, research API&#x27;s, study trends, and participate as a team member in development workflows under commercial pressure. You don&#x27;t know how to compose and compare sort functions for abstract sets of N elements because you never needed to. You just use sort().<p>And that&#x27;s okay! Inventing new algorithms with theoretical significance is not your job! You have other skills and they&#x27;re of much more immediate value!
评论 #18446599 未加载
评论 #18446155 未加载
评论 #18446374 未加载
评论 #18449159 未加载
评论 #18448137 未加载
评论 #18446307 未加载
peteforde超过 6 年前
Honestly, I&#x27;m appalled by some of the stories being shared in this thread; smug interview panels pressure-cooking candidates as they try to whiteboard obscure CS gotchas is a system perfect only for assholes and masochists.<p>I&#x27;ve now run three tech companies and hired dozens of developers by having really intense, thoughtful conversations with them. I asked them to tell me war stories and encouraged them to share insights on how they solve problems.<p>I only rarely look at code, because it&#x27;s self-evident when you&#x27;re talking to someone that is passionate about programming + intellectually curious-to-hungry + an interesting person who demonstrates empathy and seems like someone you&#x27;d want to spend 7-9 hours a day with.<p>I hire like I&#x27;m trying to form a rock band: I don&#x27;t tell them what to play, I give them permission to show me what they&#x27;ve got.<p>Here&#x27;s the thing: the more we, as a class of developers, put up with these devolving interview processes, convince ourselves that this is somehow our failing and our inability to FizzBuzz in six languages with a sharpie and people watching... the more we allow it to be considered okay, and the more normal it will be to expect this nonsense.<p>I know that being cash-starved sucks, but you know what? If you walk into an interview and they bust out the markers and ask you to start sorting, I sincerely hope that we can collectively find the strength to laugh at them and politely tell them that you&#x27;d never waste your time at a company that insults your craft.<p>Find your pride and tell them why they missed out. If they want to understand what just happened, tell them to take you for a drink. If they are dicks about it, you really didn&#x27;t miss out on a damn thing. I promise you that.
评论 #18456544 未加载
评论 #18450234 未加载
评论 #18449746 未加载
评论 #18471450 未加载
评论 #18457108 未加载
评论 #18457422 未加载
评论 #18449639 未加载
cs0超过 6 年前
Thank you to everyone who has replied to my rant.<p>I felt of low value for not being able to provide immediate help for most of the problems that she&#x27;s being taught to work on.<p>Some of the examples (since some of you were asking for them): <a href="https:&#x2F;&#x2F;github.com&#x2F;cs50&#x2F;docs&#x2F;blob&#x2F;master&#x2F;_pages&#x2F;2018&#x2F;x&#x2F;psets&#x2F;2&#x2F;caesar&#x2F;caesar.adoc" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;cs50&#x2F;docs&#x2F;blob&#x2F;master&#x2F;_pages&#x2F;2018&#x2F;x&#x2F;psets...</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;cs50&#x2F;docs&#x2F;blob&#x2F;master&#x2F;_pages&#x2F;2018&#x2F;x&#x2F;psets&#x2F;1&#x2F;credit&#x2F;credit.adoc" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;cs50&#x2F;docs&#x2F;blob&#x2F;master&#x2F;_pages&#x2F;2018&#x2F;x&#x2F;psets...</a><p>I realise that I may have written my original post a little hastily as I was feeling quite strong about having inadequate knowledge to solve these problems.<p>You&#x27;ve all been super nice to me, and I can understand where you are all coming from.<p>Again, thank you.<p>As an aside, the problem that I was stuck on earlier, I managed to solve through a bunch of trial and error, so I&#x27;m chalking that one up as a win for tonight.
评论 #18446478 未加载
评论 #18448787 未加载
评论 #18446483 未加载
评论 #18448659 未加载
评论 #18446443 未加载
评论 #18446619 未加载
评论 #18446773 未加载
评论 #18448176 未加载
评论 #18453371 未加载
评论 #18447825 未加载
评论 #18447009 未加载
评论 #18456778 未加载
评论 #18447462 未加载
评论 #18447316 未加载
评论 #18448753 未加载
评论 #18447883 未加载
评论 #18453054 未加载
peterkelly超过 6 年前
Programming isn&#x27;t the same thing as computer science, in the same way that writing isn&#x27;t the same thing as journalism.<p>Writing code is the easy part. It&#x27;s tedious, requires lots of practical knowledge and troubleshooting skills, but is for the most part a straightforward exercise. Computer science is about the theory. It involves solving problems in the abstract, using (and in some cases creating) new conceptual tools with which to think about, model, and solve a problem.<p>Many jobs in the software industry require only programming skills, and with those you can get along decently at any one of thousands of companies which are basically just building the same kinds of applications over and over again. But doing anything <i>truly</i> interesting requires venturing into the world of computer science, which requires years of study to master.
评论 #18449089 未加载
评论 #18449022 未加载
评论 #18449334 未加载
评论 #18449103 未加载
评论 #18448724 未加载
stcredzero超过 6 年前
Okay, I&#x27;ll give you the &quot;triage&quot; presentation. It&#x27;s a combination of &quot;where to start&quot; and &quot;what I&#x27;ve actually used in industry.&quot;<p>1) Algorithmic complexity: Study why naively adding to the end of an array or the end of a string results in O(n^2), while doubling the size when you increase the storage results in O(n). That one tidbit has comprised some embarrassingly large fraction of the &quot;consulting&quot; I used to do working for a language&#x2F;VM vendor.<p>2) Graph theory. Study BFS and DFS and implement them a few times to do things like solving a maze. Get comfortable with those until you can &quot;run&quot; them in your head when looking at a problem specified on paper containing a graph, and you can see uses&#x2F;consequences. This will both keep you out of trouble and can be a starting point for further study.<p>3) Concurrency. Learn about race conditions and deadlock. Figure out some tools and patterns for dealing with them. Use them to write a chat server and figure out how to automatically QA it until you can break it.<p>4) Transactions. ACID. Read up on why you have ACID transations, and what can go wrong.<p>That right there is good for some huge percentage of what could really get you into deep trouble.
评论 #18452813 未加载
评论 #18448285 未加载
topkai22超过 6 年前
I do have a CS degree, but I manage a software development team that is mostly composed of people with non-CS backgrounds. Having done this, I can assure you that you don&#x27;t need to be able to solve toy CS problems to produce sophisticated, useful applications.<p>That&#x27;s not to say a CS degree isn&#x27;t useful- My observation is that a good foundation in computer science (algorithms, data structures, type theory, programming language, and systems) does help improve code quality and tends to be insurance against &quot;hitting a wall&quot; when problem solving, but my team members without CS degrees generally just as productive in delivering value. Its all learnable outside a university as well- one of the guys on my team with a liberal arts degree has picked up so much theory of the years I&#x27;d call him the &quot;most CSey&quot; of all our people.<p>The repeating problems I have with my team members lacking a CS degree general are misuse of type systems (IE- never creating interfaces, not inheriting, copy and paste reuse, etc...) , not doing functional programming right (or at all) in Type&#x2F;JavaScript (this really stinks when Promises are involved), and a lack of awareness about performance consideration (hey! I think I found the problem! There is 9 levels of loop nesting, and each call inside the loop does a web request). These are areas my CS education really helped with, even if I didn&#x27;t know it at the time.<p>On the flipside, the &quot;CSey&quot; crowd on my team (including some self taught people) sometimes lose productive chasing non-issues that don&#x27;t conform to some platonic ideal we were taught (yes I know the array only ever has 3 elements in it, but I got the operation to run in O(n) time!).<p>In short, I&#x27;d encourage you to try to learn these toy problems and the concepts behind them as they do have value, but hardly a core requirement to deliver value creating software in most circumstances.
nabla9超过 6 年前
Programming has become so generic activity that the word &quot;programmer&quot; tells very little of what people are doing and what their skills are.<p>From the description of what you have done, you are working in &quot;software assembly&quot; type programming job. You clue things together and get the job done. You know the API&#x27;s and some standards. Most of the programmer jobs are what you are doing. It&#x27;s very different from the classical algorithmic programming type jobs and programming.<p>People who build machines have wide variety of job descriptions: mechanic, welder, machinist, mechanical engineer, and so on. But somehow it&#x27;s assumed that if you can do &quot;web development&quot;, you can do do it all.
cyphar超过 6 年前
There&#x27;s a common belief that you can learn everything you need to program through practice. And that is true in the sense that you can eventually learn how to write working programs. But understanding the theory behind programming and algorithm design is a very different thing.<p>As a concrete example, while in high school I participated in programming competitions. One of the questions required writing a parser for a context-free grammar. Being completely unaware of recursive descent parsers I managed to fudge together an awful program with probably disgusting algorithmic complexity. After taking an &quot;intro to CS&quot; course (as an extra curricular activity), I immediately knew how to write basic parsers for CFGs correctly. It&#x27;s not that I was suddenly much better at programming, it&#x27;s that I now had learnt some theory that helped me know how to approach a problem.<p>You can&#x27;t really &quot;pick up&quot; algorithms. You have to learn it through some kind of study (self-study is also acceptable). There are thousands of man-years that have been spent on algorithms. It&#x27;s probably not a good idea to start out from scratch. In this respect, I would argue that programming is far closer to mathematics than engineering.
Kinnard超过 6 年前
&quot;The first lesson is that computational complexity theory is really, really, really not about computers. Computers play the same role in complexity that clocks, trains, and elevators play in relativity. They&#x27;re a great way to illustrate the point, they were probably essential for discovering the point, but they&#x27;re not the point.<p>The best definition of complexity theory I can think of is that it&#x27;s quantitative theology: the mathematical study of hypothetical superintelligent beings such as gods. Its concerns include:<p>If a God or gods existed, how could they reveal themselves to mortals? (IP=PSPACE, or MIP=NEXP in the polytheistic case.)<p>Which gods are mightier than which other gods? (PNP vs. PP, SZK vs. QMA, BQPNP vs. NPBQP, etc. etc.)<p>Could a munificent God choose to bestow His omniscience on a mortal? (EXP vs. P&#x2F;poly.)<p>Can oracles be trusted? (Can oracles be trusted?)<p>And of course:<p>Could mortals ever become godlike themselves? (P vs. NP, BQP vs. NP.)&quot;<p><a href="https:&#x2F;&#x2F;www.scottaaronson.com&#x2F;blog&#x2F;?p=56" rel="nofollow">https:&#x2F;&#x2F;www.scottaaronson.com&#x2F;blog&#x2F;?p=56</a>
评论 #18447121 未加载
poulsbohemian超过 6 年前
Computer science is not the same as professional software development, even though it makes for a good educational foundation. Often even those of us who studied computer science are separated from it by enough years or abstractions such that we have to take a step back and think about fundamental problems when they are presented. So don&#x27;t feel bad, unless you believe this actually indicates an area for professional growth.<p>Said another way - I haven&#x27;t needed to write &lt;sort&gt; in twenty years, so if I had to, it would take me just as long as it takes you.
haney超过 6 年前
I heard somewhere that a computer science degree is actually a history degree in how we have solved problems in the past. Programming is a creative problem solving process, but certain problems took decades to solve and it’s only by knowing the history that people are able to resolve some of these hard problems. Don’t beat yourself up for not knowing all of history and give yourself a break for not being able to immediately solve problems that took dedicated researchers their whole careers in the early days of computing.
评论 #18446108 未加载
评论 #18446203 未加载
dep_b超过 6 年前
80% of all software is glueing frameworks together to do CRUD. There&#x27;s an art to do that right as well, especially very large systems with lots of legacy. Readability, SOLID, safety. It&#x27;s not something everybody has a talent for.<p>But it doesn&#x27;t need particular deep CS knowledge. There are people that program for 30 years, get paid six figure salaries and &quot;never needed that shit&quot;. And they&#x27;re really good at their jobs. But sometimes (less often than it&#x27;s required to pass for an interview) you&#x27;re really expected to dig that deep because you need to solve problems that existing frameworks and libraries don&#x27;t handle.<p>Background: learning basic CS stuff after 20 years of programming professionally. You will <i>never</i> learn it on the job.
lmilcin超过 6 年前
Application developer is to computer scientist like car mechanic is to physicist.<p>You&#x27;ve been conned into thinking Computer Science prepares for Software Engineering. That&#x27;s not true.<p>While you may need some Computer Science knowledge from time to time (and in fact there are some rare jobs heavy in Computer Science knowledge) almost all typical development and especially entry level software engineering jobs are all about knowledge and skills that are not taught at school.<p>You&#x27;ve spent past few years learning other important skills. You don&#x27;t need to know how numbers are divided, you don&#x27;t need to know how cuckoo hashing works and you don&#x27;t typically implement A* from scratch to get your company&#x27;s systems implemented.<p>I don&#x27;t want to say it is not helpful to know these stuff. It certainly is. But to spend couple of years of your life getting in debt instead of earning money and useful experience -- that&#x27;s something everybody has to ask themselves if they think to get into Computer Science as a way into software engineering.
评论 #18449609 未加载
评论 #18448992 未加载
评论 #18451756 未加载
sowbug超过 6 年前
You&#x27;ve already gotten a lot of good perspectives. I have two tangential observations.<p>First: a lot of applied software engineering has the overarching goal of allowing developers to quickly build useful, stable, and secure products with relatively little knowledge of complexity principles or the implementation of the underlying system. Your successful career demonstrates the achievement of that goal. This is good. But it has absolutely nothing to do with your ability to <i>build</i> the tools you use, any more than a writer would know how to manufacture a pencil from raw materials. They&#x27;re completely unrelated skills. <i>But that was the whole point from the start of the profession!</i><p>Second: your spelling of &quot;fiancée&quot; is incorrect. The word comes from the French word <i>fiancer</i>, to betrothe. In French, you add the equivalent of the -ed suffix by changing -er to -é. Then for a female subject, you add another e. So &quot;fianc&quot; + &quot;é&quot; + &quot;e&quot; = betrothed woman. Using a è (backward accent) at the end of a French word isn&#x27;t just wrong; it&#x27;s more or less impossible (at least I can&#x27;t think of a word that ends with è). Compare a snippet of JavaScript like if )a == 3) { b = 3: } You&#x27;re an experienced JS developer, so you can spot the two syntax errors from a mile away. That&#x27;s what &quot;fianceè&quot; looks like to a reader for whom accents are significant. Just stick with &quot;fiancee&quot; without accents, and you can&#x27;t go wrong.<p>Sorry to hit you when you&#x27;re down.
评论 #18447927 未加载
评论 #18448792 未加载
Kaotique超过 6 年前
I&#x27;m a little annoyed by the people who call these simple problems. There are no simple problems. Calling something simple is very insulting and demoralising.<p>It really depends on your experience and knowledge for what is simple for you.<p>You can have 20 years of experience developing projects and acquired a ton of valuable skills but when I shove a whiteboard in your face and tell you to solve some algorithm it&#x27;s completely new and not simple at all.<p>Just as someone with a lot of theoretical CS knowledge will struggle if I present them with a failing dependency tree of 30 thousands NPM packages. Good luck solving that when you have never done it.
评论 #18453298 未加载
kvm超过 6 年前
I’m going to disagree with all the positive comments in this thread. I feel like they’re all “feel good” comments instead of being realistic. CS 50 is a freshman level introductory CS class. It’s not a theory class, it’s not a class teaching you how to implement sort behind the scenes.<p>I would agree that an algorithms class does not equate to success as a software developer, but if you’re having issues with an intro class, there are certainly gaps in your knowledge. They might not reflect in your current job but may reflect in the future. I’d recommend actually brushing up on your fundamentals.
cyberprunes超过 6 年前
As others have pointed out, a lot of application development rarely requires solving typical CS problems. One can go a long time building things without such formal knowledge. I agree with that and I&#x27;m glad that the field is available to anyone that loves to program regardless of schooling. BUT<p>The problem is thinking that &quot;It&#x27;s ok!&quot; to spend your career in ignorance because your job doesn&#x27;t involve inventing new algorithms or pondering theory. That&#x27;s just lazy. I know, I did that for years too, not knowing why I should bother since I&#x27;m doing just fine without it! That is the arrogance of ignorance at work. I guarantee that you don&#x27;t know how miserable you really are.<p>It&#x27;s not about passing whiteboard interviews, it&#x27;s about achieving a deep understanding of fundamentals. It will change and improve the way you think and approach problems. It will improve your software regardless of whether or not it involves an actual &quot;CS problem&quot; because your mind will be elevated. I did the same thing for years, I whined about &quot;whiteboard interviews that don&#x27;t effectively display my skills and unique gifts to do the job&quot;. It&#x27;s a dumb mindset.<p>My advice as an internet nobody would be: Now that you&#x27;ve seen that you are struggling in this area, work on it! Don&#x27;t let these people encourage you to remain ignorant. Advocating for ignorance is shit that propagates shit.<p>Ultimately, understanding the principles of your field will make you better. It&#x27;s not about the damn whiteboard!
WheelsAtLarge超过 6 年前
Interesting, I think a CS degree does not equal a programming job unless you prepare in addition to your CS degree.<p>CS programs focus more on the abstract parts of the field. For example, you can finish a programming project without having to program a sort function, this is a built in function in most languages, yet that&#x27;s a basic part of a CS program.<p>I think generally there&#x27;s a disconnect between what employers need and what CS programs provide.<p>Don&#x27;t get me wrong there are jobs that could not be done without the knowledge CS programs provide but for the average programming job there&#x27;s a disconnect and you&#x27;ll have a hard time if you don&#x27;t have that in mind.<p>So, yes, I can see how you can have a programming job without being able to solve a CS class problem.
extragood超过 6 年前
You&#x27;re restricting yourself from some opportunities by not knowing CS fundamentals.<p>Those are very common problems in programming interviews, and in those cases you would be disqualified.<p>If that bothers you (and the fact that you posted this question indicates to me that it does), then I would recommend taking the opportunity to learn along side your wife. You don&#x27;t get the degree that way, but at least the knowledge is free. And your wife might like it, as a plus.
beering超过 6 年前
I wonder if it can be analogized to a line cook (you) vs someone going to culinary school (your fiancee). In your day job you execute consistently and skilfully, but if you were put in front of a pantry full of miscellaneous ingredients and told to come up with a dessert you might struggle.
jiveturkey超过 6 年前
<i>Most</i> software development is in house stuff, and most of that is very procedural. You don&#x27;t need a CS degree to do it.<p>Half of the rest of software development is embedded stuff for PLC or basic software needed to get a piece of hardware working. It is done by EE types that barely have an understanding of the language, much less data structures and algorithms.<p>Your experience and level of expertise is the norm. And, it&#x27;s perfectly fine if it gets the job done!<p>The beauty of technology is that you don&#x27;t need very many technologists to create something that ordinary folks can use. The field is very far along now so there&#x27;s many levels of skill, from the guy that can create an AR engine from whole cloth down to the businessman who can do very advanced stuff within excel ...
krisoft超过 6 年前
Here is an angle which seemingly no one mentioned: &quot;I&#x27;m being tasked with guiding my fianceè with this course&quot; What if the right way to help them is to do nothing, and let them work through it on their own? It&#x27;s an exercise for a reason.
noir_lord超过 6 年前
I&#x27;ve been a programming since I was a kid in the 80s and for money since the late 90&#x27;s and I&#x27;d struggle with what a computer scientist would consider simple problems.<p>It&#x27;s a mismatch of domains.<p>Computer science !== Software engineering (though obviously there is overlap).<p>In practice I find that at least 50% of my job is getting requirements out of people&#x27;s heads into a structured form I can explain to the high speed idiot.<p>The rest is working methodically, testing and documentation.<p>I work in the enterprise domain though so obviously YMMV if you are in machine learning, graphics programming etc.<p>Programming is a vast field with a huge number of sub-fields, find one you are good at and excel in that and let someone else worry about writing the compiler.
straightperson超过 6 年前
That&#x27;s akin to being a whiz at high school calculus and expecting to breeze through rigorous courses in real&#x2F;complex&#x2F;functional analyses. Possible if you&#x27;re a prodigy.<p>You already got the practical programming down. Now if you take a course titled &quot;intro to proofs&quot; or &quot;intro to discrete math&quot;, you&#x27;ll be well prepared to kick any CS class&#x27; ass.
wmf超过 6 年前
This isn&#x27;t too surprising. There&#x27;s a lot of CS stuff that is rarely used in practical programming so you can get pretty far without knowing it.
anyfoo超过 6 年前
&gt; but when it comes to me trying to solve these problems on my own, I don&#x27;t know where to start.<p>How do you expect to know where to start when you haven&#x27;t been taught anything yet? Your short resumé does not indicate that you have any background in Computer Science. That&#x27;s not bad, it&#x27;s just different.
deathanatos超过 6 年前
It&#x27;s certainly not required. I work with a guy whose degree isn&#x27;t in CS, and he&#x27;s a fine coder. He doesn&#x27;t know the theory, but he&#x27;s paid enough attention over the years that he knows what works, what the pro&#x2F;cons of the various data structures are — he understands the <i>code</i> that well enough to understand <i>why</i>. (And practically, that&#x27;s probably more beneficial.)<p>The CS backing can definitely help, though. We&#x27;ve had plenty of problems at my job that involve writing a parser for often very tiny languages. Having an understanding of CS theory here — the various language classes, what an FSM is and where it is useful, etc. — definitely helps. However, often the language at hand is simple enough that a handrolled parser that skillfully uses a few regular expressions to get the job done suffices just as well. Googling for a parser library and just using that suffices, too.<p>Or we have to build a somewhat custom file format, or parse a somewhat custom file format. I&#x27;ve interviewed a fair number of candidates that are not comfortable <i>reading or writing bytes to a file</i>. (And of course, this is not the only question we judge them on. But very few candidates in my experience only miss a single question.) They&#x27;ve worked on innumerable &quot;RESTful&quot; APIs, but seem to have no idea how HTTP works; they&#x27;ve done server side Linux&#x2F;unix&#x2F;etc. development all their life, but never worked on a command line.<p>I hold a CS degree, and what grinds my gears is when it is just dismissed outright. As an example, I&#x27;ve had a coworker who was trying to determine what order various interdependent tasks needed to be accomplished in; to anyone who has been through graph theory, this is simply a topological sort, and there&#x27;s a rather trivial algorithm that you arrive at in the course of studying graph theory. But at the suggestion of &quot;this problem is a topologicial sort; X is a decent library that implements it&quot;, I get told &quot;Now, I don&#x27;t want to go down some PhD CS thesis rabbit hole.&quot; Right.<p>&gt; <i>fianceè</i><p>&quot;fiancé&quot; for a man[1], fiancée for a woman[2]. (Pronounced the same.)<p>[1]: <a href="https:&#x2F;&#x2F;en.wiktionary.org&#x2F;wiki&#x2F;fiancé#English" rel="nofollow">https:&#x2F;&#x2F;en.wiktionary.org&#x2F;wiki&#x2F;fiancé#English</a><p>[2]: <a href="https:&#x2F;&#x2F;en.wiktionary.org&#x2F;wiki&#x2F;fiancée#English" rel="nofollow">https:&#x2F;&#x2F;en.wiktionary.org&#x2F;wiki&#x2F;fiancée#English</a>
评论 #18447975 未加载
sifoobar超过 6 年前
Learn a different language. I would recommend C, Forth or Lisp for stretching your brain.<p>Solve challenging problems; databases, interpreters, whatever floats your boat.<p>The only way out of the matrix is to keep pushing boundaries, repeating the same old with different frameworks is the blue pill.
zerohp超过 6 年前
I spent 10 years doing web development that eventually lead into a few years of systems and network programming before I went to college for a CS degree. Many CS problems were still challenging even with all of that experience.
mikekchar超过 6 年前
It&#x27;s an unfortunate fact of life: You don&#x27;t know what you don&#x27;t know ;-) Especially as a programmer, you have to have the attitude that there is no shame in not knowing, or not being able to do things. 30 years or so in this industry and there are <i>lots</i> of things I&#x27;m not good at. In fact, as I spend more time, I discover more and more things that I don&#x27;t know at all.<p>I&#x27;ve used this analogy before. When you first start, imagine that you are standing on the ground. There are lots and lots of things you can see. There is a lot to learn. Eventually, you get pretty good at everything you can see. But as you get better, hopefully you start travelling upwards. It broadens your horizons and you can see more.<p>Often this is an unsettling feeling. You think, &quot;I&#x27;ve worked so hard, and there is <i>still</i> more???&quot; Some people give up, &quot;I&#x27;m fine doing what I was doing. This other stuff isn&#x27;t necessary!&quot; However, this will lead to an early exit from this career. Being a programmer is about always learning and always expanding. Things change so fast and you have to keep up.<p>As you learn more, you keep travelling upwards, expanding your view even more. It&#x27;s amazing because when you thought there was a lot when you started, as you move upwards, the amount of new stuff you can see starts to accelerate. It&#x27;s easy to get overwhelmed. Don&#x27;t worry, though. Just pick stuff you are interested in. Don&#x27;t rush. You have plenty of time. However, don&#x27;t stop either.<p>Eventually, you will get so high that the earth is just a round ball. For a long time nothing will seem to change. You&#x27;ll probably think, &quot;I&#x27;ve learned everything! I&#x27;m amazing!&quot;. And then you will run across the moon. &quot;Woah... I know nothing&quot;. That&#x27;s what it&#x27;s like when you start to get more senior. You keep expanding your view, but things don&#x27;t seem to change, until you see some new island of stuff that you never really imagined before. Again, it&#x27;s easy to give up and to think, &quot;I&#x27;m a senior developer and I&#x27;m world class in X. What do I need with the moon?&quot; But that&#x27;s a trap. It&#x27;s the easiest way to ensure that you are seen as the strange old doofus in the corner using crappy, ancient techniques. Learning, learning, learning every day for the rest of your life. That&#x27;s what being a programmer is.<p>I hope that helps!
fallingfrog超过 6 年前
Hah, you must be the one who wrote the system I’m now rewriting.. :) just kidding. I went through the same thing- I thought I was a pretty coder too till they hit me with the towers of Hanoi problem in college. When I saw how simple the solution was to that problem, the scales fell from my eyes!
swayvil超过 6 年前
Me too. I even invented slightly famous stuff.<p>It&#x27;s like this:<p>There&#x27;s reality.<p>Then there&#x27;s a map of reality which is, for obvious reasons, pretty fucking far from reality.<p>Then there&#x27;s the map of the map, which is delusionoid-squared.<p>In this case you are dealing with the level2 map. Most of us don&#x27;t take it too seriously.
评论 #18457495 未加载
jimmcslim超过 6 年前
&quot;The Imposter&#x27;s Handbook&quot; might be something worth checking out...<p><a href="https:&#x2F;&#x2F;bigmachine.io&#x2F;products&#x2F;the-imposters-handbook&#x2F;" rel="nofollow">https:&#x2F;&#x2F;bigmachine.io&#x2F;products&#x2F;the-imposters-handbook&#x2F;</a>
agentultra超过 6 年前
I think I may have felt this once or twice in my career.<p>I&#x27;m 15 years in now. I study type theory and use formal mathematics to model software systems. I don&#x27;t have any degrees. In my day job I lead teams writing mostly Javascript to build web services and APIs for moving data around. I teach a small group Haskell once a week at lunch. I speak at conferences big and small. I still wonder at times if I know what I&#x27;m doing or whether I deserve to have opinions about anything or blah blah blah.<p>It doesn&#x27;t help having voices around you all the time that call your skills, experience, and knowledge into question. You have provided value to someone if you&#x27;re still a practicing software developer. You know how to work in a team, solve problems, and have developed a sense of taste for what problems are worth solving. You understand the tools you use and have an intuition for their strengths and weaknesses. Maybe you even have some experience getting other developers to work together on a large project. That&#x27;s useful stuff. You are a useful person.<p>Does learning theory help? I think so. Once I stuck with type theory I started to see structure and abstractions in code I couldn&#x27;t before. Learning how to formalize programs has allowed me to think about the correctness of complex systems in precise ways in order to discover &quot;bugs&quot; in my designs. These have also helped me find more ways to write simple, reliable code.
bane超过 6 年前
Most of professional software development is knowing what&#x27;s out there and connecting them together. It&#x27;s basically data plumbing. There&#x27;s nothing wrong with that, running water and sewage are two of the pillars of civilization!<p>The problem is that lots of companies have high opinions of themselves and even if most of their work is plumbing and plumbing supplies, insist on having a hydrographer and a physicist on staff in case they really really need an R&amp;D program that can produce a O(k) B-tree or some nonsense.
swat535超过 6 年前
I think you are seriously underestimating how valuable you are.<p>CS 101 data structures is all fun and great but the majority of businesses out there exactly require the skill set that you have.<p>Sure there are positions that demand deep knowledge on how algorithms but those are few..<p>You needn&#x27;t to look further than Google itself.. they have many engineers that can apparently solve BigO problems, yet they fail to deliver a simple email client that works..<p>You deliver business value to companies, help them grow, create jobs and make profit.<p>This is something you should be proud of
Kaotique超过 6 年前
My spouse started a bootcamp last year and I&#x27;ve helped her with many algorithm assignments. Even though I have a CS bachelor degree I still struggled with a lot of the algorithms exercises out there. It requires practice and there are actually a lot of subtleties that you don&#x27;t experience while working on software projects.<p>A lot has to to with mathematics as well. You can work on projects with hundreds of thousands of dollars and face zero mathematical problems.<p>I spend a lot of time, dozens and dozens of hours, helping her with these algorithms on paper, whiteboard and writing them in code. I also struggled along with her through online algorithm and coding interview platforms like Hackerrank. Solving these algorithm is difficult and often ridiculously theoretical and out of touch with the daily routine of a software&#x2F;web developer.<p>My spouse was very worried about not being able to solve these problems. She was scared that she will have to solve these things during the internship, but of course there are no mathematical algorithms to solve when you are working as a frontend developer.<p>I think the trend of mathematics during development courses and theoretical algorithm exercises during interviews are not doing us any good. Most companies are not Google and you can be a very valuable developer for 99% of the companies out there without being a whiteboard algorithm expert.
评论 #18449843 未加载
moab超过 6 年前
The point of studying data structures and algorithms that you may not use on a day-to-day basis is that they make you learn to think abstractly about problem solving. That is the whole point of getting an undergraduate degree in CS. I&#x27;m sorry that you have trouble with this stuff OP, it would be a good idea to do the cs50 course with your wife until you&#x27;re comfortable with this stuff. I&#x27;m sure it will pay dividends in your future.
jchw超过 6 年前
I don&#x27;t think it&#x27;s really just you. Most academia seems to have a hyper-focus on algorithms and data structures. I don&#x27;t know what kind of jobs they&#x27;re expecting people to apply for - I&#x27;m not writing an implementation of the C++ STL, and I&#x27;d argue most of the time it&#x27;s a mistake to write your own data structures with such a great ecosystem of existing implementations.<p>Don&#x27;t get me wrong. It&#x27;s great to know how binary search works, or to understand algorithmic complexity - those things come in handy. But you probably don&#x27;t need to know how to find the largest palindrome in a string and you almost definitely shouldn&#x27;t be writing your own hashmaps in real world code. Most people would benefit a lot more from domain specific knowledge. How do system calls work? What&#x27;s a load balancer? etc, etc. Even being domain specific, a lot of the ideas can be applied outside of the context it was created in, and so knowing these things is incredibly useful.<p>Thankfully, most of the interviews I&#x27;ve had have focused a lot more on real-world situations and topics. Maybe academia will some day catch up and at least balance the focus out a bit.
taternuts超过 6 年前
I would just start toying around with these problems, there&#x27;s lots of sites out there that aggregate them for you (personally I like <a href="https:&#x2F;&#x2F;reddit.com&#x2F;r&#x2F;dailyprogrammer" rel="nofollow">https:&#x2F;&#x2F;reddit.com&#x2F;r&#x2F;dailyprogrammer</a>). Solving these kinds of problems really are different from your usual day to day on the job coding activities. I&#x27;m by no means the best at solving these things, but the more I do it the easier they are going forward. They are useful mostly just for fun or for preparing for interviews where people might do this crap to you. There&#x27;s actually a yearly code challenge called Advent of Code (<a href="https:&#x2F;&#x2F;adventofcode.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;adventofcode.com&#x2F;</a>) that is starting in December that you can try (though they can be kind of tough). You basically just have to keep doing them and do harder and harder ones and it gets easier, your bag of tricks starts to grow and you realize &quot;Oh, this problem is pretty similar to the problem I did last month, I&#x27;ll start out with the same approach&quot;
Insanity超过 6 年前
Seems like you discovered a gap in your knowledge, congratulations, you&#x27;re one of the lucky ten thousand [0]!<p>It might be a good idea to pick up a book about algorithms (others are posted here) or follow an online course yourself to learn about these things. They might give you some insight into problems which you might encounter during your job.<p>On the other hand, solving algorithmic problems is not equal to &#x27;software engineering&#x27;. You have to think about more than solving a (theoretical) problem in isolation and you&#x27;ve build up skills on that area of the past few years. From source code management to soft skills, these are things a compsci degree won&#x27;t necessarily teach you.<p>From personal experience though, I find that my background does help me (at times) with solving problems at work. But apart from the utility of learning compsci, consider that it might be fun to learn so and just give it a go.<p>It doesn&#x27;t make you less of a web developer by not knowing it though, so don&#x27;t be too hung up on it. It&#x27;s just different, as others have pointed out.<p>[0]: <a href="https:&#x2F;&#x2F;www.xkcd.com&#x2F;1053&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.xkcd.com&#x2F;1053&#x2F;</a>
austincheney超过 6 年前
&gt; It makes me question how I was hired in the first place.<p>It is called imposter syndrome. It is very real and very common. As a JavaScript developer I encounter this among my peers all the damn time.<p>First, consider what it takes to be a professional software developer. The requirement is to pass a one time drug test and successfully answer questions in a 30-90 minute interview. Done.<p>Consider, conversely, all other white collar professions. They have licensing, certifications, educational requirements, and legal compliance. There is greater oversight and compliance to become a truck driver than a software developer.<p>The closest uniform indication of competence <i>(if you can call it that)</i> most software developers experience is demonstrating experience with a tool or framework. To me this says you more than new and probably better than negligently incompetent. It doesn&#x27;t tell me that you are an excellent specimen of solving original problems.<p>Secondly, I suspect you go to work, achieve your assigned tasks, and then forget about programming until the next day. This is problematic because in most cases there isn&#x27;t much expected of software developers in the corporate world. Most of us are glorified and over-paid button pushers. Achieving conformance to nearly thoughtless tasks that could be better performed by software is not an indication of professional growth. There are many times I have encountered QAs who seemed far more brilliant at problem solving than the developers they were checking.<p>This is one reason why more ambitious software developers contribute to open source. Their day jobs are boring with no growth potential, but their software hobby is extremely challenging and solves real problems.
评论 #18449798 未加载
WoodenChair超过 6 年前
I&#x27;ve been writing a book series that&#x27;s partially targeted for programmers like you: those who know how to code but don&#x27;t know CS. It&#x27;s called &quot;Classic Computer Science Problems.&quot; You may want to check it out:<p><a href="https:&#x2F;&#x2F;classicproblems.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;classicproblems.com&#x2F;</a><p>If you already know Python or Swift, it may be a decent next step for you after CS 50.
anothergoogler超过 6 年前
We&#x27;re gonna need some examples here. One person&#x27;s fizz-buzz is another&#x27;s constant-time radix tree with one register and vice versa.
评论 #18447290 未加载
sytelus超过 6 年前
(1) Programming and Computer Science are not the same thing.<p>(2) Doing similar things over and over may not transfer experience to other things.
bcheung超过 6 年前
Depends on your area of focus. Schools tend to be much more focused on the academic &#x2F; math than practical application development.<p>CS isn&#x27;t as critical until you have to worry about efficiency, scale, or creating radically novel solutions. At which people you naturally will pick up more CS as you try to solve these problems.<p>Building something and building something that can scale are almost 2 completely different tasks. Asking questions like how much disk space will this take? How long will it take to perform a lookup? How do these factors change as the data grow?<p>Another area where CS becomes more important is when you want to come up with new abstractions.<p>To do what others have already done you don&#x27;t need much CS knowledge because others have created libraries for you and have already established the design patterns. But CS becomes more important when you want to invent new paradigms and algorithms.
damihl超过 6 年前
As some others have said: programming and CS are only somewhat related.<p>I like to compare it to some kind of manual work.<p>Programming is the tool. There&#x27;s a hammer, or a screwdriver, or a saw. A good manual worker is able to use most of them. She may not have experience with all of them, but with enough experience she will learn to use new tools faster. The manual worker usually doesn&#x27;t know much about creating those tools.<p>CS is like creating tools. You know what properties the tools should have, what materials they should use, etc. Most engineers are probably not as good in actually using them as the above mentioned worker.<p>So, being a good programmer does not mean being good at CS, and vice versa. What I&#x27;m saying is that it&#x27;s totally fine. You&#x27;ll learn (using the comparison again) what&#x27;s the best material for a given tool for your current project as soon as you need it.
natalyarostova超过 6 年前
I work as a data scientist, but sometimes when I have the time to study stats I get stuck on problems. I also write software on our team, and have never taken a CS course or studied algorithms formally.<p>It used to really bother me, and I still am motivated and invest time and energy into building fundamentals, but I also realize that for some reason, despite this, I&#x27;m effective at my job and people respect my work. Meanwhile, people who took all the most advanced PhD and CS courses often are unable to get things done.<p>As I&#x27;ve grown a little older I try to spend less time worrying about these things, and realize more so every day how large the disconnect is between solving abstract puzzles, and working on a team to get things done.<p>Although I think the people that have both in spades are something else, and I have a deep admiration for them.
hackermailman超过 6 年前
The obvious answer is, do the class with your fiancee, and then you&#x27;ll learn how to solve those problems. Every intro to CS class has advice how to do this <a href="https:&#x2F;&#x2F;www.cs.cmu.edu&#x2F;~112&#x2F;notes&#x2F;notes-algorithmic-thinking.html" rel="nofollow">https:&#x2F;&#x2F;www.cs.cmu.edu&#x2F;~112&#x2F;notes&#x2F;notes-algorithmic-thinking...</a><p>Break down the problem into smaller ones you think you can solve and start from there, the more practice at this the better you get at solving future problems. Maybe you even turn out to be really good at this and take up amateur theoretical CS in your spare time.
smckk超过 6 年前
I&#x27;d recommend a look at this book <a href="http:&#x2F;&#x2F;blough.ece.gatech.edu&#x2F;3020&#x2F;focs.pdf" rel="nofollow">http:&#x2F;&#x2F;blough.ece.gatech.edu&#x2F;3020&#x2F;focs.pdf</a> .It will show you what you&#x27;ve been missing in the preface and the first chapter. An interesting point by the authors was that this was the way they felt CS should be taught, with the fundamentals and all presented side-by-side with the code. But when you think about it(from mathematics for example) we need accountants who use mathematics effectively without having to understanding Fermat&#x27;s last theorem...
watwut超过 6 年前
&gt; I&#x27;ve worked with a few &quot;complicated&quot; (they were to me) projects in the past, but now I&#x27;m being tasked with guiding my fianceè with this course.<p>You should not solve those problems for her anyway. Help her with tools and such where necessary, but let her figure it out as much as possible. Don&#x27;t do homework for her, it beats the purpose.<p>If the course is any good, the answers to questions are going to be easier when you attend lectures etc. If you cant see them, maybe let her explain you what was said there. Explaining someone helps to understand, so it alone would help her <i>a lot</i> to learn and understand.
sheeshkebab超过 6 年前
I felt kind of like that first few years of my programming experience - I could hack all kinds of things on my own (in assembler, c, vb), but then someone asked me a basic datastructure or algo problem and I would blank out. Or asked me some stupid OOP problem... granted cs education back in the day wasn’t quite as formal but still.<p>Anyways, I’d say don’t get discouraged, learn new technologies, get out of your VB and .net and Microsoft cocoon and try new things. Maybe take a cs algo and distributed computing course and read up a book or two.
hnruss超过 6 年前
I also worked as a computer programmer for a few years without having a CS degree. I decided to work part time while pursuing a Bachelors in Computer Information Systems (less math than CS, more business, most of the same CS courses). It was totally worth it. Not only did I learn about some really useful&#x2F;interesting stuff (search+sort algorithms, data structures, etc), my pay has significantly increased. I admit that it wasn’t always easy or fun, but it was highly rewarding.
xzcvczx超过 6 年前
i think a lot of the problems you are expected to solve in a CS course are things that are already provided or have workable alternatives in higher level languages. VB and javascript already provide for many different data structures where you might need to know them and be aware of them in the lower-level languages<p>Also due to the data structures provided in higher level languages you are often less aware of how long something will take to run which i find is a big part of many CS courses
gdubs超过 6 年前
A lot of it is practice. There’s an old saying about calculus - don’t worry, once you’ve done a thousand integrals, you’ll really start getting the hang of it.<p>Taking one of the popular algorithm and data structures book and working through it, and actually doing the exercises, <i>will</i> improve your skills; specially, the ability to identify the shape of a particular problem.<p>Pure CS is very beautiful IMO, and rewarding to dive into.
simonhamp超过 6 年前
You’re fine. You don’t need it. I’m a Senior Dev and I don’t have a degree. I’ve been a professional programmer for almost 15 years. Not once have I needed to write an algorithm from scratch.<p>Would I be a better developer if I’d learned that stuff?<p>Arguably, no. I’d probably be cock-sure and a bit of a dick. I know there’s a lot I don’t know and hopefully that keeps me humble. I’m always learning and I love it!
balfirevic超过 6 年前
&gt; Some of the problems which she is expected to solve are pretty simple problems, but I just can&#x27;t seem to get the hang of any of them on my own.<p>So what are some examples of those problems? No one can really tell you if this is something unusual or not without having an idea of what the problems are. And CS courses and algorithms vary from pretty simple to actually really hard.
评论 #18446421 未加载
boznz超过 6 年前
Programmer for 40 years and CS terms are a foreign language to me. My daughter did a CS module at uni but when she phoned me for help I diddnt even understand what she was talking about until I googled the terms and realised I knew them all but without fancy names.<p>I am pretty sure in 30 years all you current experts in CS will l be scratching your heads with the same.
nprateem超过 6 年前
Who cares? I can&#x27;t remember the trigonometry I studied in school even though I can still work a calculator.<p>It&#x27;s useful to understand the basics so you develop an intuition, but don&#x27;t stress if you can&#x27;t actually solve the problems. You almost certainly won&#x27;t need to use them in your career anyway unless you work in some incredibly niche areas.
nikkwong超过 6 年前
I&#x27;m surprised no one is suggesting a basic revisiting of first principles. How optimized is your nutrition? Are you exercising frequently, and getting plenty of regularly scheduled, high quality sleep? Anecdotally, I know that when I stop prioritizing my health—my working memory goes, and it&#x27;s all downhill from there.
akerro超过 6 年前
Don&#x27;t worry, I&#x27;ve been building things using Lego blocks for 20 years and I can&#x27;t build a floating bridge.
metaphor超过 6 年前
You may find this thread from 5 years ago[1] meaningful.<p>As the article emphasizes: <i>The labels themselves aren’t as important as the degree of awareness and understanding that each new “level” brings.</i><p>[1] <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=5936652" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=5936652</a>
hippich超过 6 年前
Now you learned the practice, consider taking CS degree at uopeople.edu to clear &quot;Must have Bachelor degree in CS&quot; and just to learn stuff beyond the day to day stuff. Of course, it really bothers you, it is totally fine just keep going and solve real-world problems (not all of them require CS knowledge)
terrycody超过 6 年前
I recommend everyone read this article, as this is the best article to introduce how to learn CS in the whole human history. No kidding, thank me later.<p><a href="https:&#x2F;&#x2F;www.afternerd.com&#x2F;blog&#x2F;learn-computer-science" rel="nofollow">https:&#x2F;&#x2F;www.afternerd.com&#x2F;blog&#x2F;learn-computer-science</a>
rajacombinator超过 6 年前
Sorry, but perhaps you should take some time to learn the fundamentals of your field? Incompetent devs like you are the reason the rest of us have to jump through absurd whiteboard hoops. Anyone who can legitimately call themselves a programmer should not have trouble with an intro CS class.
d--b超过 6 年前
CS is to professional programming what fluid dynamics are to car mechanics. You can be a great car mechanics and never know about the fluid dynamics equation at all. You do need some basic knowledge (pressure, temperature, etc), but then it’s a different discipline altogether...
meuk超过 6 年前
Well, I can solve most CS problems easily but have a hard time functioning as a developer.<p>Most CS questions are a bunch of concepts that you rarely use in practice. Most development work is implementing your ideas in a way that works with other peoples code and the framework thats used.
liveoneggs超过 6 年前
there are a few books you can get: <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;gp&#x2F;product&#x2F;1565923987&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;gp&#x2F;product&#x2F;1565923987&#x2F;</a> <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;dp&#x2F;0262033844&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;dp&#x2F;0262033844&#x2F;</a><p>A lot of &quot;classic&quot; problems are so embedded into CS professors that they don&#x27;t even see them as problems anymore (lazy caterer, pick&#x27;s theorem, etc) so if you didn&#x27;t study these classics explicitly in school you have to discover them on your own.
sigi45超过 6 年前
You now see that you can&#x27;t do something and it is very close to what you do.<p>Act on it.<p>But if you don&#x27;t, at least dont wonder why you are doing what you are doing and perhaps not something else. Or why you might not get into some other companies or or or.
cglee超过 6 年前
This might help: <a href="https:&#x2F;&#x2F;medium.com&#x2F;launch-school&#x2F;solving-coding-problems-with-pedac-29141331f93f" rel="nofollow">https:&#x2F;&#x2F;medium.com&#x2F;launch-school&#x2F;solving-coding-problems-wit...</a>
teekert超过 6 年前
If you have been successfully solving problems for those last 5-6 years, your only current problem is your insecurity.<p>Can your fiancee do your job? Or is your knowledge just divergent?
oldboyFX超过 6 年前
CS algorithm stuff you&#x27;re talking about has little to do with web development in practical terms. It&#x27;s mostly mathematics.<p>You&#x27;re comparing two very different fields.
joelthelion超过 6 年前
There&#x27;s nothing wrong with that.<p>That said, you should consider learning basic CS. It will help you do a better job, and also make your job more enjoyable. And it&#x27;s fun!
irrg超过 6 年前
Completely not to the point, but this is driving me nuts: put the accent on the right letter and in the right direction—it&#x27;s “fiancée”.
mrcactu5超过 6 年前
at least on StackOverflow &quot;computer science&quot; and &quot;computer programming&quot; get different pages:<p><a href="https:&#x2F;&#x2F;cs.stackexchange.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;cs.stackexchange.com&#x2F;</a><p><a href="https:&#x2F;&#x2F;softwareengineering.stackexchange.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;softwareengineering.stackexchange.com&#x2F;</a>
jyriand超过 6 年前
You can try TDD-ing the problem. Although TDD is usually not the right approach for coming up with algorithms or solving coding challenges, it can guide your thinking a bit. Write a test for most simple input, solve the problem for this input. Iterate and write tests for longer inputs.<p>I will repeat that TDD will not give you the most elegant answer, but you will at least have an basic implementation. TDD just gives you one of protocols that you can use to solve problems.
评论 #18449196 未加载
dekhn超过 6 年前
sure, for the first 20 years that I was a programmer, I really couldn&#x27;t wrap my head around algorithms at all. It took concerted effort (I&#x27;m a slow learner) and repeatedly reading books, talking to people, writing code and having it reviewed before I felt comfortable with hash tables, etc.
voycey超过 6 年前
My brain no longer works that way either, I started getting sick of the same standard code tests asked at interviews while I was a developer (Please write a palindrome detector, please write a function to reverse these sets of numbers).<p>My point is - computer science teaches you to understand the core of what computing is about, but don&#x27;t for a second think that much of it relates to real world experience.
flavious超过 6 年前
Code monkey thinks he can help beginner become a researcher? Not so fast, tiger.
orcs超过 6 年前
I&#x27;m 2&#x2F;3s of a way through a CS degree and I cant do them either.
sova超过 6 年前
Cracking the Coding interview by Gayle
est超过 6 年前
programmer is like driving a car.<p>CS problems is like how to design a proper car and how a car really works.
ratsimihah超过 6 年前
At least you know it :)
throwaway487548超过 6 年前
A <i>decent</i> CS degree, like that of MIT matters a lot.<p>I could give an example. Once upon a time a stumbled upon this classic article (which I re-read sometimes to feel better):<p><a href="https:&#x2F;&#x2F;eev.ee&#x2F;blog&#x2F;2012&#x2F;04&#x2F;09&#x2F;php-a-fractal-of-bad-design&#x2F;" rel="nofollow">https:&#x2F;&#x2F;eev.ee&#x2F;blog&#x2F;2012&#x2F;04&#x2F;09&#x2F;php-a-fractal-of-bad-design&#x2F;</a><p>When I read this for the first time I have been literally shocked by sudden realization that I have coded some stuff in PHP but never knew it is <i>such a crap</i>.<p>It also taught me that I literally know nothing, that I am merely a stupid coder, not a programmer, so I undertook a serious study of CS fundamentals to be able to <i>write</i> an article like this in the future.<p>Now, after a few years of studying, I know a half-a-dozen of languages and I know crap when I see it. Ironically, what is going on with the Node ecosystem puts PHP3 into a shame. But it is natural, because most of JS coders have no CS background. People with CS background <i>sometimes</i> produce gems like Go or Erlang, while &quot;mere coders&quot; <i>always</i> produce things like PHP, J2EE and npm.<p>There is only one thing that I regret - it could save me so much time by not reading bullshit on the web if only I could find the right books (like Programming Erlang, Haskell School of Expression or On Lisp) and right courses (like Dan Grossman&#x27;s and 6.001 2004 - the last course in Scheme) first. There is a huge, qualitative difference between a well-written gems like these and fucking crap some narcissistic idiots post in their blogs.<p>I have found the right books and the right courses by literally swimming thorough the sewers for years. A decent school will teach you the right principles, instead of irrelevant details, in ML or Scheme right from the beginning.