Ruby on Rails is sort of the basis for most any other modern MVC web framework. That is to say it inspired nearly every other web MVC framework, in most other languages. If you can use Rails you'll be able to use most anything else. Prior to Rails most web apps had proprietary frameworks powering them or no framework and were just an bunch of "pages" (endpoints) loosely strung together.
Rails also, for better or worse, has one of the easiest to use ORMs-- ActiveRecord. This helps new folks worry less about the intricacies of learning SQL (or whatever your persistence layer is) and more so about what writing a web service is really about.
Ruby as a language is also very expressive, is truly object oriented, and has all the right building blocks (that's kind of a pun actually), plus a very large amount of documentation and examples. It also is very good for meta programming which is what enables a lot of the rails magic (and fun).
At the end of the day learning more languages like PHP, Python, Java after Ruby is fairly trivial. I always tell noobs to learn whatever is useful for them, and stop worrying about what language.
I started with Ruby 10 years ago and now can write Java, PHP, Python, Scala, Elixir, Objective-C, and Swift; though I am by no means an expert in all of them. At some point you'll realize you've learned concepts and they're what is important. Not syntax.
P.s. don't let my username fool you ;) I'm just unfortunately hipster.
Edit: added some thoughts on why your first language isn't so relevant and a bit of clarity.
Edit 2: fixed absent minded use of rails where I should've written ruby.
Rails has the benefit of providing a framework that can get someone building functional CRUD apps in a tremendously short period of time.
Between those two, you've hit a nice sweet spot where someone can be fully functional as a developer in a short period of time (talent/quality/patience aside).
Full disclosure: I went to engineering school for 2 degree and then later attended (and currently work for) a code school.
I can say that I can see a marked difference in students that go through Ruby as a first programming language vs JS. Ruby-first students are more ready to deal with new ways of doing things and they are, in general, less likely to have serious learning issues. JS-first students tend to have more consistent problems grasping things like scope and return values. It IS possible it's bent as such due to our curriculum, but all I can tell you is what I've seen in our students.
Those programs are three months out of your life and then you're back to learning on the job and in your free time like everyone else.
I think a dynamic OO language like Ruby or Python is a great place to start but it doesn't really matter. Any mainstream language would be fine.
And why JS? Because that is what runs in the browsers.
I think the auto-magicness of Rails helps, since it gives you so much even if you are relatively inexperienced. Then you have a jumping off point, to start learning on the job, earning money and you can ostensibly choose your own adventure from there.
edit: I'm not sure what's objectionable about this comment. I'm new here and trying to be helpful, so if I've gone against some rule, I'd like to know so I can learn from it.
/end rattling my cane
Rails is probably chosen mostly out of the false tradition that Ruby is a good beginner's language or the also-false tradition Rails is a good framework.
The downside - ask 10 people for an example of proper use of advanced oop in js, and out of these 10 you will get 5 passible anwers all of which will be drastically different - horrid thing for production
But a lot of the major players (e.g, Webpack/React/Angular[!2]/TypeScript/etc) have all been around for more than a year, so context is important.
There is a ton of activity in the space, of course. I would first glance at the ECMAScript efforts of late (ES6 and ES7 in particular). You'll probably need to use Node.js, since it tends to be the center point of JS development, regardless of the tools and frameworks you choose.
The first piece is your build tool. Grunt and Gulp are the two top build tools. Gulp is more recent and seems to have more uptake. If you haven't written a build script (e.g., gulpfile.js) I recommend building one up from scratch rather than using someone else's. You could use others' for examples of what to do, but build your own from scratch according to your needs, as you go. You'll learn more and understand the whole thing that way.
The next choice is whether to use a transpiler or not. The two biggies are Babel (ES6 transpilation to ES5 or ES3) and TypeScript. You can skip this step at first, but it will be a foundational aspect to your build, so don't wait too long. If you do skip it, loop back once you've made your other choices.
The final big choice is framework. The big ones right now are React and Angular 2. There are many others, of course (Vue, Inferno, ...). You might try a few efforts here to learn about them if you don't have a clear initial default choice.
There are secondary choices depending on which main framework you choose. For example, if you use React, you will likely need a client-side store. Flux used to be the default. Now it's likely to be Redux or, more recently, MobX.
There hasn't been a better time to be a JS dev. There's still a lot of churn, but there's also more stability than there has been in the past few years. You can stick with technology choices for a year or two without major disruption if you make course corrections. Good luck!
Strange times, isn't it? 10 years ago, a front end job would require a comprehensive understanding of CSS, the DOM and JS. Now it's all about framework X and Z, build tool A or B, Typescript and what not, like these tools are so complex one has to be a specialist in these tools because they can't be learn in a few days.
Meanwhile, micro-services are all at rage on the server and back-end developers deemed big frameworks like Rails,Spring,Symfony and co an anti-pattern because complexity is bad (Go)? But stupidly complex tools and frameworks on the client are OK?
1. Build a strong CS and Math background, especially since you are interested in AI, ML. Academia is the best place to do this. Look at the curriculum of top engineering schools like mit, cmu for your sophomore year and see how you can complement it with the courses you are taking. This will pay you dividends in future. You are already doing that, which is great! Try to add more structure to your execution.
2. Take advanced courses on the topics you are interested as you get to your senior year. A lot of MOOCs have entry level courses but lack on advanced topics. You will find these scattered across university lecture videos, you already mentioned OCW.
3. For prototype projects try building things from the ground up. For e.g. Taking an Operating systems course great, build a simple filesystem from scratch. It will help you in understanding the complexity involved in production grade software and why certain design choices are made.
4. For the projects that you are passionate about deep dive into it, its great to see people talk about their projects with deep technical insight, pros and cons of design choices made etc.
5. Personally I would avoid learning every new language that comes up, focus more on programming language concepts (there is a course of Coursera on this) and learn few languages well.
6. For internships look for startups that are working on interesting ideas.
7. More than the certificates the projects what you did in those courses are more valuable.
8. Enjoy, make good friends, stay healthy and active.
1. Focus on becoming a good programmer (ie, SPOJ/Topcoder/Directi). That'll help you clear interviews, and get good at thinking about algos and data structures. I'd even prioritize this over other CS fundamentals.
2. Keep your GPA up and get into a good grad school. I disliked both the interview process and the classism (ie, recruit from top schools) of Indian companies when I interviewed there.
3. If you don't want to go to grad school, make sure you don't touch TCS/CTS/Wipro/<insert mass VIT employer here> with a 100-foot-long- pole. Given your passion, and assuming you use the next two years to become a strong programmer, you will find a good place to work in Bangalore. You might have to pay your dues, but please don't pay them at the above mentioned places.
And people who look at you as second class undergrads can fuck off (esp the professors at IIT Madras :) ). I know several friends at IITs that preferred to pot-smoke-away their time there. If you're near Chennai I'm happy to chat with you.
Learn "software engineering", this has nothing to do with language, framework, algorithm or tooling. This is about code organization, managing complexity in code, deciding how to structure/architect an application. This is where you are going to read what some will consider "boring" books, these books will hold very strong opinions and are not exact science. You will have to take that knowledge, apply your experience and come up with your own reasonable opinions too. Here are sample of such books in my library, "Business Process Management", "Ship It", "Architecture Principles", "domain driven design", "Enterprise integration pattern", "Clean code".
The real world doesn't care what language, framework, algorithm or tool you use. They just care that you solved the problem. This means you must understand some other domains outside of tech. If your domain is only tech then you will be building tools for programmers/IT folks. If you understanding banking, insurance, health care, automotive, shipping, etc, you could apply your knowledge towards the difficult or poorly solved problems in those areas.
If you become well rounded, you will have the skills to implement, the domain knowledge to solve pressing problems, but more importantly the wisdom to know when to and when not to break rules.
Colleges rarely teach you what you need to know professionally - they can't, tech moves too fast. Instead, they teach you how to learn what you need to know. This is an important distinction because it should inform your approach to your professional growth.
1. Stay passionate both about software and your own growth/education in it.
2. Start some personal projects and, important, work on them until they reach a place where you can talk about what you learned, the techs you used and be able to at least show a page or two of it working.
3. Be forthcoming in interviews about your desire to create. The longer i am in software the more importance i put on hiring creative people.
Finally, think of software development as modern day blacksmithing. Those who do well have a few things in common: passion, persistence and a great set of artisans (mentors) to learn under. Prioritize finding some people who have compelling opinions on software development and work with them. It will change how you build software and the value you will bring to teams in the future.
1. Apply to startups. If you are looking to apply to the big four, make sure you do your diligence and work hard at coding contests.2. Practice peer-teaching. VIT is a huge college. There are more people like you, and you can easily help each other by doing projects together.3. The industry, in general, rewards freshers who have worked in large teams and projects before. 4. Make sure you get a good internship. Shouldn't be hard for you, but if you are interested, drop me a mail (Razorpay, Bangalore)5. Go for depth first and then pick your specialization within software. For me it was Web Development and Software Security. Could be anything for you, but make sure you have tested the waters in other fields before picking one. The one benefit of College Life is that you have time to experiment and fail. You can try out projects in all these different fields, and then decide what you are really passionate about.6. GSoC is a great option. I'd recommend trying for a experienced org over a new one. 7. Avoid freelancing, unless absolutely necessary. It rewards short term gains, over long time learning. You can make much more money cloning WordPress themes and reusing them across projects then learning a new programming language. The latter would help you much more.
I'm very interested in Software Education in India, and if would like to talk more, drop me a mail (email in profile).
1. The level of programming taught in Indian universities is not enough. Writing a sort program is quite different from writing good, maintainable OOP code. Apart from working in a good company, one way to develop this skill (which I feel is critical) is to look and contribute to good open source projects - elasticsearch, spark, etc. Unfortunately I don't know of any good books which teach this overall, apart from specific aspects like Effective Java.
2. Another aspect that I feel is missing in Indian universities is challenging assignments. I would have liked to write my own toy OS to learn systems, or toy kafka to learn distributed systems. The more core computer science fundamentals you master now (preferably through writing code along with learning theory), the better an engineer you will be later.
3. Another aspect that is lacking is the way to reason through things. Indian universities have a third-person approach on the lines of "the experts do things this way so we will just do it this way", on the contrary in a US university the reasoning is more on the lines of "we use to do X, that had Y limitations. So we moved on to Z, now your assignment is to design an extension to Z (say Z+) which solves YY limitation". Unfortunately, I don't know what can be done to improve the way we reason about things.
4. Don't forget to explore different areas. I started with computer graphics, moved on to compilers, then app development, then data engineering, then infrastructure development, then back to data engineering.
Go and work somewhere where your university's reputation is unknown, then people will rate you on your work rather than the university you went to.
I am going to go off on sort of a tangent and offer you some general advice:
1. Do not worry about what other people think. You mentioned in the beginning of your question about being looked as "second class undergrads", and that is completely false. As Rainer Maria Rilke once noted: "Your life is so inexpressibly your own..."
2. Build things you are passionate about, and not because they'll help you land a job but just for the sake of building things. If you are interested in artificial intelligence or machine learning, learn about them and build something. Better yet, keep a blog and write about the process of learning about AI, ML, etc. Don't be afraid to email some people you look up in the industry for guidance.
3. Keep learning, learn about anything that sparks your interest. Nothing is boring in its deepest essence. There's always something to learn. And if you know a lot, teach it or write about i.e. set up a repository for other people to learn more about it in an easier way.
Above all: Just be you. Don't label or attach yourself with certain identities. Build great things just for the enjoyment of building things. Love the process of building things. Collaborate with friends and colleagues. Go boldly.
Learning, building, etc. is all a joy. Don't try to be the best _____, just build stuff that matters to you.
But things are much simpler than that. Programmers solve problems and even the most revered programmers are just solving other programmers' problems. If you are building stuff, irrespective of size, scale or complexity, you're on the right track. Snub the anxiousness of not studying in the top-tier college; it won't matter few years down the line. I certainly can relate to zealousness of solving complex problems, but in my view, it's certainly not a prerequisite for personal fulfilment, or success, for that matter.
In day-to-day work, I am yet to use anything related to AI but every now and then, I find immensely time-saving project that just solved an insignificant problem.
Look - since you are passionate about solving problems and making things, why don't you just create sources of passive income or build some business from the ground up? This way you will be able to bypass any reputation issues that your university has and focus on your creativity instead.
You are already on right track. Just complete the Graduation as it is required by many companies(and visas if you need any in future). Go for fundamental courses more on MIT OCW and others. I also studied in a private engineering college from India(2010-2014). My rant at the time here: https://nainomics.blogspot.in/2011/11/welcome-to-indias-high...
I just focused on my learning. Some professors were encouraging. That helped.
One anecdote: I made a heroku style PaaS for my final year project(like dokku). My professors couldn't understand what it does and why is it even necessary. Their main point was we have "shared-hosting" services to do these(I had to go from php to java/python example then :P). Now after two years they have their industry peers saying docker all over and have called me several times regarding that.
I am now Backend Dev building APIs with Python(Django) and Elixir at a small company. I also have small Open source contributions under my belt. Contact me if you need someone to talk to
What I really care about when I interview you is how you answer my questions (this doesn't mean that I expect you to be able to answer every question fully), how well I can gauge the depth of your knowledge, and whether or not I think you will listen to senior engineers, learn what you need to do quickly and with an appropriate level of mentorship, and be a team member rather than someone trying to do his/her own thing.
Ok, I'll admit that someone who went to a for-profit school is going to have a higher bar to pass, but I haven't had to worry about that yet.
Also, what do you mean by "at par"? Status? Money? Knowledge? Expertise in a given area, and if so, what?
You want the people you know (and who know you) to have their idea of you intertwined with what you want to be doing; now, everything they encounter that has to do with that will get funneled your way.
I hesitate to give you advice since it sounds to me like you're pretty busy already.
All that matters is your passion and how much you put into the work you do.
I went on an exchange for a year to UCLA and this was when I started to feel something similar to the sentiment you're expressing here.
I'm now in my 3rd year of undergrad EE and for the last year I've been trying to fast track myself into the AI / ML field as I've been increasingly regretting my EE major and becoming more and more interested and passionate about ML (particularly the intersection of ML, altruism and design): I got Norvig & Russell's textbook and read it in outside of my engineering classes, read less technical books like Nick Bostrom's Superintelligence for motivation / food for thought, made a simple collaborative filtering recommender system using the movielens open source dataset, moved away from the web dev stuff I'd been doing in 1st and 2nd year and tried to hone in on improving my algorithm and pure CS skills, watched a load of AI / ML videos to try and get a better sense of who's who, where's where and what's going on etc. in the field. The "dream" (I use that word loosely) is to do the google brain residency program instead of a PhD, or the U Chicago data science for social good fellowship, so I've been trying to figure out how to get myself into good shape for either of them.
It's been overwhelming at times, largely because I feel like 1) I'm not in the "right" major, 2) I've had a taste of but no longer "go to" UCLA (or an equivalent high ranking university) and won't be graduating from there so will need to work hard to stand out against the competition for placements / fellowships / internships 3) I don't have mentors or peers who can help me navigate the field (I have a great relationship with a lot of my engineering professors but again, it's not ML). So I'm sort of trying to make sense of it all myself. It's reassuring to hear there are others feeling similarly and it's great to hear all that you're doing!
On a positive note, I suspect you may be overestimating the educational superiority of the top tier schools (I know I certainly did before I went to UCLA) but at the same time I don't think it's fair to completely disregard the big unis and just say "circuit theory is circuit theory" and forget about it. While I was there, I really didn't notice all that much of a difference in terms of course content or even teaching quality - the biggest difference was there were an awful lot more high achiever students in my EE classes compared to in my home uni in Ireland, and there was a much more impressive "career fair" and internship opportunity scene than at home (think Irish Cement vs Hyperloop One).
You seem to be doing everything right. I think I was edging down a "burnout" path a couple of months ago with fretting over what you're saying and over my own EE vs CS major "challenge". I've tried to take a step back and remember that there's no one enforcing a particular pace or path for me, hopefully you won't let the fretting get in the way of your passion which almost happened to me.
Just wanted to comment this to warn you about the burnout thing, reassure you somewhat about top schools and throw in a few links you might find interesting for good measure!
You mightn't find any of these links below helpful, you very well may be much more well read than myself but I thought I'd link these here anyway. The first is a reassuring AMA on reddit from the google brain team (particularly the comments where the team talk about all the different backgrounds everyone has at google brain). The second is a list of programmes, fellowships, resources and random AI / ML related pages I've encountered in the last year (amongst a lot of other stuff ). The third is a playlist I made for a friend on interesting AI / ML videos which you most likely will have seen before but you might just enjoy anyway. The quick interviews are cool if you haven't seen them already.
Anyway - best of luck!
But I would say that you're in an environment where everyone cares greatly about credentials, because that's all anyone has so far. Once you graduate and have worked for a few years, people don't care so much about the credential. It may matter some, but it matters more that you can actually do things.
So you need to get a credential that is good enough to get you a job. But it matters more that you actually know what you're talking about, rather than just being able to repeat what the professor said. You need to understand, not just memorize. You need to be able to write software that actually helps people do things, not just classroom exercises. If you can, then you will surpass many who have better credentials than you. It may take a few years, but you will pass them.
They have a well regarded neurophysiology lab that was run by Marcus Devanandan. Perhaps you could do research / collaborate with them.
One thing is to just learn the subjects and get as good a grade as possible. Even if a class is subpar, just learn the subject. I had to submit an assignment once about process scheduling in Linux etc. After ten minutes study, I knew I had an A+ on the assignment already. But I had always wanted to look into that topic any how, so I spent several more hours reading about it for myself. I always wanted to learn about scheduling, and if I punted on it then, when would I ever study it? If I did that all the time my skill level would be high.
If you study and get good grades and have a good relationship with professors (go to office hours and schmooze a little, pay attention and participate in class and be prepared and listen), you can always apply for a Masters at IIT or elsewhere. So you can still get that name if you want it.
If the subject is theory of computation and the teacher is sub-par, just go above and beyond. Learn about big-O and the squeeze theorem and pushdown automata for the class, but for yourself as well. Read (some of, all of) a non-assigned book on automata theory if necessary.
Insofar as projects, one thing I suggest is doing projects related to coursework. Toward the end, or right after a class on C++ - write your own C++ program, or fix an issue with a Github hosted C++ program and send a pull request. If it is a graphics class on OpenGL, write your own program in OpenGL towards the end or right after the class - maybe explore iOS/Android OpenGL ES. Or look at scikit-learn after an AI class. Ground some of the theory you learn in class with application.
Your classes covering concurrency and threading and critical sections and mutual exclusion may seem boring in school, but if you're a programmer you will run into these things and you will be happy you learned how to deal with it properly a few years back, even if you haveto go back and read up on it. The AI stuff may sound exciting, but getting all these details right together is what will get you to be a good programmer.
From what you wrote, my main advice is don't be too all over the place. If you have a class in databases and a class in Java, that semester, spend a lot of time learning about the theory, and maybe a little time in application setting up MySQL on your desktop and writing a Java program to populate kt. It's OK to have one other side project going at a time of something that interests you, but you should be spending a lot of time learning about databases and Java.
If you have time on your hands, just dive more into it. For example, in the USA, a drink may be 2.5 liters. In some countries that is 2,5 liters (comma, not period). I once submitted a patch to a Java project doing a switch/case by country. The upstream told me the Java had a DecimalFormat class that already did that. My method was a waste of time, and also less complete. It was something about Java I nad not learned. You're just scratching the surface in class, there's a lot of ground to these subjects.
So get a good grasp of each subject you study. Meanwhile, if you have an interest or specialty you'd like to pursue, do that as well.
The OMSCS FAQ is vague about whether such a degree is required:
> "significant professional or other work experience with supporting recommendations may qualify as an adequate substitute for the appropriate academic credentials, however work experience will not take the place of an undergraduate degree."
For those that need some background in Computer Science (say you have a B.S. in something else but want to learn Comp Sci fundamentals) there's also the programming certificate course: https://engineeringonline.ncsu.edu/PS/CPC.html
I know it's counter-intuitive, but, trying to find customers is actually a mistake! It's too much work for too little return.
The right approach is to devise a method to find someone who will find customers for you. This might be deeper than it first appears. Consider this example.
My current budding project (call it E) is a tool for students who are having academic problems. Before, I would have tried to convince students that E would help them. Instead, my current approach is to find people whose problem is not to improve their own academic work but to improve the work of others. My value proposition is directed at them not at students. It is their problem I am trying to solve. E solves their problem by giving them something they can offer to students needing help.
Now my effort is to approach academic advisors, tutors, remedial educators, learning disability psychologists, and the like via professional associations and activities. In a sense, these people have become my market NOT the students. They will work for years for free and share their success stories to fellow workers. This sustained compounding effort is the sort that can lead to exponential growth.
Devising a method to find such people can be difficult. Deep thought is needed.
Who really are your customers?
As an experiment I posted my side project in subreddits related to what the project's about. I went from ~15 registered users to 45 registered users in a couple of days. Google Analytics showed ~300 new users in 1 day and ~3000k page views within a couple of days.
Just by posting there and using Google Analytics for the most basic metrics, it boosted my site's ranking in google searches which helped. The numbers I got back are tiny, but it's fun to see new users still signing up and adding data to my project.
These advice can give insights but are rarely directly appliable to side-projects. What you want is a constant, predictable source of people genuinely interested in your project, rather than growth hacking your way to the exponential explosion.
The best way to do it for a side-project is to have access to and trust from an audience.
There are two ways to do it. Write a blog and be part of an online community where your target audience hang out. That is why the advice of having experience at the industry you are focusing is even more a sine qua non than with startups.
Both actions are actually very complementary. Regularly write interesting posts on your blog and create an audience with time. Regularly contribute at HN or subreddits or Twitter or whatever and gain trust.
In both strategies be sure to be useful and deliver value not necessarily related to your side-project. If people sense you are only doing that artificially as pure content marketing, you will lose their trust.And for one-man side-projects, this kind of trust it is even more important than to startups.
* I work directly with a couple end users who really like the project, which gives much better feedback than posting on reddit, etc
* Build features that help more technical users (in my case, facets for programming languages)- people who come from HN / twitter give better feedback, write better tickets, and are more able to tell others if they like the app
* As far as promotion, I've had success with HN comments, guest posts on dev.to, and the startups reddit. All three have exposed the app to people with much larger audiences.
* The email lists Cooper Press manages are good to write for, because they pick up a lot of their content from niche subreddits.
* People who write articles about you rely heavily on material you've posted about yourself / your project (either on your own site, or in comments here).
* Some Simple UI features communicate what your project does better than verbal explanations (e.g. for a search engine, help text that shows example searches for different features)
* Any articles you write you can re-purpose in emails you send out, or vice-versa, so the time you spent doesn't get wasted if one approach doesn't work
* There is a compelling psychological benefit to posting a project on reddit (etc) in comments - every time I do, I think of some minor way I could improve the project. This is a bit like code reviews, where the pressure of showing someone your work makes you do a better job.
* Broadening the scope of what you can do gives you a lot more to talk about publicly. E.g. you might not be an expert in AI, but if you do a couple experiments on a dataset you have, you can participate in all those forum threads.
See also: https://www.findlectures.com/articles/2016/12/19/FindLecture...
This isn't something I would have been able to do if I were still employed, which I assume is your situation since you refer to it as "something on the side." For instance, even getting on the phone with people can be tough, since the hours they're more likely to chat with you are the hours you're at work.
I know this isn't something you want to hear. The good news is that I'm sure it depends on the industry - we had zero connections and background in our industry when we started - and I'm sure our experience doesn't reflect _all_ companies. But I admittedly underestimated how much time/effort needed to go into selling a b2b product when I was a comfortably employed developer.
Edit: re-reading your post, I think you might be describing a consumer-facing product. In which case user acquisition is different, but I would say the challenges are the same (having built many consumer-facing side projects in the past).
Also works well for ourselves: https://www.stomt.com/stomt
You can think of STOMT as consumer-friendly GitHub Issues.
What we did to build a userbase is to pay a small fee (1,5) to freelancers of our trust who would find possible clients (not random but selected people) and write a personalised message for them that we would send. Whenever someone becomes a client, they get extra money (7).
If you run the numbers, it's just a matter of probability the fact that we make more money from paying them to find people (and knowing that a lot will fail) than from staying with our userbase without growing.
So far, it's been a good method.
Your marketing plan might simply be:
Produce content in various formats for $market. Put call to action on content to urge $market to buy/subscribe/whatever. Then post the content in $community.
The content strategy might be something like:
I will focus on $subject. Will produce blog posts, vlogs, podcasts, whatever. The main subject revolves around it. I will do this three times a week for twelve weeks and measure which content got the most attention.
Its hard to say $advice will work for you because there are many variables. Feel free to ping me (email on profile) if you have more questions.
another great book Traction: How Any Startup Can Achieve Explosive Customer Growth co-authored by the founder of Duck Duck Go gives some really great advice on exploring channels through experiments in parallel to your development effort.
You could also try something like betalist to get some initial users.
A simple answer is to keep doing what you did to get your initial users, until that thing doesn't work anymore.
2. Reach out to as many people as possible, preferably people outside the company. Most people from the company won't help you and even if they did, they just remind you of the company again, what happened and this brings you again to a bad state and you need to start at zero and reframe again. Just let them go, all of them, really. So, look for prior peers, old friends. Further, write applications or just plain emails to many CEOs and tell them that you are out. You don't have to write that you look for a job. Just get into conversations with as many people as possible. It's more about staying connected and keeping a social context (after you lost the one of the company) than finding the next job.
3. Work on a pet project with a technology you always wanted to work with, get into flow and put it online. This will be the most fun and will give you tons of self-confidence in a very short time.
You should spend 30% of your day on 2 and 70% on 3 and 0% on thinking about the past.
Polish your resume on the plane.
Don't cave to the temptation of making an ass of yourself. You never know when you might run into someone in a future job.
They'll likely make you sign some papers for the 1 month severance. Pay attention. Sometimes there are unsavory clauses, like non-competes, non-disclosure, etc. It would be helpful to know where you are located. If you're in California, for example, you can sign a non-compete without reservation, as they are largely unenforceable.
>any advice from people
Was it a really large layoff? Sometimes, there's opportunity there. Often, some of the key people already smell blood in the water, and are thinking of either jumping ship to a competitor, or even starting up their own competitor. If you know any of the key folks that might b e planning this sort of thing, invite them out to lunch a week or two after the layoff and probe around a bit...you might find a place to land.
Examples: create things (write, program, compose); exercise; meditate; start learning something.
Sleep 8 hours every day. Or whatever is your optimum. But no more and no less.
https://www.amazon.com/War-Art-Through-Creative-Battles/dp/1... -- this book might resonate especially well now.
Be sure to get lots of exercise and sunlight. I'm serious you have be very careful about slipping into depression.
They make you sign a paper that says you resigned, so you can't claim unemployment, but the severance sounds better than unemployment since you were leaving anyway. Negotiate that severance, too...they offered me 4 weeks at first but I asked for 2 more and got it.
1 month for each year served is fairly normal so again, nothing untoward.
Signing a release is also fairly standard. Under these circumstances I would always recommend showing the release to an employment lawyer. For me, peace of mind is worth a couple of hundred dollars but YMMV.
Also, in the UK at least, there are tax breaks on some of the redundancy package so it's worth looking into.
Otherwise, what you do next depends a lot on what your financial situation is. I was made redundant a number of years ago and it worked out great. I was married and had a child at the time but we had enough money for me not to work for a few months. I had a bit of a break, in hindsight I was quite burned out, then got a job at a startup, refreshed and raring to go.
Obviously, it's not always a positive experience but it's not always negative either.
Good luck. Hope things work out.
From looking at people's LinkedIn profile, everyone from developers, to managers, to the L1, and L2 tech support staff had better jobs within a month. Once recruiters got a whiff of the company being in trouble, they started contacting people. Don't ignore recruiters. I have 15 recruiting contacts from different companies in my contact list.
I put "laid off" in quotes above because immediately after I was laid off, I did contracting work for one of my company's clients (based on a written agreement they had with the acquiring company). After that contract was over, I spent a day contacting every recruiting company I knew. Three days later, I had a phone screen with a Fortune 10 company, one day after that I had an in person interview. By that evening I had an offer letter. At the time, I was a an experienced developer but a middling .Net developer trying to get into full stack development.
Moral of the story, aggressively reach out to people, recruiters aren't evil, study up on interview prep, and don't be afraid to take chances on going after jobs that you might feel that you are not 100% qualified for. I've conducted about a dozen interviews over the past four years. I don't care if you meet all of the bullet points. I care if you are "smart and gets stuff done." And if you are an aggressive learner.
The release you've signed is pretty normal, nothing to really worry about (Unless they've done anything illegal, in which case you're not obliged to adhere to the release but I don't think that's the case).
Just get back on the horse. This happens to the best of us.
A couple of years back I resigned from a job in the UK and although I was on good terms with the people I worked with the HR department (inevitably) did their best to try and screw me and having a good lawyer on my side made the process fairly painless as they actually did the negotiation with my former employer and I got 3 months salary and various other benefits.
One thing that really helps to keep me sane during tough times is to catalog every teeny tiny expense I've made over the past year. When you know exactly where your money is going, it will help alleviate lots of stress.
Before I did this, I felt a vague sense of panic. After I did it, I realized that I had already earned two times more than what I typically spend in a year. It gave me a sense of calm, knowing that I had plenty of "runway" before having to dip into my investments.
If you have any egregious expenses (I know I did), now is the time to systematically eliminate them. You might be money poor, but you are time rich now. If you treat your life like a business, now is the time to make some big cuts to ensure your longterm survival.
Just last month, I cut my phone bill in half, figured out how to cut food expenses by a few thousand a year, and reversed a bunch of b.s. charges for services I no longer use.
Make this your new job & you will thrive.
I was laid off last April and my employer gave me a severance package in exchange for a similar confidentiality agreement.
It took me several months but I was able to secure a new job with better benefits but with a lower salary.
Update your profile on LinkedIn. Update your rsum.
Talk to lots of recruiters. If you have friends in the industry, ask them if their companies are hiring.
Just keep pounding away at it and you'll find the right spot.
Make sure that you sign up for unemployment compensation immediately--sign up before you need it. If you're in the US, there's (often?) a waiting-week period you won't be compensated for; if you sign up immediately, you can get that out of the way first thing. Good luck!
Welcome to the next chapter of your life, cheers!
Happy? You should be ecstatic. You just won the lottery!
What you would have received if you had quit at 3pm: nothing.
What you will receive because they beat you to it: 4 weeks pay, 5 weeks benefits, 26 weeks (potentially) unemployment. I dunno, something like $10,000 to $20,000.
Count you lucky stars and enjoy your lottery winnings. I wish I could figure out how to do that.
It was written by a fellow HNer a few years ago, but still relevant today, IMHO.
Edit: shortened overlong sentence.
That said, I like the question, I have never been laid off or terminated, I've resigned from all 4 jobs I've had (employed at the 5th) and so I'm reading other answers to see if there are real issues to be aware of should it happen to me.
It's great that you were thinking of leaving anyway. Rejoice that you get the benefits for slightly longer than you would anyway, and move on.
I was very lucky in that another division in the same company was having a different re-org. and a few jobs opened up, so I applied for, and got another job. Same company, different business unit. Less than ideal, but I count myself lucky. (Although jobs are posted out there, its extremely rare that companies hire or conduct interviews during the holidays!) But the feeling of having been laid off was quite devastating; again especially since I had never gone through something like that.
I think the advice that others have been offering seems pretty good. While my lay off period was extremely short, I myself woke up every morning - as if at any other regular job - and kept searching/applying for jobs. I think that "routine" helped me deal with the whole thing at least emotionally. I also like some advice throughout the comments here about working on a side project. That could help in several ways:
* Keep your mind off the challenges (physical, social, emotional, etc.) associated with finding new employment.
* Maybe it could turn into a little revenue on the side to supplement unemployment, etc.
* Possibly, it could turn into an opportunity to go into business for yourself. Even if it doesn't make you a millionaire, or is short-lived, its still work. Maybe it might pay bills, and you can feel good about putting it on your resume/linkedIn, etc. (In the state of NJ, you are allowed to collect unemployment and still have a part-time side business ...But there are caveats and of course I'll disclaimer that I am not a lawyer. So you'll want to seek out professional legal advice if you're considering this.)
* Even if the side project results in no new business, you will have picked up some new skills, or perhaps improved any existing skills. And, if it involves other people - like a meetup - maybe you can get some future business/opportunity contacts - i.e. networking!
The only other advice I can give you: stay positive, and keep yourself busy so as to avoid getting into a negative groove. Good luck!!!
 See "Part-Time Corporate Officer/Owner" section on http://lwd.dol.state.nj.us/labor/ui/aftrfile/corporate.html
