1,329 karma · joined March 9, 2010
B) Not in my experience. W2 employees have a 20% overhead for various insurances, taxes, etc. There's also significant employment law one has to follow to a T, 'or else'. Consultants, you can be a little looser with.
C) Not disagreeing on this one, but there's also _tons_ of smaller shops and startups who have expensive problems a consultant's specialized knowledge/experience may be uniquely suited to solve.
D) As a non-smoking overweight single male, my 'gold plan' insurance on the west coast is ~$400/mo. At consultant profit margins, that is effectively 'lolwhatever' money.
E) This is yet another example of why hourly billing is nuts. Don't bill hourly. Bill per-project, and charge for the business-value of the work to the business. Considerable literature has been written on this, see works by Jonathan Stark, Alan Weiss, etc. tl; dr - if you're billing hourly, you're doing it Wrong(tm)
F) Strong agree. But just because one may hate writing/speaking/meetings/selling doesn't mean one can't A. learn it, and B. learn to excel at it. Would _you_ take a course on public speaking and read a book on negotiation if you were reasonably certain you could make your current annual income in a quarter's worth of work?
Difficulty level: stop thinking of yourself as a 'programmer' or an 'engineer', and start thinking of how your programming/engineering work impacts the business' bottom line. See: https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-pr...
tl; dr - humans are weird.
Handguns are handguns. Rifles are rifles.
- Opaque and uncommon/needlessly-unfamiliar command-line management toolkit (seriously, what is so difficult about 'output text, receive text as input' in 2017?)
- I cannot, yet, fully manage a Microsoft host from the CLI. What I consider to be 'fully managed' revolves around: installing software, updating software, adding/removing/'managing' users, setting up basic server-like features such as simple firewall rules, viewing common log-files ('user X logged in', 'software Y tried to execute Z task, the result was A'), starting/stopping/troubleshooting daemons, etc
- Pick a major config-management system (my direct experience is with Puppet/Chef/Ansible/Salt). Configuring them to play nice with Windows-anything is an order of magnitude more difficult than even the most baroque *nix-like operating system.
- Licensing. Srsly, charging for the operating system, THEN the web server, AND the 'remote desktop server', PLUS the mail server... is downright punitive. Microsoft does exactly none of these 'well', but they still think they should be able to charge money for it. Their customers, in my opinion, must be masochists.
Lest I be accused of being completely unfamiliar/anti-Microsoft, here's a couple of things I feel they do quite well:
- remote/centralized user management (seriously, Active Directory's extensions and integration of LDAP/Kerberos are quite impressive). Pity it's not even remotely open-sourced, as such any modifications (hesitant to use the word 'improvements') are effectively prohibitively difficult to bring forward unless you're a Microsoft employee, directly assigned to the Active Directory group, in good standing with your direct manager and his manager's manager.
- AAA (authentication/authorization/accounting) - given their AD prowess above, they'd have to be a special kind of stupid to foul this one up. To their credit, it is amazingly easy to assign RBAC to a group of users and apply it site/directory/'forest'-wide, then go back and bean-count exactly which users did what and when, if needed. For a lot of environments, this is a huge plus.
Still, for the vast majority of 'webby' environments, in my professional opinion, Microsoft hasn't been able to hack it for at least a decade now. The market has moved on to more powerful, less costly, more manageable/scaleable platforms. If you're running an application, or even serving basic web content, on a Windows-anything, you're needlessly wasting your business time/money/agony if you choose to implement it on a Microsoft stack.