Book Recommendation
-
If that option is available, it might be a very good option. Lots of people live too far away from a college. Even if there is a local college, the course may be taught at times when you cannot leave your ordinary work. Or admission to the college requries that certain formalities are in place, e.g. that the course is available only to full time students. Finally (this might be a bigger problem in Europe than in the US): Some colleges/universities fiercely cling to the idea that Windows or anything else coming from MS is toy software - Real, Professional Software is Linux based (and with a command line interface, not a GUI). All basic courses are based on Linux and open-source software; Windows software/tools are introduced only as one of several options in courses for specializing in end user application development. Lots of newly educated bachelors and masters spend years of frustration when entering the working life, realizing how much toy software is out there, and how difficult it is to enlighten people about the blessings of Linux and command line interfaces. If your local college is of that sort, you can go there to learn Linux and C (and possibly python), but you may search in vain for C#, VS and dotNet related courses.
-
Quote:
The first language / environment you learn is like your first sweetheart - you'll carry joyful memories from that time for the rest of your life.
My 'first' was BASIC and no, I don't.
Now that you mention it... I should have qualified it: The first serious language... (I started with BASIC, too, when the language was so basic that variables were named A - Z, A0 - Z0 up to A9 - Z9. 286 numeric variables maximum, and 26 string varibables A$ - Z$. You are right: That doesn't bring up any joyful memories. In fact, I had suppressed that memory entirely.
-
I agree with much of what you say; however, I disagree with your premise that a developer doesn't need to know HOW something works. Frameworks are created and abandoned with such intense frequency today that without understanding the basics of those frameworks, it is impossible to know how to proceed forward with the maintenance of software. Far too many developers seem to believe that the software life-cycle is write brand new, leave it and move to a new project. Instead, most software lives a long time with many changes needed through the years. Unless those initial developers and the maintenance engineers who come along have a mutual understanding of HOW coding works, the changes are doomed to fail. Our industry is the current equivalent of urban development: tear down whatever currently exists and build new, over and over. That process keeps the money flowing and builders happy UNTIL there is no money to flow when the entire infrastructure breaks down. At that point, those who understand the basics survive, and those who do not become part of the unemployed masses.
I certainly think you should know the workings of the layer you build your software on, directly below your layer, but not ten layers down. But: You should distinguish between architecture and implementation: The data structures, interactions between functions etc. are essential. If your understanding of the layer below you breaks down if the 32 bit CPU is replaced by a 36 bit CPU (are they still made?), then you have spent your resources wrongly. Or, if the layer below is re-implemented in a different language, but offering the same call interface. I am sceptical to the current trend of googling to find the call interface documentation, and start using it without knowning anything about the architecture below. If I complain, nine out of ten times someone suggests: But it is open software - you can download it and see how it works! ... No, the implementation is NOT the architecture! When you ask for an architetural drawing and is given a house, and told: You can make your own drawing of this house, can't you? then you are wasting my time. You rarely find software "architectural drawings" by googling, that which is independent of coding / implementation. I see that as a big problem. Even more I am outright scared over how large fraction of young software developers, those educated after google, appears to think it is perfectly fine. If it works, there is nothing to worry about. If not, you google for a quick fix. Ask them why that fix cured the problem, and they shrug: "Don't know, but it works now. Good enough for me!" That is not a good approach for writing robust software. And lots of software written today is not robust.
-
If that option is available, it might be a very good option. Lots of people live too far away from a college. Even if there is a local college, the course may be taught at times when you cannot leave your ordinary work. Or admission to the college requries that certain formalities are in place, e.g. that the course is available only to full time students. Finally (this might be a bigger problem in Europe than in the US): Some colleges/universities fiercely cling to the idea that Windows or anything else coming from MS is toy software - Real, Professional Software is Linux based (and with a command line interface, not a GUI). All basic courses are based on Linux and open-source software; Windows software/tools are introduced only as one of several options in courses for specializing in end user application development. Lots of newly educated bachelors and masters spend years of frustration when entering the working life, realizing how much toy software is out there, and how difficult it is to enlighten people about the blessings of Linux and command line interfaces. If your local college is of that sort, you can go there to learn Linux and C (and possibly python), but you may search in vain for C#, VS and dotNet related courses.
Thanks for the thoughts, actually the guys is already working as a government employee as a Police Officer, but he is interested to learn the software development and wants to pursue his career in it. So i was thinking to give him the direction towards .NET Technologies, i would suggest him this course to be taken online as self-paced option is provided by few web sites online.
-
I personally found "CLR via C# 4th Edition" very helpfull.
"Coming soon"
Yeah, that's a good one, as i myself had read first few chapters but not able to finish the book yet :)
-
Why not go down to the basics and buy a box of transistors and a soldering iron, putting together your own machine? When my technical university started teaching computers around 197s, they actually had one computer (NORD-1) delivered as components. The professors though it a good idea that the students got hands on experience in building a computer, even though the architecture (down to the printed circuit boards) were pre-defined. Soldering it together was still considered a valuable learning experience. (I am not quite sure about the technology at that time - I believe it was a mixture of discrete transistors etc. and small scale integration chips, like the 74xxx series). The oldest machine at my university, a GIER, had one side panel that was the control logic as a matrix of feritte cores, directly accessible so you could "microcode" it by pulling the conductors through or outside each core, changing the effect of each instruction code. Something like that could be very useful for a novice that really wants to get to the roots of programming :-)
Well... it depends on if someone has that much time, what i wanted was to quickly get him up to speed to start understanding about c# and start writing small programs in C#, the time constraints applied to that guy and me too.
-
Now that you mention it... I should have qualified it: The first serious language... (I started with BASIC, too, when the language was so basic that variables were named A - Z, A0 - Z0 up to A9 - Z9. 286 numeric variables maximum, and 26 string varibables A$ - Z$. You are right: That doesn't bring up any joyful memories. In fact, I had suppressed that memory entirely.
-
Don{t mind if I do! Please pass the syrup Regards, Walt
CQ de W5ALT
Walt Fair, Jr., P. E. Comport Computing Specializing in Technical Engineering Software
-
Don{t mind if I do! Please pass the syrup Regards, Walt
CQ de W5ALT
Walt Fair, Jr., P. E. Comport Computing Specializing in Technical Engineering Software