Their reasoning is probably that this will (1) prevent other companies from copying their process (such as the minutiae of their interview questions), and (2) discourage answer-sharing (on sites such as Glassdoor) and last but not least (3) discourage whistleblowing (or any other public exposure) of said techniques and processes, which -- if par for the course in this industry -- are likely to be just as half-baked, shoddy, and/or downright nutty as at anyplace else.
And to do (1)+(2)+(3) with significant muscle, i.e. ammunition to sue your pants of with, if they can catch and identify you that is.
Is it "normal"? Well it don't seem like common practice -- yet (but then again I haven't looked too closely at the fine print on the few interview "services" I've reluctantly used in the recent past).
To my ears it definitely feels invasive and creepy. But what matters is whether it's normal for you, which is entirely up to you to decide. And if it doesn't feel right -- well, it's like any other humiliation companies try to make you go through in exchange for the privilege of feeding at their table. It's tough to make the call sometimes, but fortunately (in the current climate at least) the market should be firmly on your side, by and large.
I found a very nice studio in Marina (pacific heights) for 2.5k, and it was pretty much first place I applied to, so finding place at least for me was super easy.
I don't know if it's worthwhile to go to the bay for purely financial reasons, but it definitely still seems like a good place to go for career reasons.
I'm sort of expecting to move back to the bay eventually, I'm just hoping that they get their head out of their ass and build some more housing.
I'd throw LA into the mix too, as it has a growing tech scene and a lot of things going for it. Seattle, Austin, and maybe Boulder if you can survive the cold.
Assuming all other factors are equal that means you need to save almost twice as much for a down payment in these areas. If you are making >100k/year CA income tax will further complicate matters.
Seattle home prices are about 1/2 SF. There is no state income tax, so add on 8% to your income. Salaries are slightly lower, but not by much.
If you don't care about culture and just want to make/save lots of money, this is the place to be.
Then evaluate your offer and calculate net savings in Bay Area.
For many (especially those currently located in low-paying areas such as Eastern Europe or some Asian countries) the net savings are greater with all things considered, therefore a move makes sense. For others the increase is marginal or non-existent, as high salaries exist elsewhere in the world, so they won't bother.
I used to pay $500 for a huge room in a flat shared with 2 other people :)
I've set up dynamic DNS and a few other things so I can help them if something goes wrong as we live 12000 km apart. After a year I realized that none of them ever asked me anything. So I asked my dad "Why do you never contact me to help with the computer?". He responded: "Well, everything just runs!".
Before, with Windows, I can't even count the time I've spent fixing their laptop.
Instead they grab the neighborhood geek (or should i say nerd, geeks seems to be too cloud oriented these days) and pay with cookies or beer (depending on age of said geek).
What seems to be going on is a mixed message of "hard to admin" and "don't need to admin" (aka "just works" in Mac speak). Meaning that it is rarely if ever about day to day "usage", but rather about being able to admin their own system.
And frankly i think Linux have a leg up there, as things are actually documented and in plain sight (at least until Freedesktop stuff and, their fetish for using dbus for everything, gets their panties in a twist). With Windows and Mac is it all too often some closed up blob going bad, involving magic incantations found in some forum or blob somewhere.
That is the problem with Linux. Of course it's getting better and better but it's not where OSX or Windows is by any means.
After her old Acer Aspire One fell apart, I bought her a cheap Compaq 15" laptop on Amazon for Xmas in 2014 and installed Mint on it. Since, as is common these days, she uses a web browser more than anything, it was easy to teach her how to connect it to wifi and launch Firefox. Since then, I've heard zero complaints or requests for help. Linux JustWorks. I think she's come to like the Cinnamon GUI as much as I do, too.
I also tried to get my sister to switch - she is a lot fussier, I got a huge amount of resistance switching her to Win7 after XP went EOL since she prefers the GUI. The difference here is that she uses a tablet PC (not a Surface, the original spinning-screen + pen-based digitizer laptop style machine) which she uses for drawing and artwork. To give her credit, she relented and gave Mint a go for a week, with an XP skin on it (which was pretty accurate, all things considered). Unfortunately she couldn't get used to GIMP and there were lots of hardware issues, in addition to old Windows games that wouldn't run under Wine, so reluctantly I put her back on Windows. Still, she at least tried it.
These days, Mint is my go-to. The Win7-inspired GUI is pretty easy to get Windows-only people to learn, and it's up to date and reliable. As their Windows PCs slow down and the OS degrades (I stil swear Windows has a built-in timer for this purpose), I find that my family members are so keen to have working PCs that they don't particularly care what OS it runs, so long as they can find the web browser. I nearly Mint-ified my uncle's old well-abused Acer laptop, until we discovered that nuking the Acer crapware made it usable again.
Linux on laptops has come a long way, much further I think than any other OS.
My preferred setup is a dirt cheap chromebox, like the Asus for $150 or so. Add 2 4GB dimms and install ubuntu LTS. Drag off all the crap icons for amazon search, libreoffice, etc. Set it to automatically login. Make sure the browser icon is easy to find.
I would spend some time saying that never give their credit card to anyone without talking to you. Or print them out a whitelist with a red circle around what to check for, like https://www.amazon.com or whatever vendors you trust.
But I have been questioning what the best flavor of linux to set up someone who has little to no "technology skills", on. Does anyone have a good recommendation?
its magic , i carry USB disk with Ubuntu installation every where to save old laptops ...
There's an example program on the front page to judge for yourself how much knowledge is required which is basically just an understanding of the scheme r5 spec. https://www.gnu.org/software/guile/learn/
Coding knowledge: html/css/es6/typescript/angular
If you want good performance & a huge support base, React Native is probably the way to go. Learning curve is probably a bit higher than Ionic/Cordova (you will deal with platform specific syntax for components), but its what many top companies (AirBnB, Instagram, FB) use for their mobile apps. It is really performant. You may need to write platform specific code and it may take slightly more time, but I still would prefer this route over the hybrid app route.
Coding knowledge: need to know html/css/es6 & have experience with frontend frameworks. Redux/Flux has a bit of a learning curve.
TL;DR: Try doing tutorials for both, and see which one you prefer. IMO it's probably not as fast to develop for React Native as it is Ionic/Cordova, but its still the far better option. It's worth the effort to go down the React Native route.
About half my team is remote, and that's not uncommon for my division. We use Slack for collaboration. It was rolled out recently - prior to Slack, it a mix of (lots of) email and Skype. We use BlueJeans for larger meetings.
For day-to-day work, this all works well. But, it's also ingrained in the culture - we've had many remotes for a long time.
For new project kick-offs, especially greenfield dev, it makes sense to bring the remotes into the office for a week or more. I've done this three times now over the past 5 years. It fosters a sense of team and also allows easy white-boarding and fast/effective collaboration.
All my remotes are within an hour +/- time zone and a short flight away (office near DC, remotes in Carolinas and Mid-West). Teams spread across continents introduce more problems.
- Earthlings - http://www.imdb.com/title/tt0358456/
- Paradise Lost: The Child Murders at Robin Hood Hills (1996) - http://www.imdb.com/title/tt0117293/
- Cowspiracy: The Sustainability Secret - http://www.imdb.com/title/tt3302820/ (some have questioned some specifics presented in the documentary, it is on my list of favorites for the overall point it makes about sustainability as it relates to animal agriculture)
Node had error with `pm2` package which is needed if you want to launch multiple applications a la "microservices".
Go had problems with `go get` on sqlite database.
Note that this was about two months ago, maybe things changed by now. I am very happy with Win10 in general, but that is because I use C# and do not need Linux for developing.
Remember that when I'm reading your resume I'm reading. Write it to tell the story of who you are and who you want to be as well as you are able. Cut out things that don't fit that story-- you can always pleasantly surprise them later with the extra skills.
Unless you've worked on something that got put on a billboard near my house, I don't know what your project's codename was. "Developed key metrics for Project Hazel" translates to "measured brown thing" in my mind.
Many engineers find it distasteful to describe their contributions in glowing terms. But that's the game and because I can't tell you're being demure I'm going to turn the brightness down two notches on your resume same as everyone else's. So amp it up until it feels gross (and not much further).
2. Try to keep it short(1 page). Resumes are usually not read but skimmed. Most hiring managers are given 20-50 resumes and very little time to decide who to pick for a phone screen.(typically 3-5 minutes or less)
3. Don't be afraid to use an interesting conversational writing style. So 80% of resumes read like a badly translated instructions manual from a 1970s VCR.
4. Structure your resume to put your best qualities first. If you went to a good school or got a good GPA put that on top. If you kicked but at your last job and got promoted a lot put that at the top.
Your content should be increasingly selective with every position you get, and every award you get, and every a commendation.
It should be very easy for employers to identify what conversation pieces you are ready for. This can be provided in the form of a side project list, a neat contributions list comma a extracurricular, or presentations you provided. Anything on your resume should be something that you can talk about in great detail. For every interview that I've had, I re-read through code Snippets of all projects I have listed. When Review Time becomes greater than necessary, I delete projects from my resume.
You should also update your resume monthly, you often don't understand or remember what new things should be added to your resume unless you do this as a rolling task. This can accumulate until you are finally applying for jobs, where you would then remove things you no longer find interesting or that are irrelevant. This will give you the opportunity to add non technical, yet important things to your resume.
Talk about your projects - they should have a short description stating what it was, the technologies used, and any cool things you implemented (say, some special algorithm to do XYZ thing.) It should have bullet points in the same way you'd treat a past job you had. I've seen one page resumes that were 80% projects and 20% everything else.
Use your graphic design background to help you. The easiest way into a development position would probably be to find a place that will let you implement your designs in HTML/CSS. Then you can sneak your way onto the development team.
All you need is a foot in the door.
Go into too much detail about anything unrelated to the job you're trying to get. Generally speaking every single line of your resume should scream "hire me" - anything that's lukewarm should be cut.
If you can get into a top coding bootcamp, you might be able to accelerate your career by a few years. It's really difficult to get your first job, and chances are you won't be paid that much for the privilege. If you're paid 15-20k more per year from the start, that alone pays for the cost of an expensive bootcamp.
In a cover letter I'd stress how well you can pick up new technologies and become useful to the client/business very quickly, how passionate you are about keeping up to date with technologies, and somehow indicate you're not a Machiavellian-ego-consumed prima donna that won't shrink when your logic/work is challenged or when the stress hits.
Employers it seems to me these days are asking much more than they would of any other profession i.e. do electricians get asked to trot out a list of sites they've worked on in the past, or are expected to work after hours on open source projects they can demonstrate when they next go to a job? It's tough for recruiters to understand what you're good at, so it becomes a bit of an art to actually letting people know you're good at such-and-such.
I haven't had any problems being self-taught in the development area - once you've got a few engagements under your belt and referees. Getting that first one is the tough bit, if you can prove yourself after that, things get easier and easier.
You can see it here: http://russelluresti.com/resume/ (it prints basically the same way).
Most of what you hear in terms of resume rules is kind of nonsense. The whole "one page only" thing I think works fine for the start of your career, but I'm not going to limit myself to it. I also believe that talking about specific metrics, while it can be helpful, is really the opposite of what matters.
I believe that what got me my first couple of jobs was my cover letter (or the content of my website - they're usually pretty similar). Resumes don't usually excite people. There are a few extremely clever resumes out there that make you take notice, but the rest are usually a collection of bullet-points, and bullet-points aren't exciting.
If you want to to get noticed, don't tell people WHAT you do (every resume does that), tell people WHY you do it; this is what will make you stand out and has a much better chance of creating excitement. Specifically, talk about ethos. If you and your potential hiring company align there - on your beliefs and motivations - they're going to be excited for you.
This generally goes against the normal advice people give for cover letters where they tell you to focus on talking about what you can do for the company and how you can be an asset. That advice is bad advice for this community (development, design, anything at all in the creative field). Instead, convince them that you care about the same things; that the passion that drives them as an organization is the passion that drives you as an individual. That's how you stand apart from your competition.
And if you can't, with a straight face, say how your values align with the values of the company you're applying to, you're applying to the wrong company.
Note: I originally started communicating this way on my own material after watching this - https://www.ted.com/talks/simon_sinek_how_great_leaders_insp...
1) Put yourself in the shoes of the one reviewing your resume. What does he want do read? What doesn't he want to read? What is he looking for? How does he select candidates based on all the resumes he gets?
2) See how your education and experience can help the company that reviews your resume. Don't think about yourself, think about the value that you can offer, and make it clear.
I once had experience in both Java and C++, about equal. I had 2 resumes, both correct. But on one the Java part was more obvious, and on the other the C++ part. So it depended on what the company was looking for whether I would send the one or the other.
1. I don't understand people who say "I don't have time to read two pages, so please send one". Why not just read the first page then and only move on to the second page if you're intrigued and want more details?
2. Legibility has a myriad of variables. I wouldn't rather read a CV that shaves off some whitespace that'd otherwise make it more delightful and easier to go through, in order to artificially shove in necessary content into the dimensions of Letter/A4.
In the CV itself, max two pages, bullet points with relevant technologies, most recent/relevant work experiences, URLs for Linkedin / github / projects.
Start by changing that to "What do I put on my resume?".
I have got +ve response on both
I daresay the only role of your resume should be to convince someone to click on a link that shows the amazing work you've done. Nothing you write is going to mean anything, comparatively.
SICP also has a chapter on GC w/implementation https://mitpress.mit.edu/sicp/full-text/sicp/book/node117.ht...
Universities have some lectures on this too and you can look up the algorithms they mention
https://suif.stanford.edu/~courses/cs243/lectures/l14.pdf Intro to GC
http://web.stanford.edu/class/cs243/lectures/L17-Advanced-GC... Advanced GC
Long story short, I sold condoms at 15 PKR a piece, made a profit of 40 PKR (20x cost). No one else was brave enough to buy a pack at the pharmacy so I enjoyed my position for the next two years.