Right now, I basically have no idea what this is - is it something like Dribbble but for programming? Or is it more like oDesk? Who comes up with the applications? Who does the code reviews? Et cetera. Nearly every sentence of copy is ambiguous.
As for your questions :
1- Experts in the field working with us have come up with Applications. We are working with some companies so that they can put sponsored applications on our website that they would love to see on a candidates resume. In addition, if anyone has an idea for a project they can submit it on the project page and we will work with them to refine it and put it there.
2- The community does the code reviews. As you said this is unclear right now on the landing page. Basically, if there is a person who have done the project before you with a good score, they will review the code. Reviewing someone's code is also part of your portfolio so you get a score for doing it.
I recently started to update my GitHub profile for the same reason and created my username.github.io page with a simple landing that summarizes my interesting repos. My point is that the need is definitely there, but I think the message of the site is "if you have zero imagination how to show off that you can code, here are some projects for you".
The people who need this site the most are people who are new to programming or don't have any university background (online courses, self taught). Unlike you these people DO struggle starting their own project and they DO need some help setting up their node.js environment.
The problem is that many of us who learned programming on our own have gone through these initial struggles (although we might have forgotten it). People who are learning online are led to believe that becoming a programmer is as easy as taking a code academy course and when they finish the course, they can't do much cause they have been gamified and handheld too much. Most of these people are giving up because there is this sharp fall from finishing an online course and becoming a 'developer'. We are trying to help these people.
Good developers are not in terrible need of a portfolio but the new ones or the ones who are changing their career path are in need of it to actually get a job.
I definitely agree that there is a great drop-out among wannabees, but for them codeacademy style portals are a better fit imho. I tried to teach my designer girlfriend using codeacademy and it didn't go very well, but it was probably a motivational issue. Then I showed her how to modify HTML and she is able to update her site now without my help. So finding the sweet spot it very hard and I feel you need to target more accurately.
For example are you sure somebody just learned about functions, for loops and arrays are OK with command line tools and understand how GIT, Grunt, Gulp and node.js relate?
About the target audience. We actually built Zyring for people like me. I was a PM at Microsoft who wanted to transition to a developer role. I learned programming through self-learning (didn't follow traditional CS path) but always found myself building things that were either insignificant or I was handheld through the entire process so I couldn't recreate my work. As I talked to more people, I realized that there are a lot more people like me. I completely agree with you that we need to find that "sweet spot" where the user (like your gf) can build a project on her own but still get the right guidance so she doesn't get overwhelmed and lost.
I would really love to talk with you and/or your girlfriend to get your feedback on how we can help and improve Zyring. My email is email@example.com. Thanks!
We created this website for people who are new to programming or people changing careers. People who have not taken a university path (taken online courses, self taught) but find it difficult to get a job because they don't have anything on their resume. They find it intimidating to contribute to open source projects and don't really know how to start a project on their own.
Makes sense ?
But then there are things like data structures and algorithms which are backboney but wholly unnecessary unless you want to work at Google. So, that's another thing. Because I can build a bunch of projects but what if I don't have the data structs/algo? Or what are the projects I can accomplish that implement those things?
As for the alg/ds. In my opinion, there are some fundamental things that you need to know about DS/alg that make you a better developer. What people usually get wrong is assuming that it is the applicability of the algorithms or datastructure that matters ( who cares if you know about a Red/Black Tree ! ) . I think its more about the patterns and the way they allow you to think.
Understanding how tree traversal is done may not be directly useful in your work but helps you understand recursive thinking which is super important. Knowing how QuickSort/MergeSort work doesn't have any application in real life but makes you think about problems with a divide/conquer approach in mind which is again super practical. You will never write a Hash/Dictionary but knowing what is the difference between one and an array has immense applicability on your work.
My advice to you: stay away from memorizing DS/Alg. Throw out your "cracking the coding interview" book if you have one and pick a algorithm and datastructure book and try to understand it. Then you can move on to solving problems yourself and you will realize that you are a better developer for it. Here is what I would suggest:
Of course, you don't need to know all of the stuff here :)
The answer to your question, the idea spot is somewhere in between. Yes, you need to know data structures/algo because there is only so far you can go if that's all you know. I am a very strong believer in "learn as you go" and "pull information as needed". Many people start out learning the fundamentals but forget what they learned because they didn't put it into practice. So my recommendation would be to keep building things and your portfolio, while challenging yourself to also learn the fundamentals as needed for your project.
Sure, but if you are solving a problem you come across, and the current solutions cannot solve it, there is no reason to not build it yourself!
There are different ways to solve a problem, and chances are your solution may be very useful to other people as well.
And lastly, I'd say don't focus too much on data structures and algorithms until you actually need to think about them. "premature optimization is the root of all evil" (or something like that, at least what I take from it is don't do it until you have to. But that's just my take on it.
The big change we're seeing in the IT job market is that now these same sorts of expectations which are standard in more mature job markets are now often times being applied to IT knowledge workers. The new trend is that it's reasonable to expect for employees to have completed significant projects which demonstrate their knowledge and competency in a non-trivial way, which is akin to a doctrinal thesis or post graduate work.
In my opinion what this means in practical terms is that after you finish your 4 year degree, or acquire the equivalent CS knowledge on your own, it behooves you to plan for yourself a period of time, perhaps 6 months or a year to work on actually creating something which demonstrates the knowledge that you have acquired. You will own the IP for this "field work", so you can use it to qualify yourself to future employers.
What I suspect is that in the future this field work will be more important than the actual 4 year degree if it's not already. Personally I have no experience with hiring, but since it's part of my planning I think about it frequently. I suspect that already it's the case that startup hiring teams get more out of examining a well built implementation of a non-trivial concept than they do out of examining a college diploma.
TLDR: It's unreasonable to consider yourself to be a qualified anthropologist or an archeologist without having first done field work and documented in a thesis paper. This is coming to IT.
You are setting the right expectation with 6 months of building stuff. It is surprising how many people graduate from codeacamedy thinking that coding is fun and easy when in reality, the path to becoming a developer (let alone a great one) is frustrating and painful at times. Our goal is to give all of these new developers the chance to built significant pieces of work and get the proper guidance when they need it with code reviews. No handholding (learning websites) or intimidation (open source) - just a safe environment to build and break things, while getting the feedback and portfolio to jumpstart a developer career.
My GitHub account contains a mix of (a) small pieces of functional software used in niches that are poorly supported, such as non-delivery report processing in Drupal, (b) dumb things that were amusing enough to write, such as a self-propagating bash script, and (c) functional examples for software that lacks good functional examples, such as the use of Guice in DropWizard.
This sort of thing seems more than good enough to demonstrate that you know what you're doing.
"Functional examples for software that lacks good functional examples" sounds super valuable for a portfolio also they create tangible value for people who need them. Your dropwizard example at https://github.com/exratione/scala-dropwizard-guice-example is a perfect example.
Thank you for your feedback.
The art of matching a problem with a solution with minimal effort is much much more valuable that spouting out thousands upon thousands lines of shoddy code with poor understanding of the fundamentals.
It's ironic how history rhymes. The "enterprise rockstar"(1) programmer of today is very close to the stakhanovite of yesteryear, building his reputation on an army of people making his code actually work. http://en.wikipedia.org/wiki/Alexey_Stakhanov#Record_dispute...
(1) I use "enterprise rockstar" here in a technical narrow sense of someone that spits out a ton of code that kind of works, but to actually operate requires vast amounts of support effort. Force diluters. There are true rockstars out there, but they usually specialize in being force multipliers.
Did you have a chance to take a look at the actual projects ? The projects are modeled after things that are already on production (Zillow, Medium, Flipboard). They are meant to get you started on those things.
The candidate would choose a data-store for the problem domain, write a multi-threaded web crawler to ingest the data, implement some stream-processing components (parsers, filters, etc), and create a simple HTML5 chart view of the (real-time) statistics around the data.
The overall terseness, neatness, and quality of the code is what matters rather than the "coolness" of the tools. Many candidates will lose focus on the actual data-analysis problem itself as they get bogged down in the details around building a platform to solve it. The ability to remain focused on the actual problem while writing terse production quality code is what you're looking for in the interview, and the candidate should be informed of that ahead of time.
p.s. the above problem is not meant to serve as a 'bar to reach' in terms of whether or not to hire someone, but rather it's a problem designed to measure a candidate's overall "full stackness" by forcing him/her to struggle towards solving a honest to goodness "full-stack" problem
Having a site talk about requirements is useful. A lot of the times I don't know about features or needs in a system until someone told me.
20-30 minutes talking with an engineer and whiteboarding a solution to a site helped me along immensely towards a solution that had more meat on it.
To me a request for portfolio contents beyond the contents of a resume is an indicator that the would-be employer is interested in people who are easily exploited or cajoled into working lots of unpaid overtime, or else that they don't actually trust the candidate's resume; both of these are negative indicators. A heavy focus on DS/algorithms for engineering positions is an indicator that the employer either doesn't understand the difference between academics/theory and engineering or, worse, thinks the latter is trivial, irrelevant, or otherwise beneath CS; both also negative indicators.
I do like programming, and I can at least empathize with the parent's skepticism. I do recall the lessons that my other freelance colleagues have told me about 'work-for-free' schemes in different forms. I don't think that's what is happening here but I can understand why some might feel that way.
If you have used code4startup, I would love to talk to you about your goals and if there is anyway we can help you. My email is firstname.lastname@example.org. Thanks!
But, how do you, at least internally, pronounce your name/URL?
ZeeRing? Like "He Ring"
ZaiRing? like "Hi Ring"
ZiRing? Like "Zirring".
I did join the waiting list for their yet-to-launch iOS projects though.
BTW, the person who is defining the iOS projects is one of the devs on Microsoft Office for iOS and Mac (which ironically is the most complex app for ios).