I would say Swagger/Swashbuckle for OpenAPI-style REST API's. You can add quite some additional info on top of an already developer-oriented API description, and it can be used to generate clients that will 'just work' based on the spec. For an SDK in the form of a nuget file, since you said you were doing C#, package a markdown readme file in the nuget, this way the documentation comes with the library. I prefer having version-bound and 'incorporated' documentation rather than having to go look for it on some site, that 9 out of 10 times is not updated to match your version. And eventually, depending on your requirements, a generated and organic documentation site using something like docfx might be useful to give some additional info, which again, can/should be linked to from within the nuget or Swagger.
Member 10952144
Posts
-
Developer facing API documentation tool? -
Why most engineers cannot sell stuff"Bless sales, they have no brains but the gift of gab..." Well, after some 20+ years in the field I'm pretty much convinced that most (better) sales are savvy people, at least in managing their own lives. They don't have a very complex job, they mostly get rewarded very well for selling some stuff, better than the ones building that stuff in the first place, even if the sales person might not even know the tiniest thing about the product they're selling (sometimes). They can go out and have dinners with people, play some tennis, visit parties,... and it's all part of working hours, since you're relationship-building. They grow a really nice (social) network which makes them more and more valuable for future projects/employers, which is the counterpart of the engineer that needs to keep on top of new technologies, investing lots of personal time, just to stay relevant. Sales get the nicer cars, the better paychecks, the nicer office desk (and office chicks :) ), most of the kudos when a project is delivered successfully... Have seen this happening like ALL of the times in my previous jobs. Who is the smarter guy? Me working and learning like crazy, conceiving from scratch the products that companies are selling, for a decent income, but not one that'll ever make me wealthy, or the sales guy, living a pretty relaxed and social life, getting a nice base salary, generous commission and gains 'expertise and relevancy' without consciously investing time or effort in it? I actually knew a sales guy which was very good at selling (himself). So my boss hired the guy as the one who was going to generate lots of sales for our company. After two years, after first being promoted to sales manager (of 2 junior sales), he was let go. He didn't sell one(!!!) license of the product, nothing at all. But in those two years, he made more money than me and most of my fellow engineers would make in 10 years of hard work. I got to hear that two weeks after that he already found another victim where he exactly did the same thing. In the meantime he can add those former employers onto his CV, since he did work there, building a nice resume, making his profile even more appealing to other companies. And since they'll only know that he's full of shit after a year or two/three, he will have made some easy money, expanded his network and CV making it easier to reel in some even bigger fish, increasing his rate.
-
Office politics and sh*tty code.ok, and if the company is aware of this situation, and they really truly don't care about it, they probably will have their reasons. Like a plan of decommissioning the software, or the costs of fixing it will cost more than the return will be. All valid reasons. Because sometimes a developer wants to show how good a programmer he is without taking notice of the context. Sometimes a company just wants a quick and dirty solution because they're not going to make a lot of money out of it. Which should only take like say 5 days to develop. You shouldn't be the super-professional and say : ok, but to get it perfect, I need 20 days, and I only want to deliver a perfect job. Well, if the company is asking for a 'draft' version, give them a draft version, if that's what they only can afford. Not everyone wants to buy a Porsche, most people just want a car that brings them from A to B.
-
Office politics and sh*tty code.Jeremy, instead of telling them about the 'bad code', try suggesting them an approach and a solution to get it improved, and the positive impact it might or will have on the issues they're having. try to come up with a top 10 of bad pieces or patterns, estimate the cost of fixing it, convince them of the positive impact it will have in some areas. If some knowledge is missing for some co-workers, try to identify it, and get them trained/skilled in some way. But anyway, try to split up the 'bad code' in manageable chunks of work. Perhaps even code analyzing tools like SonarQube/SonarLint, Resharper, FXCop,... might assist you in making your point with your mgmt, because sometimes data and pictures say more than a thousand words, right? Also try to find out WHY there is so much bad code, just to be able to avoid it in the future. Like said before, is it a lack of knowledge, get some training. But it can also be that they count too little time to get a feature implemented, resulting in messy code. Is it because they never had a 'big plan', a vision for their application, which resulted in always adding some piece of code without having a 'grand design', which again results in messy code and structure.
-
Fine, I'll jump on the "I hate Microsoft" bandwagonI understand your frustrations, but to be honest, I didn't ever miss that function. I did VB6 for years, I did Java for years, even did some Delphi, but now C# for quite some years, and every language has its benefits and its downsides, but C# really is the nicest language I've used, Delphi comes in second :-) The reasoning behind not providing a Left function I think is since it's not a core function, but more of a "convenience function", one that would give discussions among developers, since they would make their own 'more performing' version of that function. VB6 provided more convenience functions out of the box, since it was mainly meant to make software development 'as easy as possible'. And to be honest, I like the fact that C# provided us with Extensions, Linq, Entity Framework,... more than the couple of arguable functions they might have 'forgotten'. Here they were really one of the first to incorporate these new ideas, where Java now tries to catch up...
-
Fine, I'll jump on the "I hate Microsoft" bandwagonWell it'll be less now if you just copy/paste the code....I think 30 secs will do now. Is prob just about as much as VB would need to show you its 'intellisense' info on the Left function ;-)
-
Fine, I'll jump on the "I hate Microsoft" bandwagonWhile MS gave you the power of Linq in C#....this gives you an infinite amount of possibilities. That combined with extensions, and you are so much better off than with VB! It's true, you'll have to spend 2 minutes of your personal precious time to write this code once, and to remember to add this extension 'lib' to all your projects where you might need them....boohoo. Sth like this... one line of code...
public static string Left(this string inputString, int length) { return new string((from ch in inputString select ch).Take(length).ToArray()); }
Now you can just Left a string by doing string.Left(5)....so easy but 1000 times more powerful (and prob as many times more performant) than VB....