140

At what point should a developer be allowed to choose his tools? When they don't impact your team. Am I looking at this the wrong way? Absolutely. Yes, you have a short deadline. Yes, you could get it done faster in Rails. But the company as a whole needs to deploy and maintain the application. If the company has a stable of good C# developers, then it ...


98

I'd say you have to talk to the team lead and say something like: I know you guys are a .NET shop, but I was actually hired for my Java/JRubyRails skills. I can build this new application in X amount of time using those tools that I already know. I could learn C#/mvc4 like you want, but it will take >> X amount of time. What do you want? This raises the ...


83

Your observation is correct, the SOLID principles are IMHO made with reusable libraries or framework code in mind. When you just follow all of them blindly, without asking if it makes sense or not, you are risking to overgeneralize and invest a lot more effort into your system than probably necessary. This is a trade-off, and it needs some experience to ...


51

What advantage was gained by implementing LINQ in a way that does not cache the results? Caching the results would simply not work for everybody. As long as you have tiny amounts of data, great. Good for you. But what if your data is larger than your RAM? It has nothing to do with LINQ, but with the IEnumerable<T> interface in general. It is the ...


49

From my experience, when writing an app, you have three choices: Write code solely to fulfil the requirements, Write generic code that anticipates future requirements, as well as fulfilling the current requirements, Write code that only fulfils the current requirements, but in a way that's easy to change later to meet other needs. In the first case, it's ...


41

You were apparently hired because of your ability to adapt to "new" technologies. C# is no different, in that regard. Are you sure you don't want to take the opportunity to learn something new? ASP.NET MVC is very similar to Ruby on Rails, in many ways. You won't be at a snail's pace forever. If you already know ROR, ASP.NET MVC will be a cinch for you. ...


29

Loosely coupling your application to its framework essentially means you are going to write a proxy framework. Writing that proxy framework is a lot of work, and if you ever switch to a new framework you'll have to do a lot of work to make the proxy framework support the new framework. Of course, different frameworks use different idioms and patterns, which ...


27

It's more important to study the language than it is to study the framework. Learn the language well, and you'll use the framework well. In order of importance (most important first): Fundamental programming principles - Algorithms, data structures, etc. Language paradigms - OOP, Functional, etc. Language features. Syntax and frameworks.


25

When you start a project and have a particular need, you have a choice: Either you implement your own solution from scratch, Or you use an existent library or framework. When implementing your own solution, you introduce several risks: The needs may evolve, requiring you to constantly write more and more code. Ultimately, the code you've originally ...


24

