Author Topic: Programmers and Developers: What is your opinion on the Learn to Code movement?  (Read 11906 times)

naturelover

  • 5 O'Clock Shadow
  • *
  • Posts: 62
It seems that at every turn, the media is espousing, "Learn to code - get a job!" If only it were that simple...

I have about 7-10 years until I anticipate being FI, and I would like to get into a new field for the remaining time as well as build some skills that could be used for freelance or part-time gigs after retiring. Coding really interests me, and I've been learning the very basics of web development (HTML, CSS, and JavaScript so far).

So my question to those of you in the field is this: Are there actually entry-level jobs out there for people with basic coding skills? I'm trying to determine if such a thing even exists, as many job postings I see seem to have an endless list of language requirements.

I understand that being able to code is not the same thing as being an experienced programmer or software engineer, but are there opportunities for those who are mostly self-taught (online tutorials, Treehouse, etc.) and possess lower-level skills?

Thanks for your input!

Fuzz

  • Bristles
  • ***
  • Posts: 341
Not a coder, but my sense is that there is a really competitive (read lower wages) market for folks that can do wordpress development with an eye for UI and graphic design. So if you can design and talk about branding intelligently, I think there is a lot of room for non-technical skills. That's what I'm paying for in my small biz.

mxt0133

  • Handlebar Stache
  • *****
  • Posts: 1559
  • Location: San Francisco
From that I see in the industry companies no longer want to train employees, they want to hire someone with that fit their exact requirements.  I see this in Silicon Valley, NYC, and Seattle based on the interviews I have been through.  There are other places where they will take anyone with a pulse and pay them 50-60k for a fresh grad, not even with a CS degree.  These are mostly in the lower cost of living areas like Atlanta, Jacksonville, and Houston.  They will basically put them in a development boot camp for 6-8 weeks, take some tests, and send them across the country for job assignments.  Not bad for a new grad with no experience, you get to learn and travel but they make you work lots of hours so your hourly is close to $10-$15 an hour.

The best advice I can give you is get proficient in some of the basics HTML5 and Javascript and try to find a mentor or small project to build a portfolio that you can showcase to potential clients.

Jamesqf

  • Magnum Stache
  • ******
  • Posts: 4047
The fundamental problem with this is that learning to code - that is, language syntax and so on - is pretty easy.  Knowing what to code, and why, is often anything but.  Here's a nice example from a thread a few months back: http://www.mrmoneymustache.com/forum/off-topic/i-feel-better-about-not-upgrading/msg178037/#msg178037  See the 3rd post down for an example of how two people, both CS grad students, can come up with wildly different solutions to a simple problem, one vastly better than the other.

Threshkin

  • Handlebar Stache
  • *****
  • Posts: 1033
  • Location: Colorado
    • My Journal
I have worked in the software manufacturing business for many years.  I am not a coder myself but have managed and worked with many coders over the years.  In my experience we do hire some coders fresh out of college but most (over 90%) are overseas and the few positions in the US go to the top grads of the top colleges like MIT.  Even the overseas hires need to be in the top 10% of a major school.

Not every company is as picky as the ones I have worked for but the days of companies being hungry for anyone with coding skills are long gone.  20+ years ago I was recommending a CS degree to any kid who liked math or languages and was detail oriented. 

If you are good, freelance or independent might be a better option.  Plus coding is not a bad skill to have nowadays. 

The media is behind the power curve as usual.  Their stories are driven by the sales pitches of tech schools trying to fill their classrooms with profitable students.

gooki

  • Handlebar Stache
  • *****
  • Posts: 2387
  • Location: NZ
If you are really interested then do it. Passion and a bit of aptitude will take you a long way.

There are definitely institutions taking advantage of people who want to get into the industry, selling the prospect of a high wage, when realistically only those with the aptitude and passion have any chance of achieving that.

The industry is happy to have a bigger pool of employees to choose from as this allows them to lower wages.

DaKini

  • Bristles
  • ***
  • Posts: 341
  • Location: Germany, Munich area
