|
On March 05 2013 04:24 micronesia wrote:Show nested quote +On March 05 2013 04:24 Roe wrote: and so on. So she expected me to calculate it by hand, over and over again. And there were about 300 files I had to compare. So, thinking like a true programmer (being lazy) I wrote up a program that did exactly that, and I could simply input the filename and I'd have my values instantly. To my knowledge there wasn't any program that could do this, or that could do this as precisely and specifically as I needed, so I luckily could write one myself. This is a great example of what I was talking about in my prior post. Coding is invaluable in all areas of academia. Yeah, my boss wanted a graph showing a collection of data that was in a ton of seperate files. This would've taken a long time to do manually, so I simply wrote a little program that read all the files and showed the data in a nice graph.
Job done.
|
On March 07 2013 05:09 tehemperorer wrote:Show nested quote +On March 06 2013 07:40 haduken wrote:On March 06 2013 03:07 tehemperorer wrote:On March 06 2013 02:08 SupplyBlockedTV wrote:On March 06 2013 01:58 HardlyNever wrote: Sorry if this is a bit off-topic but I was wondering what the general thought on what web-development falls under. I know some programmers that don't consider anything web-based as programming or coding, while others have a more mixed approach. In the broadest sense, it is programming in that you are telling a machine (a web browser) what to do, but it doesn't really do any heavy lifting like real programming does. To further muddy the waters there are things like php that are entirely web-based, but can be used to do "real" programming if needed.
I was wondering what everyone else's take on it was. As a web developer/designer I don't consider myself a "programmer" (even though I have taken programming courses), as that title can get pretty elitist, but I'm not sure what else it is besides "web developer," if anything. Bullshit. Following that logic only people that write machine code are real programmers.. because all other languages are just simplified versions of it... or maybe i should say that when you write c++ you are scripting, because it is all just simplified machine code :D.... ah well, im not a programmer so i might be wrong. He's right when he says as a web developer he doesn't consider himself to be a "programmer." There are a few reasons why: 1. Basic reason: look at how much a Java programmer makes compared to a front-end developer... I know I make at least 30,000 (no joke) more than the web devs at my work 2. Web languages aren't compiled languages, meaning there is a limit on how much of an individual machine those languages have control over 3. You don't need to know hardcore algorithms to solve problems as a webdev, and you aren't concerned with machine performance since the big company web-browsers are your platforms 4. Similarly, you don't need to know design philosophy, any design patterns, how to unit test, application deployment, database structure (normalization, etc.), application integration, etc., since all of that is pre-defined as a robust back-end application+database (on most big-time front-end applications) Your reasons make no sense... 1) Your pay doesn't certify your capability. I'm sure there are web developers in the world that would earn 30K more than you. 2) Since when does your tools define your roles? Especially in modern age where 99% of programming is done within application frameworks (either in house or standards) and memory management. 3) Agreeable to a point but I think if you disqualify people based on complexity then you would need to disqualify just about everyone in the programming scene except for maybe the top 10%. Especially with web technologies being essential and prevalent in today's IT landscape. 4) What? No design pattern/unit test/data structure? what the? I'm not even a web dev but I know this is not true, the quality of web people you come across must be very low indeed... Sure they do 1) Across the board back-end devs make more than front-end... if there is a web dev that makes more than me, there is a back-end dev at his work that makes more than him, that's the comparison to be made 2) Analogy: The training/education that goes into designing cars is more advanced than the training/education that goes into constructing them. Furthermore, the training/education that goes into constructing them is more advanced than the training/education that goes into driving them. It is very much the same with programming. The knowledge requirement for Web development is somewhere between the construction and driving section of the car analogy. 3) You agreed for the most part, but to what you stated let me say this: Poorly designed web applications still work. It's because the basic structure has already been set up (i.e., the browser already knows how to draw frames, you just have to hook yours up to it). Most of the time the people designing these poor applications don't do it in a way that allow it to change or scale easily, and it's usually do to not knowing how to design the application (lack of design pattern understanding) 4) All devs I work with are very qualified and competent; in fact there are a few who are no longer with us because they couldn't cut it. I stand by my statement though, you don't need to know much of #4 to be a successful web developer. Knowing them makes you a good web developer, but it's just a natural fact that there are fewer UI Design patterns (stuff a webdev should know) compared to the vast array of Creational, Structural, Architectural, Behavioral, etc. design patterns (stuff a backend programmer should know). It's mostly because you can only do so much with scripts and parsers; Object Oriented Design, which is not even touched by webdevs, carries with it a bunch of design patterns that are simply not applicable in a scripting world. I am aware that in some web languages you can mock domain objects, but in truth you are basically told what the model is and therefore aren't applying any sort of design to it. As a primarily back-end developer and founder of a software company (with experience in the industry before founding the company), i wholeheartedly disagree. You are probably talking about people who do nothing but make static html/css or skin psd's.
I do know, that most back-end devs think that 1,2 and 4 are true. They are wrong and have overinflated egos about how hard architecting backend systems is. I dont know if you understand some of the challenges that web developers face (the ones who work on huuuugely used applications). They have to be full-stack developers. And they are paid accordingly. Chumps, on the other hand, are compensated as chumps. Whether they are backend developers that do nothing but follow a spec in a waterfall-style shop or frontend developers who are given menial design-focused tasks.
|
Well I guess my post got glossed over lol? No comments at all?
|
|
Im actually thinking of learning a language. I see mixed reviews on what language to learn...The argument always seems to be between ruby and python...but others say learn Java and so forth. I''m most interested in building a few apps for personal use and possibly some simple scripts for work. Anyone have any suggestions?
|
Belgium6755 Posts
On March 05 2013 22:17 Smoot wrote: Maybe it is me, but I see 3 pages of comments that can be summed up as "Coding is useful", and I really don't chalk that up to a real discussion about the subject.
Speaking another language is useful, and so is knowing how to build a fire if you are lost in the woods overnight. Does that mean that everyone should be introduced to these skills?
In this regard, yes coding is useful, but should everyone be introduced to coding? Of course this discussion has been one sided as it is being discussed by computer literate folks (being on Teamliquid), but I'm surprised that I'm not seeing the other side of the argument yet.
Anyhow, being older than the crowd here, I will pull the "time is finite" card, and simply say that not all skills are worth the time being invested in them. Sure there have been examples of using coding to decrease the time to complete a project 10-fold (I have had my share at work too), but ultimately if the company has a group of programmers to tackle these issues, the part of the project which needs that work will be thrown to them.
The flip side is that if you are working at a start-up with 10 people, then yeah, it would be nice to have more self sufficient workers. But then again, if you have 2 programmers in the group, why would the other 8 need the skill? Likewise, if 2 people knew how to speak 3-4 languages, why would the others need those skills?
My point is, that it is not feasible to be specialized in a skillset (which is a requirement in society today), and also have working knowledge of all other skills. Time is finite, and it just isn't worth it.
(looking forward to seeing a more in depth discussion of this)
-EDIT- As a background I'm an engineer and I code often.
Well a skill's value is determined by how apparent it is in society and everyday life. Making a fire is badass but pretty useless because how many times do you have to survive in a forest nowadays? Turn that around and how many people are in contact with & work with computers on a daily basis? I agree that it's not for everyone. But it's not only about the actual programming per se, it's more than that - it's a way of thinking that definitely improves certain mental capabilities.
btw I personally see it more as scripting, since 'real' programming often takes too much technical knowledge whereas scripting is accessible for most and still provides the same mental excercise
|
On March 07 2013 12:43 Darpa wrote: Im actually thinking of learning a language. I see mixed reviews on what language to learn...The argument always seems to be between ruby and python...but others say learn Java and so forth. I''m most interested in building a few apps for personal use and possibly some simple scripts for work. Anyone have any suggestions?
Do python, it's a scripting language but very wide range of use for it. Don't go down something like Java, you won't utilize it's power if all you want is simple.
|
On March 07 2013 12:43 Darpa wrote: Im actually thinking of learning a language. I see mixed reviews on what language to learn...The argument always seems to be between ruby and python...but others say learn Java and so forth. I''m most interested in building a few apps for personal use and possibly some simple scripts for work. Anyone have any suggestions? Do a language that works at whatever you'll spend time with. Something that you have to do for school or work is always good.
|
On March 07 2013 13:27 haduken wrote:Show nested quote +On March 07 2013 12:43 Darpa wrote: Im actually thinking of learning a language. I see mixed reviews on what language to learn...The argument always seems to be between ruby and python...but others say learn Java and so forth. I''m most interested in building a few apps for personal use and possibly some simple scripts for work. Anyone have any suggestions? Do python, it's a scripting language but very wide range of use for it. Don't go down something like Java, you won't utilize it's power if all you want is simple.
can you build basic apps with python? at this point im so clueless as to the difference I have no idea. Interwebs suggest ruby for apps, but Python for working in the Computer world... so the amount of scripting I do will be almost none, it will more be if I can figure something out at work although its not required by my job. its just something im interested in.
|
Of course it can. You will have to define what you mean by apps though, is it a web application? a mobile application? a desktop GUI application? a background service?
http://www.python.org/about/apps/
Look at the list of interest areas that Python is supported in.
Ruby is good also but there are not much traction if you want to build a basic app with GUI (It can be done but not newb friendly), the most popular usage for ruby is in the ruby on rails framework (Websites, web applications)
You will want to match the language to what you are doing.
|
Scratch is a language by MIT for beginners to learn. I watched a ted talk about it but it looks like it's not very powerful. As in it can't do shit. Python can be used for desktop apps but I think objective C is used more for GUI apps on the PC and C# on mobile devices. Afaik Ruby is used for websites as haduken says.
|
On March 07 2013 08:05 nath wrote:Show nested quote +On March 07 2013 05:09 tehemperorer wrote:On March 06 2013 07:40 haduken wrote:On March 06 2013 03:07 tehemperorer wrote:On March 06 2013 02:08 SupplyBlockedTV wrote:On March 06 2013 01:58 HardlyNever wrote: Sorry if this is a bit off-topic but I was wondering what the general thought on what web-development falls under. I know some programmers that don't consider anything web-based as programming or coding, while others have a more mixed approach. In the broadest sense, it is programming in that you are telling a machine (a web browser) what to do, but it doesn't really do any heavy lifting like real programming does. To further muddy the waters there are things like php that are entirely web-based, but can be used to do "real" programming if needed.
I was wondering what everyone else's take on it was. As a web developer/designer I don't consider myself a "programmer" (even though I have taken programming courses), as that title can get pretty elitist, but I'm not sure what else it is besides "web developer," if anything. Bullshit. Following that logic only people that write machine code are real programmers.. because all other languages are just simplified versions of it... or maybe i should say that when you write c++ you are scripting, because it is all just simplified machine code :D.... ah well, im not a programmer so i might be wrong. He's right when he says as a web developer he doesn't consider himself to be a "programmer." There are a few reasons why: 1. Basic reason: look at how much a Java programmer makes compared to a front-end developer... I know I make at least 30,000 (no joke) more than the web devs at my work 2. Web languages aren't compiled languages, meaning there is a limit on how much of an individual machine those languages have control over 3. You don't need to know hardcore algorithms to solve problems as a webdev, and you aren't concerned with machine performance since the big company web-browsers are your platforms 4. Similarly, you don't need to know design philosophy, any design patterns, how to unit test, application deployment, database structure (normalization, etc.), application integration, etc., since all of that is pre-defined as a robust back-end application+database (on most big-time front-end applications) Your reasons make no sense... 1) Your pay doesn't certify your capability. I'm sure there are web developers in the world that would earn 30K more than you. 2) Since when does your tools define your roles? Especially in modern age where 99% of programming is done within application frameworks (either in house or standards) and memory management. 3) Agreeable to a point but I think if you disqualify people based on complexity then you would need to disqualify just about everyone in the programming scene except for maybe the top 10%. Especially with web technologies being essential and prevalent in today's IT landscape. 4) What? No design pattern/unit test/data structure? what the? I'm not even a web dev but I know this is not true, the quality of web people you come across must be very low indeed... Sure they do 1) Across the board back-end devs make more than front-end... if there is a web dev that makes more than me, there is a back-end dev at his work that makes more than him, that's the comparison to be made 2) Analogy: The training/education that goes into designing cars is more advanced than the training/education that goes into constructing them. Furthermore, the training/education that goes into constructing them is more advanced than the training/education that goes into driving them. It is very much the same with programming. The knowledge requirement for Web development is somewhere between the construction and driving section of the car analogy. 3) You agreed for the most part, but to what you stated let me say this: Poorly designed web applications still work. It's because the basic structure has already been set up (i.e., the browser already knows how to draw frames, you just have to hook yours up to it). Most of the time the people designing these poor applications don't do it in a way that allow it to change or scale easily, and it's usually do to not knowing how to design the application (lack of design pattern understanding) 4) All devs I work with are very qualified and competent; in fact there are a few who are no longer with us because they couldn't cut it. I stand by my statement though, you don't need to know much of #4 to be a successful web developer. Knowing them makes you a good web developer, but it's just a natural fact that there are fewer UI Design patterns (stuff a webdev should know) compared to the vast array of Creational, Structural, Architectural, Behavioral, etc. design patterns (stuff a backend programmer should know). It's mostly because you can only do so much with scripts and parsers; Object Oriented Design, which is not even touched by webdevs, carries with it a bunch of design patterns that are simply not applicable in a scripting world. I am aware that in some web languages you can mock domain objects, but in truth you are basically told what the model is and therefore aren't applying any sort of design to it. As a primarily back-end developer and founder of a software company (with experience in the industry before founding the company), i wholeheartedly disagree. You are probably talking about people who do nothing but make static html/css or skin psd's. I do know, that most back-end devs think that 1,2 and 4 are true. They are wrong and have overinflated egos about how hard architecting backend systems is. I dont know if you understand some of the challenges that web developers face (the ones who work on huuuugely used applications). They have to be full-stack developers. And they are paid accordingly. Chumps, on the other hand, are compensated as chumps. Whether they are backend developers that do nothing but follow a spec in a waterfall-style shop or frontend developers who are given menial design-focused tasks. Fair enough, though it seems you're giving me a wishlist of what a webdev is supposed to be. The reality is quite different in everything but small startups, which I'm quite familiar with, where most developers assume multiple development roles. Also, I'm sure that most webdevs aren't good webdevs. There are tons of chumps out there, and it's easier to be a chump hired as a webdev then it is a chump hired as a backend developer. 1. I'm not going to send you a link comparing webdev salaries and, say, Java developer median salaries. Just google it. There's a reality regarding the situation, and then there's your opinion of it. 2. I don't know how you are arguing this fact. What is it easier to get hired as, a webdev or a systems architect? Which requires more schooling/knowledge to get hired? 3. I see you didn't dispute this 4. Has absolutely nothing to do with ego. It's simple reasoning; webdevs don't compile or build, they don't deploy, they don't manage repositories, they don't manage database structures, they don't model, they don't design meat and potatoes services, and they don't use a language that models data structures as objects.
Some webdevs are very good at their job and are capable at "programming across the stack" (a common job posting phrase), but in general I'm pretty sure my statements are true and not anecdotal
|
On March 05 2013 05:58 Logo wrote: When people say everyone should learn to program I really see a few skills that we want to teach, and they are skills that I think programmer CAN teach which is also important.
1. Boolean logic, operators and their application. Being able to really understand if, and, or, if and only if, xor, and not in a formal setting is a valuable skill. It's a really applicable skill to a wide array of problems. Likewise with the core concept of the other standard operators like for and while. It's just a way of thinking about the steps of a solution that's pretty handy. 2. Breaking down systems. A big part of programming after all is how to structure and build complex systems or solve complex problems one piece at a time. Again knowing how to do this is going to apply to a lot of things in life. 3. Understand some level of how computers work. Knowing at some level the structure of how a computer works and everything is going to be helpful in today's world. It's pretty worthwhile to say know the difference between a browser, the world wide web, and the Internet and knowing something about comp sci/programming is going to help with that.
Another one I feel like you learn is "don't be afraid to look up how to do what you want to do [on the internet]" Since so much of programming is figuring out HOW you want to approach a problem (and since it's generally done on a computer anyway) it avoids a stigma that "looking up an answer is cheating" because once you have the approach to the problem down, you've done the important thinking part, and you're just looking up the execution.
|
I think there is a distinction between learning what coding and programming is and learning how to code and program. In much the same way that in this day and age, people need to know how to use a computer to be employable, but they don't have to understand how and why the computer works the way it does.
Software construction, architecture, and engineering are deep fields that many people will never need to know how to deal with. But, just like someone should learn how to change a flat tire or change the oil of their car, people should probably learn what programming is and how to interface with it in appropriate contexts.
Here is another source to add to your blog that discusses reasons why NOT to learn to code: http://www.codinghorror.com/blog/2012/05/please-dont-learn-to-code.html
|
programming really gets interesting when you are actually coding stuff instead of just inputting shit or copying what other people have been coding, and if you are memorising a lot of syntax etc. it gets boring fast as well.
|
On March 07 2013 23:51 obesechicken13 wrote: Scratch is a language by MIT for beginners to learn. I watched a ted talk about it but it looks like it's not very powerful. As in it can't do shit. Python can be used for desktop apps but I think objective C is used more for GUI apps on the PC and C# on mobile devices. Afaik Ruby is used for websites as haduken says.
You've got it the other way around, C# is used more in GUI on PC (WPF/Winform), but it isn't limited to that. If you are doing C#, you are going to leverage .NET and its vast number of frameworks and libraries. You don't have to do it in C#, you can do it with any languages in the .NET CLR.
There are almost no presence of C# on mobile unless we are counting Windows Phone or Ximian / Mono
If you know the C syntax and need to do GUI app quickly for PC, C# will probably get you there very quickly.
Object C for all intends and purposes are exclusive for the apple ecosystem.
|
On March 08 2013 07:12 haduken wrote:Show nested quote +On March 07 2013 23:51 obesechicken13 wrote: Scratch is a language by MIT for beginners to learn. I watched a ted talk about it but it looks like it's not very powerful. As in it can't do shit. Python can be used for desktop apps but I think objective C is used more for GUI apps on the PC and C# on mobile devices. Afaik Ruby is used for websites as haduken says. You've got it the other way around, C# is used more in GUI on PC (WPF/Winform), but it isn't limited to that. If you are doing C#, you are going to leverage .NET and its vast number of frameworks and libraries. You don't have to do it in C#, you can do it with any languages in the .NET CLR. There are almost no presence of C# on mobile unless we are counting Windows Phone or Ximian / Mono If you know the C syntax and need to do GUI app quickly for PC, C# will probably get you there very quickly. Object C for all intends and purposes are exclusive for the apple ecosystem. Right. I shouldn't have said anything.
|
On March 08 2013 04:12 Takkara wrote:I think there is a distinction between learning what coding and programming is and learning how to code and program. In much the same way that in this day and age, people need to know how to use a computer to be employable, but they don't have to understand how and why the computer works the way it does. Software construction, architecture, and engineering are deep fields that many people will never need to know how to deal with. But, just like someone should learn how to change a flat tire or change the oil of their car, people should probably learn what programming is and how to interface with it in appropriate contexts. Here is another source to add to your blog that discusses reasons why NOT to learn to code: http://www.codinghorror.com/blog/2012/05/please-dont-learn-to-code.html Haha I love Jeff Atwood, blog is great :p
Correct me if I'm wrong, but I took the OP's statement to mean "if you know how to code at a very basic level, you can accomplish more in whatever you do." I don't think anyone is advocating all people learning to code and changing/deploying business programs or getting coder jobs!
|
On March 07 2013 18:18 haduken wrote:Of course it can. You will have to define what you mean by apps though, is it a web application? a mobile application? a desktop GUI application? a background service? http://www.python.org/about/apps/Look at the list of interest areas that Python is supported in. Ruby is good also but there are not much traction if you want to build a basic app with GUI (It can be done but not newb friendly), the most popular usage for ruby is in the ruby on rails framework (Websites, web applications) You will want to match the language to what you are doing.
Thanks for the info, was looking for Mobile apps for the most part.
|
On March 07 2013 08:05 nath wrote:Show nested quote +On March 07 2013 05:09 tehemperorer wrote:On March 06 2013 07:40 haduken wrote:On March 06 2013 03:07 tehemperorer wrote:On March 06 2013 02:08 SupplyBlockedTV wrote:On March 06 2013 01:58 HardlyNever wrote: Sorry if this is a bit off-topic but I was wondering what the general thought on what web-development falls under. I know some programmers that don't consider anything web-based as programming or coding, while others have a more mixed approach. In the broadest sense, it is programming in that you are telling a machine (a web browser) what to do, but it doesn't really do any heavy lifting like real programming does. To further muddy the waters there are things like php that are entirely web-based, but can be used to do "real" programming if needed.
I was wondering what everyone else's take on it was. As a web developer/designer I don't consider myself a "programmer" (even though I have taken programming courses), as that title can get pretty elitist, but I'm not sure what else it is besides "web developer," if anything. Bullshit. Following that logic only people that write machine code are real programmers.. because all other languages are just simplified versions of it... or maybe i should say that when you write c++ you are scripting, because it is all just simplified machine code :D.... ah well, im not a programmer so i might be wrong. He's right when he says as a web developer he doesn't consider himself to be a "programmer." There are a few reasons why: 1. Basic reason: look at how much a Java programmer makes compared to a front-end developer... I know I make at least 30,000 (no joke) more than the web devs at my work 2. Web languages aren't compiled languages, meaning there is a limit on how much of an individual machine those languages have control over 3. You don't need to know hardcore algorithms to solve problems as a webdev, and you aren't concerned with machine performance since the big company web-browsers are your platforms 4. Similarly, you don't need to know design philosophy, any design patterns, how to unit test, application deployment, database structure (normalization, etc.), application integration, etc., since all of that is pre-defined as a robust back-end application+database (on most big-time front-end applications) Your reasons make no sense... 1) Your pay doesn't certify your capability. I'm sure there are web developers in the world that would earn 30K more than you. 2) Since when does your tools define your roles? Especially in modern age where 99% of programming is done within application frameworks (either in house or standards) and memory management. 3) Agreeable to a point but I think if you disqualify people based on complexity then you would need to disqualify just about everyone in the programming scene except for maybe the top 10%. Especially with web technologies being essential and prevalent in today's IT landscape. 4) What? No design pattern/unit test/data structure? what the? I'm not even a web dev but I know this is not true, the quality of web people you come across must be very low indeed... Sure they do 1) Across the board back-end devs make more than front-end... if there is a web dev that makes more than me, there is a back-end dev at his work that makes more than him, that's the comparison to be made 2) Analogy: The training/education that goes into designing cars is more advanced than the training/education that goes into constructing them. Furthermore, the training/education that goes into constructing them is more advanced than the training/education that goes into driving them. It is very much the same with programming. The knowledge requirement for Web development is somewhere between the construction and driving section of the car analogy. 3) You agreed for the most part, but to what you stated let me say this: Poorly designed web applications still work. It's because the basic structure has already been set up (i.e., the browser already knows how to draw frames, you just have to hook yours up to it). Most of the time the people designing these poor applications don't do it in a way that allow it to change or scale easily, and it's usually do to not knowing how to design the application (lack of design pattern understanding) 4) All devs I work with are very qualified and competent; in fact there are a few who are no longer with us because they couldn't cut it. I stand by my statement though, you don't need to know much of #4 to be a successful web developer. Knowing them makes you a good web developer, but it's just a natural fact that there are fewer UI Design patterns (stuff a webdev should know) compared to the vast array of Creational, Structural, Architectural, Behavioral, etc. design patterns (stuff a backend programmer should know). It's mostly because you can only do so much with scripts and parsers; Object Oriented Design, which is not even touched by webdevs, carries with it a bunch of design patterns that are simply not applicable in a scripting world. I am aware that in some web languages you can mock domain objects, but in truth you are basically told what the model is and therefore aren't applying any sort of design to it. As a primarily back-end developer and founder of a software company (with experience in the industry before founding the company), i wholeheartedly disagree. You are probably talking about people who do nothing but make static html/css or skin psd's. I do know, that most back-end devs think that 1,2 and 4 are true. They are wrong and have overinflated egos about how hard architecting backend systems is. I dont know if you understand some of the challenges that web developers face (the ones who work on huuuugely used applications). They have to be full-stack developers. And they are paid accordingly. Chumps, on the other hand, are compensated as chumps. Whether they are backend developers that do nothing but follow a spec in a waterfall-style shop or frontend developers who are given menial design-focused tasks.
Front-end web developers can easily make more than their back-end counterparts, especially when it comes to mobile. Developing rich browser based mobile applications is a complex task, and it DOES involve object orients design, and a complete understanding of the back-end powering it, and everything in between. In the mobile world as well, front-end development is not simply taking a PSD and turning it into HTML, it's taking a few dozen PSDs, UX designer's notes, API documentation, etc... and creating a rich interactive application, all within the confines of the browser, and have it look and work exactly the same across multiple platforms. Similar job titles are javascript engineer, or front-end engineer, companies looking for someone to do this work always ask for full stack development experience, whereas back-end developers don't typically require front-end experience.
Most back-end development is fairly menial, changing database schema, building a simple AJAX API, problems that have been solved hundreds of times before, and anyone who can code could look up and implement one of the available solutions very easily. Front-end development hasn't been figured out nearly as much, due to the fact that browsers have been changing so much as of late, new features such as Canvas and websockets have yet to be fully explored, so if you run into a problem that would have been impossible 9 months ago, chances are it hasn't been solved yet, or the current solution isn't optimized or adapted to match the currently available tools. This means a lot more creative problem solving, and a lot less implementation of already solved problems.
As far as the analogies go, i'd say they're pretty flawed. Web development (either front or back-end) doesn't not involve design at all, that's the web designers job. If you actually think about it, building a car to spec is pretty freaking easy, if the schematics have been provided to you, all you have to do is put all the parts together. They also require completely different skill sets, you don't need to understand how the thing you're building works, but you need to know how to operate the machinery, build the parts to spec, deal with quality control, design an assembly line system to ensure efficiency, etc... etc..
If you were to transfer this to web development, that's like saying the web designer hands you a photoshop mockup that has all information required to complete the web development, it doesn't, it's simply a picture, and maybe some notes, just like someone drew the car, gave you some notes on how fast they want it, how they want to to handle, etc.. You have to figure out what parts are needed to take this little image and bring it to life, take the design mockups and the notes on animations, user interactions, and then build out the html,css to visually represent it, and then add the javascript to make it interactive on the front-end, and then more javascript to interact with the back-end, and then even more for animations, logging user interaction for later analysis (google analytics custom events), etc...
I guess what this all comes down to is that it depends what you're doing with a language, and how much you're actually doing yourself vs simply implementing solutions already available (e.g. implementing a database sanitization library vs trying to create your own system to sanitize input). The language you do these things in is up to you, you could write a back-end in C++ if you wanted to, but I tend to favor python when it comes to these things, simply because most web applications are iterated frequently, meaning you're not building it to 1 spec, you're constantly pushing out revisions on a regular basis (e.g. new version each week with new features/changes). Python allows me to quickly and easily add new features, it might not be the fastest solution for large scale, but it would take more time to write a faster-executing solution, so from a production point of view, the money you save on engineers' time can be spent on a more powerful hosting solution, and you get the same end result for less, and the code doesn't turn into a giant mess because people did hackish messy solutions every time they were under a deadline.
The language you use is fairly meaningless, I have written assembly to simply inline some functions because my compiler wasn't optimizing properly, that task wasn't very challenging, some simple find and replace (with the help of a debugger), I've also written complex object oriented web applications entirely in interpreted languages (javascript and python). I'm doing the same things that I do in C++, creating a class system, interacting with libraries and APIs, writing some algorithms, maybe using some linear algebra, using a graphics library to build a dynamic and interactive UI. My graphics library in this case is the rendering engine in the browser.
TL;DR: Programming these days involves a lot of implementing solutions rather than creating your own, in front-end web development there are a lot of new problems because browser standards are constantly changing. Writing a rich web application in JavaScript and Python is similar to writing a desktop app in any other language, just with a web browser instead of the win32 API and a graphics library.
|
|
|
|