Most people who work at tech companies in the bay area don't pay for their insurance, or pay very little. It's just considered part of benefits.
I think they'd be shocked if they had to pay full retail price for it. Also, the government subsidies only apply if your making less than 50k a year, so most likely everybody would be paying full retail price if not for their employer.
 - Blue Shield monthly cost for Silver 70 PPO Downtown San Francisco $462.54 Downtown San Diego $388.22 Santa Barbara $372.58 Beverly Hills $342.53
2. Marketing & Advertising.
4. Employer Share of Payroll Taxes.
5. Other Insurance (eg. Workman's comp, General liability, etc.)
6. IT (Including AWS).
7. Legal & Accounting.
After that it's hosting (we have no on-prem infrastructure), AWS is probably 85% of that cost.
Jumping down an order of magnitude we've got: software, bank fees/processing fees, insurance, taxes.
We were really happy when our salaries passed our hosting bills and stayed there.
Advertising + Trade Shows
Balanced ternary could be a real fun starting point-- getting negative numbers involved asap surely has some great benefits. I think if balanced ternary was exposed to children more often at an early age we'd have a lot of these new fangled type level numbers being balanced ternary. I was playing around with implementing such in Rust: https://github.com/serprex/lambdaski/blob/master/src/typenum...
Binary comes off as particularly weak when type systems are still resolving lambda terms / prolog logic as associative maps & trees. http://repository.readscheme.org/ftp/papers/topps/D-456.pdf benchmarks 5 as being an ideal radix perfwise, but that does seem implementation dependent
My father wrote a song reflecting on our digital world: https://drive.google.com/file/d/0Bw-au4sqKD2gWVJqOGFzSEVoakx...Stay strong & good luck
1) Prime Climbhttps://www.amazon.com/Math-for-Love-Prime-Climb/dp/B00PG959...
2) Tiny Polka Dotshttps://www.amazon.com/Math-For-Love-Tiny-Polka/dp/B01N1UUHP...
- Tiny Polka Dots might seem too basic, but counting is this complex topic that we forget because, well, we know how to count. Lots of downstream advantages of having the kind of secure understanding a kid can get from understanding counting inside and out. Tiny Polka Dots can help.
Yes, a 6yo can learn to use a saw, just make sure it is sized accordingly and has small teeth - both because they are easier to use as well as less likely to cause injury.
(originally a Kickstarter)
Literature: A membership in the local library was enough for me.
Problem Solving: Chess and related board games; any kind of puzzles - I loved metal puzzles where I had to separate/join pieces (e.g. those found here - not endorsing the shop, just the first hit on DDG).
Tanagram Frisbee Bike Prism Magnifying glass
Ship in a bottle
Woodworking projects (especially involving measuring, proportion, etc.)
I Hate Mathematics Book by Marilyn Burns
Stolen Sharpie Revolution by Alex Wrekk (and other books on creating Zines)
Problem solving/lateral thinking books.
A compelling way to introduce children to laws of nature. You can see him sharing his philosophy here:https://www.youtube.com/watch?v=YOllmFfELT8
Also the games by thinkfun.com (Rush Hour etc) are very good
 https://youtu.be/2zvjW9arAZ0 www.improviseforreal.com
Reading of course.
Pretty much anything you throw at them will teach them something.
The question is, what do you want them to learn?
6 might be a bit on the younger side for it, but 10 definitely not. You learn to use a screwdriver and screws and basic mechanics. You can go all the way to elaborate designs.
It's a timeless toy, my father already played with it (looked like this back then: http://www.dalefield.com/nzfmm/slap/RoyalMeccano.JPG ) and so did I. Heck, even an adult can use these, I once made a distillery platform with height-adjustable burner with these. Really nice to slap together sturdy prototypes.
EDIT: Now that I'm looking at modern MECCANO, I feel like they have diverted too much from the original path. I'd rather have the basic old metal kit in the second image than a fancy MECCANO car consisting of oddly shaped plastic pieces.
A Pound of dice: https://www.amazon.com/Wiz-Dice-Pack-Random-Polyhedral/dp/B0... (I'd be keen to know if there's dice at a similar price in the UK)
You can then play something like Button Men (which could easily be rethemed to "Pokemon battle") https://en.wikipedia.org/wiki/Button_Men
Particular implementations of it can fail, financially, or due to bugs.
Sounds to me like you need to reduce distractions rather than working more hours.
On average, I think that number is about 6-8 hours per day for most people. But even that length isn't functioning at your peak, just high enough to be generally worthwhile. Peak effectiveness would be more like half that.
You need to do your research and find out what works best for you and your team, but the larger the group, the more likely you are to fall into the typical pattern.
With that in mind, not all coding is equally brain-intensive. If I put in a serious intense hardcore 3 hour session of gnarling code wrangling, I'm pretty much done for several hours. Conversely I can do minor refactoring and code cleanup all day.
It's well known that pushing developers to work more hours isn't effective. It might (might!!) get a product to deadline faster, but it will be at the cost of burned-out developers who will have greatly reduced productively, and a decreased quality in the codebase and more defects at the time of launch. And the better developers tend to leave for a healthier environment.
Regarding skipping meetings and emails, figure out (if you haven't) why you're doing that and take appropriate steps. Maybe it's having a discussion about why a particular meeting is unproductive, or alternate forms of communication. Maybe it's finding a reason to go to a meeting other than its stated purpose.
I firmly believe that obtaining a doctorate is as much about jumping through hoops that they have set on fire as it is mastery of your academic field of study. I just wonder the quality that was surrendered because sleep was in critically short supply.
In business, I believe it is better to work smart than to work hard. I acknowledge that when I was working on my doctorate had I taken a step back even for a solid day, I would have recharged and likely saved myself 5x that in lost productivity. Unfortunately, it is hard to see that when you are under intense pressure to produce huge volumes of work on a very brief timeline.
I do think progress is proportional to time spent on it. The only question is how much time you can get in and at what cost. You can always push harder, but it can lead to burnout and deplete passion.
It's mentally agitating when I go to scroll on a webpage and it doesn't do what I expect.
And what content authors should be most concerned about: it distracts viewers from the site's content, because I'm thinking "what just happened to my mouse". And that reaction is the antithesis of what content creators should want: they should want to engage me, and explore the site more deeply.
Though were at the point where browsers really need to clearly separate what requires advanced capabilities from what really doesnt. For example, a browser could always display exactly two tabs per page: Read and Interact, where ONLY the Interact view can access scripting capabilities and dynamic content and the Read view may only display trivial things like images and text. If youve ever installed something like uMatrix on the desktop (and you should), it is astounding how much crap from how many entirely different domains is loaded and executed just by loading a simple page now. It has to stop.
There are some, like I believe most Apple product pages, where scroll-jacking is used to create a one-slide-at-a-time-effect where it may work. But even on those, individual slides often undergo transformations upon scroll revealing information you'd otherwise not see.
The same guy that created that also recently made a second project of crowdsourced neighborhood characteristics within each city. For example, if you want to find where the tech or hipster neighborhood in a given city is.
For example, SF:
However, if you have an RF component and/or RF circuity in your PCB, you should be careful with conformal coating. As the frequency goes up and impedance requirements gets tighter, conformal coating becomes harder and harder to use, because it alters the RF circuit behavior. Also, obviously, you should not be coating certain sensors (pressure sensors, humidity sensors, etc).
Your next line of defense is your enclosure. Ideally, all your connectors should be IP67 or IP68 rated, and you should place your PCBs in an enclosure which is itself IP67/IP68 rated. This is usually achieved by using a gasket and designing the enclosure with a proper gasket opening.
If your device is going to be exposed to sunlight, you should make sure that any active IC in your system will not exceed its operating temperature. Metal enclosures exposed to sunlight will heat up considerably. You may want to think about a cooling solution, based on your power dissipation (enclosure with fins, etc).
Edit: Looks like you're aiming for an actual product release. There's no substitute for potting your circuit inside its enclosure. I'd look for a silicone based solution as you're aiming for large temperature swings.
Condensation happens when moist air hits a cool surface, how much power is your circuit consuming? You may not have a problem.
I have designed a number of telephony products (e.g. T1 repeaters) for use in outdoor environments, we never coated the circuit boards.
Along the lines of "do things that don't scale," household products such as Household Goop (aka Shoe Goo), silicone sealant, etc., work pretty well.
If you have one or two components that can't be coated, you can leave them off the board and solder them by hand after coating.
2. Lottery tickets
3. Slipping at Wal-Mart and suing them for millions
2) Possibly various patents.
This is more a matter of the sheer number of people who could become involved in Bitcoin in a short amount of time (i.e. an artifact of the modern era) than it is about Bitcoin per se.
Been using it for 3 years now, no complaints (one for office and other for home)
Ask HN: What are the best noise cancelling headphones? 3 months ago, 11 comments https://news.ycombinator.com/item?id=14226574
while here there are other options named
Ask HN: Which headphones do you use while working? 4 months ago, 36 comments https://news.ycombinator.com/item?id=13978072
What i do now is i work with non-technical businesses as my clients, they come to me with a problem, not a spec. I gather requirements, give them my opinions, tell them how to solve their problems, then deliver solution for it, which 90% of the time is an internal web app.
For instance, a current client is a distillery that was using 2 pieces of shitty software, one of which they originally got in the early 2000's. The software was running their health and safety requirements for the staff. I wrote an internal web app that replaced a old creaky system that didnt work very well and they're absolutely flabbergasted that this problem could even be solved at all. Its an extremely easy problem to solve, but to them, i'm basically doing magic.
They dont care what i code it in, they dont care if i'm up to date on the latest framework, they dont care how i deliver it as long as i solve their problem and save them money, which is what i focus on. This is infinitely more interesting to me than keeping up to date on the latest tech. Also, as a side note, i'm now earning about 3 times as much as i used to earn as a contract web developer.
Perhaps you could apply your skills in a different manner.
I changed careers more than once between 20 and 30. To/from radically different fields.
Besides that, your skill-set as a programmer is _much_ more than your choice of language/web framework.
You have skills in:
- Building things
- Decomposing and solving abstract problems
And don't let a perceived lack of math skills intimidate you. This stuff is learnable, with effort and time. ML is most-decidedly not magic. You can learn it, if you have an interest.
That said, if programming is losing its luster, but you still enjoy software -- try product/project management. Good pay, and it's a very social job where your tech skills will be valued.
If you want something dramatically different -- the sky's the limit. At 20, you could switch to Business, Law, Medicine, Journalism, Banking, whatever. Biggest lesson I've learned: don't be afraid to try. Good luck!
 (For context, I started studying math much later than you (~27), and have worked on ML in a research lab, since then. But when I was 20, I barely passed college algebra... Point is, you have time and can learn if you want.)