I'm a coder myself and know a fair share of web based languages (PHP, JavaScript, HTML, CSS) as well as Java and also *nix-near languages like perl, shell-scripts (sh, bash, ksh) and also TCL; accompanied by a variety of protocol knowledge (SQL, LDAP, some bit-level networking stuff etc). I already "invented" several frameworks and that tought me alot on how to structure even simple programs better.
This knowledge also gives me a great deal of flexibility to solve nearly any computable problem and nowadays time is virtually my only constraint.
It enhanced my life alot already and i would say, that it would be good if everybody would know at least a basic scripting language.

However there are worlds between "solving a problem by coding" and producing "good code". There are a lot of "programming experts" who just produce stuff "that works". That is not programming like i define it. I program mostly for the fun of it. I only have fun when the resulting code is well structured and good readable (exhaustive comments and descriptive variable names for example). I hate it when being forced to maintain "bad code". This leads to the situation that i usually write my programs as if they would be some kind of tutorial or scholars learning material.


Well, that was off topic mostly. Sorry.
I think, everyone should learn some basic programming skills as it will greatly enhance computer knowledge and serves as a foundation to maybe solve problems more elegantly later in life. Programming is comparable to carpentry skills if one looks at it that way.

GuitarStv

  • Senior Mustachian
  • ********
  • Posts: 14167
  • Age: 38
  • Location: Toronto, Ontario, Canada
As has been said in this thread already . . . huge difference between knowing how to code, and knowing how to code well.

I'm a software developer, and have been working in my field for quite a while now.  Design is everything.  How you design something determines if it sucks or not.  Once you have the design in place, the coding part is trivial and any monkey could do it.

A great many of the simple coding things done in companies are now being outsourced to India.  You don't want to compete with their wages.

Paul der Krake

  • Magnum Stache
  • ******
  • Posts: 4639
  • Age: 11
  • Location: USA
When I started studying CS in school, some said we were suckers because "everything is going to be outsourced to India". Yeah, right.

Programming is hard. I started teaching a class to the non-techy people at my company who have epxressed an interest in learning how to code (more as in intellectual stimulant, we don't expect anybody to join the dev team), and coming up with good examples that don't involve telling them about a dozen other concepts is tricky.

I don't see anyone worth their salt being out of job for very long in the foreseable future.

Sebastian

  • Stubble
  • **
  • Posts: 209
  • Age: 32
I have heard the difference between someone how can "code" and someone who can code "well" argument before.

My question is.. is this just an ability that some are gifted with and the rest of us are screwed?

I've been committing all my free time to learning how to do web design as well (html, css, javascript, and eventually PHP). I want to learn this as my fiance and I will be peacing out of our home town and traveling the country and eventually going to S. Korea to teach english.

I want to learn web design so that A) we can create blogs and B) when I come back to the states I can pick up little gigs to build web sites for small companies or whomever needs it.

That being said. Can I do this? or am I doomed to being a monkey on a type writer sort of "coder"?

If all it takes is desire then I think I'll be good :)

PS - I reread OPs post and my question is pretty similar. So I'm not trying to thread hi jack at all! I just want to know...

Is there hope?
« Last Edit: March 05, 2014, 09:26:45 AM by SethBahookey »

zolotiyeruki

  • Magnum Stache
  • ******
  • Posts: 3283
  • Location: State: Denial
If you're just coding, there's a chance your job will get outsourced.  The key is to become more than a coder. 

I work for a mid-size internet startup, and I spend a fair bit of time coding.  But my job goes well beyond that--both before and after.  In other words, before we start a new project, I design and architect and plan the software.  I look for potential pitfalls in our design.  I make sure we design it so that if it catches on, we can scale it easily.  We try to design our work to be easy to maintain and debug.  I spend time fielding questions from users, which helps us identify bugs and places where our site isn't easy to use.

