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...
Something like https://www.amazon.com/Elements-Computing-Systems-Building-P... is not hard, but it's arguably a toy system.
IMO Project Oberon starts from the same principles and builds up to a productive enironment including text processing, a compiler, very basic hypertext, basic networking and hardware to run it on.
Elements of Computing Systems
Writing and Interpreter in Go
https://www.amazon.com/Elements-Computing-Systems-Building-P...
https://www.amazon.com/s?k=writing+an+interpreter+in+go&i=st...
The Elements of Computing Systems: Building a Modern Computer from First Principles
https://www.amazon.com/Elements-Computing-Systems-Building-P...
Follow that up with Computer Systems A programmers perspective.[2]
My review of ECS [3]
[1] https://www.amazon.com/Elements-Computing-Systems-Building-P...
[2] https://www.amazon.com/Computer-Systems-Programmers-Perspect...
[3] https://www.amazon.com/gp/customer-reviews/RZ4ME4QH22JML/ref...
Creating your own programming language is more a side effect, but that is the book that taught me about computers and compilers.
[0] https://www.amazon.com/Elements-Computing-Systems-Building-P...
[2] https://www.coursera.org/learn/build-a-computer
[3] https://www.ted.com/talks/shimon_schocken_the_self_organizin...
https://www.amazon.com/Elements-Computing-Systems-Building-P...
http://www.nand2tetris.org/ is the website for it.
Thanks for the confirmaton, I didn't remember seeing this either.
"The book, btw, is a masterpiece ..."
Agreed. The paper back is a nice format and reasonably priced for a technical book as well:
https://www.amazon.com/Elements-Computing-Systems-Building-P...
After doing all of this, you make Tetris in the high level language. It's a badass book, super well-written, and what I consider an essential text.
[0] https://www.amazon.com/Elements-Computing-Systems-Building-P...
I wish I had this book at the beginning of my career. http://www.amazon.com/Elements-Computing-Systems-Building-Pr.... Makes you design the hardware, then the software for that hardware.
Should not take more than 8 - 12 weeks with school work/day job.
Learning the fundamentals, becoming better at these will help one see through the 'stack of tons of languages, tools, frameworks' and yet be able to handle all of these with relative ease.
I wish 'Elements of Computing systems'[1] were there when I started as a programmer.
[1] http://www.amazon.com/Elements-Computing-Systems-Building-Pr...
From NAND to TetrisBuilding a Modern Computer From First Principles
http://www.amazon.com/The-Elements-Computing-Systems-Princip...
http://www.amazon.com/The-Elements-Computing-Systems-Princip...
edit: $30 I guess, still worth it.
1. http://www.quora.com/How-do-I-write-an-operating-system
2. http://www.quora.com/If-you-were-to-write-a-new-operating-sy...
3. http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/...
4. http://www.amazon.com/The-Design-UNIX-Operating-System/dp/01...
5. http://www.amazon.com/The-Elements-Computing-Systems-Princip...
a + b
Best go with structural if you want to actually learn something. This book ( http://www.amazon.com/The-Elements-Computing-Systems-Princip... ) is very good and I think still stands as the best introduction to this type of stuff I've seen. It's also presented in a straight forward enough way that it's good enough self-study for anyone with some programming experience.
http://www.amazon.com/The-Elements-Computing-Systems-Princip...
Compiler Construction: http://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf
The Elements of Computing Systems: http://amzn.to/GQycqj
MetaCompilers: http://www.bayfronttechnologies.com/mc_tutorial.html
How to Create Your Own Freaking Awesome Programming Language: http://createyourproglang.com/
Bootstrapping a simple compiler from nothing: http://www.rano.org/bcompiler.html
Software programming starting from assembly language under linux : http://www.amazon.com/Programming-Ground-Up-Jonathan-Bartlet...
A study going from chip design to high level programming :
http://www.amazon.com/Elements-Computing-Systems-Building-Pr...
IHMO this "problem" of "incomplete vision" started when device drivers where introduced in general purpose OS. Professionnal application developpers started to target API instead of hardware. A milestone in this trend for me is Windows 3.0 (1990). This also marks the demise of fixed hardware computers that the hobbyist favored so far.
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
http://www.amazon.com/Elements-Computing-Systems-Building-Pr...
http://www.amazon.com/Structure-Interpretation-Computer-Prog...
http://www.amazon.com/G%C3%B6del-Escher-Bach-Eternal-Golden/...
http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master...
Good luck!
----
[1]: http://www1.idc.ac.il/tecs/
[2]: http://www.amazon.com/Elements-Computing-Systems-Building-Pr...
I'm a big fan of 'The Elements of Computing Systems' - takes you from NAND gates to pong.
http://www.amazon.co.uk/Elements-Computing-Systems-Building-...
http://www.amazon.com/Elements-Computing-Systems-Building-Pr...
http://books.google.com/books?id=THie6tt-2z8C&dq=the+ele...
which will seriously take you from logic gate/chip design all the way to scripting languages and an implementation of tetris on a java-esque language/vm. Totally awesome!
You can download the simulation software which is used in the book here if you want to play w/ logic gates/HDL etc. more http://www1.idc.ac.il/tecs/
http://www.amazon.com/Elements-Computing-Systems-Building-Pr...
This book takes you from logic gates to writing your own (extremely simple) virtual machine, programming language, etc. It's a bit fast paced and project based, but it'll run you through a very high level overview of the whole gamut.
If you want to develop knowledge in depth, this is a good place to start:
http://www.amazon.com/Elements-Computing-Systems-Building-Pr...
Buy the book, download the courseware for free, and learn how computers work from NAND gates up. Implement your own OO language on the hardware you've built and write your own OS in it. Then write games for the resulting system. This will put you ahead of most coders out there.
First edition on amazon: https://www.amazon.com/Elements-Computing-Systems-Building-P...
Second edition pre-order on amazon: https://www.amazon.com/Elements-Computing-Systems-second-Pri...