|
👎 "Knowing only how a computer works" doesn't help for programming. Either you will lean to the hardware portion or the software. If you deep dive into the hardware portion, you can focus on networking, hardware troubleshooting expertise. In the other hand, if you lean to software you will lean on different programming languages and frameworks. Some can be easily catch up. Some takes you years with personal patience and commitment.In this context, I would say Visual C++, MFC is not a language/framework that you can grasp easily. It takes a lot of your time and patience. What I would say it will takes you far beyond knowing how a computer works.
modified 14-Jun-16 10:00am.
|
|
|
|
|
Afzaal Ahmad Zeeshan wrote: The only thing that matters is how a computer works Something with 1's and 0's
You'd be surprised how many programmers don't know/realize a program is just a bunch of commands that tell a computer what to do step by step.
I've almost literally had the following conversation a couple of times.
Coworker: "How the hell are we going to add 1 to 1!?"
Me: "We take 1, and then another 1, and add them up?"
Coworker: "But we'll have all kinds of difficulties and we don't know how the system will react!"
Me: "How about, var someVar = 1 + 1; ? See, the software really doesn't care, and I don't know why this should be a problem."
Coworker: "Well, I suppose you could do that..."
I guess simplifying (and I often over-simplify) can come in handy when programming as well
|
|
|
|
|
Sander Rossel wrote: Something with 1's and 0's Behold ze Quantums[^].
Oh, and of course if your co-workers knew how a computer works, they would have not been trolled by you at a number of instances here and there.
The sh*t I complain about
It's like there ain't a cloud in the sky and it's raining out - Eminem
~! Firewall !~
|
|
|
|
|
If there is interest in something (Take here example of technology) .... Then automatically we dive deeper in it
Find More .Net development tips at : .NET Tips
The only reason people get lost in thought is because it's unfamiliar territory.
|
|
|
|
|
I've had this discussion a lot of times.
While some people say it's better to learn one thing really very well (and I'm not talking about a language, but a part of a library in a language) I believe knowing beyond your specialization actually helps you be a better specialist.
I've had the misfortune to once work with someone who refused to touch the database because, and I quote, he "is a C# specialist and not a SQL Server specialist." Of course he lacked any database knowledge, which made his code connecting to databases really very bad. As far as specializing goes, memory management wasn't a specialty either, because properly disposing objects wasn't necessary either (spent three hours debugging his crap code, I'm still getting pissed thinking about this arrogant a...).
Personally I try to learn a bit of a lot and a lot of a bit, they can go hand in hand. I'm certified in SQL Server and C#, my SQL Server knowledge really helps when using Entity Framework or just plain ADO.NET.
Next to that I followed a course Haskell, which made me look at code from a different angle. I now write my C# code differently too, and it's for the better if I say so myself.
The same happened when I spend a few evenings on MongoDB. It made me look at SQL with different eyes. Suddenly I saw its flaws.
Sure, learn one thing and learn it well, but don't forget to look around so you can put your knowledge in a little perspective.
|
|
|
|
|
Sander Rossel wrote: he "is a C# specialist and not a SQL Server specialist."
When I see that, I read: "too lazy to look outside my foxhole, and too stupid to hold more than one idea in the head at a time".
"There are three kinds of lies: lies, damned lies and statistics."
- Benjamin Disraeli
|
|
|
|
|
Sander Rossel wrote: Sure, learn one thing and learn it well, but don't forget to look around so you can put your knowledge in a little perspective.
When I graduated from college it was possible that a person could know a single language and use only that language to have a successful career. It's still possible today ... but only in very select areas.
Today? Ya wants ta be a web programmer? That requires learning a primary language like C#, Java, PHP, etc. Plus Javascript (and libraries like Jquery). In most cases some type of database is required. Plus more ...
I wouldn't bother interviewing anyone who knew just one of the above. They can only do part of the job. Other than someone new out of college, I look for people with a mixture of breadth and depth. Enough depth to know some technologies well, and enough breadth to develop a wider perspective.
When mentoring new grads, I recommend knowing a little bit about a lot of things, and knowing a lot about a few things. And don't get to comfortable in any one technology -- all wax and wane -- and we move onto new ones.
|
|
|
|
|
What a lot of people, surprisingly, don't understand is that most, if not all, tools and languages we use are based on some common theory.
I'm a C# developer myself, but I'm pretty sure Java shouldn't be a problem. I know OOP, patterns, practices, libraries, memory management, etc. There are some minor differences between the two languages, and once you see that you see that learning something may benefit another thing.
BryanFazekas wrote: Plus Javascript (and libraries like Jquery) Some people have so little understanding of programming they believe jQuery to be a language
The trick in JavaScript and many libraries are, for example, closures and anonymous functions. Surprise, surprise, C# has them too. The funny part is that I've seen many blogs about "closures in JavaScript" (people find it a difficult concept apparently), but very few about closures in C#.
BryanFazekas wrote: all wax and wane -- and we move onto new ones New ones with the same fundamental theory
|
|
|
|
|
Sander Rossel wrote: I'm a C# developer myself, but I'm pretty sure Java shouldn't be a problem.
You're right and you're wrong at the same time.
I've worked in the major C-based languages -- C, C++, C#, and Java. The language constructs are either identical or quite similar. I can read any of these languages well enough to do a code review, and can decipher a host of other languages fairly easily.
So yeah, the language constructs of the basic languages are pretty much the same, there's only so many ways to do anything.
The issue is the libraries. Each of the above languages has a plethora of libraries that are either built into the vendor's framework and/or are commonly (or not commonly) used. Libraries differ greatly in scope and organization, and can be very complex. Knowing one set of libraries doesn't mean we can immediately work effectively in another. Learning curves can be steep.
In the past when hiring for Java projects especially, it was critical to get people with experience in not only a specific set of libraries, but in the correct version(s) of those libraries. I had more than one tech lead pull their hair out trying to find people with the right skills -- otherwise bringing a good programmer up to speed could take months.
[Personally, "modern" languages are unnecessarily over-complicated -- but that's a rant for a different day.]
If you don't believe me, install a Java IDE and reproduce a moderately complex C# application. It won't be impossible, but it will have its challenges. And frustrations.
|
|
|
|
|
BryanFazekas wrote: otherwise bringing a good programmer up to speed could take months It took me months to learn Visual Basic .NET, including many .NET libraries and OOP principles, to a point where I could develop non-trivial applications starting from absolutely nothing (no prior programming experience).
Taking that same time to learn a library seems a little long, at least for a good programmer. Especially when Google is just a click away
Sure, take WCF, or ASP.NET MVC, those are huge frameworks with a gazillion settings and options, it could take months to learn, but probably not to learn just the parts you need.
BryanFazekas wrote: Knowing one set of libraries doesn't mean we can immediately work effectively in another. Learning curves can be steep. I do agree wholeheartedly with that. But even then there's usually some overlap.
You probably know what kind of libraries are available. I don't know how to read and/or save a file in Java, but I know it's possible, probably io.file.something, so a quick Google search can give me what I need in seconds. A few years back I had a customer asking me to remove duplicate rows from an Excel spreadsheet he had. He had been trying for an hour, but couldn't find it. Of course I know what Excel is, but I never use it so I had no idea how to do this. What I did know was that this customer was looking for a distinct function. Google "Excel distinct rows" and I had it fixed for him in five minutes
In C# the map function is called Select , looking it up in another language shouldn't be a problem if you know what you're looking for
BryanFazekas wrote: If you don't believe me, install a Java IDE and reproduce a moderately complex C# application. It won't be impossible, but it will have its challenges. And frustrations. Will it be more impossible and frustrating than the original C#?
Of course, you're completely right though
|
|
|
|
|
I think that learning more stuff than specializing something is better in technology world since a lot of changes occur every now and then.I'm learning meteor which I don't think I'll use it for now in my web developing career, but it helped me understand some things about databases and javascript. Also I don't think it's bad knowing something extra and be open minded .After all isn't knowledge == power? Though if you can specialize a lot of stuff then that's the best ...
|
|
|
|
|
The idea behind specialization is the following. Let's say your specialization is writing software for a specific kind of printer, not many people need that and not many people really no how to do it. Now the deal is that there are always a few people who need someone to write software for that specific printer. And YOU are one of the very FEW who have the specialized skills and knowledge to do it. So sure, you can write their software, but it's going to cost them... Name your price, no one else can do it for them and they know it. Besides, you're the specialist, so that's worth something!
Compare that to a skill such as C#. Everyone and their dog need a C# programmer, but then again, everyone and their dog can write C# too! So it's nice that you can write it, but so can ten other people. Suddenly it becomes a little harder to name your price as there is a lot of (good) competition
Of course when you specialize and that specific printer you know so well goes out of production and support ends and ultimately gets replaces you better have a set of skills to fall back on
|
|
|
|
|
No one answer fits.
I will start learning what I need to complete the job at hand and then learn the other things that interest me.
Or go back and learn a better way of doing what the job was that was completed when there is more time.
|
|
|
|
|
Agreed. There is many time, when I finished the job, without even caring to learn the language
I do not fear of failure. I fear of giving up out of frustration.
|
|
|
|
|
I agree with this. First step is getting the job done, if you need to read up and learn something new doing that you usually pick up a few bits that interest you that you can later delve a bit deeper in to or you might come up with a solution that works but there are parts which you aren't fully satisfied with which you later can rework or analyse to see what could be done better.
|
|
|
|
|
Had one customer that wanted an interface to a CQRS-style API I had created for a robot to be written as a python library. I'd never done Python before so I learned just enough to give them a complete, importable library. I arrive on-site to install the system and show them how to use it and the programmer they assigned to the project says, "Ok. I think you're going to have to teach me how to use Python."
1) These 40 lines of code are about the extent of my knowledge.
2) No.
a posse ad esse
|
|
|
|
|