In short, I'd say maybe 15-20% of my time is spent coding.  The value of a programmer isn't just in the ability to code.  It's also in all those other things--the planning, the design, the foresight, etc.  Without those,  the coding would take a great deal more time and effort, with a poorer result.

What do I think of the "learn to code" movement?  I have no problems with it--if kids (or adults) are exposed to it, they might just find that they have a proclivity for it.
I have heard the difference between someone how can "code" and someone who can code "well" argument before.

My question is.. is this just an ability that some are gifted with and the rest of us are screwed?
I think there are two factors that go into whether someone can "code well":
1) natural ability--Some people just have "the Knack"--as young Dilbert's pediatrician would put it.  Programming just comes naturally to some people.
2) experience.  I started work here about three years ago.  The progress I have made in these three years has been (to me) astounding--not only have I increased my knowledge of programming in Java tremendously, there are tons of shortcuts, tips, tricks, hidden gems of knowledge, and intuition that multiply my ability to write code far beyond "x lines per day".

FIPurpose

  • Handlebar Stache
  • *****
  • Posts: 1097
  • Location: WA
    • FI With Purpose
I have heard the difference between someone how can "code" and someone who can code "well" argument before.

My question is.. is this just an ability that some are gifted with and the rest of us are screwed?

I've been committing all my free time to learning how to do web design as well (html, css, javascript, and eventually PHP). I want to learn this as my fiance and I will be peacing out of our home town and traveling the country and eventually going to S. Korea to teach english.

I want to learn web design so that A) we can create blogs and B) when I come back to the states I can pick up little gigs to build web sites for small companies or whomever needs it.

That being said. Can I do this? or am I doomed to being a monkey on a type writer sort of "coder"?

If all it takes is desire then I think I'll be good :)

PS - I reread OPs post and my question is pretty similar. So I'm not trying to thread hi jack at all! I just want to know...

Is there hope?

I have a CS degree and currently work for a large tech company. There are a lot of people that I work with that come from a university background and a lot that don't.

Most anyone with an associates degree can take a diagram and turn it into workable code. It's the creation of that diagram that is important and takes a lot of study to understand why it works better than other designs, and there's a good reason why those skills can't just be taught in a couple semesters.

Of course you could teach yourself these ideas, but then again anyone could teach themself any field in college (it just takes more time than anyone is willing to commit). Knowing how to design something takes more than just an understanding of syntax and design patterns. It requires a knowledge of how threads and processes run on the OS; it requires knowing how your DB's work under the hood and how the trade off between quick insert and quick look up times can affect your project; it's about how firewalls and networking protocols.

If you are just a coder, you''ll never learn all of those topics on the job. It'd be like a construction worker wanting to become a civil engineer by working on the job. I'm not saying the jobs don't exist, because I work with a lot of people (in the US) that just code. But just realize what level you're asking for.

Mister Fancypants

  • Bristles
  • ***
  • Posts: 296
  • Age: 42
  • Location: New York
As several others have pointed out you can easily learn to "code" and become a "coder"... This might earn you some income depending on you aptitude for coding, your path of study and your choice of mentors.

However as a software engineer by profession, and as others mentioned earlier there is a huge distinction between being a "coder" and a being  a software engineer, a lot more goes into building software and applications then simply coding and a software engineer would never refer to themselves as a "coder", but would include writing code as one of their job skills, understanding architecture, patterns and design fundamentals are much more important than simply being able to write code.

Itís import to know what code to write and much more important to know what code not to write, when and where to write any given piece of code and how it fits together with other pieces of code is vastly superior to the content of any particular snippet of code, coding is just the beginning.

I agree everyone should learn the fundamentals of writing software and understanding how computers work as we have all become so dependent on them for just about everything we do, however there is a huge gap between the basics of coding and actually being an employable software developer.

Many people get lucky and are paid quite well for developing absolute crap; there is nothing worse than having to dig into a poorly written code base and trying to fix it.

Good luck!
-Mister FancyPants

wizlem

  • 5 O'Clock Shadow
  • *
  • Posts: 43