To me this is rather a sign of common sense than a lack of interest in programming.
You could try moving to a company that has its own product - these often have interacting with customers or other companies listed as one of the responsibilities.
There's definitely more interaction with people, as your day-to-day work is more about helping people succeed than building things. But you still use a lot of the same skills you've built up in development work - especially if you've spent any time debugging code.
Whether this will appeal to you depends on what motivates you. For me, I really like feeling like I've made a difference and one of the most powerful ways to get that feeling is to solve a problem for someone, so this is a very satisfying line of work.
Also, I've done a lot of interviewing of candidates for this role - and I can tell you that at least on my team, lack of experience isn't really a blocker. It's common to need to quickly learn a new product or feature to solve a customer/developer's problem with it, so we look more for quick learning and problem-solving instincts than built-up experience or domain expertise.
Product manager is also a possibility but you'll need to work your way to it. There is not one path to get there. But there is satisfaction in supporting a successful product.
Your best bet is to try different things to help you decide. If you can, volunteer in areas that you want to test out.
Since you are at it. Make a career and life plan. Start thinking now about where you want your career and life to be 5, 10 years from now. The advantage is that you'll be looking for opportunities to execute your plan. You'll be happy you did. The last thing you want is to end up in a place you don't want to be in in the future.
If you don't have a CS degree, then I would pursue it if I were you. I used to be like you (I was 20, now I'm 30 with CS degree), and it's been the best investment I've made.
> After a year at my job it seems like I'm no longer interested in programming - I am no longer excited about new frameworks, etc
Yes. This is because you've hit a ceiling with your learning. In order for you to move forward, you should touch up on basics.
> I don't feel interested in learning those fields (ML looks like magic to me and involves lots of math, which I suck at).
If you played Diablo, you need to learn your pre-requisites before taking these on. Once you have the basic fundamentals, it will come to you.
Right now, you are still too early in your career. I would focus on building a strong foundation (CS degree). Everything else will come to you over time.
I am 21, and work in the same Technologies you do. I founded a company in web services a year ago (http://Bigdrop.io) which is pretty much self sustainable today. I dont find a lot of interest in the domain any more and tire of new projects easily.
I however realised that my true passion lies with creativity, and it isnt limited to the web or to programming.
I am currently working with India Accelerator ( http://indiaaccelerator.co ), which gives me the chance to interact with start ups, discuss and design products, play a high level technical role, meet new people, etc.
We could possibly come up with something to help you out, you can reach out to me. firstname.lastname@example.org
I'd probably look at urban gardening, harvesting little plots of land on peoples' property. Maybe real farming, but make sure it's a niche that'll pay my bills.
After that, I'd probably print t-shirts and sell them at urban centers, maybe set up a stand. Then farmers markets, making little delicious things like crab rangoons, with some hipster spin on it(that's also good tasting). I'd probably work my way into the restaurant business somehow, but I know that the long hours and stuff I couldn't do, so I'd need a niche.
That's just what I'd do. You have to ask yourself what are some of your most triumphant memories and build on them.
I view software as means to an end, and that end is solving a real concrete physical problem in the real world.
It's hard to look at a specific vertical / domain and try to guess what kind of app you can build for them that would make an impact, as an outsider looking in.
So, become an insider by getting a job and doing real hands-on work in an area outside of programming. For me, since I figured I got the "hacker" part down, I wanted to get the "hustler" part down, and I joined a very early stage startup and did all things customer-acquisition, in charge of the singular goal of bringing in money. A hardware company at that.
Then, military has always fascinated me, so I sought to get an insider's perspective.
Now I've got additional perspectives that has been constructive in helping me understand where else and how else software might be able to make an impact, which is helpful when you're looking for opportunities to ... make something people want.
Math is taught pretty badly in most American public schools from K-12. Many people have terrible math experiences in elementary school, in part because the U.S. actively encourages women to go into early childhood education if they can't cut it in other fields (a thing not done to men). So, there are a lot of women who are basically math-phobic who are teaching it to our K-6 kids and the primary thing they teach a lot of kids is that math is scary stuff and you should hate it. It's really terrible.
I pulled my two sons out of public school at the same time. At the time, my oldest was in sixth grade, and he hated math and had terrible, terrible baggage about it. My ONLY goal for him for math while homeschooling him was to teach him "math is your friend" and that was it. I didn't care if he actually learned any math. I just wanted him to stop having fear and loathing of math. He now sometimes does stuff like reads illustrated calculus books (which are over my head -- I dropped out of calculus in college, due to having had a year long math gap... it's a long story) when he runs out of other things to read at the library and is bored.
If you want some pointers on how to get over your fear of math and how to learn math comfortably, I and no doubt lots of other people here can give you some pointers. Because there are people here who think math is cool and fun and managed to get through the school system without becoming math-phobic, in spite of how hard the school system actively tries to make most of us math-phobic.
Otherwise people career change entirely. E.g. I studied law at university, realised I didn't want to be a corporate lawyer, then did sales/vc work at an equity crowdfunding start-up, left there to learn to code, spent just over a year building prototypes & on contract in some bigger tech co's, then started my own co which I'm now a year into (I'm 25).
So try and work out what interests you and see if you can move within the company you're at to start with to test it out.
I also wrote up the transferable skills from law > programming. It definitely goes the other way too - https://hackernoon.com/how-studying-law-helped-me-with-progr...
First save money and change lifestyle to handle the pay change. Coding pays more than many careers, and you might want or need to move to an industry that you have little experience.
Next, be open to moving. There are other places outside of the big cities that can often be open to people from different backgrounds as they don't have all the big city fun.
What do you like or have experience in. Making a slight shift is a lot easier than a large one. Perhaps you coded something for a newspaper, that will make it easier to get a job doing something else for a newspaper. This might mean doing a double jump. Get a job coding for the industry you want to be in, then move toward your desired career in that industry.
Best of luck!
> I feel like my skillset (Python and Django) is slowly fading into irrelevance (everyone seems to be about machine learning and data science nowadays)
Machine learning and data science are certainly trendy, but there are still 100s of developers for everyone in those areas, and will be for a long time. These skills are highly sought after and you'll likely naturally shift to new technologies to solve problems as you need to.
> I also would like more interaction with people instead of spending my days in front of a monitor.
I think the best engineers get a lot of interaction with people. Building something isn't worth much if it's not the solution to the right business problem. I'm an engineer but I'm heavily involved in the product thinking process, talking to "stakeholders", brainstorming ideas, liaising with external companies, etc. I'd estimate my time is roughly 70% at a computer and 30% talking to other people in various ways.
There are many opportunities to do this sort of stuff if you're interested, and you may even want to go into Product Management if you want to remain close to technology but spend more time getting human interaction.
> Note that I am only 20 so I don't have that much experience either, and finding a good developer's job seems hard given the competition for all the good startups.
I'm assuming you're right at the beginning of your career, or only 1-2 years into it. I would encourage you to find a different place to work, try more companies of different types, teams that work in different ways, etc.
Martech is pretty interesting field with almost no competition (you need to be well versed in classic marketing, analytics and programming, also good to have some domain knowledge). For me it's a balanced blend of soft and hard skills.
So my suggestion is to take a look at databases before you decide to move on to anything too much different.
Personally I'm also excited about Apples ARKit . Some of the demos built on it seem like magic to me .
: https://developer.apple.com/arkit/: http://www.madewitharkit.com/
How I got over this was actually through learning applied math. I thought I sucked at it, too, but really I just never tried hard before.
What I liked about programming was formulating and solving problems. Not normally the act of writing code in and of itself (though that can be fun, too, every now and then). Learning more math lets you tackle more interesting problems, and there are more applications of fancy math than ML!
You could also switch roles into something more people - facing. Sales engineering or solutions engineering might interest you.
I've tried other things including: landscape gardening. Pros: - Outdoors- Get fit- Learn handywork skills
Cons:- Poor pay- Still low level of people interaction- Not that interlectually engaging
Mountain bike guide
Pros:- Outdoors- Exciting- People interaction- Nice landscape- Following a passion I have
Cons:- Turns my passion into work- Low interllectual engagement- Poor pay
I also tried running my own company doing this which was a good experience. Problem with it was that it is difficult to make as much money comparing to programming. Also above points apply.
Pros:- Outdoors- Technical- Creatively engaging
Cons: - Loads of digital images you have to work with becomes a bit of a burden- Regularity of work- Amount of competition
Writer / Blogger
Pros:- Fun- Built the blog so learnt web development- Good for learning content marketing
Cons:- Difficult to make money- Really competitive- Lots of alone time (I wrote a few books)- Effort/ reward ratio can be quite low
Pros:- Met people- Look round lots of houses- Out on the road
Cons:- Pay- Image- Office based- Can be boring
Exhibition worker(technical support, building the stands)
Pros:- Travel (I worked in UAE, Paris, London)- Working with your hands- Money can be good
Cons:- Can make a lot more money as the event organiser- Long hours- Intense
Pros:- Travel (residencies around the world)- Meet interesting people doing interesting work- Intellectually engaging
Cons:- Difficulty to make a lot of money- Your lifestyle will be out of sync with anyone else doing a normal 9-5- Snobbery- Networking
Pros:- Interllectually engaging- Many different disciplines (eg visual, service, UX, etc)
Cons:- Need a portfolio- Very competitive- Lots of low level crappy work if you cant get the interesting stuff
Pros:- Meet people- Command position of authority- Interesting, engaging work- Lots of opportunities to mix tech and education
Cons:- Money not as good as developer
That's my experience of other work, partly. Of course you can also try to make your career as a developer more interesting.
Ways I have tried to do this:
- Earn more money- Remote working- Change stack- Change scale, size, length of project, whether public or private sector- Develop other things not websites eg. a game- Get really disciplined about your dev time. Eg. work the way where you can be the more productive, get a pomodoro timer, go outside, try different types of desks.
To conclude this rant, developer / programmer is one of the job roles of the age. Douglas Adams said something along the lines, that each era has its own new industrial revolution and you are lucky if you can make your living out of it. However, it poses challenges but it is new and everyone is in the same boat trying to make it work for them.
When the masses discovered programming to be profitable ~5 years ago, it became "cool" and was quickly gamed into the ground from both ends.
Look at what "cool" does to art and music. The "rockstars" get paid a lot, and everyone else works for peanuts (or no nuts) or gets a "real job". 90% of the work now is marketing yourself. So it is with programming. Programming is like music now.
This is all thanks to the supply of programmers (and wannabes) increasing tenfold thanks to boot camps, and a 400% increase in computer science majors in the past 5 years.
The craziest thing about all of this is that you can be a complete novice, but if you have a decent following on social media and are putting out somewhat interesting content and are a terrible programmer, you will absolutely get hired over the expert that isn't contributing publically. It's all about visibility now.
My advice is find something you intrinsically enjoy so much, that doing all the extra annoying stuff is at the very least tolerable.
Be happy you haven't invested 10 years into the industry like I have.
All I ever wanted from the directors; strong leadership. Decisions made. Directions set (the clue is in the job title). Listen to what we have to say, ensure that everyone knows that their points have been taken on board, and then for God's sake make strong decisions, tell everyone why that's the decision made, and enforce the notion that it is never inherently wrong to pursue the direction you set. I want to know that you're going to support actions that pursue your direction, so support them publicly.
I have never had any problem getting 100% behind a direction I disagree with when it's been made and communicated well.
(1) Andrew Grove's "High Output Management", it's easy to read: https://www.amazon.co.uk/High-Output-Management-Andrew-Grove...(2) Manager Tools "Basics" podcasts, especially on 1x1s and feedback: https://www.manager-tools.com/manager-tools-basics
There's a hell of a lot to learn outside of these things, but I think they're a good start.
What worked for me:
- One on Ones. Nothing I've done has had as much of an impact as weekly one-on-one meetings with everybody on my team. I tend to follow the format outlined on Rands In Repose: http://randsinrepose.com/archives/the-update-the-vent-and-th... (This is an incredible blog for engineering management. I would highly recommend reading everything he has written.)
- Read everything you can find on the topic and about leadership in general and start figuring out how you can incorporate the lessons from those books into your situation and context. This is a brand new skill set that you need to approach with the same effort that you had been approaching engineering.
Rands in Repose: http://randsinrepose.com/archives/category/management/
Radical Candor: https://www.amazon.com/Radical-Candor-Kim-Scott/dp/B01MY574E...
Extreme Ownership: https://www.amazon.com/Extreme-Ownership-U-S-Navy-SEALs/dp/B...
Becoming a Technical Leader: https://www.amazon.com/Becoming-Technical-Leader-Problem-Sol...
- Finally, one piece of advice I got when I first transitioned into management was that "first-time managers usually fall into the trap of becoming the manager they wish they had. What you really need to do is figure out how to be the manager that each person on your team wishes they had, and become that manager." Easier said than done, obviously, but I've always found it useful to return to it whenever I am struggling.
There's a bug in the code: you can fix it. But can anyone else fix it? If so, let them. Even if you can do it better. Let them learn, let them grow.
What can you alone, as the Director, do? Direct. Lead. Set a direction, make sure people are following. Figure out your goals and values, and state them, often. Visibly live them.
Make sure people are following your lead, by knowing what they are thinking and what they are doing. Create ways to find that out, because people won't tell you straight out they think your leadership is shit.
If you think HR isn't central to management, I offer to you that the top junior officers in the US Navy are sent back to the Academy as Company Officers to
* run herd on ~120 talented young midshipmen, basically a high stakes RA.
* meet each other
* earn a master's in HR, focusing on leadership, administered by the Naval Postgraduate School. Spitball annual cost: $10M for 15 a year (2 year program and they're drawing salary and benefits, which could have been invested in having them driving ships or flying airplanes).
Focus on your people, their development, their well-being. Let them handle the technical challenges.
Communicate your people challenges to company HR aggressively. Make sure they are giving your folks money for training. If you have a weak player, talk to HR early. If they think you can handle it, they'll tell you. If they have tools for you, they'll bring those to bear.
Collect data, ask HR what data they collect company-wide. Talk to the other directors. Those are your colleagues now. Use them. Be frank with them.
Here's what I intuitively understood that made it easier for me to get the job and be broadly successful:
- You're the public face of your group, you're essentially responsible for championing your team to those in the organization as a whole.
- You need to be listening to those other groups and thinking about what your group can do to help
- Aggregate all those things you hear at a more global level and think about how you can gather interested parties (from all areas) to solve them
Specific example, we weren't closing as many software development projects because our sales teams didn't know what we could do.
First, I worked with some of the sales guys to create some training to help them pick up on the signs that "this might be a dev project" and "this could be worth a lot of money".
Second, I got in on a lot of RFPs and proposals to see what was being asked of us. I refactored the initial training to target the patterns we were seeing.
Third, and this may not be applicable, I actually became a part of proposals and pitches. Nobody was bringing the tech folks in.
Here's what I didn't think about/had to work on:
- HR and management strategy at a much higher level. Knowing impending cuts are coming, the knots that come with having to be part of firing or laying off people.
- Instead of keeping a smaller number of people that you work with closely happy and interested, you're trying to keep them AND their employees interested
- Managing managers is totally different than non-managers
- Budgeting strategy. Fighting to get training dollars, head count, new hardware (that wasn't really an issue), etc. It's kind of a zero sum game and politics will absolutely come in to play here. Maybe more so than anywhere else.
- So many meetings.
- It's a lot harder to feel like you've accomplished anything at the end of the day. You need to start measuring by weeks and months.
- So many meetings, again.
- You need to get people interested in your ideas for change. You really have to sell them in a new way to every person you talk to.
- You better have ideas for change.
Being a director means you have more responsibilities, but if you are too focused on trying to make everyone happy, you could set yourself up for a burn out.
Identify key individuals to help you (usually lead engineers), and give them your trust to do their job.
Focus on larger initiatives, give both positive and negative feedback, encourage healthy competition, and always be forgiving. Always be approachable, but never let them take your presence for granted.
Ultimately, you will find a larger reward when you take time developing individual relationships. They will appreciate your attention, and in turn, you will have direct influence over them.
Edit: surely it is the responsibility of whomever promoted you to provide the definition of what is expected from you.
- it's not all about you. Make sure that you piblically represent your team, not yourself.
- politics isn't above you. Learn how to be effective with your peers. At the director levels even your friends can become your competition.
- appreciate that your decisions impact people around you and the company.
- study budgeting. Know where the money goes.
- when tough times come, know where you will cut. If the place is toxic, learn how to stockpile cash or human fodder.
The transition is not so hard. Think of it as another programming language, another architecture.
Your team is like a machine. You are not in it. You don't work in it. You build it. You improve and iterate on it. Your job is to look at it from the outside and see what can be improved.
You also have to make sure that information flows from top to bottom well. The lowest intern needs to understand that strategic goals and focus of the team. That's really what motivating is.
As tech management, one of the most effective thing you can do is to train the ones below you.
You should take complete responsibility for what happens in your team. One of your junior programmers breaks the product? Sexual harassment? A core member ragequitting? Your fault.
Ben Horowitz's The Hard Things About Hard Things is what I'd recommend most on engineering leadership. Extreme Ownership by Wilink, Jocko is a good book on general leadership. Do avoid a lot of the things on Business Insider, Forbes, or other business blogs.
2. have a support network or establish one through a coaching or mentoring program. if you've not done such before, seek to hook onto an existing one and go from there
Usually good techs make better managers than typical politically-embroiled middle management.
I would not change anything in a hurry just to prove that "I've got this one." You are promoted to Director (you do not mention this but I assume) because your management sees you do at least some of this job already, and they also see that you have demonstrated potential for growing in this role. (The other possibility is that someone got fired and you are asked to step into that role, in which case, that is a different game altogether.) So, here are the Dos and Don'ts.
1. Own the tech roadmap. You will not know why some of the items are on the roadmap and now is the time to find out and be able to explain why, and at this stage you need not be convinced that each item on the roadmap should be there.
2. Build relationships with your business stakeholders in order to understand what is their definition of success, and what is your and your team's role there.
3. Take a look at your team again. This time you will see a different perspective. You want to quickly reach an understanding about your team's strengths and weaknesses.
4. Reevaluate your communication style. What worked so far, may not be suitable or sufficient in your new role.
5. Meet with as many of your team members 1x1 and ask them what they think is working well, and what they think needs to change/improve. Just listen and take notes, without agreeing or disagreeing to what they are saying.
6. Be prepared to receive feedback. From anywhere -- your team, stakeholders, management, customers, etc.
1. Try to prove yourself a good leader. This is something that takes time, and there are rarely any actions that can be taken directly only to accomplish this goal. Also, if you think too much about "am I a good leader," you will stress out very quickly.
2. Make changes in the roadmap too soon. At this stage, you are more likely to not have enough information and context about why the roadmap is what it is. If you make changes too soon, be prepared to change it again after you have gained context in the next few months.
3. Make changes in the team structure too soon. In your new role, you are likely to change your opinion about some of your team members' effectiveness and impact on business.
Over a period of time, you will intuitively know what needs to change, and that is the right time to start making any changes in the way the team operates, the team's priorities, the team structure, etc.
My recommendation, learn how to translate "unquantifiable" ideas to quantifiable ones. You can do this through a simple tool called an "OKR", which stands for "Objectives, and Key Results".
OKRs are generally built for quarterly runs. No need to stick to that. But come up with four objectives, split them each into six or so actionable items. So those actionable items can be split up into tasks, sprints, etc..
At that point, you will have quite a bit of work set up, and it will be easily measured. Take the percentage completed of each of the tasks, which make up the percent completed of the Key Result, and then the percentage of the Key Results completed make up how far along in your objective you are.
The objectives should spread across several different domains that you're directing, and your priorities should take care of what goes in there.
Take a good amount of measurements on those, do Gap Analysis' often, to find out why you overshot, undershot, etc., and keep track of that information. Do Root Cause Analysis' often as well, so you can find out what is really going on.
The crux of it all really depends on what you're willing to do with your team, and how accountable you're all willing to be held. Without their backing on your objectives, it'll be a bit more difficult. So if they understand what it is that you're trying to accomplish, and they see your leadership (i.e. owning up to all mistakes, and sharing all accomplishments), they will back you. But the keys to that are understanding the goals of the objectives (not just the objectives, but the reason that they're up there).
If you can do those things, you'll find it very easy to manage.
Other more specific things might be setting up controls so that you can easily audit the SDLC: get "sensors" and "measures" in place. Sensors would be something like a CI server, automated testing, security unit tests, post deployment tests, code sniffing, static code analysis, dynamic code analysis, regular fuzz testing, ensuring that your environment is locked down with file integrity checking, track third party tools that are in use for any known vulnerabilities, get software bill of materials (while you're at it), get a known authorized hardware list, get a known authorized software list, have a monitoring system for when these are violated, and get the response time down to 1 - 24 hours.
The measures will be something like:* adding a benevolent unauthorized machine to the network.* adding benevolent unauthorized software to an unauthorized machine in the network* adding benevolent unauthorized software to an authorized machine in the network* make a change to a file that does not decrease the security of the environment (ex: change from 10 char password complexity to 14 char password complexity), and see if the file integrity check finds it.
Basically for every sensor, you want to have a measure that checks it, otherwise you won't know if you have it set up properly, or if it is broken.
There's an unbelievable amount of backwards business process that's still out there. Unless you've experienced it first hand, I really don't think you can fully appreciate how manual the "business world" still is.
For the past year I've been working with an intermodal trucking company building an app for owner-operator truck drivers so they can accept/reject deliveries, turn in paperwork, and update delivery statuses via a mobile app. If that sounds dead simple, it's because it is. But the change it brings is amazing.
While deploying the app I'd often ask when so-and-so truck driver came in to the office. The answer was usually something like "every day at 5:00pm to drop off his paperwork". A week after they start using the app, the answer suddenly turns in to "Oh, he never comes in to the office. You'll have to call his cell."
Dispatchers that were tearing their hair out trying to get updates from their drivers so they can in turn update their customers now feel like they can manage double the trucks. They're asking if they can get a similar app on their phone so they can manage their drivers on the go. Managers are asking when they'll be able to ditch the office space they're renting and let everyone work from home.
When I tell people "It's like Uber for intermodal trucking", nobody cares. If they pretend to care, I have to explain what intermodal trucking is in the first place -- then they stop pretending. It doesn't sound "sexy". It's a boring industry.
I think there's a lot of boring industry out there that hasn't fully embraced technology, and I think when it finally does we'll see a cultural change in the way we view work.
Apple has solved few real world AR problems, which were usually hard for an average app developer to get started with. But with ARKit, apple, is "trying" to do the heavy lifting in terms of plane and object recognition etc.
Another thing is the platform of distribution. People will use AR apps, which will hit the app store after September like crazy. And these same people, will be primary audience for Apple headset.
It's like, before releasing headset, Apple is proving people that you really need a headset to overcome the pain of "continuously" moving your phone in the space.
Also, other OS and vendors will follow the trend and release AR compatible phones/hardware early. The only potential pitfall, I see is, battery usage. If it's properly optimised, I think a large AR wave on smartphones is about to hit.
Just my 2 cents!
I don't know if its around the corner, but considering the human genome was completed circa 2003, I'm pretty enthusiastic that it isn't too far away.
Single row keyboard that has minimal finger movement. It was to be delivered March 2015 or so, but it has yet to be released. They have testers who rave about it and it looks incredible, but it is perpetually around the corner.
Originally designed as an ultra-portable phone keyboard, those who have used it tend to use it for all their machines. It has jump slots to quickly switch from device to device.
But all these things aren't likely to impact the happiness and life satisfaction of those living in the developed world. The internet has been huge, but it really hasn't made us happier as a whole.
I would like to see someone create something that will make people's lives happier. That probably means doing something that will foster good human relationships and real world experiences.
I guess there's a lot of potential for driverless cars to help with that, but they could do the opposite as well. I think we need better tools for connecting with each other, understanding each other, forming social organizations and communities, and maybe changing the geography of cities to bring us closer together, rather than making it possible for us to be further apart. It's likely that new technology isn't needed, we just need to use what we already have in a new way.
Although both of these have been around for a few years, we are yet to see a general adaptation of these. (might be due to inconsistent browser support).
Now with the rise of VR, 3d Printing, powerful GPUs these two technologies are bound to open new avenues of an immersive browsing experience. I imagine that in next few years we would have 1- Webs stores, that show a virtual 3d shopping mall, 2- 3-d virtual try out of garments, 3- VR coaching of physical activities like a- Playing Tennis, b- Judo, c-Taecondo, d- Dance
Obviously both SpaceX and Blue Origin are the leaders here, but once they do it the other majors will either have to build the same thing or drop out of the industry.
There are so many things about space that we just assume are true, but are actually only true because access to orbit has always been so expensive. If we can get the cost to reach orbit down to a multiple of the fuel cost, then so many more things are possible.
We finally get large satellite constellations for low-latency Internet all over Earth. We get space stations and O'Neil cylinders. Moon bases and fuel depots on Titan.
At the same time, firms like Made In Space are working on in-space construction so you can build radio telescopes in space with arbitrarily large dishes (10 km, maybe?). Eventually we build mirrors that size too.
Basically just those two things are the only barriers between us and a solar-system-wide civilization like in The Expanse.
Still need an open GPU, but I think a bunch of risc-v cores with vector extensions running LLVMpipe would be reasonable for running a Wayland desktop.
It aims for more economically secure public blockchains with shorter confirmation times and less cost (electricity/hardware/inflation). I haven't delved deep enough into it to be fully convinced, but what I've gotten through so far is promising. AFAIK its the only proof of stake algorithm thats been formally documented.
Julia because it offers a nice, performant alternative to Python & R in data science, while avoiding Java & C++. It has some really nice features like multiple dispatch and the ability to run R, Python, Fortran and C code inside of it, so you can use libraries like Numpy in Julia.
Obviously I insist they still need to be as thin as they are now. That is much much more important than batteries.
WebAssembly helps create more space between the kind of languages that developers want to use, and any particular GUI output, such as HTML. In a different thread, I just wrote about what is wrong with HTML:
If by "tech" you don't mean computers/software, then CRSPR is clearly going to be a huge thing going forward.
Automatic language translation everywhere.
Big Brother everywhere. (Excited about, yes; happy about, no.)
Batteries + solar as the predominant energy source.
Electric cars getting some real market share.
GAN is a type of Deep Learning Network which can generate data after training.
- Text to image synthesis (Scripts to Movie ?) (https://github.com/reedscot/icml2016)
- Generation of Game Environments
- Image to Image conversion (https://github.com/junyanz/CycleGAN)
- 2d to 3d conversion
I think in future we will have highly creative deep learning systems, which will make ar/vr/movie/game creation faster and cheaper.
- an aggregation of everything I have to know to run a porcelain store in my country (taxes, suppliers, how to find staff or better yet: showing candidates directly, best location in my town, etc.)
- Fuzzy stuff like: the pic of that tree I took when I was on hollidays in XY a few years ago; or the note I took a few days ago about that band with some greek name
- a ready to paste, non-ancient js-script for XY
- a cafe where nobody cares about how long I sit with my laptop with a not too modern ambiente
- the lesser known types optical illusions
That said, I have some tiny glimmer of hope that even if they go vaporware, maybe someone e.g. from around the Lambda the Ultimate community might possibly try to revive their ideas and ignite some F/OSS clone.
* Election fraud and recounts can become a thing of the past* Everything that requires a contract could become completely electronic (the mortgage industry alone is probably a multi-billion dollar opportunity)
I can see the advantages of both of these and imagine (and have seen people) build them so I assume someone will fully crack this in the next few years and we'll all be using this.
What might be around the corner that I'd love: someone makes a mainstream general purpose visual programming language (or tools in IDEs using languages that are indistinguishable - revenge of smalltalk)
Basically shifting off of cloud onto separate peer-to-peer connections. Faster, more secure, more distributed, and no middleman. Think 1990s/mid 2000s but no servers, just client to client.
Soon everyone will want a home server.
I'm also excited about NVMe and on-the-horizon, faster-than-flash solid state technologies like 3d xpoint, etc.
If I need a new part for something that's no longer supported, no problem. If I want to test an idea, fine. etc.
Electric car adoption.
Solar isn't new or particularly exciting, but it's become a good alternative to burning fossil fuels and it isn't used widely yet.
I've been looking forward to real-time global illumination via ray tracing with photon mapping or path tracing or some other good algorithm to become mainstream. It doesn't seem like there's much enthusiasm for the idea from the game industry, though.
Genome editing has already been mentioned, along with reusable rockets.
e.g. Desal plants.
People in 100 years will look back to manually driven cars as we look back to horse-drawn carriages
I read a novel published in 1999 which predicted how VR headsets would be followed by eye tracking eye boards,etc. which would then be followed by control directly via the brain using electrodes,etc.
There was a project called Radio Receiver which used an RTL SDR, but it is a chrome app and chrome apps are pretty much dead.
Along with suitable pricing.
Should I ask HN to help with the beta test?
With respect to software, your feelings may stem from a perceived deficit in value creation. No matter what we do, we all want to feel like we're contributing in some way and we all try to find ways to achieve that. Could be blogging, OSS dev, teaching classes, turning an app into a business (or just putting it out there for people to use freely!), etc. If you're just hacking on things to learn, that's great and necessary. But you might be better served taking it a step further.
Also, read literature anyway. Learn how to by doing it. If a novel is daunting read short stories (particularly Jorge Luis Borges or Cesar Aira). Reading wasn't important in my life until about 2 years ago, and since then books have improved my life dramatically. Its low cost, high yield, fully analog, ubiquitous, and enriching. Just learning new words makes it easier to form new concepts in your head and be better at stuff like math and programming. Seriously I cant suggest reading enough.
But really, this sounds more serious than just boredom or ennui. I side with Cozumel, and might suggest looking into a counsellor.
Find something you'd like to do, and the only way to do that is to explore other things than what you are currently doing (since you are obviously not finding real satisfaction in it).
Might I suggest volunteering your time or a charitable activity? That can be a very fulfilling activity for some.
In my case, I also often get hindsight into what I should be doing, and often end up doing things good for me, instead of things I've been asked to do (makes me do for me, instead of doing what others want me to do).
Then the parties who value your work will naturally approach you, and by default value your work and give you more decision power in whatever the two of you will want to pursue together.
Sounds twisted, but that's how life works.
Oh, and making the program is not a goal in itself, solving the problem is.
Try something new and exciting, maybe extreme sports?
I'd recommend putting down the electronics for a bit as much as possible. You might wish to learn to enjoy people and look for opportunities to do so. Spend more time observing yourself and your world without tinker toy distractions. Spend some time alone (leave the smartphone out). In nature maybe. Think about life. And death. What life means, what you would regret if you died tomorrow. What you really want. Who you really are. It's uncomfortable sometimes, being around people and being around ourselves. We look for distraction. And that's what you have to overcome.
I'd venture a lot of us on this site have the same symptoms to various degrees. I know I do from time to time. It's a job hazard I think kind of like skin cancer or a bad back. The above paragraph is my way out of the hole and back to a grip on what's important.
For example, I'm American living in Norway: I use the Norwegian google for things that are local or if I happen to be searching in Norwegian. The US (english) version produces better matching results for many other things.
1. A person is that headstrong and passionate about your project and will steal it. They steal your idea and become successful.
2. The person says, "Oh that sounds awesome. Good luck with that." Then they move on with their life and I move on with mine.
In most cases, #2 is more likely and logical, isn't it? How many people have you heard of doing #1? The only time #1 may occur is when you've already established the business and your business partner breaks away and enhances upon your idea.
I don't mind telling people about my ideas or brainstorming because its most likely: I know what I want it to be like, they don't.. they just have a vague idea. They are probably not as passionate about you as your own projects.
Thus: Get to it. Don't let that hold you back. In fact, embrace the times where people actually listen to your idea and give you feedback on it. It really does help.
The more you give, the more you get; might not be awesome profits, might be even better. The secret with giving is to not expect anything in return, the very definition of Karma Yoga; real Yogis practice that all the time.
There's nothing wrong with you, we're being carefully programmed to reason just like this; to mistrust and compete with everyone but our fabulous authorities. Cut down on the mainstream media and social networking if you want the power over your mind back.
Think of this as knowledge. The more you share, the better you become yourself. Same with doing x. The more you do, the better you get at it even if it helps others. In fact, if it helps others, even better for you. Most people are not looking to "gain" anything from you or take advantage of you.
Also look at the alternative. If you never do anything because you think someone else will benefit more, you will never do anything for yourself. You are the loser at the end because that imaginary person who MAY benefit more probably does not even exist. I would say most likely they don't exist.
I stopped caring about what other people will think/feel/benefit, it has nothing to do with me.
If you love what you do, then f* them. Just do it.
This is for you: http://zenpencils.com/comic/140-invictus-a-comic-tribute-to-...
Also nothing really matter on its own, it's up to each of us to make our own meaning. So, if you're really set on these fears they'll be real. If you focus on a different strategy that will be your reality.
You want a non zero sum game perspective.
-  https://www.robinwieruch.de/lessons-learned-give-and-take/
Everything is timestanped and proved you were there first maybe?
Usualy the validation goes in 2 phases : market interest and MVP.
The first phase is about faking it until you make it. Create your landing page presenting your product (don't spend more than a day on it, you don't care about design/ branding), post in your audience's facebook group, go to their meetups, shadow them to affine your concept. The goal is to have proof of traction and the assurance the market is ready / big enough. The best metric is usualy an email list you can reuse later.
Second phase, if the first is successful is building the MVP (main viable product). It's about having the most minimalistic version of your product that you can sell. Usually it's your main feature. You MUST hack it yourself, don't spend money yet, you'll lose it. The goal is to iterate quickly to have what's called a product market fit.
Product market fit is when you can write an equation like : "when a number P people see my product, there is a conversion of C% that get me X money". Then you can launch and the rest is about scaling.
Do not spend any money (aka > 1000$) until the product market fit. Not in ads, not in freelancers, not in consultants and especially not in PR.
If you product is expensive to make or need a big chain of production, sell it before building it. If you succeed it will be you proof of product market fit
It's difficult to make a standard advice since it depends a lot of the context but key insights are :
Your market is king, refer only to them.
Make them believe 80% of the job is done when you really just have a landing page
When proof of traction hack the main feature of the product and sell it.
If you have a product market fit, congratulation you have a business / startup.
The high level things about a startup are very consistent and good candidates to be fit into a framework. I'm not sure but I think these are just called unit economics. Things like "Our product is sold for $X because it saves our customer Y in time". However it's the unknown, and emotional values that I've found incredibly hard to fit into a framework. I'm fascinated now in seeing if the way the finance industry calculates risk is in any way a good framework for startups to assess which features to build.
What I've found to be the hardest questions to answer...
How do I find industry metrics on an industry that doesn't exist yet?
How do I prove people will want something that they don't want right now?
How do I measure emotional value? Tactile sensation(hardware)? UX, UI, etc...
These are the things that startups often believe to be their advantage over the competition. "Our product is much more fun/easy/fast to use/learn/teach" But how do we measure that?
The most valuable exercise I've come up with is this question...
How would your user recreate your product, if you're product didn't exist and they had to piece together the end result with existing technology?
I have a startup right now that creates custom educational podcasts by summarizing publicly available content (with attribution) to generate entirely new content and sort the corpus in increasing complexity. If you searched "Skateboarding", you would get a text document that taught you what skateboarding is, then the history of skateboarding, and then get into beginner, intermediate, and advanced skateboarding lessons. This would go through text-to-voice and be downloaded to your device for offline listening.
Search any topic and you get a 45 minute podcast to listen to on your commute.
In our case, I stepped back and said "Okay... If I wanted an educational podcast on skateboarding, the first thing I would do is search Google, then Wikipedia, then I would start going to skateboarding blogs and read them one by one in increasing complexity. If I wanted to consume this content during my commute I would take all of this content and copy it into a text-to-voice service, and download that audio file on my phone for listening offline." I walked through this entire process and it took me 1 hour to get 45 minutes worth of audio content.
Peter Thiel says that your solution must be 10X better than the existing solution.
Unfortunately for me, I think I will need to cut the time it takes to manually create a podcast by 1/10 and also 10x the quality of the content, which I don't know that I can do.
Tangentially, I often joke that if the problem your startup is trying to solve doesn't exist as a meme, than it's not a real problem for enough people.
Default your app's language to the first match between the languages you offer and the user/browser's preferred language list. Fallback to English or the country locale, depending on the app's goals/requirements. If the user still changes the language , save it in a cookie/session whatever so on repeat visits the corrected option is selected.
This only solves the language problem though, not regional issues such as an online store in Germany vs Spain which have different deals and products. This is why you should keep a clean separation between locales and regions/countries.
Anyway thats my 2 cents from the trenches.
It would be nice if language selection happened via the browser UI rather than the site itself.
Fortunately the future is at least bright on the automated translation front.
I would try MS first, then major MS partners who ship software for based on Windows, which is a market as big as any.
I do device driver development as my day job. boring boring stuff. I wanna out.
Large investment banks in security or information security.
I just read that people are rushing to get CS degrees in record numbers. Soon there will be an even larger pool of graduates looking for tech jobs.
My best advice it to look at getting some management and marketing skills. Start looking at teaching. Look at job openings and see what skills they are looking for. Also, go to tech gatherings and start making contacts.
Unless you are at the top tier as a developer, software jobs get scarce as you get older.
Start training for a new field, health is probably a good bet, that's the reality in our new economy these days. Don't wait.
You're humble enough to have impostor's syndrome. You're at the sweet spot for management/teaching age.
Despite what you feel now, you've probably learned a lot about different kinds of tools and which one to pick in what situation, even if you're not great at using them. You have also learned how trends evolve in time and have better instinct for when to adopt a new technology or use an older one.
Management isn't that hard either, but it needs someone who can understand what the engineers are going through and get things out of the way.
My hack was to start a startup and see it all the way through, but I wouldn't recommend it unless you're really desperate.
Another approach might be to teach bootcamps or some community college. You're probably extremely qualified by teaching standards, unless you hate teaching.
Senior-level contributors are expected to show initiative on a continuous basis. As for moving into lead or manager roles, you need to show a lot of those qualities before even being considered for them. If you haven't demonstrated that you already have the qualities necessary for the new level, nobody is going to take a chance that you will suddenly develop them later. Proactively seeking those opportunities is part of the game.
(Shameless plug: I'm currently organizing http://hackcincy.com in Cincinnati, OH which is 2 weeks from now.)
Ultimately the right decision is whatever lets you earn a living in a way you enjoy. If you like coding, code. If you like something else, do that. If you're poor but you enjoy your life you still win the game.
When trying to become successful, it really helps to have a clear idea of where you want to go, and a set of steps you can follow that lead there from where you're currently at. If you don't know where you want to go, your best bet is just to do something you enjoy for a while and see where life takes you. Just make sure that the things you do are related somehow, so you're building a deeper skill-set, rather than becoming a jack of all trades.
* You love learning.
* You love to build (legos, woodwork, pillow fort, etc)
* You prefer efficiency (you like to do it easier, you find shortcuts)
* You are patient (you can do repetitive tasks without complaints)
* You like math (you don't need calculus, and you don't hate math)
With 0 experience, I would start by pursing QA (Quality Assurance) and user testing. It will help you better understand how things are made without actually making them.
Try to be good at it, and start doing freelance QA work (there's plenty of jobs).
Once you feel comfortable how it works, then you can pursue whichever direction you want. Let it be iOS, web, Android, whatever.
I would start in the following way:
* Learn basics of programming and learn whether it's for you. You can use any of the introductory MOOCs available there or Swift playgrounds which are very good: https://www.apple.com/swift/playgrounds/
* Try finding an option to get a degree. There're plenty of places where you can get it part time (you can get into Harvard Extension School which doesn't require admission to just take courses, and having completed courses as validation, you can get an admission to an undergrad degree: https://www.extension.harvard.edu/academics/undergraduate-de...). As the industry matures, it's harder and harder to get into it without some validation in the form of education, especially for best paying positions.
Also, you have to realize that an age of 30 nowadays, it's more like 20 some time ago. You will most probably live something like 80 years, so you still have around 50 to go !
Hope you take it as encouragement, because that is how it is meant.
First determine if you enjoy coding and have a knack for it. Some people enjoy it more than others and some people have the ability to quickly track down bugs, solve problems and apply knowledge to solving new problems.
If you're totally new to coding I would recommend starting with the book Head First HTML and CSS. You can find the first version pdf online, order from your library, get it on amazon, barnes and noble usually has it in stock. Work through that book at your computer.
Use google+stack overflow for help. Typically you can google a problem or error and you'll find a proper solutions on stackoverflow.com. This will ring true even as a professional/experienced developer.
Work through the book at a computer working along with it, don't just reed it and expect to learn.
After that create some basic websites of your own, register a domain name. Get an inexpensive shared hosting account. hostgator will work. Learn how to setup your domain, point the a record. Register yourname.com or something you might want to use in the future since you'll have it for a year and might want to renew use for your projects. The hosting account you could cancel after a month or two once you're familiar with setting up domains.
After you're comfortable with that. You could start contacting local businesses and see if you can land some work creating small business websites. It seems there are always small businesses out there that could use a website. In the beginning don't worry about forming an LLC or anything. Write them a simple proposal to create their website for $XXX or $X,XXX. Small businesses don't usually expect to pay a lot for sites and this isn't going to replace your day job but you can make some money and get experience working with clients. Also they will request things like can you make it do this that will expand your skills.
You can charge them for creating the website, for hosting and for maintenance. You can charge a fixed fee for creating the site. Getting started I'd estimate work at 2x your call center rate. Estimate how much time you think it will take, then double that and make that your fixed fee proposal to start. Initially you're probably going to take longer than you expect and might even lose money on projects by taking too much time. But part of doing this work is to learn new things, get more comfortable with your new trade.
I would have them register their domain name since that's something they will always want to keep with their business. A good service is keeping track of their expiration dates (run a who is) and follow up with them to make sure they renew in the future. Especially if they are new to websites/domains.
Charge monthly for hosting and maintenance. I would try charging $50/mo for hosting, maintenance offer a $99 plan that includes once monthly updates to content (up to 1 page). So this could be adding news, updating phone numbers, adding/removing staff, adding a page. You can setup recurring charges through paypal, they can signup with a credit or debit card through their paypal account or you could offer an annual plan that they pay by check.
At this point I'd recommend getting the book headfirst php and mysql. and work through this book the same way as the first. PHP isn't a super glamorous language but I think it's the best next step.
After you have worked through a portion of that book. Give setting up wordpress a go. wordpress.org. You can install this on a hostgator account the same way. Wordpress is a CMS that powers lots of sites on the web and runs on PHP and MySQL. After you get your feet wet with this you can learn about wordpress themes and plugins. There is alot you can learn here. I think it's good experience. There are lots of WordPress developers out there so I don't think this should be your ultimate goal, but it is another service you can provide to clients to get more experience. Wordpress based websites where they can login and make updates, add pages, or you can set them up in WordPress and make the updates. I find many clients can't even handle making updates in WP and will still end up requesting you do it for them. Always charge them for making updates (unless you have a basic maint. plan that covers it that they pay monthly, get them used to paying for work).
Working with clients don't get overloaded. Always pad your deadlines and try to deliver early or at least on time.
Ok so you're getting familiar with Wordpress and working through the PHP and MySQL book. Once you complete the work with the book start creating some of your own applications. A to do list, something to track something you collect. Then research creating a login and authentication system from scratch in PHP and MySQL. This is a great learning experience.Once you have completed your own application I would recommend learning a framework. Frameworks handle all the messy behind the scenes stuff you just worked out on your own. But creating it from scratch once will help you understand what the frameworks are doing behind the scenes.
Ok so for frameworks I would recommend Laravel or Rails. This is your ultimate goal as Laravel and Rails developers get paid a good rate.
For Laravel start here (only after completing the books and your own apps)
use forge.laravel.com for creating servers and deploying your code, learn git (use gitlab or bitbucket or github).
You might also want to start listening to startupsfortherestofus.com start with episode 1, being a developer if your ultimate goal but you should think about having your own products too.
Good luck with the transition.
I would have made more money had I not changed career paths, but I have absolutely no regrets. Unless the path puts you towards Financial Independence in the short-term, it's not worth it to labor for 40 plus hours per week for something you don't care for. Nights and weekends dont really make up for it imo
Also, https://30x500.com/academy/ is an on-line course dedicated to that topic.
But the question shows a backwards process. You want the process to be:
1) come up with an idea
2) validate the idea
What 30x500 preaches is more like:
1) notice a problem people are having that you can solve with software
2) that is your idea
Following that process, the job changes from "come up with many idea" to "look out for signals that point to problems that are solvable with software".
What they should do is say "Hey, this guy bought a shower curtain, which means A) he has a bathroom, and B) either moved in or is redecorating... and that means he probably wants a bath mat, a toothbrush holder, a plunger, a towel rack..."
But nope... shower curtains for days. And you know that somehow this works out great for Amazon, or else they'd change it.
It's about the ads you usually find at the side and bottom of dodgy sites. An exact quote from the site:
"Like everything else on the internet, traffic flowing through chumboxes must be tracked in order for everyone to be paid. Each box in the grids performance can be tracked both individually and in context of its neighbors. This allows them to be highly optimized; some chum is clearly better than others. As a byproduct of this optimization, an aesthetic has arisen. An effective chumbox clearly plays on reflex and the subconscious. The chumbox aesthetic broadcasts our most basic, libidinal, electrical desires back at us. And gets us to click."
So you get all kinds of disgusting, disturbing and yet fascinating things that entice you to click. Clicking the most disturbing thing encourages more content like that.
ORMs are great for smoothing over some of the rough spots between SQL and OOP. It's kind of a drag to manually hard-code all of the cascade behavior for your whole class hierarchy. Hand-rolling your own caching isn't so great either. Most languages have a lot of boilerplate around setting up SQL queries and working with the results, particularly if you want to convert the rows into objects.
Flip side, some of them have a ton of their own boilerplate and confusing setup, and can generate strange errors and poor behavior. I still haven't figured out how to use Entity Framework well, despite working with C# for years. They're good enough for like 90% of things, but the other 10%, you can get big savings writing your own SQL.
Nowadays, I think Ruby ActiveRecord is my favorite. It handles everything that's reasonable for an ORM to do without a ton of complex setup, supports some more complex stuff easily, and makes it easy to drop to SQL when you need to.
FWIW, I've never actually seen any company try to switch to a different type of database.
I use an ORM called odb by CodeSynthesis. It is one of my favorite ORMs and an extremely high quality product. This ORM has saved me in more ways than one, but the biggest benefit is exactly what you've described.
I can't speak to other ORMs, but odb has such a nice system that it makes C++ development involving databases tolerable. Prior to this, managing queries, transactions, and keeping on top of problems related to interactive with specific databases was a real nuisance. There are enough quirks and differences between databases that I feel like it's too easy to understate what a pain the differences between variants of SQL can actually become in a large project.
An ORM is a simplification; it offers a single, convenient, but ultimately limiting perspective with most complexity swept under the rug. Anyone who's actually tried migrating between different databases or spent a week or so chasing down nasty coherency/performance-problems in their chosen framework knows what I'm talking about.
A more constructive approach that's rarely taken is providing storage/indexing as first class abstractions within the language to build your storage logic on top of.
Embedding raw SQL in a piece of software makes it much harder to reason about and maintain. Since storage/indexing are often fundamental, they deserve a more sophisticated interface than simply passing written notes back and forth on cocktail napkins.
Lately, I've been implementing my own, special purpose storage/indexing (https://github.com/andreas-gone-wild/snackis/tree/master/src...) to cut down on the complexity and get a tighter fit with the application.
Most orms generate awful sql queries, and then everybody wonder about bad performance (...and then they switch to nosql..because performance...).
ORM systems usually try to paper over the impedance mismatch between these two worlds. This mismatch will always be there. There's no way around it. So, we might as well keep the systems dealing with it as simple as possible and not try to force object-orientation on relations and vice versa.
Document-oriented database systems are good alternative in many cases, too because by their very nature they're much more amenable to storing objects.
Once you start using them for other things like generating lists of objects, pagination then you start hitting issues. In fact here you are better off using straight SQL and PDO to return an array of data that you format into HTML for display. https://19216811wiki.wordpress.com/
Plus the time savings/overall security using a framework that is typically tied to the ORM.
So I would recommend using a framework and ORM.
If you're just getting started and are working on a web app for your own use I would recommend building at least one from scratch. Rolling your own Auth, etc. Once you do that you'll understand more of what appears as 'magic' in a framework like Rails/Laravel.
Do your homework (both primary and secondary research). You have nothing to lose by spending a few days analyzing the opportunity.
- For a project that had to do with shipping labels, used UPS's , Fedex's Annual reports to estimate the potential number of customers who would prefer that kind of shipping. So looking at annual reports of listed companies that are in the same (or similar) business would be useful.
- Looked at platforms like Fiverr, Upwork etc. and scrape their job boards and analyzed for words that would describe what you are gonna build. Reach out to those customers who listed those jobs and freelancers who did similar jobs. you will learn a st ton.
For a project involving selling via messengers used - Facebook's and WhatsApp announcements page on their blog.- Popular Newspaper articles about digital advertising (that quoted sources)Sometimes, you can google things and when you find the news articles, they might indicate the source. For example "John Doe, an analyst with Analysis Paralysis Inc, estimates there are 3433 cows who eat ketchup in the West Virginia" . You can then google that company and find useful stuff on their blog or even buy the report from them.
- For a project that involved selling fasteners to fix ceiling panels, estimated the number required by looking at US Census Bureau data on housing square footage.
- You can also use google surveys to ask questions to the target market (the used to allow you to do free surveys). Yes they might ask for a faster horse. But you will get the insight that "speed is a need". So if you do a good job asking the right questions and interpreting the answers, you will get a fair idea of the opportunity.
Maybe you could post here what exactly you wanna know, there would be folks here who would know the answer.
Don't worry about folks "stealing" your idea. If you are worried about it, go spend 2 dollars on a lottery ticket. The chances are more that you would win the lottery.
Use tools like these to find EVIDENCE that people are trying to find a solution (similar to yours) to the problem they have.
If you find this evidence, it proves that:
1. There is an inefficiency present (opportunity is simply inefficiency by another name).
2. It shows that the problem is painful enough that people are trying to find a way to solve it. And..
3. It proves that the customer is aware enough of the problem to be able to see you as a likely solution (so you don't have to educate them).
I used this process to come up with my own successful ideas. One of which being: https://myapptemplates.com.
This video will help shed more light on the above https://www.youtube.com/watch?v=exMoRoaxKtQ
I googled how many software developers there are, then used a calculator to guess what fraction of them might ever buy it, and what that might mean in terms of revenue.
Also, the product solves (sort of) a problem I have.