What advantage did Microsoft hope to gain by implementing it this way? Correctness? I mean, the core enumerable can change in between calls. Caching it would produce incorrect results and open the entire “when/how do I invalidate that cache?” Can of worms. And if you consider LINQ was originally designed as a means to do LINQ to data sources (like entity ...


23

I recommend reading the official answer to your question, Appropriate Uses For SQLite. Specifically, the "Situations Where Another RDBMS May Work Better" warns that SQLite does not support concurrent writing: SQLite supports an unlimited number of simultaneous readers, but it will only allow one writer at any instant in time. For many situations, ...


22

The key of DI containers is the abstraction. DI containers abstract this concern for you. As you may guess, it has a noticeable impact on the code, often translated into a fewer number of constructors, setters, factories and builders. In consequence, they make your code more loosely coupled (due to the underlying IoC), cleaner and simpler. Backgrounds Years ...


21

Arguments for staying with Java/JRuby Chances are, your boss wants you to produce. They hired you so that you could add value to the company. Ensure that they understand that by forcing you to use a framework that you aren't familiar with they will cause you to: Produce results at a slower rate Create lower quality code Even the best programmers require ...


20

For .NET it may depend on the deployment target. .NET 3.5 is supported in even early editions of Windows XP, whereas 4.5 is only supported on Vista and above. At my workplace we opted to stay on 4.0 because we still have workstations running on Windows XP Pro SP3 (which 4.0 supports). We cannot consider migrating until next year or so just because of that. ...


19

Ordinary constructor injection doesn't require a framework at all. The only thing you lose out on is the ability to centralize your dependencies in a configuration file. DI containers are an "enterprise software" pattern, used when the object graph is very large and complex. I suspect that 95% of applications do not require it.


19

I have tried CaliburnMicro and MVVMLight and when using Caliburn I really feel what you feel, sure it feels really magical able to bind a control to a property just by using Name="PropertyName" instead of old Text="{Bind PropertyName}" but in the end Caliburn goes way overboard to do this magical thing. When something goes wrong it is ...


18

At what point should a developer be allowed to choose his tools? When said developer is the software lead. Certainly, you can (and should) make the case for using the different toolkit if you're concerned about productivity, but be prepared for an answer you won't like. There may be a damned good reason why your lead wants you to use a specific toolkit, ...


18

You can think about updating Bootstrap the same way you would think about any other dependency. Does it introduce breaking changes? What benefits do you get from upgrading? Do the benefits outweigh the risk or time investment? In the context of a CSS (and potentially JS, if you use the helper scripts) dependency, these questions can be thought of this way: ...


17

One of Apple's criteria for accepting a program is whether or not it makes calls to unsupported Apple API's (or other bad stuff). By requiring static linking, they can prove that the software does not make such calls. Allowing dynamic linking would allow any kind of behavior to be added later, which pretty much invalidates their approval process. Apple ...


16

It is typical to have 2 week sprints. For me, the first sprint or 2 will likely have less "visible" features than later sprints for this exact reason (for some tenuous description of "less"). That being said, it certainly should not take you 2 weeks to build your entire scaffold and have nothing in the UI visible to show for it. Maybe you do not flesh ...


14

What does the Spring framework do? Spring is as today not only, what was known as a simple framework, it is a complete ecosystem. Topics covered by the spring ecosystem: Spring Framework (e.g. Dependency Injection, AOP ...) Spring Cloud Spring Data Spring Security Spring Batch Spring Social See here for full coverage of the ecosystem. It is possible to ...


14

Using a framework is like choosing a library: you get some features for "free", but you also get the limitations of this code (for example, using a data-access library might prevent you to write a five-way join query). The problem with choosing a framework is that it is harder to revert your choice once you have started using it. The reason is that ...


14

"Good enough is the enemy of better." -- Jerry Pournelle Seriously, there has to be a reason for an upgrade besides just "ooh, shiny!". Among other issues, any time you switch versions of a package your code depends on, you switch out one set of bugs that you're adapted for to another set that you may not be. In the process of switching, you frequently ...


13

Various comments have pointed out several ambiguities in the question and nuances to the answer, but the simple answer is no. The JVM and .NET Framework are Just-In-Time Compilers. They are still compilers, and do all of the work of a compiler. They take an intermediate language (bytecode), optimize it, and convert it into machine code. The only difference ...


13

Yes and no. If all you've done is wire up crud apps using some framework specifically to do that, employers will question if that's all you can do - especially if it's an older technology. Likewise, if you spent the past 2 years doing something that would've taken a week if you'd just used Framework X, that doesn't reflect well on you either. Employers ...


13

The Agile Manifesto suggests that Working Software is more valuable than comprehensive documentation, and the Scrum framework takes this notion to suggest that delivering tested, working software with business value to be a requirement every sprint. Why? Well, among other things, designers and developers often fall victim to spending lots of time on YNNI (...


13

What is a list of criteria for choosing a testing framework? 1) Syntax As you investigate different test frameworks you will notice that syntax is a differentiating factor across all of them. This is really going to depend on what makes you feel comfortable. For example, qUnit is more of a declarative test framework. Its API consists of functions called ...


12

I've been programming professionally for 20 years, and I am still amazed at how much I don't know. My strongest languages are C++ and Perl, and I know the basics of the language extremely well, but then there's STL and Boost which I have to look up all the time, and all of CPAN which I peruse occasionally and am always happy to find someone else has already ...


11

I note that you don't say you were hired as a JRuby or Java programmer. Here is why you said you were hired: "[B]ecause I have a lot of experience building web applications and because I lean towards newer technologies like JRuby on Rails or nodejs." In other words, they like your web experience and your willingness to learn new technologies. Now they're ...


10

It is important to realize what MVVM is. It is not some shared bit of functionality that you do not have to reimplement (parsing a JPEG file or connecting to a given SQL database server), it is a pattern--a pattern for how one may choose to implement a rich GUI. So, if your implementation of the pattern is simple and straightforward, I do not think you need ...


Only top voted, non community-wiki answers of a minimum length are eligible