I'll agree that major software development needs more than the ability to write code.

However, I think there are plenty of jobs out there where people spend lots of time doing simple repetitive computer tasks with clunky gui interfaces because they have no ability to do it any other way. These jobs could easily benefit from "learning to code".

As someone who works in a research field which relies heavily on computers, I've seen plenty of resumes where people only list operating systems and various pieces of software they've used as computer skills. It's a huge benefit for the person who can at least demonstrate some knowledge of a programming language.

Jamesqf

  • Magnum Stache
  • ******
  • Posts: 4047
I have heard the difference between someone how can "code" and someone who can code "well" argument before.

My question is.. is this just an ability that some are gifted with and the rest of us are screwed?

Forget about the 'coding' part, and think of it as problem-solving.  Coding's just a tool that you use to implement the solution.  Think of it as like MMM's nailgun: you may be a whiz at 'nailing', but that's not much good if you just stick boards together at random.  You need to know what kinds of nails to use and where to place them, then you need to have an overall plan for what you're building - say a house.  That house could be well-designed, or full of little 'gotchas' that make it awkward to live in.  (Like the closet doorknob that sticks out in my hallway, or the bathroom mirror that's angled wrong...)  Then you have to be able to communicate with your clients, so you don't wind up building a McMansion when they wanted a cozy cottage, or vice versa...

I don't know whether it's a natural ability, or whether it's learned.  I do know that a lot of people get work even though they apparent' can't do it well - or particularly in the case of web design - seem to deliberately choose to do poor work.  (Though maybe it's just that I see more web sites...)

nawhite

  • Handlebar Stache
  • *****
  • Posts: 1060
  • Location: An RV somewhere in the West
    • The Reckless Choice
I look at the "learn to code" movement similar to the "we need more women in tech" movement. In both cases, it is relatively easy to take a first time learner and teach them what they need to get a job or understand a conversation.

It is a very different thing to convince someone that this stuff is AWESOME and gives you magical powers.

I can teach my wife (a preschool teacher) all about programming, I can teach her how to host a website, I can teach her how to solder, and I can teach her about computer science (a very different thing than programming).

What I can't do is take her back to middle school where I build an automated marble sorter and destroyed the class record time for sorting 100 marbles and felt like a GOD because I was clever.

I can't force her to be excited when I learn how password cracking works and get a rush out of cracking my bad passwords.

I can't share the visceral rush I feel when I finally configure my static site generator to output a full website exactly the way I imagined. At the same time, I don't get a rush when a child I know says a sentence that is 8 words long instead of 7.

Do what excites you but help your kids (both boys and girls) get excited about tech/programming because this stuff is AWESOME and gives you magical powers.

alm0stk00l

  • 5 O'Clock Shadow
  • *
  • Posts: 92
  • Age: 37
  • Location: The awesome biking city of Houston
I am not sure why everyone mentions some difference between learning to code and learning to code well. Every field can be done poorly or well, that is not exclusive to writing code. Ultimately, you cannot be a software engineer without learning to code, so it is a good place to start. Don't worry too much about being good at it, that comes with time and study. Most software development tasks are things that have already been done. As long as you are willing to research a solution before trying to implement your own, you will be fine.

While design is infinitely more important that knowing the syntax, the only way to actually learn about good design is to work on systems. If you know how to code and are tasked with maintaining a shitty code base, you will quickly learn what areas cause you the most pain. Even if you write a system yourself, chances are you will think it sucks a couple years later(if that long). Every software developer, regardless of skill level, has written crap code(except me :) ). Most developers are not expected to know how to design a system. Architects handle the architecture and developers handle the implementation. So "just knowing how to code" is more than enough to be a junior level developer.

The only reason people point out the difference in coding and coding well is because they think they code well, and, trust me, they usually don't. So crack a book, or kick-off a video, and learn to code. You can get paid quite well, and do a pretty good job, just for knowing about for loops and conditionals. :)

