In recent years i've come across a lot of abstractions over abstractions for the sake of abstractions, too many in fact. Its not even funny how laughably overcomplicated designs became to "make things easier", when in fact actually managing it, or simply fully grasping "it" became abysmally hard(not because the concepts are hard, but due to the sheer volume of abstractions and pulled codebase)
Well, developers want to look smart, and easy things don't look that way at least from a first sight. Only later you realize that making really easy system that actually solves the problem is pretty hard
The problem here is most of the software that we write for pay we don't get to own license we don't really get a cut of the sales we just get the salary paid to develop it. And
The crazyness of all of these abstractions and ecosystems is probably the reason for myself having selected bash with simple gnu tools as my main base of operations. It might not have many features itself without the gnu tools, but it seems to stay pretty much the same for a long time and it is small enough to actually fully learn how to use it. The inability to just pull in bash-packages and libraries easily made me make my own for the sake of having a portable unix/windows/wsl toolkit. I think bash is perfect for the administrative glue you need to start, manage and generally orchestrate various processes.
15:30 is a great point. When I got my current job I struggled for a while because I wasn't familiar enough with the industry. Then people talk with specific jargon, use acronyms and specific terms and you are there writing them all down so you can try to decode later what was communicated :D Languages, frameworks etc. are tools, and the domain knowledge is way more valuable in my opinion than knowing the tools.
You should see some of the massive, profit generating, and quite scalable systems I have written using... BASH. No, it's not the only language I know by a long shot, but depending on the domain of the problem, it can be all the tool you need, when used properly. Tools are just that. Sometimes good old tie wire is better than a custom fabricated bracket or zip ties, also.
Software never was 'art'. It has always been an 'engineering' profession. It is only in recent years when UI 'artists' have been given permission and tools (React/Javascript/Node) that has enabled them to come down the entire tech stack and convert everything into 'art'. Of course, big business likes this because it is cheaper to use UX designers to build systems than it is to use properly qualified software engineers, but apparently, short-term cost savings are more important than quality and long term management/maintainability. The reason why we have so many poorly built back-end systems these days is because UI 'artists' have been allowed to cross into 'engineering' domains that they don't have experience of.
I keep agreeing! I often get asked for C++ projects as freelancers. And my first question always is: “what is it that they are developing?” Because my background is in medical, graphical and low-level systems/embedded. I don’t know about simulation of traffic and tunnel emergency systems. That was the last requests, and the head hunter (they should not exist absolutely useless middle man)) was like but C++ is C++… And I couldn’t make him see that C++ was just a tool. I can have a screw driver and be a luthier that doesn’t mean I know how to build for example houses. We are technically both carpenters and some knowledge translates but they are two very different domains of carpentry. We both use viles, saws and routers but we use them so differently.
I used to think this untill i tried nextjs. Shit was stupid simple. It was like coding in roblox. It just got it done and I didn't really complain about it. Didnt even realize I was using it half the time.
12:50 is a very good topic, I find myself leaning towards developing an expertise on specific domain in a particular industry rather than immediately adapting to latest fancy tooling, framework and languages. Nowadays more and more people can create or develop web or mobile app, we need to take another step of specialization, something that is more specific than being just a mobile or web dev which will make us more important in team and company.
I have a master's degree in Banking and Finance because I used to work there. I have been workins as a software dev for the last 6 years and I always tried to work on finance/fintech projects as I knew I could deliver value beyond software engineering itself. Glad to see I am not the only one thinking that way
IMO a lot of the reason for heavy cycling of web technology is that many many many of the tools are incredibly horrible and bad. When a better tool happens it's only marginally better and so on so it gets replaced eventually too and so on. Thankfully the cycle seems to be tightening a little bit. Vite for example as a replacement for Webpack feels like about a 1000 year shift. Vite is good enough it might be around for a while except cases where some proprietary tool is used inside of a larger package.
Really entertaining talk. As someone who loves creating UIs I can’t imagine preferring or being limited to the set of Microsoft-certified checkboxes and sliders! I definitely would have been in the non-rectangular bitmapped design camp back in the day if I was born a decade earlier!
Software dev is now like car repair. Farmed out to the cheapest worker somewhere in a 3rd country. CEOs don't care about bugs or software with defects. Ship it even if it barely functions, and then hire more h1b workers to fix the bugs later.
I agree with your take, but it's possible to change minds by producing high quality software which reduces support costs. Management speaks in $$$, so you have to show them that outsourcing has hidden costs.
@@7th_CAV_Trooper Offshored developers can write the worst code possible and still be cheaper than paying locals in the US a normal salary. CEOs don't care, especially right now with high inflation.
@@censoredeveryday3320 a whole team of offshored developers costs as much as a single USA based developer, i can't blame the CEO's i'd make the same choice, even when their code is inferior it's not as bad as you guys like to make it seem and they can in fact make stuff work which is all the CEO cares about. I've seen more university educated first-world developers make crass mistakes than your average third-world frameworker, and usually the mistakes come about due to hubris, wanting to implement overengineered solutions and predict requirements that were never made, designing insane architectures of hundreds of microservices loosely tied together into a system etc, spending months on months fine tuning these overengineered solutions only for their company to get beaten to the market and made irrelevant in the process. The key is not university developers from the first-world, it's monitoring, auditing etc. And once you have that in place you reduce the risks involved with having cheaper developers since not everything is on their backs. And again people really grossly and racistly underestimate developers from the third world, software development isn't as complex as people like to make themselves believe it is People are just alarmed because it's all digital now and because it's all digital companies no longer need to pay a premium for people based in their own country and that sucks, but that was always a matter of time, all digital desk jobs are eventually likely to get outsourced
‘The way I did it back in the day man, that was art. It used to be a honor to make apps that look like basic windows using all the windows tools’ ‘What these kids do today isn’t art’
It's true that the learning curve gets kind of old after about a decade. I began doing less web software development and more embedded systems where I try to squeeze as many features as possible into a single 8-bit or 16-bit chip. IoT is becoming more of a thing anyway, and it's could be useful for automation on my homestead.
Oh man web dev in 1995, that was when I started to hate the web. Perl cgi-bin, mSQL. Capturing the HTTP request to get the tokenized arguments ugghhh…. And using tcpdump to see what dynamic sql was generated and what web requests came in and out. React and C# Blazer improved it but it’s still not as flexible and robust as just desktop software. I still hope WASM will take off, where we can just developed desktop applications (that are blazingly fast) with whatever library and it would be smart enough to abstract that into wasm. But…. The problem is the fact that each OS has a different way of professing graphics and to cross compile say Qt (I love it) to then have some web graphic abstraction is really hard. We should have a unified Graphics api that works on everything and is really simple like we used in DOS, just a memory block you write your data into per pixel. Your graphics/ui libraries can actually compile to render that and wasm can then easily use that. We went too far with idiotic abstractions. Why is it so incredibly hard to just render a single pixel through hardware these days?! All the proprietary GPUs uggghh
Art is in the details. Yes, paintings that have no other use than to be looked at is often considered art but that's only because it lacks another classification. Art is in the eye of the beholder and there's as much chance now that someone somewhere sees art in software as there always has been. Outside of old men waxing poetic about how good things used to be nothing has changed in that aspect. Don't get me wrong, many things have gotten objectively worse over time but software as art hasn't died just because it is no longer the domain of the sweaty neckbeards. That's not a jab, I'm probably in that category myself. The main difference is that technology has gone from enabling people to do wonderful things to a tool used to oppress. Software today is just as capable of producing wonderful and unique masterpieces but the pressure to get on the hamster wheel has never been stronger. In fact it might even be more capable since open source software is one of the last ways disrupt societal norms by providing alternatives when companies overstep.
I think focus is too much on the technology. I'm a .NET developer, 10 years of experience, and I see that a lot of devs still struggle with technology and producing code - and they are not even nerd who live for programming. They struggle to finish tasks, not delivering features that matter. They never grow past that and have the interesting conversation about software design and so. I rarely find someone who I can talk deeply about software development or even the technical side. And now companies seem to look for these people that I mention since they are the ones delivering without questioning the meaning of what they do.
Okay not strictly relevant, but I would say learning the accordion is orders of magnitude more difficult than an expert accordian player learning a new song. The analogy is upside down. The world's greatest accodian player could play most things by ear after a first listen.
I agree that there’s too many different technologies in IT and all of them are crap! I find myself reaching back to C (or Zig) and procedural development. Because the best software I wrote was raw C and assembly and they are still running in certain places (after almost 30 years). Web crap doesn’t even live for 5 years because they’ll rewrite in the “next best thing”. I hate Web development, it’s a disease! Just like browsers are terrible things for high performance software.
If you ask why we need frameworks. Think about a company that makes toys. Company doesn't give a shit how you do it but you need to make 100 a day, because all the other competitors produce them at that rate. The catch is you don't have an assembly line, and the other companies do. Good luck.
Well ok, it is important to have feeling of purpose and belonging doing any job, but expecting to express something artistic in developer position is unrealistic to me. You are correct that there is that aspect in engeenering, but there is no place for it in writing business logic. For me I get artistic feeling when writing abstractions and working on clean code. Which is main reason I'm not a dev. Not mixing a job and passion is working for me. At the end of the day your job is to make those 100 toys, and if you are unhappy about that, than maybe it's not for you. Or you need more realistic expectations. Designers job is to make something beautifully, devs job is to implement it, by tedious engeenering process.
@@architectureweekly it's meant for image manipulation is what I'm trying to say. It's good for a lot of stuff, but high performance computing isn't one. Information management systems are one area where it thrives, like web apps. Where IO is more of a bottleneck than CPU.
05:09 Hey, I built my own encryption system! The existing ones all have backdoors. I implemented ChaCha20 from RFC references and ECDH with M-511 from research papers.
@@architectureweeklybro sorry to say, but WTF? You think someone would implement such stuff and NOT F*** VERIFY IT??? WTF?? I can't imagine that to be possible and I find the question very insulting. I mean you will be very curious after coding that whether it works, right?
@architectureweekly But here the long answer in case it was not just an insult. Of course you know as well as I do that every production code is tested. I have 100% test case coverage. Apart from that, Encryption is actually one of the FEW moments where it's actually a really good idea to do test-driven-development. RFC in particular offers a bunch of test vectors in their documents that you can use to test subroutines of ChaCha20 for etc. There's stuff like quarterRound, bit rotations, etc. What, you think I write arcane bit rotation clusterf**k without test vectors? On top of that I have done entropy diagrams on files I encrypted and measure the entropy of the encrypted results in the tests. The internet's security is precisely so sh** because what you do "just take a library" actually has serious flaws. If you start to research what elliptic curves they actually use in public packages and how the NSA hacked servers etc, it will send you down a deep mathematical rabbit hole. For the record, I'm a mathematician. To be more precise: NIST makes standards that have known backdoors (P256 and P384) etc. that are solely implemented for example in the most popular crypto flutter packages. There are side channel attacks that you allow to happen if you don't write your code in a particular way. The most widely used curve Curve25519 actually just has 128 bit security, which falls down to a root of 64 bit if masses of elliptic curves are attacked. AES has several bad modes that should never be used (like ECB). Even GCM is flawed. AES is broken as well as most elliptic curves and most packages you use will use a combination of AES (unsafe symmetric encryption) plus an elliptic curve with backdoors for the NSA. I can guarantee you "they" have their moles in a bunch of crypto projects and a bunch of them are insecure, and I am not even talking yet about JavaScript. It is furthermore documented that "they" sometimes just even openly pay millions to have people willingly adapt the backdoors.
@@architectureweekly Ah, btw, nice takes in the Podcast. I found this discussion really enjoyable to listen to. Personally, I belive we should flip the table of BigTech and make a new Browser with 3D and without JavaScript, but instead with an event based programming language, maybe even sth Lua-Like.
@@train_xcI see building a 3D printer both in software and hardware/mechanics as an art, You can print with it whatever models you want which is definitely an artistic task
Co-Fucking-Rect. "Safety" is always the excuse, and people spend their time on the dumbest things. I already stopped honesty, the whole world around it is just filled with arbitrary and annoying stuff.
Don’t agree with the analogy. Learning an instrument and then applying to different problems is far easier than the other way around. Becoming an expert musician/practitioner takes practice and time. My experience tells me that learning domains/knowledge is far easier than the other way around.
Software engineering was never, is never and will never be art. Stop diluting yourself into thinking this. Its just a means to someones endgame and yours if you want to eat, nothing more.