Snowdrift looks interesting too:
I've also got the impression that most patrons rather prefer a predictable, monthly amount over a varied amount, even if it comes with a cap.
The idea works, the implementation could be improved.
Even if you're supposedly giving money to reputable developers that are the percentile less likely to commit fraud, there's still a risk of it happening.
A more reasonable approach would be a monthly or a "version" contribution.
Even better than that would be a "fund" where you pledged your money to developers/projects, and it would be distributed equally or by a clear metric.
Some prior work from top of my head:
- Bountysource- Gratipay- Patreon- Flattr
If you're interested in helping out you should join us. :)
Here's a good paper on RL in robotics: http://www.ias.tu-darmstadt.de/uploads/Publications/Kober_IJ...
RL is not widely used for control, but it has yielded some impressive results. In my experience I had a highly dynamic system for which I built a hand-tuned model for motion planning. I also built a RL model and trained it using the hand-tuned model. The RL model performed more than 50% better than my very best efforts.
Also, some of my favorite textbooks:
Principles of Robot Motion by Choset et. al.
Statistical Robotics by Fox, Burgard, and Thrun
Linear Systems Theory by Hespanha
 https://en.wikipedia.org/wiki/Control_system https://en.wikipedia.org/wiki/PID_controller
He's done some amazing work recently in helping solve problems surrounding movement planning (not really the same as path planning like A*), so you can tell a robot to do something general like "stand here", and it treats the movement planning as an optimization problem and the dynamics of its 'body' and physics as constraints. The resulting behavior is eerily lifelike.
Here's a recent paper using one of these approaches: http://www.intechopen.com/books/international_journal_of_adv...
One approach that could be used for a system like Big Dog would be a feed-forward control loop with kinematic/dynamic modelling of the robot. These approaches use knowledge of the system dynamics to predict the output based on changing inputs or disturbances.
Mentions some of the engineers at Boston Dymanics including the inventor of troody.https://prezi.com/tn5kji7ehk3u/prezi-project/
For example, if you are living in a small town and making $155K/year, your standard of living is likely significantly higher than someone making $250K/year but living in Manhattan or Soma.
You can double your salary by finding a second job. You'll make $310K/year, work 80+ hours a week. Would you be willing to do that? I imagine probably not.
Finally, what sort of time frame are you on? Specifically, do you want to make more $$ to pay for kids next year? More vacations? Retirement?
Investing $25K/year in an index fund will increase your long term net worth / assets, but it won't feel like you've increased your salary, especially in a market where you might lose money one or two years in a row. This might also make it impossible to pay for daycare, cribs, and nannies if you're ultimately doing this to pay for kids.
So ask yourself (or tell us): (1) what are your goals / why do you need the money, (2) how much are you willing to sacrifice to get it, and (3) what is your risk profile?
If you want some reading material, this is a good blog: http://www.freedomthirtyfiveblog.com/
So yes, you have to learn to invest your savings so that they are growing in value while you don't need that money to live on. And because the rate at which they grow is proportional to how much you have saved, the more you have saved the more "extra" money you will get each year. Let's say you're 25 and you are banking $50K of your $155K salary every year, ($22K into 401k, and $38K into savings). If you're savings makes an average of 5 - 6% per year, then after the first year you are "earning" an extra $1,900, the second year ($39,900 + $38) an extra $3,895. Etc. 20 years later you are earning an extra $63K a year in interest on $1.3M in savings. Plus your 401K is worth another $1.3M so you're net worth is $2.6M and if you can start paying yourself about $100,000 a year for ever (nearly all money you keep since its taxed differently than regular income).
But if you want to live a lavish lifestyle and own a jet etc, better shoot for becoming an overpaid member of the C suite (CEO, COO, CTO, CIO, Etc).
Sure we manage money and things are tight but we get by so I'm having a hard time thinking how 155k can't support a family if you live in cheaper areas.
Maybe look at cutting expenses first.
Moving to management in and of itself does not accomplish this, but in many organizations managers are easier to tie to revenue, which is why it seems that way. At the end of the day, all the people I know that make a lot of money did so by running their own businesses in one form or another.
In order to earn that much you have to actually prove that you can provide a multiple of that value. That most likely means moving into management in some fashion.
Investments won't help make you money immediately, it's much more a "twenty years later" type of deal.
To make over $250k, the more common path is to make (roughly) what you're making now and get the rest in the form of stock. Real, liquidable, publicly traded stock. So go to places like Facebook, Google, Apple, etc, and they'll be able to pay that much (if you convince them to!).
Even if they don't, a year or three of good performance will put you in that ballpark.
1. Earning potential is higher in management, if you can make it to a director-level or vp-level position at a major public tech company; take a look at the relevant comp figures for Facebook, Google, Microsoft, etc. on Glassdoor.
2. Being a sales rep at an enterprise software company with an aggressive comp plan is another option, if you can do the work. As @kasey_junk noted, this is because sales is compensated on a percent of revenue basis.
You might also look at technical consultancies, or try to become a technical expert for pe/vc firms.
Gaining wealth through investing your own money is hard; even at a market-beating 12% a year, it would take you more than 20 years to turn $100k into $1M. You can make money this way, but you need to manage a fund. The entry point is an analyst role at a hf/pe/vc firm.
I think @kasey_junk is 100% right; ultimately, you need to tie your work to some kind of economic value. We as humans are bad at assessing indirect value creation, so the roles that tend to achieve this tied-to-economic-value comp in practice are  sales,  investment professionals,  substantial equity owners.
On the upper left there are the main menus, Document, Navigation, Speech, Window, and Help.
Directly below that are three tabs each containing a document.
Pattern-Oriented architecture, A system of patterns: Volume 1 (Wiley Software Patterns series)The Architecture of Open Source Applications (which is the currently active tab)Surveillance (A Chris Bruen Novel Book 3)
On the same line flush right are small left/right arrow controls that presumably cycle the tabs.
Directly below the tabs is the text of the selected tab, in this case its a chapter listing. There are 4 carriage returns between each of the Chapter listings.
At the bottom of the window is a Document Position slider, that presumably can be moved to scroll quickly through the text.
Seems fairly functional to me, there is also a right scroll bar on the text field that I think serves a similiar purpose to the Document position control although less explicitly.
It looks like a pretty typical Windows application. A bit simple, but there is nothing wrong with that. It looks like something a Computer Science student might build in Visual Basic for a University project. I think it looks a bit dated, like it's running on a Windows 98 computer. I wouldn't call it pretty, but definitely functional. I feel like I could use this application without needing to be instructed on how to use it. The purpose of every GUI element seems obvious, which is a good thing.
I hope I helped! Best of luck in your presentation!
A lot like notepad with tabs for several documents, which are also opened in the screenshot. At the bottom, one can see a slider with the title "Document position" for easy navigation. Most importantly the Menu consists of the entries: Document, Navigation, Speech, Window and Help.
How does it look to me:
It looks simple and functional. Seems to be optimized for screen reading as there is not a single icon or graphic.
What's the layout and do you think it works:
It's an older Windows layout with the menubar at the top, followed by the tab bar. Under that one, and covering something like 90% of the screen, is a notepad-like textarea and finally at the bottom is the slider.
Assuming the menu has submenus and it is not too difficult to navigate around there, I assume it works pretty well as it is as simple as it can get. Maybe the slider handling is difficult because I can not imagine how a blind person can ever click on the tiny position indicator. However, it probably has some keyboard shortcuts. But I can only imagine at this point.
At the top of the window below the window title are the menu items:Document, Navigation, Speech, Window and Help
Below those are open document tabs going horizontally - they can be very verbose like the entire title of the book with author
below that is the big document area there is also a vertical scrollbar to the right of the document.
Below the document is a vertical slider control spanning the width with the name "Document position"
And below that there is apparently a status-bar (like on web browsers, going across horizontally,) and seems to be divided in half for messages either on the left or right. currently blank.
It looks the way I would expect an older e-book reader application to look. It seems totally usable and intuitive. I know exactly where to click and what I might expect to happen.
There could definitely be some aesthetic improvements, but as far as "UI functionality" is concerned, this is great.
QRead looks like a minimal ebook reader application. There is a tab bar at the top to select an open book/document and the book/document is displayed in a large text field in the centre, looking not unlike notepad. At the bottom of the window there is a slider control to navigate the document.
Edit: Clickable link that doesn't download: https://www.dropbox.com/s/okt34fulaoxg3b7/Screenshot%202016-...
2. Do a course called AnalyticsEdge by MIT folks from edx.org. I can't recommend this course highly enough. It's a gem. You will learn practical stuff like RoC curves, and what not. Note that for a few things you will need to google and read on your own as the course might just give you an overview.
3. Keep the book "Elements of Statistical Learning" by Trevor Hastie handy. You will need to refer this book a lot.
4. There is also a course that Professor Hastie runs but I don't know the link for it. I highly recommend it as it gives a very good grounding on things like GBM, which are used a lot in practical scenarios.
5. Pick up twitter/enron emails/product reviews datasets and do sentiment analysis on it.
6. Pick up a lot of documents on some topic and make a program for automatically producing a summary of those documents - first read some papers on it.
7. Don't do Kaggle. It's something you do when you have considerable expertise with ML/AI.
8. Pick up flights data and do prediction for flight delays. Use different algorithms, compare them.
9. Make a recommendation system to recommend books/music/movies (or all).
10. Make a Neural Network to predict moves in a tic-tac-toe game.
These are a few things that can get you started. This is vast field but once you've done the above in earnest I think you have a good grounding.
Pick a topic that interests you and write a paper on it - it's not such a big deal.
It basically walks you through building a neural net that can make sense of hand written digits.
The best part is that the competitions keep it fun, and the eventual winners share the methods they used to get such good results.
2- a good linux ide for native remote developement with proper support for debugger and profiling
3 - a cheaper version of vtune with support for arm and powerpc
And if you want to complain about Gmail's spam filter, try using Yahoo Mail for a while, you'll quickly learn to appreciate it.
Anyway, it's a good habit to regularly check your Spam folder.
In the absence of a vesting schedule, I see little legal reason that the options did not vest immediately. The primary reason for a vesting schedule is to prevent immediate vesting of options from occurring.
Lack of a vesting schedule is, in my experience, pretty common among less sophisticated [for some definitions of "sophisticated"] founders. It sounds like this a case where it worked out as well without one since you stayed past a typical vesting period.
That said, exercising and liquidating the options is likely something that should be reviewed by an attorney irrespective of vesting schedules or an immanent intent to leave the company.
You shouldn't immediately assume unethical conduct or foul play, though. Vesting schedules are still somewhat specific to US startup culture.
Is this a private (Ltd) or public (PLC) limited company? If the former you most likely own those shares right away (but in any case you should definitely have a solicitor review your contracts).
No, this is not ethical, nor common.
Legal? Dunno. And that is the question.
Writing an email got the issue fixed in a couple days.
If it is going to be a "how frequently do I stay in touch with X", I might consider it since it will be nice to get an automated reminder to text/call this person.
I am fairly social, but I have a big problem with remembering names. This alleviates a lot of this, and I've found that people genuinely appreciate when you remember what they tell you.
Actual clients: Accounting software (Collmex in my case)
I built my own images for the emulator and an Odroid mini computer, but never for any phone. The source tree is some 9 or 10 GBs, and I realized somewhere around the 2 GB mark that cloning it on my home connection is a waste of time and bandwidth.
So I built them on a Linode 4GB server. Network and hard disk speeds were magnitudes better than anything at home. Took around 4-5 hours of reading and understanding the process (see links below) + 2-3 hours for each build.
Removing vendor apps from the image is a simple matter of removing them from the correct config files. Since HTC seems to be a good open source citizen and makes their source code changes available, removing vendor apps and rebuilding an image is probably not very difficult.
 Building Custom ROM (2 videos): https://www.youtube.com/watch?v=1_H4AlQaNa0
 Karim Yaghmour's Embedded Android series (4 videos): https://www.youtube.com/watch?v=KLUXPxxJc5c
