|
...but that doesn't mean I need to master them all. I think having a broad understanding of a wide range of skills is important. Good ideas can come from anywhere, and the greater your general understanding of technologies, the greater the chance you will see an idea that someone else with a narrower view will miss.
Remember, it's not about being a master in all of them, just being proficient. I regularly spend time learning technologies that I don't directly use, but they give me a broad understanding of how the various technologies fit together.
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare
Home | LinkedIn | Google+ | Twitter
|
|
|
|
|
I have specialized in working with WPF and MVVM. This has done very well for me since I work as a contractor, and there are few people who know the technology as well as I do. It is not an easy technology, so I am always following up on people who screw up a project by not using the technology well. When used well it creates a highly maintainable project. Not done well, you end up with spaghetti.
|
|
|
|
|
I think it's fair to say that we're all somewhat less specialized than we used to be and that guys like the one mentioned by Sander who say things like "I only do technology X why should I know about technology Y?" aren't really going to cut it in the modern world. At the same time, I think we do all tend to gravitate towards certain ends of the stack. Most of the best people I've worked with have an awareness - and, indeed, a working knowledge - of the whole stack but that is generally aligned with a specialist subject. A good database developer might (and should) have an awareness of CSS but shouldn't really be expected to do rounded corners. Conversely, a good UI developer should have an awareness of databases but doesn't really need to know how to tune a query.
When I see adverts for full-stack developers I often wonder if anyone can really fit that description without being a Jack of all trades. As a back-endy kind of guy, I could if you put a gun to my head, write a full website but there would be far better people than myself to do the client side scripting and the styling. In my case, the nearer I get to the front end, the less productive I become - with others it will be the reverse.
What I wonder when I see such adverts is whether the firm in question is simply asking for full-stack awareness (I'm all for that) or actually looking for people to actively develop full-stack (not a good idea to my mind). Is there anyone here who has advertised or taken such a position?
|
|
|
|
|
Somewhat, not at all. There are quite many places where you are the only developer that do everything from front end to backend, network and hardware configuration. And yes doing sql tuning as well plus customer support on the side too.
|
|
|
|
|
Also called Full Stuck developer... I'm one of those
GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- ++>+++ y+++* Weapons extension: ma- k++ F+2 X
If you think 'goto' is evil, try writing an Assembly program without JMP. -- TNCaver
When I was six, there were no ones and zeroes - only zeroes. And not all of them worked. -- Ravi Bhavnani
|
|
|
|
|
I think it depends from the company.Some companies as someone said above might need someone who can do everything (a jack of all trades).Though full stack developers in a research I did, are getting paid 10-20% more than the others.If you can do it and liked it go for it .Also I know senior developers who supervise projects that know frond end and back end at same level.
|
|
|
|
|
George Tourtsinakis wrote: Though full stack developers in a research I did, are getting paid 10-20% more than the others.
I guess the real question is whether I'd be prepared to write Javascript in return for a 10-20% pay-rise. It's a tough call, to be honest ...
|
|
|
|
|
Yup agree.Probably you are a back end developer as I understand. Hehe you made me laugh.Imagine I m better at javascript but I prefer using php for back-end and mysql than using node and mongo. So I totally understand you.
|
|
|
|
|
Totally worth it. Trust me. The reward of additional burger per week is undeniable.
|
|
|
|
|
I have a problem, I tackle it. If there is a new language to be used I learn it while working. Of course if I have to choose the language I tend to use what I know best but that shouldn't be surprising at all.
That's why I've been hiread as C++/VB6 developer and ended up using also Assembly, (briefly) C# and C++/CLI. All in 4 years of experience starting fresh from college and several years of terrible self-learning.
GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- ++>+++ y+++* Weapons extension: ma- k++ F+2 X
If you think 'goto' is evil, try writing an Assembly program without JMP. -- TNCaver
When I was six, there were no ones and zeroes - only zeroes. And not all of them worked. -- Ravi Bhavnani
|
|
|
|
|
But, have you never seen that pretty good Java programmers can produce total garbage in C++ when stuck in a Java mindset? I have.
... such stuff as dreams are made on
|
|
|
|
|
Yes of course, and I for one produced horrible C# code while stuck in VB6 mindset (to my defense I was VERY green, less than one year of real developing and had to port a VB6 plugin in C# in the shortest possible time).
And I saw C/C++ developers writing mess in VB6 and viceversa, Assembly developers writing terrible C and C++, C++ developers destroying poor C...
The core is to tackle a problem, learn its instruments, make experience -> then I learnt that tool and the errors that come with inexperience. I prefer not to jump on every novelty or trend becuase it is too time consuming and does not provide enough benefits - in other words it's inefficient and as an Engineer i tend to avoid inefficiencies.
Of course this applies to me and may or may not backfire on me (or bring great fame and fortune...).
GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- ++>+++ y+++* Weapons extension: ma- k++ F+2 X
If you think 'goto' is evil, try writing an Assembly program without JMP. -- TNCaver
When I was six, there were no ones and zeroes - only zeroes. And not all of them worked. -- Ravi Bhavnani
|
|
|
|
|
You mean those dangling pointers that Java or C# developers never have to think about freeing manually? Yup.
|
|
|
|
|
First, learn enough to understand how software work. I mean regardless of programming languages or libraries, if you can code object-oriented in assembler then thats good enough. Second, know when to learn new syntaxs (languages) and more importantly when to apply a specific techniques, patterns and which tools to solve a problem best.
I don't know much, but I haven't ran into a platform or tools that I can't start coding yet.
|
|
|
|
|
I support products for my company that customers utilize on many platforms, from Enterprise down to Handheld PC and Web. They want to run on any database: Oracle, SQL Server, Db2, even Access. The bosses tend to say yes to the Customer first, and then ask me "Can we do this?". My job is to say yes, and my management and I both know the answers and results won't be perfect, but will be workable. If the Customer wants changes or better product, I'll work it out. From a database standpoint I can't spend the time to be a perfect DBA/Developer in any one database. There are too many differences between the biggies, and the small ones (Access, SQL Compact, etc) are another matter. But I can make our product work with all of them, and if any customer DBA wants or suggests changes that will improve things, I'll gladly work with them and learn to extend my knowledge. What drives me nuts is to run into other developers that fixate or specialize in one specific engine and cut themselves off from a world of customers that might have other databases in use. Microsoft, Oracle, IBM all offer small free versions of their products or have Developer licenses available. I download the latest versions and tinker with all of them and create the models I need to interface our products to any of them. I may not be a Master, but learning and working with any platform out there and freely available has kept me employed for the last 45 years, and working from home over the last 30. I get to drink my own coffee and work in shorts and T-shirt, and that's been great for me and my family even if I have to answer the phone sometimes at 2 AM.
|
|
|
|
|
...my interest and needs...
I learn things as I need them, so I'm know of a lot, but master a few...
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
Programming languages, frameworks, technology and most obviously, requirements change. I understand the fact that if you master a programming language you can later use the same concepts in other similar ones (from the same paradigm). But, those who mustard C cannot ketchup to C++ (pun intended).
Instead, if you just understand how a computer works you can easily get used to any language, any framework and any technology that you are going to use. Just consider this:
- How a computer prints a message on screen?
- You can do that in C
- You can do that in C++
- You can do that in Haskell too
- Same to JavaScript or Assembly.
- How a computer manage memory?
- C and C++ allow you.
- C# allows you (partially, and you can leave that to framework).
- Haskell, maybe, but I never cared.
- How computer draws graphics?
- C and C++ have APIs.
- 3D modeling can be made easy using similar tools.
- Windows Forms, WPF or other also work in similar manner.
It doesn't matter what you learn, someday sooner, you are going to lose your Dennis to a Bjarne (again, pun intended). The only thing that matters is how a computer works. If you understand that, then no matter what programming language is being used, what framework you are on, what client needs. You are going to tackle the task. Sometimes, answer is not in predefined libraries, it is common sense.
The only thing constant here is the computer, learn it. It would give you an idea of the concepts of programming, which can be used to build the fort on the top of. Solid foundations are surely going to help you.
The sh*t I complain about
It's like there ain't a cloud in the sky and it's raining out - Eminem
~! Firewall !~
|
|
|
|
|
When you said, "The only thing constant here is the computer, learn it. It would give you an idea of the concepts of programming, which can be used to build the fort on the top of. Solid foundations are surely going to help you," you hit the nail squarely on its head. A case in point arose just last week, when I was working a problem in C# that involved a for loop with two index variables. The first was the garden variety index that drives the loop, and is scoped to the loop, itself. The second was another integer, defined at method scope and explicitly initialized to zero.
The first time I ran it, I noticed that the second index wasn't tracking the way I expected. Then, I realized why, and it has everything to do with how all for loops are implemented.
Regardless of programming language, all for loops are composed of three parts, generally separated by punctuation. In C, C++, and C#, the punctuation is a semicolon; I used to know what it was in FORTRAN, but it's been too many years since I wrote anything in that language.
1) The initialization clause describes an action that happens once only, on the first (maybe only) iteration.
2) The condition clause describes when the code that comprises the body of the loop executes, if ever. This block executes on every iteration, even when the body is never allowed to execute.
3) The index clause describes how the index variable is adjusted on each iteration. Since the first iteration initializes the index (or indices, if there is more than one), the first iteration skips the index clause. However, since it executes on the last iteration, when the index has met the termination criterion, ending the loop, without executing the loop body, the index variable that is an actual criterion is always just outside the bound.
Since I had just carefully described this behavior in the course of debugging a routine in an old C program, I realized almost immediately why the second index tracked the way it did. Since all index variables are processed by the index clause, nothing happens to it on the first iteration, and it is incremented one last time on the iteration that stops the loop without executing the body. As it happens, this is exactly the way I wanted it to behave for the new application, which was coded in C#. Though the languages were different, the behavior of the for loop was identical, and I had only to watch the movements of the carat in the visual debugger to know that for certain.
|
|
|
|
|
My one is
Webservice
Website
Computer graphic
Security
I am language Blind
|
|
|
|
|
👎 "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
|
|
|
|
|