“What are the fundamental skills of a good software engineer, and which programming languages effectively develop those skills? #softwareengineering #programminglanguages
## Understanding the Fundamentals
– Do functions, loops, and data structures encompass the fundamentals of programming?
– Is there more to being a good software engineer than just knowing basic programming concepts?
## Exploring Programming Languages
– Can assembly language effectively drill programming skills into your head?
– Are modern high-level languages like COA more beneficial for practice?
– What languages induce the habits and skills of good programming effectively?
## Conclusion
– What does it truly mean to be a proficient software engineer?
– How can different programming languages shape and refine your coding abilities?”
It’s more about language agnostic programming concepts. The languages are secondary. You really want to learn how to design and build a system from the ground up . Among other things. Not how to use python or C++ to become a programmer.
Languages are only tools and a good SWE can pick them up as needed to do with as they please.
Start with Python and Math, I’d say. 2-4 years of that. If you can teach yourself intermediate/advanced Python — and trig/calculus .. you’d be pretty much set to take it any direction you want and have a great foundation. Moving into C++ for example and learning memory management and all of that jazz would be relatively easy if you knew Python like the back of your hand with a strong foundation in calculus.
Engineering is programming language agnostic. It’s about patterns, interfacing, component design, communication principles, layers, assigning concerns, etc. So english is probably a good choice. Books on the subject are often written in that language.
One thing that makes a really good engineer, is appreciating that coding is only a part of the job. Soft skills are what truly distinguish a good programmer and a good SWE.
Communication, requirement gathering, negotiating, prioritization, ability to learn domain knowledge, communication and communication. Probably tack on communication to that list too.
It seems easy to dismiss, but genuinely it is what makes you a good software engineer.