phred

  • Pencil Stache
  • ****
  • Posts: 506

I've been committing all my free time to learning how to do web design as well (html, css, javascript, and eventually PHP).

I want to learn web design so that A) we can create blogs and B) when I come back to the states I can pick up little gigs to build web sites for small companies or whomever needs it.


Learning html, css, php, javascript will take care of how to code.  Now all you need is to go to art school to learn how to design a great looking page.  Many websites look like crap because the coder had no layout skills whatsoever.

warfreak2

  • Handlebar Stache
  • *****
  • Posts: 1140
  • Location: UK
    • Music by me
I am not sure why everyone mentions some difference between learning to code and learning to code well. Every field can be done poorly or well, that is not exclusive to writing code.
Everything can be done well or poorly, but in most fields the differences are not so pronounced. A highly skilled programmer can do in a day what a novice might take months to do worse.

Undecided

  • Handlebar Stache
  • *****
  • Posts: 1088
I'm not a programmer, but did want to ask about the parameters of the "movement" as it's being commented on. On the one hand, I think the idea that school curricula should expose students to coding as a tool, and as something they might want to explore further, is a good idea. On the other hand, I think the idea that "everyone should learn to code" in any meaningful sense is sort of silly (not that I'm saying that people should avoid it, but it's not clear to me what it's more universal than "everyone should learn accounting" or whatever). My point being that I am curious as to what people think the "movement" is.

naturelover

  • 5 O'Clock Shadow
  • *
  • Posts: 62
OP here. Thanks for all the insights, everyone! It's good to hear different opinions on the subject. It sounds like I'm in a similar situation as SethBahookey with my interests in web dev. Personally, I would just be looking for a jr. web developer type position. I do have some graphic design skills and hope that would help make me a decent candidate.

^ About the "movement," when I started this thread, I meant the whole concept that everyone (kids and adults) should learn to code, it's the wave of the future, etc. Basically, all the media hype on the subject from the last several years. My curiosity is can "learning to code" on one's own actually land a person a job. The responses here have helped clarify that somewhat.

Jamesqf

  • Magnum Stache
  • ******
  • Posts: 4047
Most developers are not expected to know how to design a system. Architects handle the architecture and developers handle the implementation. So "just knowing how to code" is more than enough to be a junior level developer.

Maybe in some place/fields this is true, but it's by no means universally so.  Quite often you are doing, if not the entire project, a piece for which you just have a defined interface.


rugorak

  • Bristles
  • ***
  • Posts: 383
The essence of learn to code is just that computers and code are such a huge part of daily life you should know a little about how it all works. Similar to if you drive a car you should know the basics of how it works, how to balance a check books, etc. The people pushing it can get you a job usually do not work in the field. They are politicians or celebs  or CEO's who call IT to turn on their computer. It *could* lead some people to a job if they find they love it and have a knack for it. But that is like saying take an intro to biology class and you'll be a doctor. Or replace a single leaky faucet and get work as a commercial plumber. Sure if you love it and get it and pursue it further you can. But it is by no means a guarantee.

As for why so many harp on being able to program and being able to program well, it is because the field of IT is new compared to many others (accounting, plumbing, farming, etc.) and therefore many people do not realize the level of expertise it can take to do things well. For example I would imagine many of us can change out a broken light switch or outlet. It may be more than the average person but nothing extraordinary. But just because we can do that doesn't mean we are going to go apply for a commercial electrician job working on high voltage lines. But there are people and companies (usually small ones) who think just because you know something about computers more than the average person you can do it all. Or they think everyone in IT does the same thing. So they call the helpdesk and see a PC technician who comes to replace their broken keyboard and then see the guys who are network admins or system admins or coders or DBA and think they are all the same. Which they are not.

jba302

  • Pencil Stache
  • ****
  • Posts: 623
Learning R and SQL now for an internal job switch, I've already had some external interest in my resume by sharing that I'm LEARNING these languages let alone having experience in them. I've been training for about 2 weeks now...

dragoncar

  • Walrus Stache
  • *******
  • Posts: 8798
  • Registered member
I write poor code really well.  I'm a hacker.

DaKini

  • Bristles
  • ***
  • Posts: 341
  • Location: Germany, Munich area
The only reason people point out the difference in coding and coding well is because they think they code well, and, trust me, they usually don't.
That is absolutely true. If you code regularly, you will advance in your skill/experience and only this gives you the possibility to reflect on prior work. I have some skeletons in the closet of which i once tought they were masterpieces of work. The same will be surely true for my current masterpieces one time.

However, I think there are plenty of jobs out there where people spend lots of time doing simple repetitive computer tasks with clunky gui interfaces because they have no ability to do it any other way. These jobs could easily benefit from "learning to code".
Fully agree with this. In fact, one with only slight scripting skills can apply a huge lever. I once had a weekly repetiting task at the beginning of my career that involved changing database values with a certain other value using a "cluncy gui". This took about nearly a work days time. I wrote a script in about two or three days total time  (including bugfixing and other enhancements) which automated the task. However i was so clever that i did not just shoot for the "quick fix solution" but wrote a small versatile tool that 'also" can solve my current task. The result is at least hundreds of saved hours by now as the tool was applicable to very much other such tasks - only by cleverly design of the tool and keeping its usecases wide open, just by using proper parametrization and the posibility of combining it with oter tools.

I write poor code really well.  I'm a hacker.
In fact i think that most repetive tasks would benefit greatly from "hacket scripts". I have plenty of 20-liners (well written, usually those tasks could be done with 4-5 lines of compressed perl code, but, that is not nice to read and maintain) solving simple repetive tasks.
Basic scripting knowledge, learnable in about 2 weeks would thus provide a huge lever in productivity for many people.

GuitarStv

  • Senior Mustachian
  • ********
  • Posts: 14167
  • Age: 38
  • Location: Toronto, Ontario, Canada
I am not sure why everyone mentions some difference between learning to code and learning to code well. Every field can be done poorly or well, that is not exclusive to writing code.
Everything can be done well or poorly, but in most fields the differences are not so pronounced. A highly skilled programmer can do in a day what a novice might take months to do worse.

Actually, it's worse than that.  A novice might get something 'working' in a week that then requires months upon months of frustrating maintenance in the future as bugs pop up.

A pro might take a month to get the software working, but the software would be configurable, readable, and easy to fix problems in the future.

DaKini

  • Bristles
  • ***
  • Posts: 341
  • Location: Germany, Munich area
On the other hand, there are certain "pros" who spend two weeks solving a problem that would be also solvable with a hacky 3 liner in perl.
It is the "pros" experience however that makes him able to draw the compromise between the two extremes.

That said, i think i tend to belong to the first group because i like to work clean and produce good quality, not to be said "fine art". For example i would implement that feature i know i have no use of, just because it enhances a tool to nearly completeness and i see rare usecases for the feature i might[/in] need in the future. (This fortunately has always paid off for me so far...)

AlanStache

  • Handlebar Stache
  • *****
  • Posts: 1910
  • Age: 40
  • Location: South East Virginia
It seems like you are interested in coding but competing with 1,000,000 other coders makes it hard to get a job and harder to make any money but what if instead to learning a modern language you studied one of the older legacy languages.  COBAL?  In my career I have seen a number of places that need engineers to work on legacy systems with legacy technology.  This might be a niche you could get into, go look for a smaller pond to play in.  0.02$



phred

  • Pencil Stache
  • ****
  • Posts: 506
COBOL

Jamesqf

  • Magnum Stache
  • ******
  • Posts: 4047
Actually, it's worse than that.  A novice might get something 'working' in a week that then requires months upon months of frustrating maintenance in the future as bugs pop up.

Or it might take hours/days/weeks to do the task, where a good programmer might (or might not :-)) take longer to finish, but the job would now run in seconds/minutes/hours.

