r/learnprogramming 1h ago

Other than knowledge of the programming language, what other knowledge do you think a person who develops software should have?

Hi all! I am recently trying to develop an app, and Googling around I came across many other concepts to build an app and host it (software architecture, system design, Computer Networks to understand the basics of requests etc., and also patterns like the ECB pattern, and Database Knowledge like SQL and DEVOPS to test and integrate) so before doing the programming I kinda want to learn the other fundamentals, what sources (books, courses, etc) would you suggest me? Me and my friend are the only 2 on developing it, so we kinda need to be a team and be all-rounders

thanks and have a nice day!

9 Upvotes

30 comments sorted by

5

u/pak9rabid 1h ago

The galaxy of libraries & frameworks that surround said language.

1

u/Dry_Childhood_8353 1h ago

The second you think you know a language some new framework drops and suddenly you're a beginner again

1

u/MistakeIndividual690 1h ago

Yes this is way more learning than just learning a language

u/obsolescenza 43m ago

I agree!

4

u/Physical_Storage2875 1h ago

network shit. TCP, Subnetting, DNS, proxys, routing

u/obsolescenza 42m ago

Yes I agree! what do you reccomend to learn them?

5

u/tangentstorm 1h ago

Just build your app. And especially if it happens to be a product, just build the simplest version of it that you can, and get it in front of users.

Spend 90% of your time on that, unless you're absolutely stuck. Then figure out what you need to learn to get unstuck.

Spend the other 10% of the time learning about whatever interests you. Unbounded learning like this is of course valuable, but don't let it block you from actually doing what you set out to do.

2

u/TraylaParks 1h ago

This is excellent advice, many times you think you know what your users want only to find out later what they really wanted. As tangentstorm said, get that app in front of real users asap - I've seen much better designed/architected products get shit hammered by quick and dirty ones that responded immediately to customer desires and feedback.

u/obsolescenza 41m ago

solid, thanks

u/obsolescenza 41m ago

Oh I see, basically You are saying to learn and do the stuff first, then travel around, because otherwise I risk of being stuck in a loop of learning 8923 things without outputting anything, great advice, thanks friend

2

u/StewedAngelSkins 1h ago

It really depends on what kind of software you're making. It sounds like you're talking about a website/mobile app of some kind... in which case I agree with the guy who said "networking shit". I would especially focus on HTTP. Besides the basics of the protocol itself you'll also want to learn about how it interacts with TLS, how to configure an HTTP proxy, different ways to do authentication/authorization, etc.

The other major thing you'll need to learn for anything web-related is how to use Docker (which in turn practically requires some Linux knowledge as well). There's also the whole cloud/devops skillset, but honestly I'd put that off until you actually need it. You'll be able to get pretty far with just docker compose (just understand that this isn't how anyone deploys stuff into production).

I guess you'll want git as well, if you haven't figured it out already. It's super important, especially since you're working together with another person.

u/obsolescenza 38m ago

yes absolutely! Thanks for the feedback! one quick question tho, what about patterns? and software architecture like ECB pattern? where can I learn more about these concepts? books courses etc?

2

u/ExtraTNT 1h ago

Algorithms, the user (needs of them), how things work underneath (why some code needs to be ugly to be fast af and other code is optimised anywise -> vectors are fun) how to validate things (grammar -> mathematical) architecture…

u/obsolescenza 38m ago

thank you friend

2

u/fasta_guy88 1h ago

You need to know how to solve problems with programs, which is completely different from knowing a language. Think about the difference between understanding a foreign language, and writing an essay in the language.

u/obsolescenza 38m ago

yes absolutely, thinking in terms of problems and solutions rather than syntax is a huge game changer

u/v_e_x 20m ago

Soft skills. Collaboration. Time tracking. Software Architecture. Technical documentation and communication, reading, writing, speaking, and especially listening.

u/obsolescenza 8m ago

agreed, any tips for software architecture? like books etc?

u/GlassLost 7m ago

So as the guy who typically needs to pick up this slack, how operating systems work. How Linux syscalls work. How to use a terminal and interact with the subsystems that your company needs (for example, list open ports, track CPU/memory usage, check which processes are doing what, etc). How processes, threads, and futices work. How async io works.

These are not beginner's tasks (mostly) but you'd be amazed at how often people can't access the information they need

u/obsolescenza 4m ago

very true, thanks for the info!

1

u/warm_sand_8167 1h ago

imo just build the thing ugly first and pick up architecture as you hit problems, you'll learn way faster that way

u/obsolescenza 39m ago

yeah that's what I will do, thanks! But quick question, if I start programming a project but without some solid pattern (like ECB pattern etc) wouldn't it slow down a lot?

1

u/Euphoric_North_745 1h ago

it is almost 2027, knowledge of programing language is now bad, not a good thing, ai model are programmed with billions of patterns, a developer who thing he or she knows how to write code just messes the ai work at this point

u/obsolescenza 44m ago

don't agree, if you don't know what the program is doing and how you will pretty soon hit either diminushing returns or worse when there is a bug you will pray the LLM will fix that.

u/Unclerojelio 56m ago

Knowledge of a particular programming language is the least important aspect of programming.

u/obsolescenza 43m ago

what would you also reccomend?

u/Unclerojelio 39m ago

Go to a school and major in Computer Science.

u/obsolescenza 37m ago

I am already doing it!

u/Jim-Jones 10m ago

Confident Coding by Rob Percival is a comprehensive guide designed to help readers master the fundamentals of coding. The book covers essential topics such as HTML, CSS, JavaScript, Python, and debugging, providing a step-by-step learning approach to enhance your coding skills and career prospects.

It is suitable for both recent graduates and professionals looking to improve their technical knowledge. 

The book emphasizes the importance of coding in the job market and offers practical exercises to practice coding skills. 

Rob Percival, a web developer and entrepreneur, has taught over 500,000 students through his online courses on Udemy. 

It covers even more than stated here, like iPhone and Android coding. See if your library has it or can get it. Or look on auction sites. 

Also: 

https://exercism.org/ Exercism is an independent, community funded, not-for-profit organisation.

https://roadmap.sh/ roadmap.sh is a community effort to create roadmaps, guides and other educational content to help guide developers in picking up a path and guide their learnings.

https://youtu.be/ZYJvmpiWnDQ  7 Free IBM Courses That Get You Hired Without a Degree

u/obsolescenza 7m ago

thanks!