You don't just download the Android source, type "make," and get something that would work on a HTC 626s. The biggest hindrance is finding the hardware drivers for newer versions of Android. That's why a lot of devices fall out of support, the hardware manufacturer never updated the driver to the latest version of Android.
Best case scenario either the old drivers are still compatible with newer versions of Android (but you lose functionality) or the hardware manufacturer has updated drivers (which you can normally get from a different phone's flash dump).
You may want to ask over at forum.xda-developers.com for your device or manufacturer. But what you're asking for is a lot more involved than you seem to think it is, and has little to do with being able to compile Android.
It's possible to enjoy work! Don't make my mistake and waste years in an environment you hate - I should have left after 3 months instead of 5 years. I will never work for a large corporation again.
- The right place is the one that helps you achieve your life goals. It sounds like you may be in the wrong place but that doesn't mean you should quit just yet.
- Its probably a good time to start making friends at other companies. Its fine if its casual. You just need to start building your network. If you do this right you may never have to apply for a job or draft a resume again (I haven't).
- You are getting a lot of tasks thrown your way (which is great) but don't make the mistake of thinking doing most the work means you should be recognised as a senior. Thats not at all how it works. Especially in a corporate culture.
- Keep making your seniors look good. You don't want to be a threat to them. If their career advances they will take you with them. You want every to feel that they are more likely to succeed with you around.
- You probably have a lot of energy and motivation at this point in your career so it worth finding a place where you can better thrive. Before you leave your current position however I would be sure you have learned everything you want to learn there. You don't want to be a noob walking into your second position.
Hope this helps.
First, if you're working in an organization like this, it means they value cost management over product. I know that's a sweeping generalization because it's possible to build good products with offshore teams, but it takes tremendous effort, or unusual coordination at the offshore location. This brings me to the second point.
If the product work is being driven by the onshore team, at the ratios mentioned, then a large portion of your time will be coordinating with the offshore team. This can be a demoralizing process. I've often found that it would take me an hour to do what it took me 30 minutes to coordinate and the offshore team 3 hours to implement, for example. The response from management is that this is still a force multiplier and so it's worthwhile.
So as a rule, I avoid companies that do this and I walk away when the offshore cost savings buzz is in the air.
If you actually enjoy building software, then that's a special gift. Many people you'll come across in the profession regard it as a job. You should seek an environment where the people seem to have an active interest in these things.
I don't know where you live, but you might look into an HN meetup or something similar. As others have said, work on building up an informal network. It only takes one good connection to make a great difference in your professional life. Good luck!
Obviously don't quit, but you could start looking. Even if it's not implemented you have created new systems for your company ;)
But remember what you want is not necessarily what others in the org you are in wants.
Some people just want a easy job. It's not a crazy idea, if the company is not benefiting those who go the extra mile, why do it? Some people value life outside work more. And this certainly shifts a lot as you get older. Why work hard to make widget company A better than competition widget company B?
Level up jobwise, put you energy into a side project(part time self employment) or keep trying if it's important to you, maybe it's more complicated than it seems.
Look for a company that is quite different from your current one (e.g. a major software company, another size, another location) and then try again. If you recognize that these two points are still the same you definitely need to change something about your style. But for now changing the company seems the most reasonable choice.
Your bosses only care for 2 things, and those things are the only things that you can use to get their attention and implement change.
1) Does the change make more moneyYou have to show them, prove them that the change you try to implement will make more money down the hill. Will it attract more customers, will it make customers spend even more, how can you quantify this idea into money.
2) Does the change save money spentIf you can prove them that the change will save them money that they are currently losing, then you have to show them how. Show statistics, show numbers.
This is the only thing that works with almost any corporate company and almost every work occupation that I have seen, talked to with other people, and learned all the way.
You either make more money, or you save money, everything else noone cares about.
Especially as a developer, you might know that changing a codebase MIGHT be easier down the road, but unless it is quantifiable by numbers and money, noone cares.
> Am I expecting too much?
> Is this just how software engineering is?
> my own unrealistic expectations
> I generally don't get any response whatsoever
> it would at least be nice to get some feedback, and I never get any
> I just can't seem to connect with anyone at work
> there might not be enough interest to warrant having such meetings
> you can do what is essentially bad work and still get paid
> the response has basically been "That must be frustrating"
> I'm wondering whether this is due to the company
All company outside a few small areas is exactly like this, the exceptions being:
There is nothing wrong with this company. This is how pretty much all companies are. This kind of environment is suitable for 85% of software engineers. They like it that way, and they want it that way. Companies do not want to be dependent on heroics. They want a predictable process.
> I spend a large part of my weekends writing code for prototypes and projects
* Be on the outlook for a sufficently-funded startup where you could be the CTO or technical co-founder
* Join an open source project
Do not talk about this to other people in the company. In the meanwhile, until you have landed your new role, avoid disturbing other people, or make them feel inadequate. Companies fundamentally cannot use people like you. It is contrary to their desire to keep things predictable, both good and bad things.
By the way, personality-wise, I am pretty much like you. I am a co-founder in 3 startups and 2 open-source projects. It may be annoying for you that you are not suitable for working in most companies around, but at the same time, if you find the right place to work at, you will have much, much more fun and make much, much more money than in a "normal" job.
I saw a few comments in this thread which said that this is simply the way it is at a large company. I strongly disagree. I've worked full time as a software engineer both at a small company with just a handful of programmers and, currently at a large corporation with over 8000 employees. In both cases, I've been surrounded by people with a passion for software. People who share my interests. People who want to excel at their job and deliver the best possible product. If you're someone with that kind of mindset, I urge you to look for a job where that is the norm. Part of the problem may be that you currently work for, as you yourself put it, a non-software company.
As others have pointed out, don't quit your job until you have a new one. If your search takes a while, or doesn't pan out, you may come to regret jumping the ship before you've found a new vessel. As a final note, let me point out that I am personally not familiar with the job market for programmers in the US. From what I've seen though, it seems like it is harsher than in Sweden.
If they bite, give them a chance. If not, execute 'plan B'.
I was in a similar position. Non-software company, basically one of two developers in a group whose focus was business. We would occasionally interact with other software teams in other departments to integrate our systems, and I would cherish those moments; but it was clear that across the organization overall view of software was that of a necessary evil.
I tried to convince the group about taking a new approach to how we developed software, to perhaps have more communication between the sparsely distributed software team, I even made a presentation over software processes, how we could improve... nothing ever changed anything. All they really cared was that we made the wishes of the sales team real...
After a year of firefighting, dealing with poor processes, and feeling overall undervalued I resigned to resume my PhD. My advice is that you change to a software company, and in general that you join a company where your role is a first class citizen (I've heard similar complains of friends who are, in say, a finance position within a structural engineering firm).
On the other hand, I left with a strong impression that these type of non-software or software adverse companies are great candidates for companies to either sell services or to directly compete against with more efficient services... perhaps a route I'll one day take.
So my advice would be to find something that makes you happy. This doesn't have to be a blind search...there's plenty of research on what makes a work environment fulfilling. The classic is the intrinsic motivators (autonomy, mastery, purpose) rather than the extrinsic motivators (money, fame and such). It sounds like your current environment doesn't have much going for it in the way of intrinsic motivation, so start by thinking about what a rewarding work experience looks like for you and then try to find it.
And if money is your thing (it does enable lots of things that can make your overall life happier), the lesson I've learned 20+ years into my career as a developer (and now management) is that worrying about money early in your career is a premature optimization. Worry about honing your craft and the money will take care of itself up to a certain point. When you progress beyond Senior into team leadership is when you should start thinking about getting paid, and you'll get there a lot sooner if you spend the beginning of your career learning as much as possible and ensuring that you don't stagnate. It doesn't take long to become very senior, but it's not just a matter of putting in the time. I've interviewed people with 20 years in the industry who basically had the same 2 years experience over and over. And I've interviewed people with just 5 years experience who were completely ready to take on technical leadership positions. Be the latter and you'll end up getting paid more over the course of your career.
I can't tell you which is "normal", but I will advise you to try to leave. Socialize and network your little heart out, because if a friend recommends a place to work, you can be more sure that it won't suck, and it will be easier to get in the door.
That being said, I would recommend three things:
1) Try to focus a little less on whether or not you've been treated as fairly as possible and look for ways you can improve things for everyone in the company. If you leave, someone else is going to have to deal with the same crap. Is there a way you can make it better?
2) Talk to higher management. Try to be objective and avoid blaming. Just identify things in the process that are causing you to feel unappreciated and ineffective. Could they involve you in more planning meetings? Could you start holding trainings to share knowledge among other developers?
3) Remember that you don't owe the company anything. You should absolutely be professional in all your dealings, but a job is a means to an end. If you aren't getting the pay, recognition, or satisfaction you're looking for, just look for another job. Companies live and die. Employees come and go. Don't get too emotionally tied to it.
Now it's time to start thinking "what would you like to do next" and invest some time in a daily basis looking for companies and positions that you will feel motivated to apply. That research and process may take some time.
Ah, don't get into the "Engineer -> Senior Engineer -> Manager" thinking, titles are not important, what really matters is what you do and how much you enjoy it. If you enjoy what you do, you will succeed.
Remember to respect the balance. What if you were on the opposite team? One that charged ahead, worked like crazy and valued only the smartest? That might be nice for a bit, but eventually it would wear on you in other ways, you'd be tired, stressed and feel undervalued.
But even after respecting the perks, you're restless. You want to be on a higher functioning team. I say quit, and quit right now. Because right now you're in a place in your life where you want to work hard, study and grow. So go find those people, they are out there. But leave on good terms, because in 5 years when you want to focus on your family, or take up a hobby, or just chill out, you'll want this type of job, and you'll be glad it's something you can come back to. And then 5 years after that, who knows, you'll get that itch again, and once more your off to the races.
But generally, your company sounds like a pretty standard fortune500 crap tier outfit (IBM, Citi, Ericsson, Tata, etc). I suggest you find a better company or position within the company. Move teams if possible. If not, just leave. Don't stick to places like these. I did. I wasted my time.
It's not someone else's job to make you happy. It's your job.
How to be happy is something we all work on every day. Nobody can tell you how to do it for you.
For me, some things that have helped are group exercise, meditation, social interaction, trying to challenge myself and being creative. Financial security is also important.
> I've been trying to make the best of things: the attitude I've tried to have over the past year has been that if I can identify various things that we do wrong at work, and can come up with better ways to do them, then it's almost as good as working somewhere where things actually get done in the right way
There's no place that does things perfectly. People deserve to be happy and I think you can find something better than your current situation if you keep looking. It may or may not mean changing your job.
Ultimately, what you're looking for may be found in yourself rather than in your workplace or from an answer on the internet. You can still change your job. My advice would be, consider what you want to do, and give it a try. If you're the decision maker then it's the right thing to do. Even if you're not the decider, when you look back and realize that it wasn't your choice, you've still learned something. Good luck!
I worked at a place like that. And it was a software company. And it was my second time working there. After I realized that the company deteriorated far more than I had anticipated in my absence (and I did anticipate it), I quit the place the first chance I got, and never regretted it.
Generally if you love working with computers, you have to give up working with them professionally, because today's computer work is nothing like the work of old: too much politics and management meddling, too few people who actually care about doing things correctly, or about working with computers at all, for that matter.
For most people working with computers today (and I even experienced this first hand working in Silicon Valley), working in this type of a job is just means to get above average pay, or decent pay, just like for most people an automobile is something that gets one from point a to point b, instead of this incredible machine which can put together economy, performance, and design all in one.
Basic rule of thumb, the bigger the company-- the dumber and more dysfunctional they are. Also, Non-Software companies simply don't get devs.
Chalk this stint up to experience, prepare to move on.
Pro-tip, on your job search make sure you scorecard your next company for personal cultural fit. The ONLY way to determine this is by talking to actual members of the team you would work with. Here are some good areas to probe during your interview conversations > https://www.themuse.com/advice/the-best-interview-questions-...
You have only been there a year and you are eager and motivated. This is great to hear. It also sounds like you enjoy writing software, also great.
Here is what you do not want to do: become a PITA.
Stop talking to management so much (at least for now), they probably are getting tired of it.
Also try to fit into the culture where you work (at least for now).
And absolutely always ALWAYS be a team player. Even if the senior doesn't know as much about the product as you do right now. Offer your help and be nice about it. Don't take things personally, even if someone is being rude to you. Also try to look for people who you admire professionally and help them whenever you can.
In the mean time focus on your skills and keep improving your corner of the world.
What will happen, sooner than later, is that those people you helped will remember you. And when they are in a position to affect positive change, they may return the favor.
While you are doing this, make mental notes of where you want to be and definitely do shop around. By being aware of the real world situations, you'll be better equipped to recognize a better situation.
Best of luck to you!
This gave me tons of experience that I could hardly get at my level and age.
Very lucky for the company at the time I wanted for it to prosper, hence have tried to make it as good as I could.
Chance to learn and advance yourself.
P.S. left to a much more senior position in another company after surviving such a rhythm for few good years.
2 years back I quit the company to start freelancing, and sometimes when I look back - I regret wasting those valuable years of my life.
It feels like my situation just 2 years back. I stayed in such a company for 7 long years because of various reasons - but also because it got very comfortable - I had the option to do bad-to-mediocre work and no-one would question it, because everybody thought it was "great work". Three years into the company I had once complained to a new manager that most of the team did "mediocre work" and did not even take minuscule risks. The result was - the new manager put me into a PIP, ironically in a quarter when I was performing very good. She came to apologize a week later. But formally never cleared my name off PIP, instead marked me as a employee she cured on the HR records. That was cruel.
Here's the thing - your management know exactly what frustrated you and also know that it's the most efficient cost-cutting move, and it simply doesn't overlap with their interests to do something about it.
It's really the only way you get to wear all the hats and solve lots of different problems in lots of technology domains and IMHO the best way to become a true full stack developer.
I can't tell you exactly how to find those types jobs, but I can tell you I've managed to over spend half of my 25 year career working in those types of companies.
Well maybe I do have some hints. I guess in the early days I did a lot of networking and going to events and meetups and such.
Then within the past 10 years I have started blogging and podcasting which exponentially increased my luck surface area and as a result a lot more opportunities come my way.
Anyway, best of luck with it!
The only advice I can give is keep yourself available and keep looking for a job even if you want to work where you are at. It can't hurt to shop around.
3 seniors quitting in a year does sound a bit like a red flag. Hopefully you're keeping in contact with them? Maybe you can find out why they left and where they went (and whether you can come along).
It's often unnecessarily large and undocumented. Sorry.
Consider running your ideas by some higher-ups before you spend your weekends on them. If they're not interested, maybe they could help you figure out things to work on that would get traction. This might be one of those trite old things where you make the person belivee it's their own good idea, but even then they'll at least know you were the one to implement it.
Things like code quality guidelines and interview processes involve some subjectivity- they're commendable things to want to improve but it may not be as simple as "boom, now it's better."
Not everyone loves talking about software for the sake of software. Maybe connect over biking or frisbee or movies or something. Also, "software" is a vast, vast space of topics. If someone doesn't happen to be in the right frame of mind when you bring up some otherwise-interesting topic, you probably will get blank stares. If you do want to chat about software, find a way to ask people about something you know they're working on.
I do hate the getting-things-done-in-meetings approach. You could try short-circuiting them with emails like "Here's problem X, here's my solution Y, please email me thoughts otherwise I'll go ahead and implemnt it." (YMMV)
In the end, though, it does sound like you're looking to leave. So, keep a list of your accomplishments (even if nobody there appreciates them), the responsibilites you have, positive feedback you've gotten, and things you've learned. Brush up your resume and look around. If you're financially stable, maybe just bail and go back to freelancing. Or, if you're feeling gutsy, maybe apply for a Sr role at your current place- that might be a way to gain some recognition.
I guess in sum, start doing the opposite of your gut.
- Feedback is hard to come by.I don't know your company, but I've known several managers over the years who are excellent people, fantastic engineers in their own right, and decent at organizing projects... but they have no idea how to give constructive feedback. Sometimes this is a personality defect - software isn't known for attracting folks with high EQ - and also it's easier to not risk pissing people off. Sometimes they're guilty of apathy or oversubscription. I think you need a mentor, someone senior who will actually provide this feedback, and ideally who has visibility into the work you and your team perform. They will certainly have insight and perspective. I didn't realize how valuable this was until I started with my current manager, who gives excellent feedback, and I can't thank her enough for it.
- Work expands to fill the time allotted, but work also shifts to the person most willing.If you're pulling those kinds of hours and your team is not, then hey congrats, you're the kid in school who does all the work in group projects... so, presuming you're not okay with being that person... "Why would I promote you when you're carrying the team on your back?"
- "How tall you are depends on who you're standing next to."It's sadly common for a dev to have ten years' experience and not hold a candle to another with two years' experience. It depends on what they did in those years! Folks who aren't still hungry to learn, while still competent, cease to grow. So for evaluating your peers, do respect their years of seniority, but take it with a grain of salt that those years were well spent.
- "One must imagine Sisyphus happy."Camus said that, and while depressing, the quote sums up most of software development in a nutshell to me. You have to value the process - which it sounds like you do - but with the knowledge that your efforts will never make the problems go away. At best there will be new problems. At worst you'll be hamstrung by the situation around you, which leads to the next paragraph...
- "Every group of friends has That Guy. If yours doesn't, then congrats: YOU are That Guy."No matter the context, don't be That Guy. If your senior engineers are so amazing, you wouldn't be asking these questions: it would be painfully obvious to you that you can learn a ton from their experience and example. That is, unless you're very self-centered and narcissistic, which isn't meant as a dig so much as a "know thyself" moment. About the time that everyone learns from you, but you don't learn from them, and you're not just there for the money/etc... it's time to go.
- Culture comes from the top.ICs can't change the culture. At least not much, and likely not outside their team. It's just not how big orgs work. This should be part of the reason directors and VPs are so well compensated: it's on them to set the tone, establish the expectations, and conduct the hiring to enforce those. I personally know five ICs, off the top of my head, who all tried to change the culture, were unsuccessful, burned out, and quit. Find the serenity to accept that from your perspective the culture is immutable, and either accept it or change gigs.
- Yeah, final point: It's time to go.The usual career building advice applies, but I'd also focus on meetup groups. Everyone at a Golang meetup group, for instance, likes Go so much that they sacrifice personal time to hang with others who feel the same.
Feel free to reply if you'd like any further clarity. Good luck!
My next job, I was the only 'non-senior' on the team of about 12 that wrote all of the code that kept the manufacturing systems running for a very large international biomedical device manufacturer and since we were IT, we were on 24/7 pager duty.
Everyone from top to bottom at both companies were much like you describe- doing just enough to get by, punching the clock, and checked out. Not necessarily bad or dumb, but not necessarily good either.
Being a very outgoing person helped me stand out and I was never left out of meetings because I wasn't senior enough, either because I was lucky that these companies didn't do stuff like that, or because I was engaging enough for them to realize I may not have the title but I had the chops.
I've never again worked for a company that wasn't tech focused, and I've never again worked for a team that was a cost center (my teams made money from clients and we got treated better). The biggest company I've worked for since was 220, the smallest was 5.
As I've looked back on my path from Junior SD to Software Architect to running my own teams and companies I've realized two major things:
1) The megacorp stuff was god awfully boring and soul crushing. I connected with no one (I don't remember anyone I used to work with from those companies except maybe 2 people) but I was smart enough to pay attention to the good and bad things they did. From organization and procedure to inflexibility and beauracracy I was able to pick and choose some of the good habits up that you'd never get spending your career at startups.
2) If I would've stayed at either of those companies too long I would've burned out, or worse, gave up and stayed. It felt like being in an F1 car and having to drive in a school zone. I KNEW I could do cool stuff if I could find an outlet.
You seem to have the creativity and ambition to be very good at your craft and a company like this will squash it in the long run.
Make a list of things you think are good that they do (code reviews, mentoring, general procedural stuff, even if mundane). Make a list of things you think are stifling or dumb (old tech, no code reviews, 'senior' dev only meetings).
Use that list to make sure you're not going to get more of the same at the next company.
If you don't mind client work and love variety look for teams that do professional services work (like implementations for a software product/service company) or an agency (you'll get every variation of good bad and ugly there).
If client work or agency life is too stressful (and it can be FOR SURE) get on a product or service team.
You're still young enough I wouldn't recommend going to too small of a team/company too fast.
I see a lot of startup Cowboys that are good at rapid prototyping but are shit at developing something maintainable. There is a very happy medium between knowing when to go Cowboy and when to play it safe- if you do that you'll always be in demand.
The caveat to that is that I've seen big companies and big teams with awful procedures (or none) and I've seen 4 person teams that had a great workflow and process and shipped quality work fast and without very many issues.
The medium sized teams and companies seem to be a good middle ground of being visible, able to affect change, and having enough other people to lean on and learn from without getting brushed off because everyone is running 1000 mi/HR and has no time.
If you're in PDT or MDT timezone, interested in working remote for a startup (higher risk, below-market-value pay, great mission, small team, challenging work), feel free to contact me and we can see what happens.
1 - Is software/technology the company's main source of revenue?
This is my top-most question, because I have been an engineer in several organizations where software/technology wasn't their primary concern and it sucks for lots of reasons. All of the reasons funnel back to this question. It makes economic sense that if you're an engineer at a law firm (as an example), you are not the organization's primary concern because you likely do not contribute to the organization's primary source of revenue: litigation. This will have all kinds of downsides to it: lack of training whether from budget constraints or a lack of mentors; lack of advancement on the right things to match a thriving career in software/tech; a lack of pay.
2 - Does the company make software/technology for the right reasons?
This might be a stickler for lots of other HN readers, but I have made an effort to stay away from tech companies who participate in the supply chains of industries that I take up issue with. Example: I'm not fond of war for any reason, so working for a defense contractor is out of the question. Even when the sales pitch sounds great, I still look at whether I'll be able to sleep at night knowing I'm making a contribution to the things I care about.
3 - Does the initial environment suit me?
I emphasis the word, 'initial', because this will change as all environments do... Even at the few companies I have found over the years, they all changed in ways that communicated to me, it was time to move on. People, politics, mergers, acquisitions, lack of new opportunity, etc- The landscape will forever be changing so find your tolerance level for the changes you can handle and work with it, not against it.
4 - Check in with yourself frequently and ask yourself, "Do I still love what I'm working on?" and be willing to make positive changes if the answer is no. 'Knowing thyself' is some of the oldest philosophical wisdom and for good reason. You will continue to jump from one circumstance to another if you don't truly know what does make you happy. I spent years trying to climb the corporate ladder and realized that I'm not cut out for management, but I like being a leader. One can be a leader anywhere... with or without followers, subordinates, etc. Besides most people love and respect leaders, while despise and tolerate managers.
You will feel like you made mistakes and bad decisions along the way, but this is normal growth. Just keep focusing on what brings you happiness.
I would pick a 3-clicks UI over a 3 messages UI every time.
> I feel like I write the same couple of functions over and over again, reinventing the wheel again and again.
If your goal is to organize your code so you don't have to write as much of it, then fiddling with files, folders and modules is a worthwhile investment of your time.
> I want naming conventions for files and folders as well as functions themselves.
Naming conventions are orthagonal to the actual organization of your code. Be aware that different projects use different conventions, and hopefully make peace with that. For your own projects, find a style guide you like and stick with it. I like this one: http://nodeguide.com/style.html.
Use Browserify or Webpack to package up the modules if you want to use them in the browser.
* Use utility functions wherever you can from NPM packages such as `lodash`, `underscore`, `validator` and `underscore.string`.
* Use as many IDE plugins as you can; syntax highlighting, marking 80th or 100th character column
* I recommend using VIM or an IDE that utilizes muscle memory as much as possible, here's my config https://github.com/niftylettuce/.vim take a look at the plugins I use and the `vimrc` file contents)
* Use `eslint` with a nice `.eslintrc` file. For ES6/ES7, here's mine https://github.com/glazedio/glazed/blob/master/.eslintrc (basically every time I file save in VIM, it checks these ESLint rules and highlights the lines in red that have issues and describes them in the VIM footer/help section at bottom of the editor)
* Use a simple MVC folder organization. See what I did here with Glazed at https://github.com/glazedio/glazed.
* Don't use overly complex frameworks or SPA's unless absolutely 100% needed. It usually just slows you down - and from a user-perspective having a backend templating language vs. SPA to render views is transparent to them (they don't even really see the difference, they just want functionality!).
In general, you really can't avoid having to manually write all the fluff code you consider to be "reinventing the wheel over and over again". This is stuff you will encounter with every project. Projects are very similar in setup, but different in functionality. You just have to make writing _that_ code_ faster, through the use of copy/paste, string replacement, and helper functions. If you start writing shorter bits and blocks of code, then you will be able to transition from one project to another more seamlessly. These thoughts you have are why I came up with Glazed, the practices around it, and everything that's baked in (so I didn't have to do so much of this manual stuff I could just clone it as a boilerplate and get going, then copy code over for unique things from various projects).
Take a look here for additional tools and tips I use to write projects quickly and recommend to others https://github.com/glazedio/glazed#advice
A startup is kind of like a marriage. If you don't trust your partner when you're dating, you're not going to trust them when you get married.
You can do sales and product development too. It's a skill that can be acquired.
(2) You'd better talk to a lawyer.
Keep in mind Thiel's law: a startup screwed up at it's foundation cannot be fixed. You should use your muscle to make this right now, or it's all going to fall apart sooner or later.
Perform sales yourself or hire someone. Use that performance as a baseline against which they get equity. If they underperform you have facts rather than feelings to start to talk about equity. If they overperform you'd like to have them in the team after all.
Either email me (see profile) or I'll check back later today
The closest analogue to coworking online that I can think of is building your own community. At the most extreme end, Problogger, Zen Habits, or the Art of Noncomformity. At the lower end, smaller niche communities (e.g. knitting, parents who travel with their school-age kids to foreign countries).
As a purely anecdotal counterpoint, if you have a distributed team focused on solving one of the hardest problems in technology, state-of-the-art video conferencing technology can erase distance and barriers.
> EACH MORNING, WHEN Andrew Fikes sat down at his desk inside Google headquarters in Mountain View, California, he turned on the VC link to New York.
VC is Google shorthand for video conference. Looking up at the screen on his desk, Fikes could see Wilson Hsieh sitting inside a Google office in Manhattan, and Hsieh could see him. They also ran VC links to a Google office in Kirkland, Washington, near Seattle. Their engineering team spanned three offices in three different parts of the country, but everyone could still chat and brainstorm and troubleshoot without a moments delay, and this is how Google built Spanner.
You walk into our cubes, and weve got VC on all the time, says Fikes, who joined Google in 2001 and now ranks among the companys distinguished software engineers. Weve been doing this for years. It lowers all the barriers to communication that you typically have.
Try it out. It helps understand the limits in online interactions.
You'd have all the distractions of a co-working space but you're still stuck working out of your bedroom, with the couch and TV right there and your partner popping in to ask little favors around the house.
I don't think it's a particularly good idea.
Example: I worked at a VoIP company. A mishandled call by another carrier in the chain led to the death of a child (it took several minutes to actually reach emergency services in the right country).
You don't want to advertise that your app is available when everything else has failed unless it always is.
We use the last one for our automated on-call, works ok most of the time.
Configurable via npm module, though there aren't that many yet, but this seems potentially great.
Assuming you're talking about personal data not team or company data.
Passwords - Lastpass, allows for complex, unique passwords, if one is compromised its not the same elsewhere e.g Mark Zuckerberg's latest fuck up.
Encryption - I use PGP encryption for some emails, not all. Use Signal for Android when using SMS.
Identity - Not much on the digital front, however I have completely eliminated physical mail e.g Credit Card Statements. This mitigates information leak because of mail being stolen or read without permission.
Social Media - I deleted FB a while back, although this was a personal choice, not for known privacy reasons.
Google - (They get a category of their own) Basically turned everything off here: https://privacy.google.com/
-Encryption - Was using cryptocat. now using whatsapp
-Identity - pseudonyms like this one. FinchVPN
-Crypto currencies - BitGo, ShapeShift, 7ZIP to store private keys.
That Indian (or Pakistani, or Croatian, or Thai) person could be just the partner you need. At least look at their work.
And a lot of time they charge less because their cost of living is much lower. You can actually pay them more than others would and still save on a "super" developer.
I think it would be equal time and less energy than going to a University Hackathon for hours and waiting to see who rubs you the right way.
Can you pick another stereotype please? It costs you little and is less degrading to us Indian guys and girls who happen to see it.
I'm sure there are newbies and/or posers of other nationalities as well on freelance websites.
The guy I ended up working with did an amazing job using a team of freelancers on the first task.
On the second task, he asked for more money up front, and then that was the last I heard from him. He took the money an ran.
I am looking for another person or team to help me now, but I think the process is going to be to start with a small task and try to build trust.
The most important skill in these cases is the ability to write amazing specifications.
I have had some good practice over the years, and you would be surprised how much it helps.
Every one of us spends our lives building on our experience and then presenting that experience to others in exchange for compensation.
Without a system to manage this, it's just something to be exploited.
How do you as the employee know that someone isn't going to have you do a bunch of work and deny you compensation, or request you do more additional work than what was agreed upon?
How do you as the employer know that someone isn't going to just take your money and not provide the requested work or provide something substandard?
If you can't build a reputation on either side, there's no reason for anyone to trust you.
Your hiring problem is caused by your lack of time commitment to finding the talent. Your impatience comes through loudly in the post.
That said, Upwork could use some improvements (which I'm working on).
You'll have to get over the idea that you can higher someone perfect , instantly and that some magic group (that you dont actively manage) will ensure that people meet your quality standards
For US freelancers, you're paying for down-time between clients and meetings that won't convert into any work. SuperDeveloperGuy (regardless of his nationality) is going to have a full book, and as such will be able to command a higher rate than random-(any-ethnicity-guy-with-less-than-desirable-experience). The reason why we bill out at lawyer rates is because our labor patterns are similar.
HN has a freelancer thread you can check. I've used it before. I generally discriminate based on the quality of their comments (a subjective metric, admittedly) as well as how long they've been a HNer. Keep in mind college kids are getting 35/hr minimum at any summer co-op, so again, 400 EUR won't get you very far.
RE: Elance, et al -- On Upwork I've had great experience with the Eastern Europeans/Russians who have tons of feedback (is it still racism if it's a positive stereotype? hmm).
 (Personally a client approaching me with a rate in that range is price-signaling to me "I'm going to brow-beat you for every dime"; somewhat counter-intuitively the quality of clients I've had has increased as a function of the rate at which I bill. Once I crossed the 3-figures-an-hour-threshold people started taking my time a lot more seriously.)
Here's a full feature walkthrough without marketing bullshit: https://www.youtube.com/watch?v=17uPOmgFFo4
For people looking for coders, we offer quick turnaround on small projects, typically priced between $100-$500.
For coders, it's a quick way to make money without having to commit to a multi week project. Please check us out or email directly at email@example.com
1. Find someone from https://nomadprojects.io/
2. Go to a hackathon and meet devs.
These are marketplaces:
Or, maybe, this question that you posted here on HN you can actually bring up during one of these meetups, and see if others have the same challenge, what advice they can offer? True, not as scalable as a website (or some similar alternative/online group), but at least your name would get known around the locale, and there's the networking opportunities, etc.
You have time. The only person I've ever met who actually had no time was on his deathbed.
Everyone else is poorly prioritizing their time. Or their money. Cut your expenses in half and you regain half of your productive hours.
And of course doing it yourself is an investment in yourself - possibly the most valuable investment you can make. Naturally this assumes that you treat the project as "deliberate practice" and not something to simply get out of the way.
If you have the right sort of personality traits (which anyone can develop) you absolutely have time.
Most schools have some kind of online job board. One example: https://du.studentemployment.ngwebsolutions.com/JobX_FindAJo...
That said, while there's likely some great budding talent there, there's also a dearth of real world experience. You may find pitfalls there.
I find people among my friends. What work really good, but unfortunately slow. But usually people are ready to help with out money. My projects are startups and people found them interesting.
I you need money or ready to pay you can go to freelance website, but I don't know what quality do you get.
It probably will not, I'm pretty sure they have the statistics, however it will make some annoyed non-paying customers complain on the internet.
Even then, don't get your hopes up. It should be worth noting that VPNs can give a false sense of security (such as not logging). All they're doing is moving the goalpost from one end of the playing field to another. They're useful for getting into internal networks, and they're useful for bypassing outbound firewalls in restrictive networks, like public schools and libraries, or churches, but that's about it. See https://gist.github.com/joepie91/5a9909939e6ce7d09e29
If you want online privacy, you really should be using Tor. if you want anonymity, you should stay offline. Regardless, realize your VPN provider isn't going to go to jail for you.
Various means of payment are accepted, including btc, and cash (of any(!) currency) sent by mail. OpenVPN, possible to choose from a number of countries, no limits on speed or data.
If there are other commercial VPN services that don't necessarily require you to give them any personal information (for account purposes), I'd be curious to know. Would be nice to have more alternatives.
I then send all of the logs to Loggly and get notified anytime someone connects to my OpenVPN server.
I cancelled my subscription months ago. They stopped circumventing georestrictions a while ago even though it used to be marketed as having that feature. Support even fixed it a few times for me.
Nowadays I just use one of the vpn scripts on GitHub and a small vps somewhere.
It's plain and simple OpenVPN made by nice people, and it's only 3/month.
I'd hesitate to recommend VPNGate itself for anything that requires real privacy though. However, SoftEther VPN is an excellent choice if you want to set up your own VPN on a box somewhere.
It has a large set of exit points, which is what I use it for (at least until geoblocks die, which it will happen at some point). Being based in Virginia, they're probably an NSA front but I have nothing to hide ;) and at least you know it will work...
The service used to be really spotty, but they really stepped it up lately.
- claims to be "operated by activists and hacktivists" - uses OpenVPN - GPLv3 client for many platforms - accepts Bitcoin (or PayPal, Credit Cards, ...) - has an API
For connecting my servers between them (and my laptop) as some sort of secure virtual network I use my own product https://wormhole.network - The servers are all in an overlay private network completely transparent to any application, so I can move servers to different providers, locations, etc and not have to change a single configuration line (nor configure any firewalls).
For my own network, OpenVPN because it's open source.
When I signed up they had a 99 cent a month deal going on. I'm not really concerned about privacy. I just needed something to help with the connection to my dedicated server that runs Plex that is hosted with Hetzner.
Comcast here has poor peering to Hetzner and using a VPN solved the problem.
They have a lot of servers all over the world and they few times I have needed to open a ticket I got a reply in less than a hour.
I also have a Droplet on D.O. that can act as a VPN. I switch to that if I am doing anything sensitive.
Reason? My ISP modem basically dies when there's too many connections opened at once. So sometimes an innocent `npm install` would kill my internet for a minute...
I use HideIPVPN for their European servers. And I use Avast on my phone to automatically get on VPN when I am on certain Wifi networks (it does SSID based connections).
Okay, that's not entirely true; I do access a company VPN, but not for privacy purposes which is probably what's implied. I use Tor for that.
Not necessarily condoning illegal activity, just stating things plainly.
I'm pretty sure tor is under attack heavily right now, (see ioerror accusations), and I have used it very sparingly. Of course only NSA level actors can comprimise it with enough upstream fiber/exit node taps...
You must always know your enemy.
What they CAN do is try to trick the PC's user into putting a server of some kind onto the PC. If they succeed, then they can just use that. This is essentially what most malware does.
Now there is a server running.
Wireless connected machines can be attacked using skip-levelpackets.
Some ethernet interfaces have controller boards that canbe hijacked remotely.
If you're using a bluetooth keyboard it can be attackedremotely.
MS boxes have a dozen ways they can be attacked (e.g theremote management console, the printer, the shared folders,etc).
Here's the universal law: If the CPU can get at it, then anyone can get at it.
If you want reasonably secure records (e.g. employee data)then ONLY ever record that information on paper and keepit in a locked room. Oh, and don't use the copier becausethe copiers have hard drives that store image data.