Live data from Hacker News

Ask HN: Programming 101 online course recommendations?

news.ycombinator.com

21–30 of 44 posts

Re: Ask HN: Programming 101 online course recommendations?

#21
If you'd like to be able to understand the inner workings of your app, that's great, and there are a lot of good suggestions here for how to do that.

However, from your description it sounds like you're struggling to communicate about what the programmers should be building, rather than how it's being built. If that'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'd recommend the following:

1) Focus on learning only 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't need to know enough to build it, but you should be able to talk intelligently about each of these aspects of the system.

2) Don't expect to successfully convey your design requirements in a single conversation turn. It doesn't matter how good of a communicator you are, if there isn't back-and-forth between you and the developers, they did not understand it. If they're not asking questions, have them diagram what they understood as they explain it back to you.

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'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.

Re: Ask HN: Programming 101 online course recommendations?

#22
I don't think there's an easy answer to this question. Software engineers still don't know how to exactly or even efficiently communicate with each other. It'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.

In general, I do also echo some of the other comments. If you are helping to design the app, you shouldn'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.

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:

Programming for Everyone - An Introduction to Visual Programming Languages: https://www.edx.org/course/programming-for-everyone-an-intro...

I think this course should be taken by managers, designers, and even software engineers. The primary result is that you'll come out of it knowing state charts, which are an extension to state machines, and this will be very useful for thinking about software and organizing 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.

How to Code: Simple Data and Complex Data:

https://www.edx.org/course/how-to-code-simple-data

https://www.edx.org/course/how-to-code-complex-data

https://www.edx.org/micromasters/ubcx-software-development

These courses are taught by a designer of the Common Lisp language and based upon the excellent book How to Design Programs. 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.

Based upon your last comment, here are some book suggestions on how computers work:

Code: The Hidden Language of Computer Hardware and Software: https://www.amazon.com/Code-Language-Computer-Hardware-Softw...

The Pattern On The Stone: The Simple Ideas That Make Computers Work: https://www.amazon.com/Pattern-Stone-Computers-Science-Maste...

But How Do It Know? - The Basic Principles of Computers for Everyone: https://www.amazon.com/But-How-Know-Principles-Computers/dp/...

The Elements of Computing Systems: Building a Modern Computer from First Principles: https://www.amazon.com/Elements-Computing-Systems-Building-P...

Re: Ask HN: Programming 101 online course recommendations?

#23
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.

Re: Ask HN: Programming 101 online course recommendations?

#24

If you'd like to be able to understand the inner workings of your app, that's great, and there are a lot of good suggestions here for how to do that. However, from your description it sounds like you're struggling to communicate about what the programmers should be building, rather than how it's being built. If that's the case, learning to program will likely not fix your problem, and will instead waste time that you…

Strongly agree with and endorse this advice. Learn to communicate.

To OP: If you think learning a programming language will make you a better English communicator you're on the way wrong track.

If anyone is using jargon, I recommend that as a team you make it a point to avoid it. No one should be required to well-versed in anyone else's jargon to collaborate on a job and it indicates they have some communication shortcomings as well. Work on it together.

Tech collaboration can be maze-like at first because I really think programmers are usually terrible at talking about our work to non-programmers. Avoid learning Java as a means to understanding someone else's English.

Re: Ask HN: Programming 101 online course recommendations?

#25

If you'd like to be able to understand the inner workings of your app, that's great, and there are a lot of good suggestions here for how to do that. However, from your description it sounds like you're struggling to communicate about what the programmers should be building, rather than how it's being built. If that's the case, learning to program will likely not fix your problem, and will instead waste time that you…

Strongly agree with and endorse this advice. Learn to communicate. To OP: If you think learning a programming language will make you a better English communicator you're on the way wrong track. If anyone is using jargon, I recommend that as a team you make it a point to avoid it. No one should be required to well-versed in anyone else's jargon to collaborate on a job and it indicates they have some communication shor…

Yes, if you can get them to stop using jargon at all, that would be ideal. Jargon is, by definition, meant for communication within a discipline, and inappropriate for interdisciplinary conversation.

That said, translating jargon to English is a skill, and I wouldn't expect these developers to be able to just flip a switch and turn off the jargon. OP is going to need to gradually transition them to better explanations. A good way to do that is to constantly ask for definitions to terms you're unfamiliar with, and use the non-jargon versions yourself.

Re: Ask HN: Programming 101 online course recommendations?

#26
Someone should build an app 5 different ways and discuss the pros and cons of each architecture/structure of the app. Haven't seen a course like that. There is plenty of stuff on Architecture, but not a single course on showing what bad architecture looks like.

Re: Ask HN: Programming 101 online course recommendations?

#27

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. This isn't necessarily in the skill set of every engineer, but in a well rounded team, there should be maybe a couple of engineers who are recognized for being able…

This is a really good point. I am reading "The Hard Thing About Hard Things" and Horowitz discusses hiring a VP of Sales and the requirements of the role aren't necessarily to get their hands dirty but more so to liaise.

Re: Ask HN: Programming 101 online course recommendations?

#28
post #6

If you’re looking more to be able to intelligently communicate rather than program independently, I’d recommend the Harvard CS50 for Business Professionals. https://www.edx.org/course/cs50s-computer-science-for-busine...

I literally just started watching the first lecture today with the lamps! I am pausing and starting to look up terms as I go :)

Re: Ask HN: Programming 101 online course recommendations?

#29

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 basi…

One of the silliest examples is I was trying to say that there are no requirements in text fields and all information is accepted no matter how it's formatted and they're like so remove the validation lol

Re: Ask HN: Programming 101 online course recommendations?

#30

CS50x has been perfect for me to 'start from scratch'. Not sure why you would prefer Java over others, depending on the platform you are developing for there's probably a 'nicer' solution.

The Java comment was made out of ignorance because I thought that was the most basic/friendliest one ha :)
Post reply on HN