I am a 4+ years experienced C#, ASP.NET MVC5, Flex, Actionscript, Html, css, jquery, php developer.

I have a passion for developing and I'm not scared about learning new things. In fact I read technical books about what I know to get a deeper knowledge and dive also into new things like learning how to work with a raspberry, electronics, new programming languages (I recently began to read about python and got excited about it).

But I have a visceral hatred for some things.

Just to mention a few: Linux, Apple products, anything *nix based, and frameworks in general.

I often end up in arguings and little fights with co workers or fellow programmers about tools and other things.

Just to say the last two:

There is a fellow who is trying me to convince that I hate linux because I can't use it. I did some assistance in the past and I had to fix various problems on linux computers.

Every time has been a major pain in the ass, and even my co worker, which was much more expert with linux, was still defending it and saying it's me whom can't use it, while loads of errors were just keeping popping up in that bash shell.

Another arguing was about log4net with my current coworker. I prefere in every of my project to use a simple and straightforward library that I wrote (less than 80 lines of code) which pretty much logs everything to a file and does it damn well.

I said him unless it's a requirement or a big project, I don't like at all log4net as it's cumbersome and annoying with all the xml config, all his weird namespaces and so on and that I prefer to use my simple library or write a quick easy logger on the go and that I will never use it. He was defending log4net talking about standards, that's better because everyone use it so you don't have to examine custom logging code (what kind of programmer gets in trouble reading an 80 lines logger who just writes to a file and implements a quick verbosity system?? A freshman maybe...)

Everyone tries to convince me that I should use this or that because it's better and everyone does it and acts like I'm stupid and stubborn and says that I don't like anything so it's useless to show me things because I will never like anything.

I learned a lot of new things, MVC5 by Microsoft was a pleasant surprise though I don't like some things of it (crappy validation system and other things) and i like to try new libraries or other things but, really, what's the problem with me?

I feel myself very selective, I need to test thing deeply and then just weight them on the scale to see if it's worth or not.

If a log system starts to need xml to be configured, calling weird methods in which you have to pass formatting keys or that just to add the date to the file name needs bloated xml configs it's just not for me. I'll rather write 100 lines of code for my custom logger and in 10 minutes and I'm ok for the rest of the project.

I don't put out log4net at all, I understand that all its features are right for a big project, but for the rest it's just an overhead for me.

I TOOK LOG4NET just as an example, there have been various discussions about a lot of frameworks, libraries, OS, design patterns and so on...

What's wrong with me, if there is anything wrong at all? I am lazy? I am not a real programmer because I don't experiment and adhere to the standards? What?

  • 6
    The programmer can spend 5 minutes understanding your 80 lines of code, and another 5 minutes understanding Alice's 80 lines, and another 5 on Bob's 80 lines - or he could spend 1 second remembering what he already knows about the logging framework everyone uses.That's the point of standards. Also, I notice that your logging library just grew to 180 lines because you wanted the filenames to be date-based. Instead of adding 1 line of configuration. – Sebastian Redl Sep 8 '16 at 10:38
  • 3
    Questions require a goal that we can address. Rather than explaining the difficulties of your situation, explain what you want to do to make it better. For more information, see this meta post... – gnat Sep 8 '16 at 10:44
  • If you need 100 line of codes to be date based filenames instead of using a DateTime.Now() or similar, well, Now I understand why you cannot waste 5 minutes understanding my, alice and bob's code. Your example is unreal. I bet my balls that at least 95% of people who occasionally use log4net just spend those 5 minutes you're giving to bob/alice and so on to google these exact words "log4net configuration" and reread everytime how it's done. It's the same dude... Except for very big projects where log4net could be useful. – Wasted Sep 8 '16 at 11:16
  • @gnat Ok, should I change my attitude because it's wrong or what? – Wasted Sep 8 '16 at 11:17
  • 3
    When you work alone, you can do whatever you want. When you work on a team, you either have to (1) lead the team and tell other people what to do, or (2) accept what the team leader wants. If you don't want to use the team's preferred technology, then you can find another team. As long as you accept the consequences of your decisions, there's no reason to feel that they're wrong. – kdgregory Sep 8 '16 at 11:24

You are definitely a real programmer. I've yet to meet any tech head who doesn't have very strong opinions about some technology or another. I have my own list of rants about technologies I use or shy away from. I wouldn't let yourself get self-conscious cause you don't agree with "Bob in Network Infrastructure".

But there is one big valid issue your teammates are bringing up that you probably need to consider. Standards exist for a reason and their value is often less technology based as much as it is teamwork based. If you have a team of 20 developers working on a project, you really need to get them all on the same page. Otherwise at the end of your project you may have working software but I can guarantee it is going to be a nightmare to maintain. (Trust me on this... I just inherited an SOA application where there was no standardization and now my team of 4 developers has 30+ new proprietary pieces of technology to learn, many of which perform the exact same function. We are spending all of our time refactoring rather than building new functionality).

The team benefit of using an agreed upon logging library (or middleware, ORM, etc..) is that everyone on the team is going to have a relatively consistent approach to a similar problem. This translates to less time required to troubleshoot, less money required to hire resources (now you don't need a Java guy and a PHP guy and a .NET guy), and ensures better team coordination working towards best practices for a central technology.

From a personal development perspective, working from a standard library as opposed to building your own will help you build experience on a piece of tech that can almost be guaranteed to be transferable if you decide to move to another shop. If I own an application and I need to hire a new developer, I'm most certainly inclined to hire the person with experience with the 3rd party dependencies of my app then I am the guy without this experience (because he always used his own non-standard technique). And if you really have a desire to write your own solutions, why not contribute to some of these open-source libraries online and build upon other developers work? If you think you can solve a problem better than the accepted standard... try building on that standard and let the community vet your work (it's another great way to get your name out there).

TLDR - At the end of the day there is nothing wrong with wanting to do things your own way, but remember that most often you are going to be one developer on a larger team. Conforming to the team standard is almost always going to be preferable than "going it alone".

| improve this answer | |
  • Ok. Got the point. – Wasted Sep 8 '16 at 13:16
  • 3
    For example: every .NET programmer in the world knows Log4Net. Heck, even every Java programmer in the world knows Log4Net, since it is a port of Log4J. Every PHP programmer in the world knows Log4Net, since the most widely-used logging library in PHP is a port of Log4J. Even I know Log4Net, and I'm not even a Java, .NET, or PHP programmer. How many people in the world know your logging library? 1. So, what happens if you get promoted, reassigned, quit, get sick or just take a few days vacation? – Jörg W Mittag Sep 8 '16 at 14:47
  • 2
    I mostly agree with this answer, except for one thing: "visceral hatred" is not a "strong opinion" or a "disagreement with Bob in Network Infrastructure". It is an extremely destructive, negative, irrational emotion, typically based in fear and ignorance, and associated with hostility and aggression. – Jörg W Mittag Sep 8 '16 at 14:52
  • I agree with this mostly, but not generally on logging and log4net. If you have only very simple logging requirements for an application, log4net can be heavily oversized. A standard is not an end in itself, it is a means to an end, and if using a logging framework adds much more administrative overhead to an application than the effort the team might save with it, then it is the wrong tool. – Doc Brown Sep 8 '16 at 19:45
  • ... said that, if you have a team of 20 developers working on a program, the product will probably so big that it has enough logging requirements to justify the use of log4net. – Doc Brown Sep 8 '16 at 19:53

Not the answer you're looking for? Browse other questions tagged or ask your own question.