heatlesssun
Extremely [H]
- Joined
- Nov 5, 2005
- Messages
- 44,154
Out of curiosity, how important do you rate SQL skills?
Extremely important, especially in enterprise IT.
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Out of curiosity, how important do you rate SQL skills?
Keep in mind that you have to learn a lot of other crap, too. You just don't have the brain cycles to first learn a language you are going to toss.
I also don't like it when people make the statement you just made, that all languages are very similar anyway. Sure, C++, C# and Java do, and the scripters not too far away. But if you want to be a really good programmer you need some exposure to something with a different approach, so that you give your brain some stretching. Prolog, ML, or Lisp used in a non-C manner.
And that doesn't begin to address the issue of personal libraries that you build. The only way to get away from that is if you do middleware things exclusively.
Out of curiosity, how important do you rate SQL skills?
SQL skills (as in, skills in the SQL language itself) are of no importance. It's just a domain specific language, and a simple one at that. Learning the SQL syntax should take anybody the better part of a day. It isn't really something people worry about doing, but if you wanted to you could use a different 'query language' to achieve the same results, and I'm sure this wouldn't cause you much stress.
What is important is having a strong understanding of the underlying relational database. And by that I mean set theory, relational algebra, data science, how indexing works (therefore, how B+ trees and hashing work, what is a clustered index, what is a non-clustered index), how databases develop execution plans and what they mean to the developer, the advantages and disadvantages of using features like triggers, stored procedures and prepared statements, etc.
Fortunately for people like college students, you're not expected to be experts in databases in order to get a job. It's important that you know enough computer science and have a rudimentary idea, but there should already be sufficient talent and expertise from the senior developers and the DBAs to help mentor you through the more advanced topics. If you're trying to get a senior position and you don't already have expertise in databases, that's going to raise some questions, but if you're going for an entry-level developer position, just a basic understanding will usually get you where you need to go.
but you bind to one language like a natural speakers binds to the first natural language.
I agree with you, but don't underestimate the subtle complexities of SQL. I've worked for a number of large banks for a long time and large relational databases are the heart and souls of these institutions and they typically have tons of heterogeneous platforms that have to interoperate with each other and reporting on that data drives much of the technical operations.
I don't think that's ever been empirically demonstrated to be the case. And anecdotally, I first learned to write software with Visual Basic 5.0, and I certainly spent enough time with it for it to be my 'first language'. Many moons have passed since then, and if anything is my natural language it certainly isn't VB5. Sitting down in front of VB feels just like sitting down in front of Pascal, or any other language I don't use regularly. Certainly I can still work with it if the need arises, but I need just as much refreshing as I would any other language. That doesn't seem very 'binding' to me.
The knowledge about them is extensive baggage to first accumulate and then keep swapped in.
Don't get me wrong. I'm not saying working with the data isn't important. I'm just saying I'd rather employ someone who can understand why a poorly written query has the database engine doing a table scan instead of an index seek and figure out a way to tune the query to correct the problem than employ someone who can recite every difference between the ANSI SQL standard and Microsoft Access's SQL implementation. If those are the two selling points I have to pick from, that's what I'm going to value.
Furthermore, I think if the data model and all of the integration was done well in the first place, it will make it easier to use things like SAP BusinesObjects to deal with the reporting and help keep some of the responsibility of reporting out of the developers hands.
I agree with what you're saying here. I my thought is that most people having the skills you place importance on are typically SQL experts.
Chances are, yes, people with strong database skills are going to have SQL skills. But the inverse is not necessarily true...You can know your way around SQL and still write crappy database queries and build crappy data models.
In other words, if you're interviewing a college grad or an entry level developer, I would say the following: Having someone write some SQL to iterate over every item in a result set without explicitly using a cursor is not a measure of how valuable an asset they are as a developer. Giving someone an example of a few related database tables and the problem they model and asking them what they'd use as a primary key, what indexes and constraints they'd use, etc. and their reasoning for their choices on the other hand, would be more insightful. It's not the question of their SQL skills that's interesting, but their understanding of databases themselves.
especially when you write that query that takes an hour to run that needs to run in a second.
In other words, I don't really think the SQL is itself the important skill when working with databases. In the exact same way, I don't believe programming language knowledge is as important as knowledge of algorithms and design patterns and good problem solving skills. Naturally, someone who is an expert on both would be ideal, but SQL skills alone aren't of much value if the developer doesn't have a strong grasp on how the database they're querying works, much like how knowing Java isn't very useful if you've only ever used it to solve trivial problems.
I'm going to chuck my 2 pennies in to this derailed thread....
I've worked at a few banks, and they, like many other places are starting to explore other options to relational databases. I think this is a good thing as despite having a reasonable amount of experience of databases, I'm not fond of SQL.
You'd think this would make finding people with suitable skill sets more difficult, but in reality I believe most people can surpass their (baseline okay) sql skills fairly rapidly with other query languages.
We would never consider using SQL. The speed compared to mmapped read-to-use structures is just not there. And finding records is a well understood programming problem. I find it more valuable to study how to do that well than being just another SQL hacker.
I don't think you've ever dealt with relational databases saying this. SQL is a language, it really has nothing to do with the underlying implementation of how data is stored or retrieved.
Of course. You are still not going to beat a custom persistent hashtable or whatever you end up picking.
I also intensively dislike mixing syntaxes. SQL in strings in a different language is terrible, almost as much as every other way to do it.
In some cases, that works. In other cases, I can't see it really see something like that work. What if you have 50 billion related records (not all in one table) corresponding to transaction data? It's certainly a neat idea, but I think the space of problems where you can get away without a relational database is very small.
In many ways I think that's a silly thing to say. Do you go to great lengths to avoid regular expressions and pattern matching, then? Because those are the same idea: domain specific languages.
SQL statements are usually not literals, you mix in data at runtime. So you fail at runtime.
SQL statements are usually not literals, you mix in data at runtime. So you fail at runtime.
Indeed most modern RDMS have programmability extensions beyond SQL in the form of stored procedures and functions and those can even be written in other languages, though that's rare, though useful in some cases.
Still waiting for listing any major website using C#.
If you want to squeeze more developers into a shrinking market more power to you.
One of the largest home builders, NVR, uses C# for both their public and internal web sites and applications.
If you wanted "major internet businesses as opposed to non-internet businesses that happen to have a website" for whatever reason perhaps you should not have requested "any major website using C#".
That "any" word is kind of a big one.
Certainly, then, you must have come to love lambda expressions too. LINQ in conjunction with lambdas is a very powerful pair. So you're probably disappointed by the fact that Java still doesn't have lambdas. I can't tell you how annoying it is to write crap like this:
Code:interface Invoke { void invoke(Connection con); } class SomeClass { ... public void doDatabaseStuff(Invoke i) { Connection c = this.connectionFactory.getConnection(); try { i.invoke(c); } catch (SQLException ex) { //Exception handling goes here } finally { c.close(); } } ... } ... SomeClass something = new SomeClass(ConnectionFactory.getInstance()) something.doDatabaseStuff(new Invoke() { //Enter your lambda-esque function here });
All that boiler plate just to approximate lambdas.
And it's not just the absence of big features that gets annoying. All of the little stuff adds up to make something that's less elegant and less productive than C#.
For example, why can't I do this?
Code:public int someMethodWithDefaultArgument(Argument1 a1, Argument2 a2=Argument2.BrownArgument){ //Method code goes here }
Since Java doesn't offer default arguments, I have use this much boilerplate just to get the same effect:
Code:public int someMethodWithDefaultArgument(Argument1 a1, Argument2 a2){ //Method code goes here } public int someMethodWithDefaultArgument(Argument1 a1){ return someMethodWithDefaultArgument(a1, Argument2.BrownArgument); }
Queryable<CustomerWithAge> seniorsViaLinq = sampleData.where(customer -> customer.CanClaimSeniorsDiscount());
Still waiting for listing any major website using C#.
If you want to squeeze more developers into a shrinking market more power to you.
This seems like an excellent time to plug my soon-to-be-on-maven library:
Linq-A-Like
Fact is that the real players in the internet business use neither Windows nor C#.
No, I don't think that's the case. As I said earlier, I think you're simply moving argumentative goalposts because you're unwilling to concede the point that C# has a place in various ecosystems. Whether it should have a place is an entirely different argument, but you can't realistically take a revisionist stance on C#/.NET industry usage just because you're against platform lock-in on general principle.I think we are fighting words now.
Which is, ironically, the very thing he argues against. Although there are socio-political issues inherent in any platform or toolchain, they are not engineering issues. Discarding potential solutions without evaluating them for their merits just isn't good engineering.To write off the entire Microsoft ecosystem as you are doing severely limits your choice of tools.
So what happens if you start programming today, in C#, and it turns out you are really good at it? You gonna apply for a job at Google with C# only in your backpack?
To write off the entire Microsoft ecosystem as you are doing severely limits your choice of tools.
I'm still thinking more of major Internet businesses as opposed to non-Internet businesses that happen to have a website.
except that the website is a HUGE basis for their entire business. They spend A LOT of money and time on it because it brings in sales.
Practically all of the points raised in this thread aren't relevant to a beginner.
I didn't say language doesn't matter in general. I said that, in this thread, the points being raised aren't relevant to a beginner.
Why would you recommend to a beginner to use a language of limited professional use?
The thing is C# isn't as nearly limited in professional use as you're trying to claim. There are plenty of well paying jobs using C# across a broad spectrum of industries and companies. You're simply refusing to acknowledge the truth.
And you are recommending that *more* people squeeze into the limited windows market? Do you realize that isn't only bad for the new guy, it's also bad for everybody who's already in there?