I mean.. lot's of people have thoughts to ditch software engineering for plumbing or other manual labor. It's not the lack of creativity people hate about this this job.
I'm at the end phase of building an actual product right now. Well, more like prototype of a product, but roughly 70% feature-capable. 99% of that project was digital plumbing and 1% was existential horror.
People outside the company see Microsoft as a monolithic juggernaut. In reality, it’s 300 small businesses with shared HR and marketing departments. Just because the C# team is amazing, there’s no reason to believe some ERP product team is also going to amazing at building their own DSL. The teams are probably located at least 1000 miles apart and never, ever talk to each other.
I used to work as customer support for Azure and we were one of many companies outsourced by them. Where your ticket will end up is RNG. We had an office in Nigeria and during Covid they couldn't have home office because some employees didn't have internet at home..they rented hotel rooms so they could work on WiFi. Also when our European manager went there for a visit, they hired 2 bodyguards with rifles to protect him on the streets like it's a Vin Diesel movie.
amen to that. i work for a big company. oh boy bearacracy can be fun. more fun when they actually try to standardize and realize its going to take time to wrangle everything.
Yes. All big corporations are like that. I have a difficult time explaining it to less intellectually endowed people. Just because a team's manager did not give you an offer at the end of the interview, it does not mean that you should not try applying to another team. Just because one team is good or bad, it does not necessarily mean that you can extrapolate anything about them to another team within the same company.
@@assassinduke1No, it isn’t. I won’t be bored after I log off to be with my wife and kids and do other things I love for reasons that are not making a billionaire shareholder even richer.
Both seem equally undesirable. Extreme stress can lead to quick burnouts, but extreme boredom slowly makes you miserable and depressed all of the time. I don't want either. I want to at least enjoy what I'm doing so I don't feel like shit all the time.
@Sammysapphira the stock market is like two steps removed from the markets in general. You can tell with companies like tesla, which sell at rediculously high values for a company whos last product is best known for rusting immediately, removing end user fingers, and having the accelerator stick. If you buy and sell based on logic, you will have moments where you lose because idiots think turdx is going to the moon.
@@Sammysapphira Nah, hes right. Theres more money then sense in the market and to really evaluate it you'd have to look at what happened in the last 10 yrs. Pandemic screwed things up and "accelerated" stuff by skipping 2 - 3 years so really the last 6 years. (Hopefully not the norm going forward)
This is not a Microsoft thing... this is an ERP thing. Always decade old codebase, bespoke language for customer customizations, need to keep compatibility with the customizations the consultants made over those decades, massive code bases with hundreds of modules (and every customer using a unique combination of those). Look at SAP - more than 100.000 tables in the database, ABAP language... and the saying that "a company that survives an SAP installation will survive anything".
i'm also a ERP developer for Microsoft Dynamics 365. it's boring, can't find good resources online and no large community. should i move away from this other industries? i'm not enjoying this.
I remember the first time I ever had to use SAP. I was young and stuck in a dead end sales job. -When we wanted to print a quote for a customer it was literally an entirely unintuitive 22 step process. - Errors were frequent and used two or three different UI toolkits because it was an unpredictable hodge podge of VC++, VB, and duct tape - Error messages were often half in English, half in German. No they weren't putting the same error in two languages, it just left half the message ambiguous if you couldn't read one language or the other. So of course what was the corporate world's reaction? "YES MOAR OF THIS PLZ." SAP's meteoric rise is the single greatest sign in all of human history that C-levels are all lobotomy patients.
@@mohamedmurshid9794 Use it as a stepping stone to get where you want. a 9-5 job is not supposed to be fulfilling, its supposed to pay the bills and hopefully the funds to do what you actually want to do.
"Before moving to this department I was not really aware of the ERP space" See kids, this is why you must always define your acronyms the first time you use them.
All ERP or similar system more or less have similar problem. They are not designed for traditional developer who like to write code and know how computer work, they are designed for enterprise developers who like to configure instead of writing code. There are many ERP people I met barely know anything outside the ERP product. These kind of development is also more difficult to attract good talent
Sounds similar to my current job. It started with working with a customer that allowed me to write code and design/simplify the whole stack. Now, my current boss makes comments which leads me to believe he just want quick hacks, IT plumbing, and no coding/designing that takes more than a week. To be honest, he does not understand what made me successful and desired in his department in the first place or is way too scared of stepping outside his lane to give me the breathing room to do good long term strategizing and programming that will make him look good in a couple of years (with small Ws every 6 months or so). I feel overpaid for my current role but I need larger and long term projects to help them properly. I think you are right. At some point, managers only want staff to solve everything with a configuration or script change.
That's why all software built on top of SAP looks and feels as it was imagined on a hippy party, designed by a blind bureaucrat and written by a bunch of monkeys high on cocaine.
Yes and no, it depends on the type of client you end up being assigned work for. More often than not, I end up having requirements land on my desk that on paper sound like they are doable with the OOB features, so of course the client wants them, but in actuality there's silly nuances or they specifically hate how this one X thing works and I end up having to build a custom solution anyways since there's no point in customizing OOB functionality past a certain point once you're having to deal with 20 different edge cases that introduces. At least that's been my experience, it's more a case that on the surface this all looks like a configuration and tweaking job, but reality more often than not dictates otherwise and then you end up with either having to build it or the client deciding "nah, this isn't worth the cost, we'll do it manually through excel", which is the most dreadful thing to hear since that usually almost always means they want to import the data they are working with from excel and unless they strictly abide by what the system allows for, that's another custom solution!
Dynamics ERP is a Frankenstein monster of IP acquisitions stitched together into a freakish approximation of software. This guy isn't a software engineer, he's a necromancer.
My work paid a consultant to migrate us from our in house system to Dynamics, which took 6 months, then 1 month later they paid the same consultant to migrate us to Salesforce.
Demand outgrew talent to do things properly years ago, in most other industries too. Sadly you're most likely to get people faking it through the day instead of a proper ERP engineering team.
I had the misfortune of working with dynamics last year. I developed sight issues from high blood pressure where I could feel my pulse trough my eyes. Thankully it went back to normal after I took a sick leave and demanded to be taken of the project.
Without learning the fundamentals, you would have only made a mess anyway. I've spent half my career cleaning up after people thought they could put anyone in.
The new outlook app is actually horrible, it crashes constantly just when I'm trying to open an email. The previous one worked fine wtf is microsoft doing
Apparrently even electron wasn’t good enough for them. Deleted edge, broke teams. Still sticking to windows mail, because at least that one just works.
@@NihongoWakannai First time? I worked on a helpdesk long ago. About half my job was showing people where to find options in outlook menus. And it crashed a lot back then already. In fact, it always has.
This post is funny because it starts out referring to "Microsoft Dynamics ERP" as one singular product when they actually have at least 4 ERPs under Dynamics branding (which were in most cases acquired rather than built in house, I believe).
Yup. Microsoft decided to go into the ERP market in like the late 1990s or early 2000s. And, a year or two later they decided to just buy out their competitors, and DOJ antitrust inexplicably let them do so. They bought *4* of their competitors at the same time! Those names like "Microsoft Dynamics AX" and "Microsoft Dynamics GP", the letters are initials or shorthand for the companies that originally made them.
Once had two write a dynamics app / integration. It was impossible to find documentation. Or better: impossible to find actually correct documentation. Everything was insanely slow and in the end we had to say: Yeah, we can do it, but it'll cost you so much, like soo much... We then agreed on a CSV export.
@@hwertz10 Inexplicably? US antitrust is a joke. Its not even a paper tiger. They havent done anything since the breakup of the Bell telephone company.
I worked Tier 2 Support for Salesforce. It was without a doubt the 2nd worse job I've ever had, only beat out by being a Salesforce Consultant and Developer. To put that in perspective. I worked at a factory that manufactured steel products as a welder after because I was so in hate with tech 😂
Regarding "Custom language": That's always a red flag! My collegues on another project have to work with a "custom language" built in the 90s, where: - Has no constants (documentation even states "Please don't change the value of Math.PI!") - Is a mixture between XML programming (yes, think "......") and some custom scripting language inside XML attributes - Custom XML functions can call custom script functions, but custom script functions cannot call custom XML functions - IDE is based on Eclipse, where the language specific code completion and performance looses hard against any IDE built in the last 20 to 30 years - No debugger ("Just invoke message-boxes and Expression-Editor windows") - No test framework ("We ourselves (the vendor) use the logs to verify functionality") - No try/catch - Stacktrace is dependent(!) on the log-level(!) - Documentation with mixed quality and helpfulness (eg. in the file handling topic with "open", "read", "exists",... there is also "ConvertColors"(!))
Dear god no… I saw … … constructs In some research papers at university and ran a mile… maybe that kinda stuff really made it out into the wild as a good idea…
I couldn't even get that deep in the video because I was getting flashbacks to me experiencing the same thing as this person working at Microsoft. I guess I am not alone in hating my work experience there, but holy crap, I didn't think it was still that raw inside of me. There's a kind of horror to digging through an ERP that is unlike anything else. In regular programming, at least you usually have some way to use your IDE to help you hunt through the code base. In the ERP world, you are hunting through layer after layer after layer, each one having a more monstrous user interface than the last, finding custom code at every layer that you have to read and is specific to only that layer. At some point, I ironically found that creating my own Microsoft Flows (now called Power Automate I think?) was the most powerful troubleshooting tool I had. I had to create my own work flows, applications, etc. just to be able to troubleshoot a different one. It truly is the worst of every possible world to work on ERPs. I would not wish it on my worst enemy.
To make a language, you need to do 2 things: convert correct programs into optimal code, and equally importantly, convert incorrect programs into helpful error messages. Typically people do neither. It's just some naive interpreter, and the errors you get are stacktraces of its internals that say nothing about your code.
x++ is actually pretty decent for ERP, there are native select statements etc. You can also use c# pretty freely, or just write a c# dll and call it from x++. Thing is most tasks are boring, rarely do you build your own features in an ERP
I think the reason for BS corporate projects is that it is easier to get approval for a bad solution than for a good one. At some point of project development, every solution becomes a bad one, and engineers lose track of good decisions and take the crappy path on autopilot.
Most programmers are just able to string functions together basically a builder on a construction side. As longs as they have concrete and bricks and a plan they can work. But most can’t design a building and the compose the right concrete, bricks and steel to build a unique structure. And this is really the case in web development and these days increasingly in game development.
@@jamfin6644 learn to build things from scratch no frameworks. Use the std lib or a programming language at most. This is why I promote to do assembly and C (no extra libraries). Then you’ll learn to actually create software with the least amount of help from stuff that others have created.
I used to work for Avanade, a consulting company part-owned by Microsoft (yet we still celebrated every year Microsoft gave us an award, lol). Thankfully, I worked on mostly non-Microsoft projects, but it was still very apparent how different Microsoft's own offerings are from basically everything else.
what always fascinates me about DSL creation is that there are already available general-purpose languages for that (lua, clojure, python, etc) and people still choose to write their own one. and it's never a good DSL, no, they have to do some weird C-preprocessor-based DSL or json/xml-based DSL, hack onto java parser or some other bs like that. i wonder what the process is for that? yes, it's not that hard to write some GC or some parser, but it'll still take a couple of weeks and will be much worse than the already available solutions
The lying about the slowness part, that's why customers' reps should never be allowed to talk to the engineers. Unless the product is the most stellar one anywhere, there are only two outcomes, they tell the truth and hurt the sales or lie and land the whole company in legal hot water. There are highly trained sales people who are product experts, and can weasel their way out of inconvenient questions.
It's always possible they told something they believed to be true. At my job I was once showing an issue with an internal dependency to the devs working on it. After waiting for what I thought is a normal amount of time, I received a question if their software is always so slow on our machines. They had no idea. :D :D
Yeah I've gotten dirty looks a good bit before as the engineer side when they drag the customer around as I answer the wrong question. I now warn them pretty openly when joining a team I will just blurt out the answer to the question without considering sales and to keep me away from the customer if they don't want that. So they hide me unless it's the customers engineering guy around who knows what's really up instead of their management.
@@noradseven As an engineer (not SW) and an inveterate blurt machine, I used to joke that if you take me with you as a domain expert to a meeting with a customer, get 30 feet of gaffer tape and carefully tape my mouth shut.
No second thoughts !! And if they have to blame India, then they forget the amount of stress work Indians have to do for peanuts salary/growth and then expect those devs to deliver quality code.
The reason libraries like lodash come back is that if you're working in a trigger happy company that puts devs under pressure to ship fast and blames them for issues, you don't want to be the engineer that messed up some big customer's data or dashboard because you hand rolled your own merge function and ended up missing an edge case.
Microsoft confusingly has 2 ERPs. Finance and operations is the big one that competes against SAP and Oracle. Business Central is the smb one that competes against Netsuite. It’s pretty great actually, you can do anything with it, make API pages and generate schema, etc. Prob one of the best systems to develop against (as an external dev not so much programming inside it)
Lua is where I learned to be clever in Javascript, in old JS if you built a brand new object inside your function and add properties and functions to the object then return it, its basically a class!
Sometimes I feel like devs think they are entitled to have the most fun and diverse job that has ever existed where they get to innovate and only do fun things at all times.
While not the sole factor, I guess one of the limiting factors you ultimately put on your own career is that you stay in a position to which you feel entitled. Viewed in another way, improvement comes when there is motivation and interest in improvement. This doesn't have to be directly emotionally driven either. Improving something can often be the pragmatic response. However, to the point you seem to be trying to make, I don't entirely disagree but I think the real issue here is a lack of realism. Realism doesn't have to mean defeatism, of course. But to believe a company like Ms is the "be all and end all" and that its code base would necessarily be any better than any other seems the real issue - is to believe in advertising and propaganda over common sense. I do love a good war story but... It should come with less suprise unless it's from someone still quite green. While overall of a standard, I've personally had many experiences providing corrective feedback to Ms documentation and reported some nasty bugs over the years (with no t shirts I might add😂). I love a good war story but know to many people who have worked for Ms to believe in the fantasy version. But this is true of *any* company really and I'd have to say ms would rate highly for the standard of its products. Their competition practices were always their chief issue (and remain too a degree?) I have always found developers who are perfectionists can make good developers but need to be conscious of their tendencies, lest they come across as (or even become) prima donnas or simply naive.
Agreed, SWE here, im fortunate that my work is semi-interesting. Would I like to work on something that is super fun and exciting? sure...but I like my job, i like developing software. I consider working on interesting/exciting projects the cherry on top and not the whole sundae.
Yeah, and it's full of uninformed claims. Dynamics NAV is based on Navision, which has been bought by Microsoft in 2002. The claim that it's being developed around 2015 is ridiculous.
13:30 the problem isn't the programmers, it's the culture and the bosses. i advertise myself as an optimizer and wheel reinventor and that is either a bare, silent requirement or is a total deal breaker on its face. it's hard for companies to know they want that before it becomes a problem too big for one guy to fix.
Yesterday I rejected a Google recruiter call for tech leadership role. I have strong stance on way how devs are treated in the US based companies, starting from leetcode interview process..
Good decision. Here in Germany the mindset about US software companies and working for them significantly changed over the last couple of months. Just take Salesforce as an example. First talking about "we are a family", then firing thousands of people to keep the margin. Young people want to work for companies they can identify themselves with. I meanwhile see people moving to smaller companies, but more honest ones.
@@bruh-moment-21 well, I got about 15 YOE, it's easy to reject them for me heh In general, it's better to start career in startups, to get a wider perspective on building tech products, so a good choice for you
I would rather have a hiring process that is standardized and takes technical skill than a process that favors fake people that bullshit their way through
@@drakey6617 As I discussed with one Amazon recruiter, the leetcode decision comes from the top leadership, so it will not change within MAANG anytime soon.
Not just webdev, but the entire industry. Think about: 1. As a tester, setup "framework", do skeleton tests, then execute the living bugs out of the codebase 2. As a devops, setup build process, pipelines, optimizations, dockerize the living portability out of the codebase 3. As a mobile dev, setup framework, do skeleton page, the duplicate the living usability out of the codebase 4. As a designer, setup tools, reusable components style, then proceed to color every stinking button in 5 flavors each just in case ...the industry is the problem, we so rarely innovate anymore, it's just churn...garbage in, garbage out
5:40 Amazon is most likely planning to make their UI good eventually and just want that cottage industry to battle test the best UI, user experience, and business models before Amazon copies. It smells strong of what they did to many small businesses that depended on Amazon for selling and distribution.
Regarding ripping out libraries only to have the added back two weeks later, you should have added a unit test that failed if those libraries were installed and explained that they were removed for a reason.
It’s a great company with a lot of really interesting products. That’s not to say it doesn’t have its fair share of boring products, but those are often the ones that pay the bills and have the most stable jobs
@@apefu Depends on what's your kink... If you have a particular kink to be skull-fucked until submission, ERP solutions are indeed short for Erotic Role Play.
Every day I am reminded of the moment I sold my soul to the devil by writing a DSL to save our company’s dying product. Everything has changed since and the sales have skyrocketed. This small lang just has to keep up with ever increasing demands until the end of time. I occasionally wake up at night in a cold sweat having nightmares about its eventual collapse. The PTSD will haunt me forever even if I quit this job.
True story: Mate of mine is a white hat hacker. You won’t believe the amount of vulnerabilities he has found in Dynamics. At one point, Microsoft had to push the maximum payout amount because the leak he had found could burn the whole place down. He still has a big backlog of cases he just cant submit, because writing a report takes more time than finding actual vulnerabilities. The backlog consists of thousands of dollars.
Dynamics a.k.a known as Great Pains (Plains) Software, with their encrypted stored procedures and numbered table names that match chart of account codes. It is impossible to debug, troubleshoot and is slow AF. It is a remnant of 1990s Access style programming.
By the way - the modal error handling comes form the product being a database focused language - we want the transaction to either complete or fail completely. This is not a web based language - it is a pre-sql database language that has been forced onto the web.
I still write code for systems with 64k (yes, kilobytes) of memory... you can do a lot in 64k when you ensure you really only have the things you need. But, that takes a lot of effort, can't always do that for work. Still, for the things where I do use for example javascript, I minimize the things I depend on to an absolute minimum, it prevents so many headaches later on. An aspect I am missing from your discussion, the more crap you depend on, the more things can break in non obvious ways. The primary motivation here tends to be to minimize the time required for writing code, at the expense of both quality and long term viability of that code.
The lodash story is where architectural unit tests are a godsend - we use them in Java. You can write tests that guarantee a method or class isn't used in your codebase.
When a single page on a web application loads so much data you either have someone that made a service layer that has little to no granularity on the data to be requested and its domain model is extremely inflexible or obtuse. Or someone decided to make a lot of calls to different services and needs to join that information in the UI layer, but the service calls lack some sort of query filtering. Or.... Just dump everything on the page...
Worked on developing plugins for Microsoft Dynamics once. This software is like Windows registry editor on steroids. Widgets within widgets within widgets. In the same way that an atomic blast is awesome, this software is a horrifying, beautiful mess. But knowing this magnificent monstrosity is capable of running any business in existence, I somehow persevered and even felt satisfied by my work.
I primarily work on our ERP software and I prefer working on it than our data migration. It's fun to see how it interacts with business scenarios in real life and having the system work properly with the real life movement of information and material. Its nice when you see a new process save people 50% of their time by making a change to how they use the ERP.
34:00 I think it's even worse than that. Even if you give an employee a reasonable or even generous timeline to solve X, then there's a good chance they will procrastinate until their timeline becomes a teeny-tiny bit unreasonable and then they'll cut corners to overcompensate for it. Some people usually don't procrastinate, but I've never seen anyone who never procrastinates on anything. It's just human nature to put off offputting tasks, and some SWE tasks are more stressful than others.
You don't ever tell people the real deadlines. If something needs to ship in 2 months, you give engineers one month. If they fail to deliver, you make a big deal out of it, but then say the deadline can be moved by two weeks. Project management 101. Though the engineers will eventually catch on, most won't have the balls to do absolutely nothing even if they know the deadline isn't real.
15:04 - lol, Tizen OS… imagine building a small web app which has to run in Chrome 57 (released in 2017); no features newer than 7yrs and counting. Not as bad as IE, but still a bit irritating.
As someone who has been working with this particular software for a while, all I can say is this sounds like a solid skill issue to be honest. - Some of the complaints are fair, the HTTP header thing is kind of annoying, some of the syntax is or can be confusing, but the database integration is seamless, the transactional model it follows is surprisingly safe unless you royally fuck up... which for something that is basically a huge CRUD, is a big win. - The error handling is honestly really good. At almost any point any error will give you a full stack trace and a reason for the error, come on, i know it coming up as a modal is kinda weird, but it's done to ensure data integrity, since it will roll back all changes up to the error, it's software made to deal with money, no errors allowed. - The language is made by Microsoft, the compiler is made by them, VSCode is the logical choice. It's not NEARLY as bad as this paints it, unless you are dealing with disproportionately huge monolithic projects that go against all good programming directives, and that issues exists regardless of the language of choice. - App updates can be annoying but Microsoft themselves have already created tools to automate this, if you want to do it yourself and can't do it better then, well... - Is it slow? It CAN be, the base software itself runs pretty ok, it's a web thing so yeah it feels a bit slower than it used to 6 years ago when it had a native client, but it's also widely accessible and has like 60/70% more features so it's hard to evaluate. What CAN and WILL make it slow is cramming code in places where it ABSOLUTELY shouldn't go. I can't tell you how many times i've sat there for 10 seconds waiting for a page to load only to realise when i check the code that someone has decided to update all records in the selected table UPON RENDERING them. NO SHIT it's slow, but that is not the app though, it's the key-mashing monkey that failed to realise how dumb that decission is. Want to display 12 calculated fields per record on screen without creating SQL keys for it? I mean you can, but then you are not allowed to complain if it takes longer to load, and also, if your customisation is based only on calculated fields you probably should rethink the approach. - And finally. Microsoft does sell an OnPremise version of this. While i'll agree that the pricing for it is kind of aggresive, and that the licensing model charging you by SQL table is absolutely fucking stupid (the albsolute record mashing i've seen because of this makes me sad...), if you NEED or want more control over your data or the hardware running the solution you should definitely be selling this instead, SaaS is not for everyone and you should totally evaluate the possibilities and present them to your customers. I'm not defending Microsoft plainly. The software does have a lot of shortcomings. It was designed to do what it does and nothing more. If you are used to building applications from scratch, or using litterally whatever tooling to do certain things, just using your own way of problem solving problems for a customer this will field slow and clunky. You have to understand you are writing what are basically plugins for a way bigger application that is already working. It's like being an Android developer and complainig that the system APIs fall short of what you need. Of course they might, or maybe you haven't found them all yet. Or making a driver for Linux and recompiling the whole Kernel yourself because you needed to change something. You can do that, but it will become a maintainability nightmare QUICK. The fact that the Microsoft team has like 4 different avenues to send them requests to improve or fix features that you come accross as failing or lacking has my respect. And while some parts of this whole thing will always be unnecessarily complicated, such is the nature of working with existing products. My business has worked with Odoo, SAP and X3 alongside Microsoft's Dynamics. All of them have this same issues. TL.DR.: If you know what you are doing most of this issues dissappear. But i get that learning this can get frustrating.
at least i must say the documentation and community is getting better. and one of the reasons clients take this ERP is they know that microsoft will be around the next 50 years. Imagen betting millions of dollars to a company of 10-20 people that existed for few years and could be gone in the near future.
33:58 I love this entire analogy. Like. You even if it takes a bit more time, you should fix the underly problem rather than bandaiding it, because you are ultimately making it harder to properly fix in the future.
For mobile you need strong api versioning and a killswitch to force users to update if you can afford it. It adds a full extra layer of complexity. Things that help are to have the business logic well factored in its smallest units as possible so that you can recombine it easily facilitating the creation and deletion of endpoint versions and to make the creation and deletion of endpoint versions as detached and easy as possible. The true difficulty is in isolating the technical aspect of creating a new endpoint version from the business logic, it’s trickier than you may think.
16MB across 153 requests is about 107KB each, means a lot of the requests can be saved by combining files together. css sprites for images, JS bundles(no webpack, just concating together files) for JS, and CSS bundles for all that CSS code. or just remove all that legacy code and finally serve simple text websites to the browser. 16MB for a text page is excessively large!
Regarding the story at 11:14, wouldn't tree shaking cause any installed package to be reduced down to only the imported functions from it in a production build?
So I've worked a bit on the Power Platform and it really annoys me. Worst part is I can see the value in it, but then there are these weird, obviously important things that they skipped because reasons. Like Power Apps has no functions. I mean, it's low code, you aren't supposed to write much code, but if you have to write the same code in multiple places and don't want to repeat yourself... Nope, can't do that unless you create an invisible button that is clicked to invoke the function, and that thing doesn't take arguments and cannot return anything, especially because it's not even run the moment you click it but at some later time. It's also ungodly slow, though also fast enough that it still works.
ERP Software is created through a byte stream from hell! The article is not exaggerating. MS Dynamics is just a bunch of companies MS bought some years ago. If you read MS Dynamics, Oracle or SAP in a job or project description: RUN!
Dynamics comes from way before 2015... this was built on top of Dynamics AX which has been around since the mid-2000s. That language isn't even a DSL, it's a whole custom programming language called X++ for programming their data models. Then they just slapped and web frontend (HTML, CSS, JQuery, React, blah, blah) in front of that. Then, deploy it to the cloud and call it new.... it truly sucks.
Re: Lodash. That’s when I’d write a unit test to make sure a dependency was absent. Leave a comment near the test explaining why Lodash is a bad idea in this context.
I want more people to be aware of just how slower Windows 11 is compared to previous versions despite both SSD and RAM becoming blazingly fast. Boot up file explorer on windows 11 and click around and navigate different folders, then do the same in windows 10, then 7, it'll get faster and faster the more you go back. I'm running a 13700k on a blazing fast NVME SSD and file explorer on windows 11 is slower to open anything and has hangups FAR MORE than Windows XP running on 512mb of ram and a mechanical hard drive. It's actually insane how bad their software got.
In my experience it isn't because they didn't read the docs, is that they didn't understand them. Instead, I've seen mindless replicating patterns in places it didn't make any sense. Hooks are good, let's use hooks for things that we don't need them. You have to understand functional programming first and that requires a lot more than reading the docs. I like the design of react, but I don't like working in a react codebase.
React gets bad rep, because it just straight up isn't easy. Took me years to stop being completely garbage at writing React code. For the first year I completely hated it, because it went against all my intuitions built over almost a decade of OOP. The reality is most devs won't spend years learning something, they will rather blame the tool.
I wish the OP talked about how Dynamics (and so many other products from companies like MS) are mostly built by a company they acquired. Trying to find some kind of uniformity and consistent quality in codebases where your company is in the mode where acquiring is better ROI than building from the ground up is gonna be hard.
I worked on ms dynamics ERP. One day I got so bored I just stopped working (remote) until I got terminated (4 months, yes it's so boring that they noticed after 3 months) . I studied other stuff and applied for a better job in the mean time. lol.
There are frequent references to the Indian coders on the other side of this project. What fascinates me is that these references are all compassionate. The OP knows that their people just like them working in India, and imagine they're working situation must be worse than them to produce this code. We're all in this together, doing just as much as we are paid to do, and for most of us a lot more.
Can confirm about various TV devices being totally underpowered in those days. I worked at one of the big cable companies in the early 10s. I wasn't involved with the effort, but they had a program massively fail where they tried to convert the cable boxes use HTML and JS rather than whatever was native, and it had to scrap it because the cable boxes just didn't have enough power to do it at the time. It was like a failure of 10s of millions spent on it.
I have a relative who used to work at AWS and he used to be a team lead in the their elastic search alternative called open search and his dream job used to be microsoft. He grinded hard even with a baby on their way and cleared the interviews, now they ask him to change color of buttons. So much talent, all gone to waste
Most problems I've encountered as developer boil down to just human nature. As soon as you have some very passionate people and some very unmotivated-i-will-just-do-the-minimum-people at any company. You will encounter countless problems, because of the massive conflicts of intereset that will happen. This will usually end up in 2 scenarios 1: passionate people simply leave until no more passionate people are left and everything slows down dramatically until the company goes bankrupt eventually 2: passionate people try to work as much as possible with the ones who are also passionate, which ends up in the company being held up by 20% of the work force, while the other 80% are just laying back and enjoying the show
"I'd rather use YAML than a DSL." Oh, my sweet summer child, you can't escape DSL's just because you use a standard configuration file. Invariably, that configuration file will _become_ a DSL in all but name, except you're now stuck with the syntax and the lack of invariants of configuration file syntax - welcome to the worst of both worlds. Use a real language for configuration.
Not a programer but you have done a great job of describing the number one reason why humans make bad code I have seen, coders only work on the code. Human beings on a project have to make a system and as human beings they HAVE to in some way exploit that system for their needs. The coder that is not or does not feel empowered to give meaning full feedback and the manager who just wants things done make failed systems and that means even the best of code will be jank. Traps like "everyone must give feedback to be perceived to have read the email" and "I know what the right tool for this is but a hammer is all I have, I just make it work" are sure signs you are creating the wrong thing.
Some people blame microsoft for having to buy more memory, and a better CPU, just to run the unnecessary parts of their junk. This is correct, and MAY even be intentional if microsoft gets profit from that somehow. Azure cranked this up to 11. Buy more bandwidth YET still not make the page load faster, microsoft is losing its touch in causing hardware sales for problems they caused by making the hardware upgrade NOT solve it this time.
Digital Plumbing aint much, but its honest work.
Somebody's gotta do it
It's a me!
Batteling Enterprise Software can be so much fun though!
I mean.. lot's of people have thoughts to ditch software engineering for plumbing or other manual labor. It's not the lack of creativity people hate about this this job.
I'm at the end phase of building an actual product right now. Well, more like prototype of a product, but roughly 70% feature-capable.
99% of that project was digital plumbing and 1% was existential horror.
People outside the company see Microsoft as a monolithic juggernaut. In reality, it’s 300 small businesses with shared HR and marketing departments. Just because the C# team is amazing, there’s no reason to believe some ERP product team is also going to amazing at building their own DSL. The teams are probably located at least 1000 miles apart and never, ever talk to each other.
I used to work as customer support for Azure and we were one of many companies outsourced by them. Where your ticket will end up is RNG. We had an office in Nigeria and during Covid they couldn't have home office because some employees didn't have internet at home..they rented hotel rooms so they could work on WiFi. Also when our European manager went there for a visit, they hired 2 bodyguards with rifles to protect him on the streets like it's a Vin Diesel movie.
You can say that to every big tech company that usually has more than hundred thousand devolopers, not just Microsoft
amen to that. i work for a big company. oh boy bearacracy can be fun. more fun when they actually try to standardize and realize its going to take time to wrangle everything.
Yes. All big corporations are like that. I have a difficult time explaining it to less intellectually endowed people. Just because a team's manager did not give you an offer at the end of the interview, it does not mean that you should not try applying to another team. Just because one team is good or bad, it does not necessarily mean that you can extrapolate anything about them to another team within the same company.
@@MuttleyGames sounds insane and abusive, yep, its a big tech company alright!
For 9 to 5 jobs, I want to be bored. The alternative is being stressed and that's much worse.
Exactly. Boring is ten times better than stressful job, which pays the same.
I believe, in the long run, boredom is worse for you than stress
@@assassinduke1 oh piss off, try working construction, or in a factory manned by psycho, bootlicker bosses
@@assassinduke1No, it isn’t. I won’t be bored after I log off to be with my wife and kids and do other things I love for reasons that are not making a billionaire shareholder even richer.
Both seem equally undesirable.
Extreme stress can lead to quick burnouts, but extreme boredom slowly makes you miserable and depressed all of the time.
I don't want either. I want to at least enjoy what I'm doing so I don't feel like shit all the time.
The stock market is just a graph of rich people's feelings
Real
Damn, that’s actually really deep. Is that your idea or did you hear it somewhere?
Tell me you have no conception of how a market works
@Sammysapphira the stock market is like two steps removed from the markets in general. You can tell with companies like tesla, which sell at rediculously high values for a company whos last product is best known for rusting immediately, removing end user fingers, and having the accelerator stick.
If you buy and sell based on logic, you will have moments where you lose because idiots think turdx is going to the moon.
@@Sammysapphira Nah, hes right. Theres more money then sense in the market and to really evaluate it you'd have to look at what happened in the last 10 yrs.
Pandemic screwed things up and "accelerated" stuff by skipping 2 - 3 years so really the last 6 years. (Hopefully not the norm going forward)
This is not a Microsoft thing... this is an ERP thing. Always decade old codebase, bespoke language for customer customizations, need to keep compatibility with the customizations the consultants made over those decades, massive code bases with hundreds of modules (and every customer using a unique combination of those). Look at SAP - more than 100.000 tables in the database, ABAP language... and the saying that "a company that survives an SAP installation will survive anything".
i'm also a ERP developer for Microsoft Dynamics 365. it's boring, can't find good resources online and no large community. should i move away from this other industries? i'm not enjoying this.
I remember the first time I ever had to use SAP. I was young and stuck in a dead end sales job.
-When we wanted to print a quote for a customer it was literally an entirely unintuitive 22 step process.
- Errors were frequent and used two or three different UI toolkits because it was an unpredictable hodge podge of VC++, VB, and duct tape
- Error messages were often half in English, half in German. No they weren't putting the same error in two languages, it just left half the message ambiguous if you couldn't read one language or the other.
So of course what was the corporate world's reaction? "YES MOAR OF THIS PLZ." SAP's meteoric rise is the single greatest sign in all of human history that C-levels are all lobotomy patients.
@@mohamedmurshid9794your a X++ developer?
@@mohamedmurshid9794 Use it as a stepping stone to get where you want. a 9-5 job is not supposed to be fulfilling, its supposed to pay the bills and hopefully the funds to do what you actually want to do.
@@PatrickRatman Thank you. i needed this.
"Before moving to this department I was not really aware of the ERP space"
See kids, this is why you must always define your acronyms the first time you use them.
Yeah, ERP definitely has an urban dictionary definition, ya know
so it doesn't stand for Economics Role Play ?
Or stop using acronyms and use simple boring names
@@RustIsWinningin business, ERP stands for “Enterprise Resource Planning”. However, on the internet it stands for “Erotic RolePlay”
@@Definesleepalt enterprise resource planning i remember using a program that only worked in telnet on newer systems had to finaggle it to work
All ERP or similar system more or less have similar problem. They are not designed for traditional developer who like to write code and know how computer work, they are designed for enterprise developers who like to configure instead of writing code. There are many ERP people I met barely know anything outside the ERP product. These kind of development is also more difficult to attract good talent
Sounds similar to my current job. It started with working with a customer that allowed me to write code and design/simplify the whole stack. Now, my current boss makes comments which leads me to believe he just want quick hacks, IT plumbing, and no coding/designing that takes more than a week. To be honest, he does not understand what made me successful and desired in his department in the first place or is way too scared of stepping outside his lane to give me the breathing room to do good long term strategizing and programming that will make him look good in a couple of years (with small Ws every 6 months or so). I feel overpaid for my current role but I need larger and long term projects to help them properly.
I think you are right. At some point, managers only want staff to solve everything with a configuration or script change.
That's why all software built on top of SAP looks and feels as it was imagined on a hippy party, designed by a blind bureaucrat and written by a bunch of monkeys high on cocaine.
Yes and no, it depends on the type of client you end up being assigned work for. More often than not, I end up having requirements land on my desk that on paper sound like they are doable with the OOB features, so of course the client wants them, but in actuality there's silly nuances or they specifically hate how this one X thing works and I end up having to build a custom solution anyways since there's no point in customizing OOB functionality past a certain point once you're having to deal with 20 different edge cases that introduces.
At least that's been my experience, it's more a case that on the surface this all looks like a configuration and tweaking job, but reality more often than not dictates otherwise and then you end up with either having to build it or the client deciding "nah, this isn't worth the cost, we'll do it manually through excel", which is the most dreadful thing to hear since that usually almost always means they want to import the data they are working with from excel and unless they strictly abide by what the system allows for, that's another custom solution!
@@chadyways8750 yeah, I think you are right.
it’s abstracted like a CMS
Dynamics ERP is a Frankenstein monster of IP acquisitions stitched together into a freakish approximation of software. This guy isn't a software engineer, he's a necromancer.
Or a Chirurgeon in a fantasy setting, since what you are describing is a vast freakish chimera.
You know what's really scary -- Microsoft Dynamics it's better than anything the competitors -- Oracle, SAP, or Netsuite offer.
My work paid a consultant to migrate us from our in house system to Dynamics, which took 6 months, then 1 month later they paid the same consultant to migrate us to Salesforce.
Demand outgrew talent to do things properly years ago, in most other industries too. Sadly you're most likely to get people faking it through the day instead of a proper ERP engineering team.
I had the misfortune of working with dynamics last year. I developed sight issues from high blood pressure where I could feel my pulse trough my eyes. Thankully it went back to normal after I took a sick leave and demanded to be taken of the project.
you mean like this kind of dynamics?
en.wikipedia.org/wiki/Dynamic_programming
Without learning the fundamentals, you would have only made a mess anyway. I've spent half my career cleaning up after people thought they could put anyone in.
“What if we add a new toolbar row to outlook. Lets rewrite outlook to use JavaScript bullshit. Bring in the Internet Explorer team“
Internet Explorer team: "Javascript? How about activex and vbscript?"
The new outlook app is actually horrible, it crashes constantly just when I'm trying to open an email. The previous one worked fine wtf is microsoft doing
@@NihongoWakannai The new app is so slow and cluttered. And it has ads which I think is the main reason for the new app.
Apparrently even electron wasn’t good enough for them. Deleted edge, broke teams. Still sticking to windows mail, because at least that one just works.
@@NihongoWakannai First time? I worked on a helpdesk long ago. About half my job was showing people where to find options in outlook menus. And it crashed a lot back then already. In fact, it always has.
Microsoft was building their cloud services before it was called the cloud. They've been at this since the mid 2000s.
Same with IBM in AI, they just couldn't keep up
This post is funny because it starts out referring to "Microsoft Dynamics ERP" as one singular product when they actually have at least 4 ERPs under Dynamics branding (which were in most cases acquired rather than built in house, I believe).
Never thought Microsoft would be so much into ERP
Yup. Microsoft decided to go into the ERP market in like the late 1990s or early 2000s. And, a year or two later they decided to just buy out their competitors, and DOJ antitrust inexplicably let them do so. They bought *4* of their competitors at the same time! Those names like "Microsoft Dynamics AX" and "Microsoft Dynamics GP", the letters are initials or shorthand for the companies that originally made them.
Once had two write a dynamics app / integration. It was impossible to find documentation. Or better: impossible to find actually correct documentation. Everything was insanely slow and in the end we had to say: Yeah, we can do it, but it'll cost you so much, like soo much... We then agreed on a CSV export.
Honestly when it started 'webdev' I knew he was set up to fail.
@@hwertz10 Inexplicably? US antitrust is a joke. Its not even a paper tiger. They havent done anything since the breakup of the Bell telephone company.
I pray for the day he reads an article about Salesforce
I worked Tier 2 Support for Salesforce. It was without a doubt the 2nd worse job I've ever had, only beat out by being a Salesforce Consultant and Developer.
To put that in perspective. I worked at a factory that manufactured steel products as a welder after because I was so in hate with tech 😂
Regarding "Custom language": That's always a red flag!
My collegues on another project have to work with a "custom language" built in the 90s, where:
- Has no constants (documentation even states "Please don't change the value of Math.PI!")
- Is a mixture between XML programming (yes, think "......") and some custom scripting language inside XML attributes
- Custom XML functions can call custom script functions, but custom script functions cannot call custom XML functions
- IDE is based on Eclipse, where the language specific code completion and performance looses hard against any IDE built in the last 20 to 30 years
- No debugger ("Just invoke message-boxes and Expression-Editor windows")
- No test framework ("We ourselves (the vendor) use the logs to verify functionality")
- No try/catch
- Stacktrace is dependent(!) on the log-level(!)
- Documentation with mixed quality and helpfulness (eg. in the file handling topic with "open", "read", "exists",... there is also "ConvertColors"(!))
Dear god no…
I saw … … constructs In some research papers at university and ran a mile… maybe that kinda stuff really made it out into the wild as a good idea…
Holy Annabelle Byron...
what... what does "ConvertColors" do? WHAT DOES IT DO?!
I love it when half the comments are onlyfans bots
I couldn't even get that deep in the video because I was getting flashbacks to me experiencing the same thing as this person working at Microsoft. I guess I am not alone in hating my work experience there, but holy crap, I didn't think it was still that raw inside of me. There's a kind of horror to digging through an ERP that is unlike anything else. In regular programming, at least you usually have some way to use your IDE to help you hunt through the code base. In the ERP world, you are hunting through layer after layer after layer, each one having a more monstrous user interface than the last, finding custom code at every layer that you have to read and is specific to only that layer. At some point, I ironically found that creating my own Microsoft Flows (now called Power Automate I think?) was the most powerful troubleshooting tool I had. I had to create my own work flows, applications, etc. just to be able to troubleshoot a different one. It truly is the worst of every possible world to work on ERPs. I would not wish it on my worst enemy.
I created an alternative to YAML, I call it SCAML
To make a language, you need to do 2 things: convert correct programs into optimal code, and equally importantly, convert incorrect programs into helpful error messages. Typically people do neither. It's just some naive interpreter, and the errors you get are stacktraces of its internals that say nothing about your code.
x++ is actually pretty decent for ERP, there are native select statements etc. You can also use c# pretty freely, or just write a c# dll and call it from x++. Thing is most tasks are boring, rarely do you build your own features in an ERP
Windeez Nuts 11
"The cloud Kool-Aid is an expensive drink." God bless you, Prime. 😂
I think the reason for BS corporate projects is that it is easier to get approval for a bad solution than for a good one. At some point of project development, every solution becomes a bad one, and engineers lose track of good decisions and take the crappy path on autopilot.
Most programmers are just able to string functions together basically a builder on a construction side. As longs as they have concrete and bricks and a plan they can work. But most can’t design a building and the compose the right concrete, bricks and steel to build a unique structure. And this is really the case in web development and these days increasingly in game development.
How do I become a “builder“ as a web developer that works with bricks and concrete and sometimes a plan? I
@@jamfin6644 learn to build things from scratch no frameworks. Use the std lib or a programming language at most.
This is why I promote to do assembly and C (no extra libraries). Then you’ll learn to actually create software with the least amount of help from stuff that others have created.
I used to work for Avanade, a consulting company part-owned by Microsoft (yet we still celebrated every year Microsoft gave us an award, lol). Thankfully, I worked on mostly non-Microsoft projects, but it was still very apparent how different Microsoft's own offerings are from basically everything else.
what always fascinates me about DSL creation is that there are already available general-purpose languages for that (lua, clojure, python, etc) and people still choose to write their own one. and it's never a good DSL, no, they have to do some weird C-preprocessor-based DSL or json/xml-based DSL, hack onto java parser or some other bs like that.
i wonder what the process is for that? yes, it's not that hard to write some GC or some parser, but it'll still take a couple of weeks and will be much worse than the already available solutions
Most likely it's all about control and corporate IP
@@vladonutueu what's the purpose for having IP on internal product?
Vendor lockdown is my added guess. And selling support.
@@kingxerjsaeg yes, selling support does sound like the most likely answer.
The lying about the slowness part, that's why customers' reps should never be allowed to talk to the engineers. Unless the product is the most stellar one anywhere, there are only two outcomes, they tell the truth and hurt the sales or lie and land the whole company in legal hot water. There are highly trained sales people who are product experts, and can weasel their way out of inconvenient questions.
It's always possible they told something they believed to be true. At my job I was once showing an issue with an internal dependency to the devs working on it. After waiting for what I thought is a normal amount of time, I received a question if their software is always so slow on our machines. They had no idea. :D :D
This article could actually be a legal liability for all parties involved tbh.
Yeah I've gotten dirty looks a good bit before as the engineer side when they drag the customer around as I answer the wrong question. I now warn them pretty openly when joining a team I will just blurt out the answer to the question without considering sales and to keep me away from the customer if they don't want that. So they hide me unless it's the customers engineering guy around who knows what's really up instead of their management.
@@noradseven As an engineer (not SW) and an inveterate blurt machine, I used to joke that if you take me with you as a domain expert to a meeting with a customer, get 30 feet of gaffer tape and carefully tape my mouth shut.
Author seems to believe that a " Team in India " is the source of his problems, when in reality the problem is upper management in the US.
always
fr. hamesha india pe naam daal dete h.
nah they just insecure, because companies are offshoring work to India
No second thoughts !!
And if they have to blame India, then they forget the amount of stress work Indians have to do for peanuts salary/growth and then expect those devs to deliver quality code.
No. He acknowledges that mgmt is the root of his troubles. The team in India is just the unwitting weapon in the hands of mgmt.
Never seen someone pronouncing "Azure" as "Ass you air" 😂🎉
Yanks call it "Azz ure".
"Ass You Are" 😅
Truer words have never been uttered.
He also calls sql squeal lol
The reason libraries like lodash come back is that if you're working in a trigger happy company that puts devs under pressure to ship fast and blames them for issues, you don't want to be the engineer that messed up some big customer's data or dashboard because you hand rolled your own merge function and ended up missing an edge case.
Microsoft confusingly has 2 ERPs. Finance and operations is the big one that competes against SAP and Oracle.
Business Central is the smb one that competes against Netsuite. It’s pretty great actually, you can do anything with it, make API pages and generate schema, etc. Prob one of the best systems to develop against (as an external dev not so much programming inside it)
"You can't be clever in Lua"
Me: Looks at code.
Yeah Lua is more dynamic than Python
Lua is where I learned to be clever in Javascript, in old JS if you built a brand new object inside your function and add properties and functions to the object then return it, its basically a class!
Me: looks at people being way more clever than I ever could while making games for the pico-8
Me: Looks at the code in games and mods.
@@xXYourShadowDaniXx yeah a function in javascript is basically also a class, which is weird but useful. but still weird
Sometimes I feel like devs think they are entitled to have the most fun and diverse job that has ever existed where they get to innovate and only do fun things at all times.
Are you advocating that job satisfaction rates should be lower?
@@Muskar2 No, I'm advocating for common sense.
@@fronix5060 Powerful message
While not the sole factor, I guess one of the limiting factors you ultimately put on your own career is that you stay in a position to which you feel entitled.
Viewed in another way, improvement comes when there is motivation and interest in improvement. This doesn't have to be directly emotionally driven either. Improving something can often be the pragmatic response.
However, to the point you seem to be trying to make, I don't entirely disagree but I think the real issue here is a lack of realism. Realism doesn't have to mean defeatism, of course. But to believe a company like Ms is the "be all and end all" and that its code base would necessarily be any better than any other seems the real issue - is to believe in advertising and propaganda over common sense. I do love a good war story but... It should come with less suprise unless it's from someone still quite green.
While overall of a standard, I've personally had many experiences providing corrective feedback to Ms documentation and reported some nasty bugs over the years (with no t shirts I might add😂). I love a good war story but know to many people who have worked for Ms to believe in the fantasy version. But this is true of *any* company really and I'd have to say ms would rate highly for the standard of its products. Their competition practices were always their chief issue (and remain too a degree?) I have always found developers who are perfectionists can make good developers but need to be conscious of their tendencies, lest they come across as (or even become) prima donnas or simply naive.
Agreed, SWE here, im fortunate that my work is semi-interesting. Would I like to work on something that is super fun and exciting? sure...but I like my job, i like developing software. I consider working on interesting/exciting projects the cherry on top and not the whole sundae.
This reads like an article a kid wrote specifically to tick prime's checkboxes
Yeah, and it's full of uninformed claims. Dynamics NAV is based on Navision, which has been bought by Microsoft in 2002. The claim that it's being developed around 2015 is ridiculous.
@@ESPViper100 I was thinking Dynamics GP (Great Plains, 2001 purchase)
This could be reverse causation. Prime is popular because his rants reflect the unspoken voices of the masses.
Almost every company is a blackhole of talent and money, to be honest.
13:30
the problem isn't the programmers, it's the culture and the bosses.
i advertise myself as an optimizer and wheel reinventor and that is either a bare, silent requirement or is a total deal breaker on its face.
it's hard for companies to know they want that before it becomes a problem too big for one guy to fix.
Yesterday I rejected a Google recruiter call for tech leadership role. I have strong stance on way how devs are treated in the US based companies, starting from leetcode interview process..
Good decision. Here in Germany the mindset about US software companies and working for them significantly changed over the last couple of months. Just take Salesforce as an example. First talking about "we are a family", then firing thousands of people to keep the margin. Young people want to work for companies they can identify themselves with. I meanwhile see people moving to smaller companies, but more honest ones.
reject amazon recruiter call as a fresher 4 days ago 💪
@@bruh-moment-21 well, I got about 15 YOE, it's easy to reject them for me heh In general, it's better to start career in startups, to get a wider perspective on building tech products, so a good choice for you
I would rather have a hiring process that is standardized and takes technical skill than a process that favors fake people that bullshit their way through
@@drakey6617 As I discussed with one Amazon recruiter, the leetcode decision comes from the top leadership, so it will not change within MAANG anytime soon.
Not just webdev, but the entire industry. Think about:
1. As a tester, setup "framework", do skeleton tests, then execute the living bugs out of the codebase
2. As a devops, setup build process, pipelines, optimizations, dockerize the living portability out of the codebase
3. As a mobile dev, setup framework, do skeleton page, the duplicate the living usability out of the codebase
4. As a designer, setup tools, reusable components style, then proceed to color every stinking button in 5 flavors each just in case
...the industry is the problem, we so rarely innovate anymore, it's just churn...garbage in, garbage out
Roasting AWS's UI warmed my heart thank you.
Bro asked "0 to webpack?" and I'm remembering my bout with the Sharepoint framework thinking "bro it's probably a wrapper for webpack"
5:40 Amazon is most likely planning to make their UI good eventually and just want that cottage industry to battle test the best UI, user experience, and business models before Amazon copies. It smells strong of what they did to many small businesses that depended on Amazon for selling and distribution.
Regarding ripping out libraries only to have the added back two weeks later, you should have added a unit test that failed if those libraries were installed and explained that they were removed for a reason.
ERP in my industry is "Emergency Response Plan".
14:35 We are using WASM (Rust) instead of js/lua for those purposes
I love the way you cover difficult topics. Your videos are always clear and informative.
I'm literally on round 3 interview with microsoft and prime posts this
Run!
Good luck.
"black hole of money" has a good side...get yourself some of that money!
It’s a great company with a lot of really interesting products. That’s not to say it doesn’t have its fair share of boring products, but those are often the ones that pay the bills and have the most stable jobs
best job I've ever had. its a huge company with a million teams and products.
"Too tight of a timer to solve X"... That's why I love the company I'm working at: we don't have hard deadlines :)
Make fun of Microsoft all you want but name me an ERP you'd rather work in than Dynamics if you are serious..
"Name me an ERP you wanna work with" none thank you
I just love that ERP is also short for E*otic Role Play. Nothing could be further from each other.
The old dynamics was nice, the browser one is eclipsed sadly
I'd rather use SAP, but if I got my way, I'd remove the entire concept of ERP from the timeline.
@@apefu Depends on what's your kink... If you have a particular kink to be skull-fucked until submission, ERP solutions are indeed short for Erotic Role Play.
Every day I am reminded of the moment I sold my soul to the devil by writing a DSL to save our company’s dying product. Everything has changed since and the sales have skyrocketed. This small lang just has to keep up with ever increasing demands until the end of time. I occasionally wake up at night in a cold sweat having nightmares about its eventual collapse. The PTSD will haunt me forever even if I quit this job.
True story: Mate of mine is a white hat hacker. You won’t believe the amount of vulnerabilities he has found in Dynamics. At one point, Microsoft had to push the maximum payout amount because the leak he had found could burn the whole place down. He still has a big backlog of cases he just cant submit, because writing a report takes more time than finding actual vulnerabilities. The backlog consists of thousands of dollars.
Prime like "Woo, I saved 50KB" while I'm out here lazy loading every page in my works application and being like "Woo, I saved 1Mb out of 6MB"...
Dynamics a.k.a known as Great Pains (Plains) Software, with their encrypted stored procedures and numbered table names that match chart of account codes. It is impossible to debug, troubleshoot and is slow AF. It is a remnant of 1990s Access style programming.
I Desperately want to see prime learn about ABAP
This is the way:
reading yaml > writing yaml > reading json > writing json > parsing json > parsing yaml
Feel like this might be my favorite vid on your channel now😂
I feel this authors pain, from a security persective
tehehe your netflix story makes me chuckle, I struggle from the other side, must not re-invent every wheel.
Great article and video. Vindicated everything I felt using Microsoft websites and tools
By the way - the modal error handling comes form the product being a database focused language - we want the transaction to either complete or fail completely. This is not a web based language - it is a pre-sql database language that has been forced onto the web.
I still write code for systems with 64k (yes, kilobytes) of memory... you can do a lot in 64k when you ensure you really only have the things you need.
But, that takes a lot of effort, can't always do that for work.
Still, for the things where I do use for example javascript, I minimize the things I depend on to an absolute minimum, it prevents so many headaches later on.
An aspect I am missing from your discussion, the more crap you depend on, the more things can break in non obvious ways. The primary motivation here tends to be to minimize the time required for writing code, at the expense of both quality and long term viability of that code.
This is a very cathartic one to watch… thanks.
ERP... Extreme Role-play... Extreme D&D
"It does appear that programmers will try to do anything but program" SUCH A GOLDEN TAKE
The lodash story is where architectural unit tests are a godsend - we use them in Java. You can write tests that guarantee a method or class isn't used in your codebase.
The other "ERP" term you were thinking of is probably "External Reverse Proxy".
When a single page on a web application loads so much data you either have someone that made a service layer that has little to no granularity on the data to be requested and its domain model is extremely inflexible or obtuse. Or someone decided to make a lot of calls to different services and needs to join that information in the UI layer, but the service calls lack some sort of query filtering.
Or.... Just dump everything on the page...
Worked on developing plugins for Microsoft Dynamics once. This software is like Windows registry editor on steroids. Widgets within widgets within widgets. In the same way that an atomic blast is awesome, this software is a horrifying, beautiful mess. But knowing this magnificent monstrosity is capable of running any business in existence, I somehow persevered and even felt satisfied by my work.
the whole rambda, lodash thing, i'm not surprised knowing all the people i graduated comp sci with.
I'm just a silly digital artist not understanding a word of what's going on. But I love the energy here.
I actually did a lot of support work on the on prem GP software. I loved it, especially digging throw data on the SQL side.
I primarily work on our ERP software and I prefer working on it than our data migration. It's fun to see how it interacts with business scenarios in real life and having the system work properly with the real life movement of information and material. Its nice when you see a new process save people 50% of their time by making a change to how they use the ERP.
34:00 I think it's even worse than that.
Even if you give an employee a reasonable or even generous timeline to solve X, then there's a good chance they will procrastinate until their timeline becomes a teeny-tiny bit unreasonable and then they'll cut corners to overcompensate for it.
Some people usually don't procrastinate, but I've never seen anyone who never procrastinates on anything. It's just human nature to put off offputting tasks, and some SWE tasks are more stressful than others.
You don't ever tell people the real deadlines. If something needs to ship in 2 months, you give engineers one month. If they fail to deliver, you make a big deal out of it, but then say the deadline can be moved by two weeks. Project management 101. Though the engineers will eventually catch on, most won't have the balls to do absolutely nothing even if they know the deadline isn't real.
15:04 - lol, Tizen OS… imagine building a small web app which has to run in Chrome 57 (released in 2017); no features newer than 7yrs and counting. Not as bad as IE, but still a bit irritating.
As someone who has been working with this particular software for a while, all I can say is this sounds like a solid skill issue to be honest.
- Some of the complaints are fair, the HTTP header thing is kind of annoying, some of the syntax is or can be confusing, but the database integration is seamless, the transactional model it follows is surprisingly safe unless you royally fuck up... which for something that is basically a huge CRUD, is a big win.
- The error handling is honestly really good. At almost any point any error will give you a full stack trace and a reason for the error, come on, i know it coming up as a modal is kinda weird, but it's done to ensure data integrity, since it will roll back all changes up to the error, it's software made to deal with money, no errors allowed.
- The language is made by Microsoft, the compiler is made by them, VSCode is the logical choice. It's not NEARLY as bad as this paints it, unless you are dealing with disproportionately huge monolithic projects that go against all good programming directives, and that issues exists regardless of the language of choice.
- App updates can be annoying but Microsoft themselves have already created tools to automate this, if you want to do it yourself and can't do it better then, well...
- Is it slow? It CAN be, the base software itself runs pretty ok, it's a web thing so yeah it feels a bit slower than it used to 6 years ago when it had a native client, but it's also widely accessible and has like 60/70% more features so it's hard to evaluate. What CAN and WILL make it slow is cramming code in places where it ABSOLUTELY shouldn't go.
I can't tell you how many times i've sat there for 10 seconds waiting for a page to load only to realise when i check the code that someone has decided to update all records in the selected table UPON RENDERING them. NO SHIT it's slow, but that is not the app though, it's the key-mashing monkey that failed to realise how dumb that decission is.
Want to display 12 calculated fields per record on screen without creating SQL keys for it? I mean you can, but then you are not allowed to complain if it takes longer to load, and also, if your customisation is based only on calculated fields you probably should rethink the approach.
- And finally. Microsoft does sell an OnPremise version of this. While i'll agree that the pricing for it is kind of aggresive, and that the licensing model charging you by SQL table is absolutely fucking stupid (the albsolute record mashing i've seen because of this makes me sad...), if you NEED or want more control over your data or the hardware running the solution you should definitely be selling this instead, SaaS is not for everyone and you should totally evaluate the possibilities and present them to your customers.
I'm not defending Microsoft plainly. The software does have a lot of shortcomings. It was designed to do what it does and nothing more. If you are used to building applications from scratch, or using litterally whatever tooling to do certain things, just using your own way of problem solving problems for a customer this will field slow and clunky.
You have to understand you are writing what are basically plugins for a way bigger application that is already working.
It's like being an Android developer and complainig that the system APIs fall short of what you need. Of course they might, or maybe you haven't found them all yet.
Or making a driver for Linux and recompiling the whole Kernel yourself because you needed to change something. You can do that, but it will become a maintainability nightmare QUICK.
The fact that the Microsoft team has like 4 different avenues to send them requests to improve or fix features that you come accross as failing or lacking has my respect.
And while some parts of this whole thing will always be unnecessarily complicated, such is the nature of working with existing products.
My business has worked with Odoo, SAP and X3 alongside Microsoft's Dynamics. All of them have this same issues.
TL.DR.: If you know what you are doing most of this issues dissappear. But i get that learning this can get frustrating.
at least i must say the documentation and community is getting better.
and one of the reasons clients take this ERP is they know that microsoft will be around the next 50 years. Imagen betting millions of dollars to a company of 10-20 people that existed for few years and could be gone in the near future.
33:58 I love this entire analogy. Like. You even if it takes a bit more time, you should fix the underly problem rather than bandaiding it, because you are ultimately making it harder to properly fix in the future.
For mobile you need strong api versioning and a killswitch to force users to update if you can afford it. It adds a full extra layer of complexity. Things that help are to have the business logic well factored in its smallest units as possible so that you can recombine it easily facilitating the creation and deletion of endpoint versions and to make the creation and deletion of endpoint versions as detached and easy as possible. The true difficulty is in isolating the technical aspect of creating a new endpoint version from the business logic, it’s trickier than you may think.
16MB across 153 requests is about 107KB each, means a lot of the requests can be saved by combining files together.
css sprites for images, JS bundles(no webpack, just concating together files) for JS, and CSS bundles for all that CSS code.
or just remove all that legacy code and finally serve simple text websites to the browser.
16MB for a text page is excessively large!
Regarding the story at 11:14, wouldn't tree shaking cause any installed package to be reduced down to only the imported functions from it in a production build?
So I've worked a bit on the Power Platform and it really annoys me. Worst part is I can see the value in it, but then there are these weird, obviously important things that they skipped because reasons. Like Power Apps has no functions. I mean, it's low code, you aren't supposed to write much code, but if you have to write the same code in multiple places and don't want to repeat yourself... Nope, can't do that unless you create an invisible button that is clicked to invoke the function, and that thing doesn't take arguments and cannot return anything, especially because it's not even run the moment you click it but at some later time. It's also ungodly slow, though also fast enough that it still works.
ERP Software is created through a byte stream from hell!
The article is not exaggerating. MS Dynamics is just a bunch of companies MS bought some years ago.
If you read MS Dynamics, Oracle or SAP in a job or project description: RUN!
oracle is pretty broad
Dynamics comes from way before 2015... this was built on top of Dynamics AX which has been around since the mid-2000s. That language isn't even a DSL, it's a whole custom programming language called X++ for programming their data models. Then they just slapped and web frontend (HTML, CSS, JQuery, React, blah, blah) in front of that. Then, deploy it to the cloud and call it new.... it truly sucks.
Seeing this just as I'm learning that the company I work for is switching their ERP to Microsoft Dynamics 🙂
Re: Lodash. That’s when I’d write a unit test to make sure a dependency was absent. Leave a comment near the test explaining why Lodash is a bad idea in this context.
I want more people to be aware of just how slower Windows 11 is compared to previous versions despite both SSD and RAM becoming blazingly fast.
Boot up file explorer on windows 11 and click around and navigate different folders, then do the same in windows 10, then 7, it'll get faster and faster the more you go back. I'm running a 13700k on a blazing fast NVME SSD and file explorer on windows 11 is slower to open anything and has hangups FAR MORE than Windows XP running on 512mb of ram and a mechanical hard drive.
It's actually insane how bad their software got.
you are completely lie, i have no issues
I'm BIG on reducing dependencies. I work in c++ and am immediately angry if I see someone bring in boost.
'boost my build times higher so I can take 50 coffee breaks a day'
as far as dependencies go, you can do a lot worse than boost
Valid. Also Qt can eat my shorts
Anyone I know who's stepped through 10 lines of code in Boost knows what a bloated mess that is
That's the problem when they think they can fix everything with money. Money doesn't write code.
react gets a bad rep because juniors refuse to read the docs
LOL, refs for forms is the simplest or refs and addeventlistner 😂😂
In my experience it isn't because they didn't read the docs, is that they didn't understand them. Instead, I've seen mindless replicating patterns in places it didn't make any sense. Hooks are good, let's use hooks for things that we don't need them. You have to understand functional programming first and that requires a lot more than reading the docs. I like the design of react, but I don't like working in a react codebase.
React is for people who can't learn classes and functional programming.
React gets bad rep, because it just straight up isn't easy. Took me years to stop being completely garbage at writing React code. For the first year I completely hated it, because it went against all my intuitions built over almost a decade of OOP. The reality is most devs won't spend years learning something, they will rather blame the tool.
Forgot to add backend devs, while juniors don't understand the docs, backend devs have too big of an ego to read them and create an even bigger mess.
"Programmers will try to do anything but program" 🤣 I feel personally called out here.
It's fascinating that Microsoft still has a better culture, products and innovation than Google, Meta, Apple or Amazon...
I wish the OP talked about how Dynamics (and so many other products from companies like MS) are mostly built by a company they acquired. Trying to find some kind of uniformity and consistent quality in codebases where your company is in the mode where acquiring is better ROI than building from the ground up is gonna be hard.
I worked on ms dynamics ERP. One day I got so bored I just stopped working (remote) until I got terminated (4 months, yes it's so boring that they noticed after 3 months) . I studied other stuff and applied for a better job in the mean time. lol.
There are frequent references to the Indian coders on the other side of this project. What fascinates me is that these references are all compassionate. The OP knows that their people just like them working in India, and imagine they're working situation must be worse than them to produce this code.
We're all in this together, doing just as much as we are paid to do, and for most of us a lot more.
Can confirm about various TV devices being totally underpowered in those days. I worked at one of the big cable companies in the early 10s.
I wasn't involved with the effort, but they had a program massively fail where they tried to convert the cable boxes use HTML and JS rather than whatever was native, and it had to scrap it because the cable boxes just didn't have enough power to do it at the time. It was like a failure of 10s of millions spent on it.
Microsoft application = Developer employment for life
I have a relative who used to work at AWS and he used to be a team lead in the their elastic search alternative called open search and his dream job used to be microsoft. He grinded hard even with a baby on their way and cleared the interviews, now they ask him to change color of buttons. So much talent, all gone to waste
Most problems I've encountered as developer boil down to just human nature. As soon as you have some very passionate people and some very unmotivated-i-will-just-do-the-minimum-people at any company. You will encounter countless problems, because of the massive conflicts of intereset that will happen. This will usually end up in 2 scenarios
1: passionate people simply leave until no more passionate people are left and everything slows down dramatically until the company goes bankrupt eventually
2: passionate people try to work as much as possible with the ones who are also passionate, which ends up in the company being held up by 20% of the work force, while the other 80% are just laying back and enjoying the show
Maybe not 20/80, but I think 30/70 is true for most currently operating companies that are more than 10 years old...
"I'd rather use YAML than a DSL." Oh, my sweet summer child, you can't escape DSL's just because you use a standard configuration file. Invariably, that configuration file will _become_ a DSL in all but name, except you're now stuck with the syntax and the lack of invariants of configuration file syntax - welcome to the worst of both worlds. Use a real language for configuration.
Not a programer but you have done a great job of describing the number one reason why humans make bad code I have seen, coders only work on the code. Human beings on a project have to make a system and as human beings they HAVE to in some way exploit that system for their needs. The coder that is not or does not feel empowered to give meaning full feedback and the manager who just wants things done make failed systems and that means even the best of code will be jank. Traps like "everyone must give feedback to be perceived to have read the email" and "I know what the right tool for this is but a hammer is all I have, I just make it work" are sure signs you are creating the wrong thing.
27:54 viewer side is horrible too
Some people blame microsoft for having to buy more memory, and a better CPU, just to run the unnecessary parts of their junk. This is correct, and MAY even be intentional if microsoft gets profit from that somehow.
Azure cranked this up to 11. Buy more bandwidth YET still not make the page load faster, microsoft is losing its touch in causing hardware sales for problems they caused by making the hardware upgrade NOT solve it this time.
The bit about AWS in 5:20 made me think "nah, Microsoft beat them to the punch with Windows 8"
We are talking about ERP with this one! 🗣️