AlanStache

  • Handlebar Stache
  • *****
  • Posts: 1910
  • Age: 40
  • Location: South East Virginia
Quote
Or it might take hours/days/weeks to do the task, where a good programmer might (or might not :-)) take longer to finish, but the job would now run in seconds/minutes/hours.

Or a good engineer may see that it does not matter if it takes seconds/minutes/hours to run.  Generating daily reports at 2am for the 8am meeting.  It all comes down to thinking and seeing the big picture.

DoubleDown

  • Handlebar Stache
  • *****
  • Posts: 1991
The difference with self-taught coding and other professions is, in programming there's usually zero feedback on whether it was hacked together or done well by someone with proper training. So, you can get away with bad practices for a long time. With other fields, you can get instant visible or functional feedback on whether the job was done right, such as the results of a poor haircut, surgery that didn't go right, a leaking faucet, doors that don't close right, etc. Often in coding, the only time you get any meaningful feedback is after the fact if/when things go terribly wrong; and by that time it's often an (expensive) problem for someone else to clean up.

Even many so-called professionals do horrible jobs at it -- look no further than the failing ACA exchange websites as examples of this. I've worked in the past with hundreds of "professional," highly paid software developers who were never properly trained, and continued their poor habits for decades because they were never taught how to do things elegantly or in a correct way and just went from job to job repeating the same mistakes. Yeah, they could hack together some ridiculous solution that an untrained observer would be none the wiser to, but it will end up causing problems down the road. Jamesqf gives a great example with a person just slinging nails around, compared to someone who actually knows how it all should all be put together in a well-designed and well-built house.

