Jump to content

I just have a small question about programming. So when you start off, it's really kind of slow and boring, but after you get really good at it, does it just come to you like 2 + 2? For example, now, you can do 2 + 2 without even really thinking about it. Is coding the same way? Like if you're really good at coding, and you want to make a phone application or whatever. Do you just sit down and go ham without even really thinking, and it'll just work because all of the possible operations, values, etc just come naturally and you don't really need to thinking about it...?

Link to comment
https://linustechtips.com/topic/484696-question-about-programming/
Share on other sites

Link to post
Share on other sites

I just have a small question about programming. So when you start off, it's really kind of slow and boring, but after you get really good at it, does it just come to you like 2 + 2? For example, now, you can do 2 + 2 without even really thinking about it. Is coding the same way? Like if you're really good at coding, and you want to make a phone application or whatever. Do you just sit down and go ham without even really thinking, and it'll just work because all of the possible operations, values, etc just come naturally and you don't really need to thinking about it...?

Kind of but not really. It will never be as simple as 2 + 2 or easy as 2 + 2.

 

You do kind of need to think about it but it gets easier the more you do it (to a certain extent)

Judge a product on its own merits AND the company that made it.

How to setup MSI Afterburner OSD | How to make your AMD Radeon GPU more efficient with Radeon Chill | (Probably) Why LMG Merch shipping to the EU is expensive

Oneplus 6 (Early 2023 to present) | HP Envy 15" x360 R7 5700U (Mid 2021 to present) | Steam Deck (Late 2022 to present)

 

Mid 2023 AlTech Desktop Refresh - AMD R7 5800X (Mid 2023), XFX Radeon RX 6700XT MBA (Mid 2021), MSI X370 Gaming Pro Carbon (Early 2018), 32GB DDR4-3200 (16GB x2) (Mid 2022

Noctua NH-D15 (Early 2021), Corsair MP510 1.92TB NVMe SSD (Mid 2020), beQuiet Pure Wings 2 140mm x2 & 120mm x1 (Mid 2023),

Link to post
Share on other sites

yeah, well, depends how complicated and long the program is

 

but yes its pretty similar to doing math equations, with larger ones taking more time and more chances of mistakes

but you're using simple pieces like + and - and * to make something bigger, and once you know how to put all those together you can make a big equation

NEW PC build: Blank Heaven   minimalist white and black PC     Old S340 build log "White Heaven"        The "LIGHTCANON" flashlight build log        Project AntiRoll (prototype)        Custom speaker project

Spoiler

Ryzen 3950X | AMD Vega Frontier Edition | ASUS X570 Pro WS | Corsair Vengeance LPX 64GB | NZXT H500 | Seasonic Prime Fanless TX-700 | Custom loop | Coolermaster SK630 White | Logitech MX Master 2S | Samsung 980 Pro 1TB + 970 Pro 512GB | Samsung 58" 4k TV | Scarlett 2i4 | 2x AT2020

 

Link to post
Share on other sites

After a point once one has learned and gained real world experience of engineering and design principles (more important than languages and technologies) it does indeed become exponentially easier. In other words you get to a point where once you have experienced/solved a great many problems in a great many domains that you know how to recognise and then handle and a solution to a business problem utilizing the design knowledge gained from the mass of previous experience that you have built up.

 

yeah, well, depends how complicated and long the program is

 

but yes its pretty similar to doing math equations, with larger ones taking more time and more chances of mistakes

but you're using simple pieces like + and - and * to make something bigger, and once you know how to put all those together you can make a big equation

 

This kind of thing is exactly why we have Test Driven Development and Behaviour Driven Development. I personally favor the ports and adapters paradigm also known as the hexagonal architecture which decouples the tests from the implementation detail. Tests sit at the interface/s to the system and are used to validate the behaviour of the system rather than being tightly coupled to the implementation detail within the system. This way if the implementation changes then the tests will not break but instead continue to validate the behaviour of the system or its validation criteria. Conversely if tests are instead coupled to the implementation detail it yields a massive overhead when responding to changes where most of the test framework will break and subsequently require fixing. These tightly coupled tests are also known as programmer tests or testing in a low gear as opposed to the latter practice which is known as behaviour testing and testing in a high gear i.e. one is slow and the other is much faster.

 

Testing will help catch the things that one may have missed or otherwise unintentionally introduced when implementing their solution. Think of it as a safety net or a scaffolding around/upon which to construct the real thing.

The single biggest problem in communication is the illusion that it has taken place.

Link to post
Share on other sites

It will become easier, but chances are you'll want to try something new and have to go through the learning process again. Also, when starting off projects, it may take a little while to get into your groove, so it seems harder than it really is.

˙ǝɯᴉʇ ɹnoʎ ƃuᴉʇsɐʍ ǝɹɐ noʎ 'sᴉɥʇ pɐǝɹ oʇ ƃuᴉʎɹʇ ǝɹɐ noʎ ɟI

Link to post
Share on other sites

Programming is always going to require thought and proper planning no matter how experienced you are.

 

As you learn you will certainly find it easier to design a system and have a better understanding of how to program it but it will never be as easy as 2+2

Link to post
Share on other sites

For assignments, yeah you can do it without really thinking anymore. But when designing a system, you have to put a lot, and I mean a lot of thought into every aspect, only when you have a strong platform you can actually code faster for that particular project. It's because as mentioned, languages and technologies are the easy part. If you just 'duct tape' things on to your project, it's mostly because your design is crap and you will soon have an untestable, unscalable, and with enough time unfixable mess that you should be ashamed to put on your resume. Coding itself can be done without thought to some degree, but you must always think about the big picture and how everything fits in.

Link to post
Share on other sites

I have been programming 20+ years now and certainly the problems you try to solve in the beginning become trivial. But a lot of the more fundamental problems of software and its organisation don't go away because a large part of the problem is truly understanding what you are building. Initially the problem is you don't know how to build things so you are learning to program or use the language but once they disappears you are left with a hard problem of how to capture software that solves a problem with no code duplication and other abstraction problems. Some aspects get easier but others don't there is still hard problems even after you have been doing it a long time.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×