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.
@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.
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!
"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.
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.
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.
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.
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.
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!
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 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.
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?
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.
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.
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
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.
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.
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.
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.
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.
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.
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)
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.
@@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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
10:47 “It’s kind of impressive. I mean, we have to take a second and just think: somehow they got to this point thinking it was a good idea.” All of software engineering in a nutshell.
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.
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!
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!
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.
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...
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.
Beginner coder here, I basically do all my sql queries with a "do x until EOF", I didn't get why it's the devils loop (or what exactly would be so much better if I used "do x while not EOF"), maybe someone can elaborate.
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.
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.
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.
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.
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
8:10 actually, Nintendo made a DSL with control flow for animation scripting entirely in YAML. different parts of the YAML check different conditions and make the game jump to different chunks of YAML. it can jump between files and stuff
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.
10:46 it was NOT designed this way, this is contractors working on stuff contractors made by on top of code made during a time of outsourcing on top of someone a product so old it used to target IE3.
What, this isn't outsourcing lol. Most Microsoft cloud offerings were first party products made by companies that Microsoft eventually acquired. Outsourcing is not the boogeyman of software, in fact it was the saviour and people don't even understand how vital it is for really large projects and tight deadlines. Bad code is everywhere, nothing to do with outsourcing, humans are just bad, period.
@@raptorate2872 I meant early outsoursing was a failure because of bad communication and misunderstandings and cultural differences. You have to remember Dynamics was bought in 2002 so it has a long history
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
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.
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.
"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.
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.
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!
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.
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
"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
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.
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.
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.
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.
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
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 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.
"The cloud Kool-Aid is an expensive drink." God bless you, Prime. 😂
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.
"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
I created an alternative to YAML, I call it SCAML
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.
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.
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?
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.
Windeez Nuts 11
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.
14:35 We are using WASM (Rust) instead of js/lua for those purposes
I love it when half the comments are onlyfans bots
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
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.
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.
Almost every company is a blackhole of talent and money, to be honest.
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"...
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.
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.
Bro asked "0 to webpack?" and I'm remembering my bout with the Sharepoint framework thinking "bro it's probably a wrapper for webpack"
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
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.
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.
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)
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.
ERP in my industry is "Emergency Response Plan".
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.
I love the way you cover difficult topics. Your videos are always clear and informative.
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.
This is the way:
reading yaml > writing yaml > reading json > writing json > parsing json > parsing yaml
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.
"It does appear that programmers will try to do anything but program" SUCH A GOLDEN TAKE
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.
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.
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'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.
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.
Roasting AWS's UI warmed my heart thank you.
"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 :)
Feel like this might be my favorite vid on your channel now😂
I feel this authors pain, from a security persective
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.
Prime, what's up with the funky way you're pronouncing Modal? I've never heard a non-novice say it that way. It's MO-dull.
I just don't like calling it that. It seems incorrect
I Desperately want to see prime learn about ABAP
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.
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.
10:47 “It’s kind of impressive. I mean, we have to take a second and just think: somehow they got to this point thinking it was a good idea.”
All of software engineering in a nutshell.
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.
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!
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
ERP... Extreme Role-play... Extreme D&D
This is a very cathartic one to watch… thanks.
tehehe your netflix story makes me chuckle, I struggle from the other side, must not re-invent every wheel.
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 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...
Great article and video. Vindicated everything I felt using Microsoft websites and tools
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
8:03 what did we do? :(
Beginner coder here, I basically do all my sql queries with a "do x until EOF", I didn't get why it's the devils loop (or what exactly would be so much better if I used "do x while not EOF"), maybe someone can elaborate.
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.
"You cannot be clever in lua"
Hold my metatable. Hold my debug
I'm just a silly digital artist not understanding a word of what's going on. But I love the energy here.
the whole rambda, lodash thing, i'm not surprised knowing all the people i graduated comp sci with.
Microsoft application = Developer employment for life
What is the UI language? This sounds like ASP, plus an odd framework
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.
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.
13:40 UTF-8 chars are variable length. How does having one non-ASCII char make all chars 16 bytes? Maybe you were dealing with something like UFT-16?
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.
That's the problem when they think they can fix everything with money. Money doesn't write code.
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
8:10 actually, Nintendo made a DSL with control flow for animation scripting entirely in YAML. different parts of the YAML check different conditions and make the game jump to different chunks of YAML. it can jump between files and stuff
"someone made Haskell, so this should make you feel better"
savage
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.
10:46 it was NOT designed this way, this is contractors working on stuff contractors made by on top of code made during a time of outsourcing on top of someone a product so old it used to target IE3.
What, this isn't outsourcing lol. Most Microsoft cloud offerings were first party products made by companies that Microsoft eventually acquired. Outsourcing is not the boogeyman of software, in fact it was the saviour and people don't even understand how vital it is for really large projects and tight deadlines. Bad code is everywhere, nothing to do with outsourcing, humans are just bad, period.
@@raptorate2872 I meant early outsoursing was a failure because of bad communication and misunderstandings and cultural differences. You have to remember Dynamics was bought in 2002 so it has a long history
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.
The bit about AWS in 5:20 made me think "nah, Microsoft beat them to the punch with Windows 8"
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...
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.
2:29 Exotic roleplay 🤣🤣I'm dying
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.
"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.
If you use UTF8 you can have a few weird characters in a string at low cost.
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.