dragoncar

  • Walrus Stache
  • *******
  • Posts: 8798
  • Registered member
The difference with self-taught coding and other professions is, in programming there's usually zero feedback on whether it was hacked together or done well by someone with proper training. So, you can get away with bad practices for a long time. With other fields, you can get instant visible or functional feedback on whether the job was done right, such as the results of a poor haircut, surgery that didn't go right, a leaking faucet, doors that don't close right, etc. Often in coding, the only time you get any meaningful feedback is after the fact if/when things go terribly wrong; and by that time it's often an (expensive) problem for someone else to clean up.

Even many so-called professionals do horrible jobs at it -- look no further than the failing ACA exchange websites as examples of this. I've worked in the past with hundreds of "professional," highly paid software developers who were never properly trained, and continued their poor habits for decades because they were never taught how to do things elegantly or in a correct way and just went from job to job repeating the same mistakes. Yeah, they could hack together some ridiculous solution that an untrained observer would be none the wiser to, but it will end up causing problems down the road. Jamesqf gives a great example with a person just slinging nails around, compared to someone who actually knows how it all should all be put together in a well-designed and well-built house.

I'm not even sure how much of this feedback you get with formal training.  I wasn't a CS major but I did take a lot of CS classes.  I can't recall anyone telling me my code would be unmaintainable, etc.  I'm sure if you took a class geared toward that topic, you would get that feedback.  But most classes only cared about functionality and performance.

Then again, my recollection could be wrong.  I'm also generally decent at commenting and factoring.

zolotiyeruki

  • Magnum Stache
  • ******
  • Posts: 3283
  • Location: State: Denial
I've been at my programming (among a gazillion other things) now for about three years, and I've learned a lot about when to apply what programming style--quick & dirty, optimized to the hilt, easy to maintain/support, etc.  The thing is, it's hard to tell whether long tenure at a job is a sign of a good programmer (bosses really like their work) or a bad one (bosses are afraid to let them go, because they're the only ones capable of maintaining the system).

DoubleDown

  • Handlebar Stache
  • *****
  • Posts: 1991
Funny story that happened at work once:

One of the managers wanted to get an understanding of the various IT skills the organization had (so he could call on a person if a surge need ever came up), so he had everyone gather at a conference table, and then proceeded to go through a list of skills so that each person could self-assess their skill in that area, anywhere from "expert" to "I know nothing about it." One guy in the group had been working in IT for 25+ years yet was particularly ignorant, one of the worst technical people I had ever worked with. As we were going through the list of skills, everyone was giving reasonable assessments except this guy, who answered "expert" to everything. I'm rolling my eyes to myself at every answer of his.

