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

科技回声

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

GitHubTwitter

首页

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

资源链接

HackerNews API原版 HackerNewsNext.js

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

Ask HN: Programming 101 online course recommendations?

58 点作者 brittpart_超过 4 年前
I&#x27;m non-tech but am developing an app.<p>Right now, there is a language barrier between the developers and myself because I don&#x27;t know the jargon. I say something and they think its something else, I try explaining how it should work, they fix it and it&#x27;s not fixed.<p>It&#x27;s inefficient and I feel ignorant for not being educated&#x2F;able to efficient communicate. Can you make any recommendations of courses or where I should start?<p>I think starting with computer science (anatomy of a computer, history of computing, etc) and then moving into Java is probably the way to go.

23 条评论

lolinder超过 4 年前
If you&#x27;d like to be able to understand the inner workings of your app, that&#x27;s great, and there are a lot of good suggestions here for how to do that.<p>However, from your description it sounds like you&#x27;re struggling to communicate about <i></i>what<i></i> the programmers should be building, rather than <i></i>how<i></i> it&#x27;s being built. If that&#x27;s the case, learning to program will likely not fix your problem, and will instead waste time that you could have spent on higher-leverage activities. I&#x27;d recommend the following:<p>1) Focus on learning <i>only</i> those technical details that are relevant to your app. For Thea (from your profile), you would want to spend some time understanding encryption, multi-factor auth, the basics of cloud hosting and storage (their respective Wikipedia pages would be a good starting point). You don&#x27;t need to know enough to build it, but you should be able to talk intelligently about each of these aspects of the system.<p>2) Don&#x27;t expect to successfully convey your design requirements in a single conversation turn. It doesn&#x27;t matter how good of a communicator you are, if there isn&#x27;t back-and-forth between you and the developers, they did not understand it. If they&#x27;re not asking questions, have them diagram what they understood as they explain it back to you.<p>3) Stop your developers if they start using jargon and ask them to explain it. Just as you expect them to ask questions, they should expect you to ask questions. This way, you&#x27;ll learn only the jargon that is relevant to your business requirements, rather than spending time learning stuff that will never come up in the context of your app.
评论 #25249675 未加载
jeremymcanally超过 4 年前
I may be presuming too much, but it sounds like perhaps you less need to learn to program and more need to learn to communicate with one another around technical topics. It&#x27;s likely that (again, presuming here) if this is your first time doing this sort of thing, you&#x27;re not able to provide precise (even if non-technical) feedback to your developers and likewise they may not be very good at taking non-technical information and translating that into actionable technical output (i.e., code and bugfixes).<p>Maybe try looking at the curriculum for product management courses first? I think they might give you quicker, more effective benefit than trying to build up knowledge of computers (especially from such a fundamental level). You&#x27;ll spend a lot of time learning things that, while beneficial eventually probably, won&#x27;t help you right now.
评论 #25250276 未加载
jcowdy超过 4 年前
If you’re looking more to be able to intelligently communicate rather than program independently, I’d recommend the Harvard CS50 for Business Professionals.<p><a href="https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;cs50s-computer-science-for-business-professionals" rel="nofollow">https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;cs50s-computer-science-for-busine...</a>
评论 #25250907 未加载
评论 #25250135 未加载
analog31超过 4 年前
In addition to picking up some of the basics, I suggest that at least part of the problem lies with the developers. Part of engineering is understanding the needs of non-technical people and translating those needs into actionable technical requirements.<p>This isn&#x27;t necessarily in the skill set of <i>every</i> engineer, but in a well rounded team, there should be maybe a couple of engineers who are recognized for being able to do this. From time to time, the question has arisen on HN, as to what a &quot;senior&quot; engineer consists of, and the ability to interface with a larger community (e.g., managers, marketeers, users, etc.) is often mentioned.<p>You might not be able to solve that problem right away, but it could figure into your future hiring practices.
评论 #25250130 未加载
new_guy超过 4 年前
Have you tried explaining what you want in a completely non-technical way?<p>A mistake&#x2F;mis-step clients commonly make is trying to use the correct terminology&#x2F;jargon which doesn&#x27;t mean what they think it means, but the developer(s) think you know what you&#x27;re on about so take you at face value.<p>Something common I&#x27;ve found is clients insisting on me using the latest buzzword technology even when it&#x27;s not what they need.<p>And I&#x27;m not saying that&#x27;s what you&#x27;re doing, but trust your developers to do what you&#x27;ve hired them to do.<p>It&#x27;s not a sign of being ignorant, everyone has different strengths, but you don&#x27;t need to learn the entire trade just to communicate effectively.
beefield超过 4 年前
One hint from my experience trying to explain technical things to other people. If they reply something in the lines of &quot;Yes, I understand&quot; that more often than not[1] translates into either &quot;I have no clue what you are talking about&quot; or &quot;I misunderstood&quot;. Ask them to describe in their own words what you asked them to do. Be also prepared that their answer may make you realize that what you think you want makes no sense. You can&#x27;t ask people draw red lines with green ink.[2]<p>[1] Of course, there are exceptions. but you would not be asking here if you worked with them. And you do quickly recognize the people that just nod and get sh*t done. They are rare, however.<p>[2] <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=BKorP55Aqvg" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=BKorP55Aqvg</a>
aerovistae超过 4 年前
Honestly props to you for choosing self-improvement as the route forward instead of railing at the developers for not understanding you.<p>I would recommend picking a programming language and doing the basic tutorials for it to start, all languages have them.<p>If you hit upon something you feel the tutorial isn&#x27;t explaining well, open a new tab, google that specific thing, e.g. &quot;what is a function&quot; &#x2F; &quot;how does a function work&quot; &#x2F; &quot;what is a function in python&quot; &#x2F; &quot;how does a function work in python&quot; until you get the results you want, and read different ones til you find an explanation that makes sense to you. If the tutorial you chose is consistently unclear to you, pick a different tutorial. Use a variety of resources.<p>Which language kind of depends what you&#x27;re working on. Python is the lowest barrier-to-entry, probably, but for all I know you&#x27;re working on an iOS app and maybe Swift would be a better starting point since it&#x27;s more relevant to what you&#x27;re doing. Avoid Perl, probably.<p>Once you&#x27;ve got a handle on the general basics of a programming language, solve some basic problems. Use google to find a list of basic 101 programming challenges that suits you. Solve them.<p>Once you&#x27;ve got a handle on basic programming, try building a simple app of whatever nature you like. The classic example is a TODO reminder&#x2F;checklist app, but you can do whatever interests you. The goal should be to pick something that you definitely <i>don&#x27;t</i> know how to build, thus forcing yourself to learn how. It will involve a lot of googling but you&#x27;ll find yourself learning rapidly. You&#x27;ll feel it.<p>Lastly, StackOverflow is your friend.
评论 #25250357 未加载
评论 #25247984 未加载
datene超过 4 年前
<a href="https:&#x2F;&#x2F;learnprogramming.online&#x2F;" rel="nofollow">https:&#x2F;&#x2F;learnprogramming.online&#x2F;</a> is a great place to start if you&#x27;re looking to learn about web development
jamesmehaffey超过 4 年前
While learning a language or gaining some technical understanding is probably never a bad thing, it sounds like you need to work out a better way to communicate your ideas. This would be equally useful when discussing your project with other non-developers. Try putting together a narrative story board or moving Star Wars figures around on a table... whatever works for you, really. it might help to understand the basic tools in a developer’s kit (objects, functions, etc.), but leave the programming to them. They should be able to tell you where there are problems and where you may need to compromise or deviate from your plan. A film director does not necessarily know everything about acting, lighting, cameras or whatever but is still able to explain how the scene should look in the end. just remember to be patient.
评论 #25250149 未加载
kingkongjaffa超过 4 年前
CS50x has been perfect for me to &#x27;start from scratch&#x27;. Not sure why you would prefer Java over others, depending on the platform you are developing for there&#x27;s probably a &#x27;nicer&#x27; solution.
评论 #25250178 未加载
bgorman超过 4 年前
Look into Behavior Driven Development, this is a methodology designed explicitly to prevent the problem you are experiencing.<p>If you really want to learn programming, I recommend <a href="https:&#x2F;&#x2F;eloquentjavascript.net&#x2F;" rel="nofollow">https:&#x2F;&#x2F;eloquentjavascript.net&#x2F;</a> , this book is targeted at beginners but has enough rigor to give you a good base. JavaScript is also lingua-franca of web development. It is also a much simpler language than JavaScript with a smaller learning curve.
评论 #25250229 未加载
Lesabotsy超过 4 年前
This is what I&#x27;m doing&#x2F;planning to do right now, might help:<p>Java Programming I-II (<a href="https:&#x2F;&#x2F;java-programming.mooc.fi&#x2F;" rel="nofollow">https:&#x2F;&#x2F;java-programming.mooc.fi&#x2F;</a>),<p>Data Structures (<a href="https:&#x2F;&#x2F;fa20.datastructur.es&#x2F;" rel="nofollow">https:&#x2F;&#x2F;fa20.datastructur.es&#x2F;</a>),<p>Software Construction (<a href="http:&#x2F;&#x2F;web.mit.edu&#x2F;6.031&#x2F;www&#x2F;fa20&#x2F;" rel="nofollow">http:&#x2F;&#x2F;web.mit.edu&#x2F;6.031&#x2F;www&#x2F;fa20&#x2F;</a>)
评论 #25250181 未加载
michaelpb超过 4 年前
First, some broad advice: I&#x27;d say start with tutorials in HTML and Python. Mike Dane has a lot of free video tutorials that some of my students have spoken highly of: <a href="https:&#x2F;&#x2F;www.mikedane.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.mikedane.com&#x2F;</a><p>Remember that with coding you learn by doing, so resist the urge to &quot;just watch videos&quot; or even &quot;watch videos and take notes&quot;. I recommend to my students to always have a side-project of some type. Pick something that will motivate you, such a game, or an application that you find interesting. Have <i>that</i> motivate you to learn the next thing, instead of just picking new topics and reading them one at a time. When we have limited free time as adults, learning new skills is all about maintaining that motivation and direction, so when self-teaching project work is probably the very best motivation and guide in lieu of an instructor.<p><i>Self-plug:</i> I teach coding courses for beginners. My program (Kickstart Coding) combines video-based graded coursework with weekly live sessions and 1:1 tutoring, for a $299&#x2F;month subscription. Learn more here: <a href="https:&#x2F;&#x2F;kickstartcoding.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;kickstartcoding.com&#x2F;</a>
koide超过 4 年前
I wouldn&#x27;t much care about history and anatomy at first, you can always get back to that later.<p>You can start here <a href="https:&#x2F;&#x2F;www.khanacademy.org&#x2F;computing&#x2F;computer-programming&#x2F;programming&#x2F;intro-to-programming&#x2F;v&#x2F;programming-intro" rel="nofollow">https:&#x2F;&#x2F;www.khanacademy.org&#x2F;computing&#x2F;computer-programming&#x2F;p...</a>
iforgotmypass超过 4 年前
Or read about agile user story mapping, user personas, user stories and write your requirements that way. If that is not enough - get a UI&#x2F;UX designer who&#x27;ll translate your requirements into interactive prototypes which will somewhat serve as requirements for the developers.
评论 #25250194 未加载
strikingloo超过 4 年前
Hi! If you want to learn programming, I&#x27;d recommend FreeCodeCamp, to learn the basics of Web Development. I found their course pretty great many years ago when I was getting started.<p>I hope you find it useful! Let me know if there&#x27;s any other help I can give you.
评论 #25250187 未加载
costac超过 4 年前
In addition to what most other people said here about how to improve communication in a team, I&#x27;d say that if you do want to learn some programming and how to think like a computer scientist, you can&#x27;t go wrong with the MIT&#x27;s Computational Thinking using Python series on edX.<p><a href="https:&#x2F;&#x2F;courses.edx.org&#x2F;dashboard&#x2F;programs&#x2F;a4453798-ffc2-4f5a-b983-64a228e3a0fd&#x2F;" rel="nofollow">https:&#x2F;&#x2F;courses.edx.org&#x2F;dashboard&#x2F;programs&#x2F;a4453798-ffc2-4f5...</a><p>I&#x27;m from a non-tech background and these two classes completely changed my world.
评论 #25255860 未加载
machinelabo超过 4 年前
Someone should build an app 5 different ways and discuss the pros and cons of each architecture&#x2F;structure of the app. Haven&#x27;t seen a course like that. There is plenty of stuff on Architecture, but not a single course on showing what <i>bad</i> architecture looks like.
评论 #25250280 未加载
freetonik超过 4 年前
My partner and I have been working on a few courses for beginners with the focus on explaining the general ideas of programming and computing in general: <a href="https:&#x2F;&#x2F;codexpanse.com&#x2F;courses" rel="nofollow">https:&#x2F;&#x2F;codexpanse.com&#x2F;courses</a>
edoceo超过 4 年前
Not a course but a tool&#x2F;format I use for specs <a href="https:&#x2F;&#x2F;cucumber.io&#x2F;docs&#x2F;gherkin&#x2F;reference&#x2F;" rel="nofollow">https:&#x2F;&#x2F;cucumber.io&#x2F;docs&#x2F;gherkin&#x2F;reference&#x2F;</a>
gameswithgo超过 4 年前
gameswithgo.org is a fun way to learn, it is a free video series I did, using the Go programming language, with game based projects. But the content is serious computer science fundamentals.
评论 #25250197 未加载
rchandna超过 4 年前
I highly recommend Codecademy
bmitc超过 4 年前
I don&#x27;t think there&#x27;s an easy answer to this question. Software engineers still don&#x27;t know how to exactly or even efficiently communicate with each other. It&#x27;s still an evolving field and process. In general, it is helpful to understand software development as a sub-field of systems theory and design, so any book that discusses systems should help one better understand software development.<p>In general, I do also echo some of the other comments. If you are helping to design the app, you shouldn&#x27;t necessarily need to understand the implementation details. In my experience, clients, whether they be external or internal or colleagues, getting too involved into what they think the implementation should be is usually a disaster. It puts pressure on the system to conform to how they think it should be, which is usually not necessarily how it should be, and it basically adds unnecessary constraints. The real constraints should be what the software should do and specifications on that, including how the software is intended to be maintained and extended.<p>Some thoughts on some specific courses and books that I think would be helpful to better understand the goals of software development and design and ways to think about it all:<p><i>Programming for Everyone - An Introduction to Visual Programming Languages</i>: <a href="https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;programming-for-everyone-an-introduction-to-visual" rel="nofollow">https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;programming-for-everyone-an-intro...</a><p>I think this course should be taken by managers, designers, and even software engineers. The primary result is that you&#x27;ll come out of it knowing state charts, which are an extension to state machines, and this will be very useful for <i>thinking</i> about software and <i>organizing</i> what the software should do. Handling state is one of the primary problems in software, and you might notice that all of the various paradigms (OOP, functional, imperative, actors, etc.) in computer programming relate to the various ways people think about handling state in a computing system.<p><i>How to Code: Simple Data and Complex Data</i>:<p><a href="https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;how-to-code-simple-data" rel="nofollow">https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;how-to-code-simple-data</a><p><a href="https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;how-to-code-complex-data" rel="nofollow">https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;how-to-code-complex-data</a><p><a href="https:&#x2F;&#x2F;www.edx.org&#x2F;micromasters&#x2F;ubcx-software-development" rel="nofollow">https:&#x2F;&#x2F;www.edx.org&#x2F;micromasters&#x2F;ubcx-software-development</a><p>These courses are taught by a designer of the Common Lisp language and based upon the excellent book <i>How to Design Programs</i>. It is essentially a language agnostic course that uses Racket to build up design paradigms that teaches you how to sort out your domain problem and designs into data and functions that operate on that data. The courses are part of a MicroMasters program, so if you really want to get into Java, that is taught in the follow-on courses.<p>Based upon your last comment, here are some book suggestions on how computers work:<p><i>Code: The Hidden Language of Computer Hardware and Software</i>: <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Code-Language-Computer-Hardware-Software&#x2F;dp&#x2F;0735611319&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Code-Language-Computer-Hardware-Softw...</a><p><i>The Pattern On The Stone: The Simple Ideas That Make Computers Work</i>: <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Pattern-Stone-Computers-Science-Masters&#x2F;dp&#x2F;0465066933&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Pattern-Stone-Computers-Science-Maste...</a><p><i>But How Do It Know? - The Basic Principles of Computers for Everyone</i>: <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;But-How-Know-Principles-Computers&#x2F;dp&#x2F;0615303765&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;But-How-Know-Principles-Computers&#x2F;dp&#x2F;...</a><p><i>The Elements of Computing Systems: Building a Modern Computer from First Principles</i>: <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Elements-Computing-Systems-Building-Principles&#x2F;dp&#x2F;0262640686&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Elements-Computing-Systems-Building-P...</a>