C++, C#, web... Where do I go from here?
-
Hamed Mosavi wrote:
Maybe people have too much confidence or money so they don't care if any of their technologies fail, maybe it's normal because everything is moving from desktop to web while basement was not ready for these heavy sort of tasks, maybe they're trying to make it more team work and working alone becomes more and more difficult(Managers, Designers, Graphic guys, DBAs and (sometimes we need ) programmers), maybe it's a technology not matured yet, maybe...
I go with the "immature technology" explanation. Look at the history of other technologies (trains, planes, automobiles, road-making all suggest themselves) and you'll see similarities in the way these technologies matured, and similarities to the way software development has evolved so far.
Agreed. If there was a single language that answered every problem, perhaps there wouldn't be a need for newer ones, but as new things are discovered/created/invented, there are things that languages have to do that weren't there before and that they were created for. :)
-
Is it that I am wearing rose colored glasses or were things much easier when it was just C++ and MFC? Now that I have been doing consulting / contracting with .Net for a few years I find myself missing the days when I was working with C++/MFC. It seemed you had more control. There wasn't the disjointed mix of C#, SQL, HTML, CSS, ajax, java script, etc etc to debug. Then I had worked with C++/MFC for a few years, now it is all about the "generalised specialist", and I tend to feel like I am struggling to learn new things all the time. Maybe I should go into Project Management as the programmer career path articles seem to say you should, or should I try to specialise in something again? Just hard to know what to choose when everything changing so much.
For an site that takes a guess at the latest language trends and tries to "statistically" show a language's adoption go to TIOBE Programming Community Index[^] :-D
-
Agreed. If there was a single language that answered every problem, perhaps there wouldn't be a need for newer ones, but as new things are discovered/created/invented, there are things that languages have to do that weren't there before and that they were created for. :)
Juan de Villiers wrote:
Agreed. If there was a single language that answered every problem, perhaps there wouldn't be a need for newer ones, but as new things are discovered/created/invented, there are things that languages have to do that weren't there before and that they were created for.
:laugh: Don't I know it...while I was beginning my career building C apps (starting with K&R C), I was building a grad research project using PDC Prolog (a PC-based Prolog IDE). If ever two languages differed, it would be these.
-
Rocky Moore wrote:
Anyway, your career path should be based on what "you like to do". If you are a coder at heart, why push the management end unless you want that resposibility.. If you are only money, then Management is where the bucks live. It is really up to what your goals are and how much stress you like.
So is coding a stressful option? :) I was considering project management as a less stressful option. Everything feels out of control, maybe as PM I would have more control? Though really I think I am just going one of those-were-the-days things you sometimes do on a Monday. :)
anixi wrote:
So is coding a stressful option?
Living is a stressful option. You may quote me on that. I would further observe that not everyone can code, and fewer still can fully develop, software. More peope can manage projects than can code, but it's a valuable skill that's transferable to a large number of domains (remember that the project manager for the Pentagon was also the PM for the Manhattan Project. Business people will pay VERY well for a project manager with enough technical chops to understand the techies and enough business savvy to explain to a business person how a business need might still be met if the sixth bungo on the File menu isn't active in the first release. I've seen guys with eons of experience in tech fail this, and seen some really daffy stunts pulled by business folks with just enough understanding to create dangerous architectures. I've also seen people on both sides develop into truly Happiest are they who are the cherry-pickers, managers who have enough delegates to allow time to grab the sweetest potatoes from the code potato pile and cook them up for themselves while still managing the project and reaping the rewards. I've known at least two consultants who made a nice living out of projects with a lot of cherry-picking.
-
Is it that I am wearing rose colored glasses or were things much easier when it was just C++ and MFC? Now that I have been doing consulting / contracting with .Net for a few years I find myself missing the days when I was working with C++/MFC. It seemed you had more control. There wasn't the disjointed mix of C#, SQL, HTML, CSS, ajax, java script, etc etc to debug. Then I had worked with C++/MFC for a few years, now it is all about the "generalised specialist", and I tend to feel like I am struggling to learn new things all the time. Maybe I should go into Project Management as the programmer career path articles seem to say you should, or should I try to specialise in something again? Just hard to know what to choose when everything changing so much.
-
Ah, being given the chance to get confident is a luxury with browser based stuff. Since I started 10 years ago I've lost track of the languages, toolsets, libraries and methodologies that I've abandoned along the way - never mind the ones I'm supposed to be expert in today.
My thoughts exactly. So back to the original guy's question... how do you practically stay up to speed? I've also been in the field a while, but feel I know much less now than when I just started. So any tips on how to stay up to scratch? Websites? Books? RSS? What technologies would you feel is important to know now and whats the best way to get there? Thanks.
-
My thoughts exactly. So back to the original guy's question... how do you practically stay up to speed? I've also been in the field a while, but feel I know much less now than when I just started. So any tips on how to stay up to scratch? Websites? Books? RSS? What technologies would you feel is important to know now and whats the best way to get there? Thanks.
I've been working in software dev. for 20 years with the last 10 on the web; so if I couldn't offer advice it would be a poor tale! To thrive in software the best bet is always to focus on something; either on a very profitable niche, the very latest tech., legacy tech or on the most popular tech. There seems little point (to me) focusing on the mid-range players as they tend to be taken over or shrivel - or on over-hyped vapour peddlars. I personally like to focus on the most popular tech., so when I was younger I went onto jobsites like jobserve and work out what is the most popular in my area; this gave my hunches confidence. I like books but am incresingly tempted by exam based 'proof' like BrainBench or MS certificates, and for me this is the best set of skills to acquire to cover the next 5-10 years; Skills to acquire: Sql Server 2005, 2008 (some odd extension but hey-ho) C# 2.0, 3.5 (not bothered about 3.0) CSS Javascript (APIs to Ajax included) Photoshop There is a lot there but I'll recommend books if it will help.
-
Here's the thing. Web development has become fad driven. Being a web developer is like working in marketing (what's the new black today). Languages and frameworks spring up on a daily basis, most only partially realized before they are cast aside in favor of some other new technology. Pyhon, Ruby, Ruby on Rails, Iron Python what's that? Oh you want me code it in F#, sure, whatever. In many cases these languages are designed to solve a specific problem the problem of course is that everyone is off partially implementing their own thing rather than producing a cohesive set of technologies that everyone can learn, use and expand. It would be really nice if someone would decide what language and technologies are going to power the web and stick to it. Hell, I'd like it enforced at the router level. If your code isn't up to snuff, you can't be on the internet, that simple.
The internet may yet collapse under its own weight but in the meantime; go to job sites, research what is popular and make sure that you have experience on each of the three main development tiers in your area. Database: Sql Server, MySql, Oracle, DB2 etc. Business: C#, VB.Net, PHP, Ruby, Python etc. Presentation: Javascript, Ajax, HTML, CSS, Photoshop etc. (My choices in bold)
-
Hamed Mosavi wrote:
Maybe people have too much confidence or money so they don't care if any of their technologies fail, maybe it's normal because everything is moving from desktop to web while basement was not ready for these heavy sort of tasks, maybe they're trying to make it more team work and working alone becomes more and more difficult(Managers, Designers, Graphic guys, DBAs and (sometimes we need ) programmers), maybe it's a technology not matured yet, maybe...
I go with the "immature technology" explanation. Look at the history of other technologies (trains, planes, automobiles, road-making all suggest themselves) and you'll see similarities in the way these technologies matured, and similarities to the way software development has evolved so far.
Probably the most lucid cut-through reply I've read; where do you read that will lead us?
-
anixi wrote:
So is coding a stressful option?
Living is a stressful option. You may quote me on that. I would further observe that not everyone can code, and fewer still can fully develop, software. More peope can manage projects than can code, but it's a valuable skill that's transferable to a large number of domains (remember that the project manager for the Pentagon was also the PM for the Manhattan Project. Business people will pay VERY well for a project manager with enough technical chops to understand the techies and enough business savvy to explain to a business person how a business need might still be met if the sixth bungo on the File menu isn't active in the first release. I've seen guys with eons of experience in tech fail this, and seen some really daffy stunts pulled by business folks with just enough understanding to create dangerous architectures. I've also seen people on both sides develop into truly Happiest are they who are the cherry-pickers, managers who have enough delegates to allow time to grab the sweetest potatoes from the code potato pile and cook them up for themselves while still managing the project and reaping the rewards. I've known at least two consultants who made a nice living out of projects with a lot of cherry-picking.
I agree good coding takes a certain mindset and dedication that not enough people are prepared to commit to. And I'm not talking about going to work for 8 hours and then forgetting about it (unless you are truly gifted). Put a tech book next to your bed and read it for 30-60 minutes before sleep.
-
topcatalpha wrote:
I thought i was the only one feeling like that...
Hi Kurt, No, you are definitely not alone. I've been doing this about 32 years now myself and have felt exactly like this. In my case I've simply reached a point where I realize that there's no way I can keep up with it all. In my particular job I'm fortunate to have specialized in the business-rules layer which is mostly written in VB/VB.Net. I do use C# from time-to-time which is OK but since I'm the "owner" of this section of the system (no one else wants to touch it) I've got pretty good control of what I do here. I spent many years writing C and Assembly code when PC's were new. Loved doing that. I've tinkered with web development here and there over the last 7 years or so and understand how to do it but it's still not something I do by choice. We have a lot of young developer here who are all into that stuff - I just take the low-level junk that they don't want to do. I still really enjoy writing code. I don't have any aspirations for management, make a good living at it and my life is relatively quiet. The pieces I build in the system are critical to its operation but I can still afford to keep things relatively simple. The key, IMHO, is to specialize if possible and get REALLY GOOD at doing a few things rather than trying to know just a little about it all. Remember the saying "Jack of all trades, master of none?". That applies BIG TIME in this field. -CB ;)
The web isn't the best place for genius specialists (try embedded or back-office systems) its a place for flexible, clever generalists. Genius specialists will get frustrated that the tech. that they are currently expert in has suddenly died; a flexible generalist will already have moved on.
-
Murky f-ing code
-
The web isn't the best place for genius specialists (try embedded or back-office systems) its a place for flexible, clever generalists. Genius specialists will get frustrated that the tech. that they are currently expert in has suddenly died; a flexible generalist will already have moved on.
[ftw]melvin wrote:
The web isn't the best place for genius specialists (try embedded or back-office systems) its a place for flexible, clever generalists. Genius specialists will get frustrated that the tech. that they are currently expert in has suddenly died; a flexible generalist will already have moved on.
Interesting way to look at it. Fortunately, though, I don't think the middleware layers are going to "suddenly die". You're still going to need specialists in database design and business logic probably for the duration. There's no question about the fact that there's some pretty cool stuff going on with the web technology but, boy, is it ever a moving target. Seems like the guys involved in that can't settle at-all; just about the time you learn how something works you're having to retool everything you learned. :omg: -CB :)
-
[ftw]melvin wrote:
The web isn't the best place for genius specialists (try embedded or back-office systems) its a place for flexible, clever generalists. Genius specialists will get frustrated that the tech. that they are currently expert in has suddenly died; a flexible generalist will already have moved on.
Interesting way to look at it. Fortunately, though, I don't think the middleware layers are going to "suddenly die". You're still going to need specialists in database design and business logic probably for the duration. There's no question about the fact that there's some pretty cool stuff going on with the web technology but, boy, is it ever a moving target. Seems like the guys involved in that can't settle at-all; just about the time you learn how something works you're having to retool everything you learned. :omg: -CB :)
CodeBubba wrote:
I don't think the middleware layers are going to "suddenly die".
Probably right, some will fade away though - I would be wary of chasing 'the new big thing'; a bit like the Monty Python, Life of Brian sketch where an Eric Idle character opines (something like): "You are the Messiah, and I should know - I've followed a few in my time."
"If you reward everyone, there will not be enough to go around, so you offer a reward to one in order to encourage everyone." Mei Yaochen in the 'Doing Battle' section of Sun Tzu's: Art of War. .
-
CodeBubba wrote:
I don't think the middleware layers are going to "suddenly die".
Probably right, some will fade away though - I would be wary of chasing 'the new big thing'; a bit like the Monty Python, Life of Brian sketch where an Eric Idle character opines (something like): "You are the Messiah, and I should know - I've followed a few in my time."
"If you reward everyone, there will not be enough to go around, so you offer a reward to one in order to encourage everyone." Mei Yaochen in the 'Doing Battle' section of Sun Tzu's: Art of War. .
[ftw]melvin wrote:
Probably right, some will fade away though - I would be wary of chasing 'the new big thing'
Concur. That's part of what's gotten our company in trouble at times. Reasonable and rational upward progress is one thing but for awhile our "management" made development decisions based on the latest "cool" thing. The end result was a product that was saddled with multiple technologies, performs badly and is unstable. A lot of time has gone into correcting bad performance because these guys just threw the latest cool "stuff" into the product. I'm all for a technology that will make it easier to develop a solution or provide a more intuitive front-end but if it results in a server application (for example) dragging the server to its' knees and making the application difficult to scale properly then it becomes anti-productive. I have, on more than one occasion, been asked by employers why a program I wrote for them was so fast when the latest stuff they're producing is so slow. The answer was simply that I didn't choose the latest cool gadget unless I needed it. Sometimes good old "elbow grease" with an older technology can beat the hell out of some pretty gadget that has the "gee whiz" effect. -CB ;)
-
[ftw]melvin wrote:
Probably right, some will fade away though - I would be wary of chasing 'the new big thing'
Concur. That's part of what's gotten our company in trouble at times. Reasonable and rational upward progress is one thing but for awhile our "management" made development decisions based on the latest "cool" thing. The end result was a product that was saddled with multiple technologies, performs badly and is unstable. A lot of time has gone into correcting bad performance because these guys just threw the latest cool "stuff" into the product. I'm all for a technology that will make it easier to develop a solution or provide a more intuitive front-end but if it results in a server application (for example) dragging the server to its' knees and making the application difficult to scale properly then it becomes anti-productive. I have, on more than one occasion, been asked by employers why a program I wrote for them was so fast when the latest stuff they're producing is so slow. The answer was simply that I didn't choose the latest cool gadget unless I needed it. Sometimes good old "elbow grease" with an older technology can beat the hell out of some pretty gadget that has the "gee whiz" effect. -CB ;)
I've got to agree. Sometimes management consult their teenage children who chide them for not using "gee whiz 3.0"; using "gee whiz 1.2" is soooo 2004. Management don't like to look stupid in front of the children! And developers are often worse pursuing what they know is CV work on the excuse that 'they have to keep up'. Pragmatism is about being aware of new tech, and waiting long enough for evolution to eliminate the weak.
"If you reward everyone, there will not be enough to go around, so you offer a reward to one in order to encourage everyone." Mei Yaochen in the 'Doing Battle' section of Sun Tzu's: Art of War. .
-
Juan de Villiers wrote:
Agreed. If there was a single language that answered every problem, perhaps there wouldn't be a need for newer ones, but as new things are discovered/created/invented, there are things that languages have to do that weren't there before and that they were created for.
:laugh: Don't I know it...while I was beginning my career building C apps (starting with K&R C), I was building a grad research project using PDC Prolog (a PC-based Prolog IDE). If ever two languages differed, it would be these.
Although I haven't been in it for as long as others, believe me GWBasic and c were as different as they could get too.. then theres Fortran, Pascal, Assembly, and the list goes on... :laugh:
-
Although I haven't been in it for as long as others, believe me GWBasic and c were as different as they could get too.. then theres Fortran, Pascal, Assembly, and the list goes on... :laugh:
Juan de Villiers wrote:
Although I haven't been in it for as long as others, believe me GWBasic and c were as different as they could get too.. then theres Fortran, Pascal, Assembly, and the list goes on...
:laugh: Believe me, GWBASIC and C are lookalike siblings compared to that weird stranger Prolog...for that matter, COBOL, C, GWBASIC, FORTRAN, and Pascal ALL look like different versions of the same language when compared to Prolog. It's that different. Take a look at it sometime - I think there are still free or shareware Prolog interpreters available for various different platforms. Its primary application has been to problems in artificial intelligence, most notably expert systems. It's short for Programming in Logic; programs consist of establishing a database of facts and rules, followed by queries against the database (the conniptions you had to go through for interactive data entry in a text-window environment were supremely special :wtf: ).
-
Juan de Villiers wrote:
Although I haven't been in it for as long as others, believe me GWBasic and c were as different as they could get too.. then theres Fortran, Pascal, Assembly, and the list goes on...
:laugh: Believe me, GWBASIC and C are lookalike siblings compared to that weird stranger Prolog...for that matter, COBOL, C, GWBASIC, FORTRAN, and Pascal ALL look like different versions of the same language when compared to Prolog. It's that different. Take a look at it sometime - I think there are still free or shareware Prolog interpreters available for various different platforms. Its primary application has been to problems in artificial intelligence, most notably expert systems. It's short for Programming in Logic; programs consist of establishing a database of facts and rules, followed by queries against the database (the conniptions you had to go through for interactive data entry in a text-window environment were supremely special :wtf: ).
:omg: I have to check that out. I haven't actually seen it in action. That would be interesting to see.
-
Juan de Villiers wrote:
Although I haven't been in it for as long as others, believe me GWBasic and c were as different as they could get too.. then theres Fortran, Pascal, Assembly, and the list goes on...
:laugh: Believe me, GWBASIC and C are lookalike siblings compared to that weird stranger Prolog...for that matter, COBOL, C, GWBASIC, FORTRAN, and Pascal ALL look like different versions of the same language when compared to Prolog. It's that different. Take a look at it sometime - I think there are still free or shareware Prolog interpreters available for various different platforms. Its primary application has been to problems in artificial intelligence, most notably expert systems. It's short for Programming in Logic; programs consist of establishing a database of facts and rules, followed by queries against the database (the conniptions you had to go through for interactive data entry in a text-window environment were supremely special :wtf: ).
Thanks for the trip down memory lane. :) At Uni I did my third year project in prolog. It was a scheduling application so prolog was a good choice. Prolog very different to a lot of other languages: http://en.wikipedia.org/wiki/Prolog[^] I guess its a matter of the best programming language for the job. It is good to know that you have more then just a hammer in your tool box. :)