Finally, the manager names a very well-known topic, let's say "Java programming." The guy does not know what this is, so he says, "Java programming??? What's that???" People say, you know programming in the Java language?..." He still doesn't know what it is, and people give further explanation about what Java is. Finally, he says, "Oh, JAVA...  Expert."

AlanStache

  • Handlebar Stache
  • *****
  • Posts: 1910
  • Age: 40
  • Location: South East Virginia
Quote
Expert

I dont think you know what that word means.

Insanity

  • Handlebar Stache
  • *****
  • Posts: 1026
I have to admit that I don't like it.  I think it tries to send a message that "coding" is easy.  That every one can do it and everyone should do it.

It would be like saying: everyone should go  build homes.  There are so many finer points that need to be maintained that you get by experience and by wanting to understand underlying complexities.

cochranjd

  • 5 O'Clock Shadow
  • *
  • Posts: 20
You'll obviously have to take time to learn the syntax of some language if you want to write code, but as others have said - the real skill is figuring out the bigger picture.

In my experience, you can find any number of folks with vastly varying degrees of experience/competence that can build something that meets the basic requirements.  The difference is that the really good ones know how to build something that will need to be changed over time.  The bad ones typically build something akin to a house of cards and it is fine until you start needing to make changes.

Pick a language to learn (Java, C#/.Net, Ruby, etc.) and dive in, but pay attention to the bigger things.  Read up on design patterns.  Learn why certain patterns are beneficial in certain situations.  When you hear or stumble across things like "dependency injection", "inheritance vs composition", "REST", "SOAP", read up on what it is and why it matters.

Realize that the language will change, but the approach and concepts are where you can provide real value. 

Spend time looking at popular open source projects on Github - you can read all the code right there (and even pull it down, modify it and use it yourself).

I do think that folks can teach themselves and be very successful (though I do admit, as a software engineer it is sometimes frustrating to see how many people think they can just spend a few hours a week playing around with it and become competent - so realize it will take you some time).

If it is something you enjoy, dive in.  You may never make money off of it, but it is a very enjoyable hobby on its own.

Good luck!

FIPurpose

  • Handlebar Stache
  • *****
  • Posts: 1097
  • Location: WA
    • FI With Purpose
I have to admit that I don't like it.  I think it tries to send a message that "coding" is easy.  That every one can do it and everyone should do it.

It would be like saying: everyone should go  build homes.  There are so many finer points that need to be maintained that you get by experience and by wanting to understand underlying complexities.

No it's more like saying that everyone should know how to build a bookshelf. Not everyone that learns carpentry is looking to be an architect.

Insanity

  • Handlebar Stache
  • *****
  • Posts: 1026
I have to admit that I don't like it.  I think it tries to send a message that "coding" is easy.  That every one can do it and everyone should do it.

It would be like saying: everyone should go  build homes.  There are so many finer points that need to be maintained that you get by experience and by wanting to understand underlying complexities.

No it's more like saying that everyone should know how to build a bookshelf. Not everyone that learns carpentry is looking to be an architect.

Except everyone who learns how to code will try to put something either (a) on the web or (b) on an App Store.


cochranjd

  • 5 O'Clock Shadow
  • *
  • Posts: 20
Quote
No it's more like saying that everyone should know how to build a bookshelf. Not everyone that learns carpentry is looking to be an architect.

Half the time, it is followed up with "so I can make some extra money".  I don't know many folks learning how to build a basic bookshelf so they can turn around and sell those skills.  I think that is an important dividing point what you're talking about and what others are talking about.

I agree with you if you are talking about basic knowledge for their own uses, but I agree with the other poster that it is really frustrating when people act like learning to develop software at a professional level is something you can pick up with a small bit of time invested.