Do you know it well enough to be able to diagnose an issue ad then fix it? Can you listen to it, identify when it's not performing well, and then make the tweaks to it in order to get the most efficiency? If you say yes, I would be very surprised, and yer every day, people all over the world rely on these things to get them to the place they need to go.
There is nothing wrong with these developers, they don't know these things because they simply do not need to. The tools have abstracted away those details, as they should. There is simply too much in the domain of writing software to know, and even in web development, there is too much to know. Most people focus on what is needed to get the job done because in most places, you are judged by your results and not your knowledge. What good is know what a singleton is if you never use it? Why do people need to know what the doctype does when <!DOCTYPE html> is good enough for the browser to interpret? By abstracting away these details, people can focus on higher level problems, like solving the actual requirements.
If people need to learn those things, they will do so.
Good developers seek to learn about their tools. Great developers learn to separate out the wheat from the chaff and focus only on the knowledge that is important.
This post is the other side of the coin: older programmers think that when they entered the industry it was "the golden era", and everything since then has gone downhill. This is akin to someone in the late '90s asking all entry-level programmers "you mean, you don't regularly disassemble your object code to verify that the compiler did the right thing? What's wrong with you, why are you relying on your tools so much?"
The fundamental issue is that the industry is maturing, but the names of the positions for which you are hiring hadn't quite kept up with what you are looking for. People whose primary job is to make sure that data gets from the database to HTML and back really don't need to know what is under the covers. This position is called "product programmer". Their job is to translate whatever your UX guy cooked up into things that actually work. If you then need to make sure that whatever they made scales up to thousands of requests, you need to have a different person called a "performance developer" - these people really hate translating UX wireframes into code, but once that part is done, they can optimize everything up and down the stack with their eyes closed.
Also, this is a personal pet peeve of mine: if you are asking what a singleton is in a job interview, you are interviewing for the wrong thing, so no wonder you are getting the wrong interviewees.
Moreover, I think one generation from now things like caching will automatically be decided at the storage-engine level, and things that are now manual-work will become abstracted away allowing engineers even greater productivity.
I have a degree in computer engineer and 5 years of experience, what I have to say:
1. In the interview process I always feel really hard to know how deep I should go in the answer... I had the same design an short url service in two different companies, one complained that I went too deep and didn't talked about the thing on a system level too much. Other said I didn't went too deep and looked like over heardish as I focused on the system level.
2. I've studied a lot of algorithms and data structure as every company thinks they are google and asks for big o notations, algorithms optimisations, implement a tree, reverse a tree blablabla. This part was the easiest in all companies as I "gamed" the system by studying it weeks in advance. Does it make me a better developer? Probably not, I already knew that stuff but if you asked me to go deep in those questions when it wasn't fresh in my mind I wouldn't be able to develop an answer. I am pretty sure that 6 months from now I won't be able to answer them in a satisfactory manner
3. I had the same singleton question and I didn't answer correctly, gave an answer like you said. Basically, I know what a singleton is, I've used this pattern in the past. Even in a C++ embedded systems app running in a touchscreen + ARM. But, please, don't ask me nuances about it. If I really wanted I could just game it as well by reading some cracking the interview questions on design patterns.
The best interviews I had were a CHAT where I talked about previous project, challenges and etc.
Not some question / answer quiz game where the interviewer is in a position of authority and I am always concerned that I am giving the answer he is expecting.
If you pay less than 75% percentile for programmer job, you can't expect too much.
Occupational Employment and Wages, May 201415-1131 Computer Programmershttp://www.bls.gov/oes/current/oes151131.htm
If this is the "new generation", they probably have little experience. And you want "full stack" developers -- that's a really tall order, most people will work in a team where some people do one side and others do the other.
So you're looking for people who have little experience, and are still more about all aspects of this huge stack than just how to use it. It's not realistic.
Also, you're both blaming them that they are dependent on tools, and only asking them questions about various tools.
Obviously, my background is different. I think this is the root of your issue. Most people are learning what they need in order to get a job completed. Most of the time it doesn't involve them having to build the entire application, they are asked to work on a small portion.
All things considered, I agree that devs should understand more in depth the core components of web applications.
There seems to be something in the training that tells them it's not cool to implement things themselves, instead only libraries are OK.
You say you're hiring for a "full stack developer". I'd say that requires far more broad knowledge than a developer 10 years ago, when we tended to specialize back-end/front-end/ops.
For junior candidates we use a written test followed by a phone screen to avoid inviting time-wasters and resume spammers into the office; We're sometimes flexible on that for candidates who clearly have relevant experience.
I would opt to learn how much code they've written and their general programming ability over trivia.
If they are smart and capable, they can dive into the details of any challenge that comes their way.
I agree so much so I had to double check that I didn't actually write it.
Think about it.
Edit: The same culture doesn't recognize that "done" implies a certain level of quality.
So what they use ORM instead of raw SQL? Your role as interviewer is to figure out if they would be able to learn. I can almost see your ads: 5 years of OOP with design patterns, 5 years of MySQL database, 3 years of API, etc.
How about you try to figure out if they can learn? A few months ago, I interviewed a junior guy. We were looking at a simple code exercise he did before coming in. I asked "Why did you lose a List here?" "I don't know, I needed a collection" "Do you know how List is implemented?" "No". I spend a couple minute explaining about singly-linked Lists, and ask "Now that you know, would you use it again?" "No, cause it's terrible for append operations".
He didn't know, but I explained and he understood alone. Why don't you try to explain and see if they can come to conclusions?
On nothing to do with tech: I'm desperately trying to find something that covers general world news without too much of a US slant, in a nice concise way. Next Draft (mentioned elsewhere in this thread) is pretty good, but is very US heavy.
When I trialled subscribing to The Economist their Espresso app-- which is essentially a daily curated newsletter-- was pretty decent, so if you sub to them you should definitely check it out.
These days I'm trying the qz daily digest, which I think is working out OK: they talk about what to expect in the next day, what happened while you were asleep etc. If anyone has any better suggestions I'd love to hear them: I like how the economist actually talks about other parts of the world apart from the states, but I don't love it enough to pay their standard sub rate.
In terms of general flowery writing I get emails from Medium based on what I've read, emails from Pocket based on what I read, and longform.org's newsletter. Depending on how snowed under I feel at any given time I either just delete them without opening them, of potentially skim them to see if anything is interesting.
I like Dave Pell's Next Draft, which is just interesting general news stories, and also Azeem Azhar's Exponential View, which covers tech, with a slant towards AI/ML. In terms of stuff the HN crowd is less likely to already know about, I like Archinect, which covers architecture. It's not really a curated article roll-up so much as it is an architecture news site, but their weekly email is a nice way to stay on top of what's going on in the field.
Dave, who runs it, also built https://curated.co, which is a tool for producing these kind of hand-curated newsletters.
It's sent once a week and you should find at least one or two good articles that are worth reading.
Then there is https://www.brainpickings.org where the author reads a bunch of books and sends out a newsletter with a resume of each book. I personally don't think there's anything like this out there!
Some RSS-Feeds I follow and which might be of interest: http://kernelmag.dailydot.com/ - http://www.rand.org/blog.html - https://blog.codinghorror.com/ - https://bsdmag.org/
(PS: You can also get rss-updates about new entries in Youtube-Playlists (google it) and if you use Twitter and follow some interesting people, that might also be a good way to stay up to date)
https://summitroute.com/blog/ - (mine) Infosec news.
http://ben-evans.com/#newsletter - Email only newsletter from Benedict Evans of A16Z mostly related to large mobile business moves.
https://www.feistyduck.com/bulletproof-tls-newsletter/ - TLS crypto news (monthly)
http://golangweekly.com/ - Golang links
- For coffee, I learned people in the know are after 24/7 changes in the commodities market.
- For worldwide airport news, well, I don't think there is much of a market there (though I would regularly capture 30-50 pertinent articles per day).
- For Brazil news, cultural awareness is nice to have but in order for something like that to be needed, I would think the focus would have to be Business, and very specific (in fact, I played around with making newsletters like this).
- For Brazil tech, I think it was too early on in its development because there were only around 10-15 items per day.
There's a final component I failed to consider with the first two newsletters above, I had no product dev, no one on the inside to say "hey, focus on this aspect, that's what people need."
* http://softwareleadweekly.com/ - about people, culture, leadership
* http://www.devopsweekly.com/ - DevOps, by Gareth Rushgrove
Just my pick. Indeed, I've found links there that haven't popped up anywhere else (HN, Twitter), so I second the original poster's opinion that mail newsletters are a good thing - wouldn't have thought that.
It's a newsletter directory where you can search and find all kinds of newsletters even with subjects outside the tech world. (I've got no affiliation with them, just found it a while back on OpenHunt and thought it's useful.)
Take a look at some of their past newsletters -http://us10.campaign-archive2.com/home/?u=d7f0f45160075006b2...
2nd Place : Weekly Newsletter + Podcasts from Andreessen Horowitz (A16z). The podcasts are amazing - discussions with entrepreneurs working on bio-tech, AI, Fin-tech, Quantum Computing. All the people I would love to hang out with.
Non-tech: Brain Pickings FTW!
Disclaimer: I am the curator of these newsletters.
Cron.weekly is a weekly newsletter (every Sunday) with news on Linux and open source. Focussing on the technical side mostly, featuring new tools & projects and guides & tutorials, as well as the latest news, releases, ... pretty much anything noteworthy in open source.
It's available here: http://www.cronweekly.com/
And all archives are available here: http://www.cronweekly.com/archives/
DISCLAIMER: I'm the curator and janitor of the newletter
Recently, though, I signed up for the "cron.weekly"  newsletter and it's actually pretty decent. I think I first saw it mentioned here.
The "archives"  are available as well, so you can get an idea of what it's like before you sign up.
Example link from yesterday's I liked: https://twitter.com/HenryHoffman/status/694184106440200192
I like how they post the weekly newsletter on the website. I'm not subscribed, but I read it every week. It's a nice way to stay up to date of some technologies I use daily.
MarketingDay does an amazing job curating posts from around the web as well as give you the top stories published on MarketingLand that day. It is a must read for anyone involved in any area of digital marketing.
Great source of wisdom
I don't always have time to read it. But, when I do, I never regret it.
Alvin Ashcroft's Morning Dew http://www.alvinashcraft.com/
Chris Alcock's Morning Brew http://themorningbrew.net/
Regular Geek http://regulargeek.com/category/geek-reading/
Morning Reader, for general tech news - https://morningreader.com
hackernewsletter for avoiding lurking on HN too much - http://www.hackernewsletter.com
Curates a personalised list of electronic music/soul jazz vinyl releases based upon items you add to your Saves list
For Machine Learning I can't recommend Talking Machines (http://www.thetalkingmachines.com/blog/) highly enough. It is a podcast though.
The format is the top 5 links of the week + 1 mini article.About 1100 subscribers now, I also welcome contributions!
What you must be referring to is the stock price, which has dropped from 200 dollars a couple of years ago to like 120 these days.
I can't claim to understand this company, I think very few people can. There are 300,000 employees and more teams/products/departments than you can imagine. It's absolutely insane.
However, what I can say is the following: IBM is shifting it's strategy completely and that would've been very difficult to do without a drop in revenue and stock price. IBM is going from whatever it was before to a cloud-based company. All services and products will need to have some sort of cloud offering. I'm not sure if you can imagine what moving 300k employees worth of work to the cloud means. IBM has existed for like 100+ years now, this industry has not existed until a couple of years ago and, right now, all teams must re-evaluate their work and make the steps towards making this transition happen.
Many of the employees are stuck in their old ways, many people have been working at IBM their whole career (20-30-40 years) and it might be hard to adjust to so many new directives coming from the top. There's much bureaucracy and many old ways that need to be absolutely obliterated. Also, IBM doesn't have a great reputation for being cool or anything... almost everybody hates Lotus Notes, as an example.
This was sort of all over the place, I didn't spend a lot of time thinking about this. Please let me know if you have any specific questions...
Buffett's position is that IBM has succeeded in turnarounds throughout its 100+ year history. Also, their advantage is in the Public/Private hybrid cloud. Buffett also believes the cloud business is not a "Winner Take All" game.
Buffett also applauds what industry pundits have dubbed, IBM's "Financial engineering". IBM has financed share buybacks with debt. With interest rates and share prices at low-levels, he believes the buybacks are sound.
In my time, I remember when IBM jumped on the Linux and Java bandwagons with great success. I think most people respect the contributions they made with the Eclipse IDE for example.
It will be interesting to see what they do with Bluemix and AI. I still respect them as a technology company.
As I comprehend it, the features were originally intended to allow fat mainframes to dole out tiny resource portions for distinct jobs. As it seems to have turned out, every CPU these days is the equivalent of a fat mainframe, and the greater challenge is around integrating this form of rapid SOA micro-provisioning in to developer workflow through tooling and education. I just upgraded this few year old Macbook Pro to run Docker 1.1.0: 200MB Linux ISO + Virtualbox + kludgey go wrapper = better solution than IBM ever provided. With a different management culture, they could have released this in 2010, pre-empting stable docker by 5+ years with a kernel commit history and adequate marketing funding.
This kind of business is extremely hard to scale, compared to a true software or hardware company innovating and licensing/selling products. IBM does have a ton of resources behind Watson, but that's still basically an enterprise services contract sale, and not much of a cloud product.
Power may be a bit quicker than Intel, but it's unfamiliar to many. Nvidia is breaking new ground, it's sexy, accessible, and cheaper.
On the software side it's a similar story. Why use their unknown proprietary cloud stuff when I can just make use of the plethora python/julia/clojure/R stuff? AWS is fancy and ever expanding, Softlayer is a PITA.
IBM biz news http://finance.yahoo.com/q/h?s=ibm
They are still trying to sell, sell something, via those branch offices to those businesses but they have run out of things to sell. And the sales culture is not good at thinking of good, new products/services to sell.
IBM is down 17% percent in the last 6 months. (https://www.google.com/finance?q=ibm) As far as tech stocks go, that's not crisis-mode.
As far as newsworthyness, Watson and Bluemix have been making the press rounds.
Maybe they should focus on unionizing Amazon.
More info: https://www.ibm.com/design/studio.shtml
IBM is losing its old accounts and old business agreements faster than it can generate new revenue with Softlayer/Bluemix/Watson. IBM makes 4.5B from Cloud revenue. In contrast, total revenue in 2015 was 81.7B. So IBM revenue is going to be a bloodbath until Cloud revenue can catch up. Unfortunately, Cloud is a razor thin margin business, where Amazon, Microsoft, and Google are willing to sell at, or below cost to gain marketshare, which will likely continue to hurt IBM's cloud revenue at a time it needs it most. IBM is the underdog here, so it can not bring any of the other cloud giants to the table and make them end the price wars, so IBM cloud revenue is likely to remain anemic.
IBM also suffers from a number of management mistakes. IBM is way behind on automation and lacks the talent, so they've had to make acquisitions and "strategic partnerships" to buy it. IBM previously tried to outsource as much software and operations to China or India, and the unskilled labor available in those countries simply don't have the skill sets to do devops or any sort of basic automation. So you've got datacenters where people still ssh into each box and run commands by hand thousands of times because the skill level isn't there. But hey, a few quarters of lower labor expenses in exchange for long term growth is a great deal when you can just parachute out.
Other mistakes IBM has made includes massive buildup of debt and stock buybacks to inflate the stock price. As bad as the stock looks now, just consider how bad it would be if IBM hadn't spent 8B+ buying back stock. These buybacks have largely been financed by new corporate debt. IBM's market cap is nearly 40% less than only a few years ago. These buybacks hide a lot of the stock price damage (the stock would be worth about $75 instead of ~$130). In addition, buybacks are essentially returning money from the corporation to the shareholders, unwinding the assets. This means IBM management has no plans which could return a higher yield to investors than simply handing back their money -- not great for investor confidence or long term future for IBM.
>"In my tenure, I've divested $8 billion of businesses," Rometty said. "The point was, they weren't about the future of where we were going."
>Rometty cited an example of a recent divestiture in hardware making semiconductors. Now, only 10 percent of IBM is comprised of hardware.
see also their pdf on the same http://www.ibm.com/annualreport/2013/bin/assets/ibm_ghv_marc...
Big companies are no longer buying the buffet and are increasingly opting to go ala carte. Or alternatively, they are negotiating IBM down on prices for the buffet.
It's true that IBM is switching its focus to Cloud services and Watson. However, these are just new, unproven items on the buffet menu.
Also they calculate the Wimbledon serve speeds, so they've got that going for them which is nice.
As others have said, IBM is so big that it can only really be understood as many different companies, all with slightly different cultures. There are plenty of people who are better qualified than me to discuss the overall strategy and financial picture, so I won't even try.
I can, however, give a few opinions about my 2+ years in GBS.
* There is a general lack of respect for technical skills. I was hired as a "Technical Consultant" but put through the same training as the business consultant grads, which is largely about project management / presentation skills. A lot of money is spent on this training, if you ask for funding to (e.g.) attend a developer conference, you are told to forget about it. Maintaining dev skills or learning new ones is to be done in your own time or as part of "giveback", which is the IBM name for extra work done on top of your day job.
* The leadership team is utterly obsessed with maximising billable hours. While this is understandable for a services business, it is taken to ridiculous extremes. People are under such pressure to be billable that they are forced into roles that are completely unsuitable for them, rather than spend a few days waiting for the right role. Training etc gets cancelled at short notice if billable targets are not met, especially in Q4. Last year the entire GBS UK workforce were banned from taking any vacation for several weeks in November and December. A spoof email from senior management was circulated, saying "Christmas is cancelled" which gives an idea of current morale.
* The annual appraisal (PBC) system is a popularity contest. The best way to game the system is to do "giveback" (see above) work for senior people and persuade them to write nice things about you. This is all well and good, but it means that performance in your main job role is actually secondary to how much eminence you can gain by doing odd jobs for senior management. Thankfully IBM has seen the light and retired the PBC process, so I'm looking forward to seeing how well the replacement works.
* I get the feeling that nobody really understands Watson. It seems like the senior execs are under a lot of pressure to buy into the hype and sell Watson to their clients. There is a lot of hand waving about using Watson in "virtual assistant" type of use cases, but I've seen very little of any substance.
* The bureaucracy can be incredibly painful. I once had to go through multiple layers of sign-off involving people in 2 different countries over several weeks, to buy a $25 software licence (which I needed urgently for my job).
* Things are changing, slowly. The iX service line is adopting a startup-like approach on some projects. Agile is being promoted in a big way, and we now have access to modern tools like Slack and Enterprise GitHub.
I hope I don't come across as a bitter, entitled millennial. These are just my opinions.
Fortune 500 IBM software is also dying because IBM has let DBAs running scripts by hand not version control be the source of truth.
When the IBM PC was made it started the PC Era that became the Post-Mainframe era. When mobile devices took off it became the Post-PC era and IBM had to sell its PC and Server lines and focus on services.
Now even if it is the Post-PC era PCs are still being used. IBM had to get rid of OS/2 and migrate to GNU/Linux.
Right now it is also the Cloud-Era and IBM has to work on Cloud technology.
When a company shifts technology like that it takes a while to find a way to turn a profit.
Apple went to the mobile technology market and it took off like a rocket. IBM had the Simon Smart Phone in the 1990s but couldn't market it.
IBM has a lot of technical debt in maintaining Mainframes and Minicomputers that are still in use. The Lotus products also are outdated and they tried to use OpenOffice.Org to make Lotus Symphony and it didn't take off.
IBM Opened up its Power technology:http://openpowerfoundation.org/
A lot of things have happened to technology that IBM suffered from losing money because the technology became outdated. IBM has to invent new technology to replace it.
IBM is focusing on services and the cloud right now. Sort of moving away from hardware because it is hard to earn money from hardware and moving to software and services instead.
Everything I used to know about IBM has changed, IBM has to reinvent themselves. The technology and markets have changed and IBM has to adapt.
Yeah, but dat Earnings Per Share though... /s
If you are not learning anything in your current job then you are wasting time. Figure out something to learn, it will make your job more interesting (and more fun) and it will help you in the future with knowledge.
Engineering jobs are always plentiful and scarce at the same time, they are plentiful for the people who know and/or have experience in the new hotness, they are scarce for people who have skills for things that people are not using in abundance.
No such animal as a "safe job", even the postal service is eliminating people.
As you evaluate a prospective employer-- consider their business model and markets they serve. Are they expanding? Does the senior leadership have experience and stability?
Relative to Yahoo/Twitter engineers-- some of those guys are getting fat severance packages and plan to chill on the beach for the next 18 months. Don't worry about them. Move when the right opportunity lines up for you.
If you're not unhappy where you are--adequate salary, good living conditions--then take things slowly...
Land the next job before leaving your current one, and only if it represents a step up in responsibility and seems interesting, or otherwise improves your "life"...
Look at the headlines on the worldwide economic situation just now...yes, things are a bit uncertain...do your homework before making a jump...
And don't undervalue having a job when things are uncertain...just think about the alternative...
It could very well be affecting the tech market.
Overall, though, the American economy is continuing to improve. Greater world events are rattling the markets, and tech has taken a hit, but it doesn't seem out of the ordinary.
Network (which really means just keep in touch with folks you have worked with or met).
At your current employment situation, keep your ear to the ground. You don't need to move to a big company (they have layoffs too) but you want to be aware of what is happening.
Ask your boss questions about the business, and do your own research too. If your company is "default dead" then ask how you can help make it "default alive".
Cut your unneeded expenses.
Start a company if you have the drive to so, don't worry about the macroeconomic climate.
Source: reading, living through the 2000 and 2008 recessions as a developer.
Never consider equity 'compensation' at non-public companies. If the job didn't include the equity would you accept? If not, pass or negotiate more cash. In good times, only one out of 10 of those stock option agreements will be anything more than birdcage liners.
And, as a developer, there are parts of the codebase that are unglamorous but crutial to the company. Adopt those parts that others don't want to work on. Be the go-to (crutial) guy for those parts of the code. When the time comes for cuts you'll be indispensable.
Source: went traveling the world on my rainy day fund in the 2000 crash.
Having lived through the dot come bust and other economic failures I have found that making sure you stay valuable and relevant are the most important factors. Someone pointed out making sure you are valuable to your current employer by taking on the parts of code that everyone dreads. That is good, so is just making sure you are a team player and are pulling your weight and pitching in wherever you can to make sure things stay on track. In the past, I jumped on a support desk, or stayed late to stuff mailings with sales staff etc. When people see you are willing to help make the team successful even outside your defined role and that you are showing loyalty most good people will return the favor. BTW -- all the things I did when times were less then ideal was what made being an entrepreneur easier, because sometimes you just have to suck it up and clean the bathroom before a client visit, or after depending on the situation.
If you have interest in starting your own thing, there is nothing wrong with doing so. Minimize current expenses, pay off as much of your debt possible while you are a FTE and save some cash up. While you are still working start your side business and take some time to get it right. Starting a business in a downturn is many times quite successful because many businesses look to outsource projects, minimize new head count etc.
One last point, many times enterprises use downturns in the startup sector to snap up talent that they have been squeezed out of getting. So usually enterprise hiring remains pretty robust for the first 12-18 months that I have seen. And this time around if there is a bubble in the startup side, enterprises are sitting on some of the largest cash reserves that I can remember seeing, so who knows how that will work out.
Get some solid sales & business development experience. Can you figure out new ways to generate revenue, win new clients?
Someone with a solid tech background and true sales ability can create his own deal anywhere. Incidentally, some of the most compelling salesman in this industry were one-time engineers.
What do people always need?
* Drinking water
Pick one or two.
Developers I know typically like something simple, flat, and issue-focused. Think GH issues.
PMs tend to want more feature rich tools with advanced reporting and customizable views. Think salesforce.
Product owners (I haven't had many) just want to know "are we there yet?" and will rarely open any tool or learn how they work - they just badger the PM via email or in meetings.
My problem isn't that there aren't tools that I like, its that there aren't a lot of tools that can be "all things to all people."
If a tool was built on something simple (GH Issues) and added a layer of complexity on top for PMs I think you'd have a winner. Waffle (waffle.io) is going in that direction, though they aren't heavy in the PM tooling area yet(?)
Asking people how they feel generally isn't a great way to evaluate your product -- you have to build it and see how they act. You can ask potential customers what features they would like to help guide you, but I wouldn't necessarily add or cut features based on their answers.
The best way to tell if someone needs your products is to just get it out there and see if people actually use it.
Some anecdotes: I was in a focus group once about cell phones, many years ago. They asked us all if we would want a camera in our phone. All of us said no, it wouldn't be worth the extra expense, because we couldn't think of a single thing we'd use a camera on a phone for. It's a good thing Nokia didn't listen to us!
On reddit, check out the /r/ideasfortheadmins subreddit. It is filled with ideas users think they want, including features reddit used to have that no one used.
What I'm saying can be summarized by the (incorrectly attributed to Ford) quote, "If you had asked people what they wanted, they would have said 'a faster horse'".
Productivity tooling is a very crowded space. And building you own issue tracker is the very height of yak-shaving. That being said, there's always room for new ideas. I don't need a new tool but I'm building one nonetheless because the solutions that exist now, IMHO, miss out on some really neat ideas. So my side project is more of an experiment, trying to tease out some new UX ideas, rather than a utility to aid in building other projects.
If you need to build some other thing, just use existing tools. Focus on the real work, not the "meta-work." If you think you can make headway into the crowded arena of existing solutions with some out-of-the-box idea, go for it. But don't mix up the two, cause you'll never get anything done... which is the opposite effect a Project Management tool should cause.
TL;DR I'm always looking for new tools. But don't get stuck yak shaving.
EDIT: Not trying to dissuade you, I guess what I mean is that if you're going to do it you should do it because you're in love with the idea and think you have something new to offer (and can clearly elucidate the problems that other systems don't solve, but yours does)... not because it seems like an easy way to make money. (Which I guess holds true for any business.)
I think the other main thing that could be improved is integration with other tracking software.
I work in testing. The main thing I see is projects using more than one project or defect management tool. I feel is an area that could be seriously disrupted.
For example... One project I worked, we had the developers (external company) using JIRA, whilst we used Smartbear ALM.
So I ended up writing something that used both the JIRA and ALM API's to save me updating two systems. Imagine if this functionality was out of the box?
- Cross-Platform - well, web based applications all are- Offline - that would be extra value, Trello for example does not offer that
But neither of these two reasons alone would encourage anyone to get a new project management tool.
You need some standalone features or feature a workflow that noone features so far. Focus!
Here are some questions you might ask yourself or the community:
- Do we need an issue tracker or a complete PM? This will determine your target market- For how many people do you need a PM? Single developer? Group of 5? Group of 100s?- Which type of projects do you work on? Software? Marketing?- How does your typical project workflow look like?- Which part of the workflow is still cumbersome, even when using software?- What's the one thing that a new project management tool should me with?- If the new PM tool was to do only one thing, how would you know that it does it perfectly?
You should probably come up with even more questions. Your goal must be to find a use case and a market and find out what pains are not solved yet. The more time and hence money a pain causes, the better you might create a product that sells.
But more importantly, it's a hook. It's what would differentiate you from other issue trackers. It's distributed issue tracking that allows you to take advantage of all the infrastructure that's been built up around the underlying DVCSs. Right off the bat, you have a reason for your project to exist.
My opinion is that nothing that currently exists really solves the whole problem of information management well (aside from git). Most teams mash together three or four different solutions for strongly related problems. Some teams are as bad as: gitolite for central code repo, a bug tracker for managing issues, a spreadsheet for managing who works on what features, a separate bug tracker for issues found in QA, personally-managed to-do lists for each developer, a Trello, a dozen bespoke reports for status to upper management, and all team communication goes through e-mail. Yes, slack and github would replace about 3 of these, but you still have 5 solutions to the same general problem -- what needs to be done and who is doing (or will do) it, how, and when.
Obviously this is a very hard problem, or it would be solved now. I have tried for a long time to decide what I think would be a good solution, and for all intents and porpoises, I have gotten nowhere.
I really like the approach Trello has taken -- provide a simple, flexible concept and let users build it all from there. Obviously Trello doesn't tick all the boxes, but I wonder if some other deceptively simple idea can accomplish it.
Further, a tool that tracks the resolution of issues into a simple to read 'This was just deployed' or some kind of digest would be insanely useful. It's not an easy task, but so often someone is waiting for a fix, or waiting for a feature, and then gets upset or something gets overlooked because they didn't know the feature/bug was deployed.
Something simple, with an app-store style approach to customization could be really handy.
I don't know that this is a huge benefit in a work tracking tool. These features are useful in Slack because it's a real-time communication platform. Work tracking systems are more ok with being asynchronous - there's usually a business function that performs synchronization whether or not your work tracking system does, so having everything update across multiple cached versions in real-time is less meaningful.
I would focus on the process - it sounds like you're just building something to build something. What in the process of software development is broken? Is building a new tool the right solution?
My current employer uses Jira, and I find it to be decent. I've used Asana in the past, and I like it a lot, but it has its own holes and pain points. Same for Pivotal Tracker, Github issues, Redmine, Bugzilla... Every tool I've used has had some strong suits and some drawbacksmainly related to how well it fits with the project and workflow. A big plus is if the tool has a good API (REST, plugin, etc.) so that I can easily write tooling to reduce friction.
Unless you can find a really strong selling pointand I don't think offline support would qualify, for most peopleI don't see it getting much traction.
Like many (most?) programmers working collaboratively, I have often wished I had the "perfect" issue tracker, but my version of "perfect" maps very tightly to the way I think software "should" be developed, at least among teams of people working full-time for money.
In spite of my natural tendency to be sure, like every good programmer is sure, that my hypothetical solution is vastly superior to all the horrible, slow, confusing, buggy things that actually exists, I am forced to concede that the corporate software world is not following my implied instructions.
So, in all seriousness, I think there are three huge challenges facing the would-be creators of an issue tracker that would be $GREAT:
1. You have to either accommodate a bunch of different workflows and be good at most of them, or commit to One True Workflow and hope you can convince people you're right.
2. Even if you actually do make one that's more $GREAT than anything else, the Enterprise world will not care -- and that's where the only serious issue-tracking money is, so you'd better do this for love and/or have a very long runway. And if you get so far that they ever do care, you'd better have a bunch of data-migration "whitepapers" ready.
3. In order for anyone on a small team or open-source project to switch to your software, you will have to convince them not only that it's better than whatever they're using now, but also that it won't be offensive to people with longstanding allegiances to other software. And making it unoffensive is likely to contradict your definition of $GREAT.
All that said, go for it! You might be your only customer, but if that means you've got the greatest issue tracker in the world then it might be worth it.
-Lightweight-Easy to use-Has a desktop client
Everything is oriented around being cloud driven, complex team-based features I don't need, and just generally being more overhead than it's worth for what I need.
First I planned to make it as a desktop app, but then I realised desktop apps are thing of the past and nowadays you need to make web apps to be accessible and portable.
Then I got demotivated by the number of great and established products.
Now I'm trying to figure out a new (developer oriented?) product to develop in my free time.
It's tough not being among the first at something.
On my side project I'm using Trello, and for the issue tracking bits, it's not perfect, but it's fine, if there was something better and free I'd use it, but I like that it's SaaS and I don't want to install a native app.
but you're not a startup cto if you use those dinosaur tools. just like you won't use awk or make. because 1. it's not sexy 2. you're too lazy to learn your job properly. 3. nobody gets ridiculed for selecting the sexy tool instead of the right one, but the opposite is almost sure.
I think lots of people are, or could be, but the deciding question is what makes what you are thinking about different? What's the unique benefit you plan to offer?
There's a lot of folks taking on the large scale software space, however I think the non-technical space is still a bit wide open. I think a new Basecamp would do well.
In the end, I want an open-source tool with a focus on easy customization with plugins and custom solutions through code itself.
It (a) assumes no knowledge coming in, (b) provides a linear progression from no knowledge to a portfolio of web applications, (c) lets you move as fast or slow as you want, (d) lets you skip lessons and topics you're already familiar with, and (e) has phenomenal online support. (EDIT: and it's free)
Once your friend has the fundamentals, I'd also suggest checking out http://flukeout.github.io/ and http://flexboxfroggy.com/ . They're fun little games to introduce lots of css and flexbox features.
He will get context on what HTML is, and how it interacts with the browser. It's much easier to internalize knowledge with this website than it is elsewhere.
- choose a small project. Something that creates discomfort but not crippling anxiety (this will require self-awareness - too small, you won't learn much, too big, you may give up and take a confident hit).
- split the project into parts so you have a bunch of questions. 'How do I build a site in HTML/CSS?' is fairly broad. Perhaps "how do I build a header?" is too. Break it down until you either know how or you can find the answer quickly, i.e 'how do I insert an image?' or 'how do I set a width, background colour and consistent space inside the edges of a box?'
- have someone who you can call upon to answer questions or help convert what you are trying to do into a phrase that uses industry terminology for which you can find ample resources. Forums/IRC can help here - there are some jerks who will kick off about you not using google but many will be understanding if you explain you are new and still need to pick up terminology to make searching easier
- repeat the above endlessly, expanding your skills and integrating new discoveries
An interesting example of this is of someone who built 200 or so Rails projects over a year. I may have got the numbers wrong.
Good books can help get started and reading certainly helps but making the process multi-modal by reading from many sources, listening (such as videos or a local web meet), doing via projects and experiments and seeing your results will be most effective.
I don't have recommendations for books - the only thing about HTML I read in a book was a small section of a cheap internet guide that got me started when I was a kid. This wasn't required when training an apprentice but probably useful.
It will give them a good foundation and confidence to setup a website from scratch.
Have them purchase a domain and setup a simple shared hosting account to publish a website. Shared hosting like hostgator is good enough to start, learn the basics, use FTP (recommend, MAMP/WAMP, sublime text, filezilla).
Then they can move on to more advanced topics.
It has alot of good resources and a wealth of information. As a seasoned web developer, this is still one of my go-to sites for documentation on web related stuff.
Or is it like with LaTeX that you just start and on-demand google the pieces?
https://www.bento.io/tracks/front-end - front end track
https://www.bento.io/grid/ - all their tutorial recommendations
They hand-pick some of the best free tutorials for each of the technologies you might need (including the other ones mentioned here) and even have curated tracks for front end.
Best online resource: http://learn.shayhowe.com/
Right now the biggest hump for me is figuring out how to make mobile-friendly sites WITHOUT resorting to a framework. I feel like the vast majority of books or e-courses right now will go the following route:
1) Teach basic HTML/CSS for barebones basic and legacy pages
2) Introduce HTML5 syntax
3) Briefly show how to do a "pure" mobile-friendly page using viewports, flexbox, and media queries.
4) Spend fifteen minutes on the above, and then say, "But that's too much work. So now we're gonna use Bootstrap and never do Step #3 again!"
That above has happened consistently, and it disappoints me. I can do Bootstrap, but frankly I hate writing it. I feel like I have to go five or six div's in deep before I'm actually writing any text that's going to be visible to the end-user.
Anyone have any suggested resources for building mobile-friendly pure HTML/CSS sites?
I found it very helpful to look at how other people implemented certain components.
All the tutorials & videos are available there as well as the curriculum and assignments for each week.
It's not always the case but for html/css, learning by doing is amazing.
1. Check out Jennifer Dewalt's project 180 websites in 180 days - http://jenniferdewalt.com
2. Free Code Camp is quite good (but the focus is more on coding rather than design) - http://www.freecodecamp.com
3. Nathan Barry's books are great - http://nathanbarry.com/books
4. [Plug] - I'm starting a new site for online courses and need beta testers for some HTML and CSS courses which go from scratch to pro level. Happy to give your friend early access for free - http://learnetto.com
The videos spell things out nice and slow, sometimes a bit too slow but you can fast forward if you already know a section.
It's meant for web designers, so I'd imagine it would work for your friend. The site also has courses for a few web programming languages and Wordpress etc.
Anyone else used this?
It is my opinion that this leaves a large gap in ones education, and so supplemental / lower-leveled resources should be sought out if one wants to have an "expert-level" understanding of HTML and CSS.
Imo it is the best editor you can use to learn HTML and CSS.
There is not a lot of utility in HTML + CSS on its own, unless you want 1996 style web pages that are static.
Knowing HTML is one thing, being able to build something in Wordpress will be far more CV worthy.
don't! Just use boostrap studio ( https://bootstrapstudio.io ) or something (there exist free alternatives if you don't like paying 25 bucks) :)
Here's a blog post I wrote about learning web design: http://hypertexthero.com/logbook/2012/04/web-design-where-to...
Plus the website is also open source :)
- when building new projects, dont automatically include bootstrap, or other libraries. Only include what you need AS you need it
- dont look at other peoples code before trying to write your own solution first, this helps you clarify your needs!
- when you do look at other peoples code, NEVER copy/paste it, read and earn and rewrite what you need
- only ever copy/paste code you have personally written in the past
- dont be afraid to rewrite code at any time
- code is expendable, and the more code you write the better you will write code
- avoid preprocessors and compilers, they create extra work
- anything that can be built depending on a library can be built more efficiently without it
HTML Questions for Learning:
- can I still do it without that containing <div> as a wrapper?
- is there any HTML like <div style=clear:both></div> trying to solve CSS problems using markup?
- how could this be rewritten without using any classes at all?
- whats the fewest amount of tags I would need to mark up this design from scratch?
- whats the most relevant or correct HTML5 tag for this ([and there are a lot of them!) https://developer.mozilla.org/en/docs/Web/HTML/Element
CSS Questions for Learning:
- how could I write this CSS without using any classes at all?
- if I remove this line, does anything break?
- what styles can this element inherit from other CSS rules?
JS Questions for Learning:
- if jQuery didn't exist, what would the solution designed to meet my needs look like?
And in addition to that, all I can say is that the more you do it the better you will get! Create some basic templates and get used to creating throwaway HTML pages to test one thing, or check something. Dont get invested in and finesse and polish every project or page you build or youll have a very shallow level of skill and spend too much time on too few pieces.
One good habit would be to start pushing code to Github. You can view the traffic there, so if people are viewing and using your code you can be motivated by that.
Also, CodePen is like a social front-end coding playground. I would highly recommend you check that out and get the habit of testing and trying things out in the open.
The other last thing I will say is this: simplify! in 2013 my idea of a barebones HTML page was a whole site template like this: https://github.com/tomhodgins/5keleton
By 2015 I had it pared down to this: https://gist.github.com/tomhodgins/c09dd6f9485d77d14e55
But that was still so heavy it was slowing down my learning. Now when I want to test something heres the HTML snippet I pop into a new text file:
<!DOCTYPE html> <html> <head> <meta charset=utf-8> <title></title> <style></style> </head> <body> <script></script> </body> </html>
- HTML5 Specification for HTML reference: https://www.w3.org/TR/html5
- You Might Not Need jQuery for learning JS: http://youmightnotneedjquery.com
Large burstiness would also be amazing.
Imagine running Spark where a hundred workers are allocated for 30 seconds. It makes it possible to build services like BigQuery.
Lambda seems designed for internal trusted use for offline or background data processing, not for writing a public API endpoint.
Lambda passes the data to another component on AWS to be processed.
The input sources for data range from APIs calls on Lambda, data from partners, data from legacy components, etc. So we split our data sourcing/fetching and data processing. They all flow into the same funnel (component) to be processed.
I'm a Technical Evangelist at Amazon Web Services.
Here are some videos from re:Invent 2015 on AWS Lambda : technology, use cases, customer stories. I hope you find them useful :)
Pro:- Dirt cheap (pay only what you need)- Scales fast and large- Just works
Cons:- Getting swift to run is very hacky
Considering to replace the game backend (scala on ec2) with Swift on Lambda (plus API gateway)
ps:Lambdas do run in containers/instances that get reused ... unless they are idle for too long.
I use Lambda for a lot of aws backup jobs that boto can do. For example
* RDS hourly snapshots* EBS daily snapshots* checking contents of s3 buckets
Works great for that type work for me as long as the job doesn't run for more then 300 seconds.
Anyone got a one or two line description of the sort of problems it would be good at solving?
There is no such thing as "inherent value" like taste, its all relative.
For example, $5 for a 1 litre bottle of water sounds expensive right? But if you're in the desert without any other water supply in range, its a bargain.
Twitter valued it because it convinced it's self it needed it. Its as simple as that, its the same logic that convinced HP to spunk out however much it was for autonomy, or News international for myspace.
Maybe they thought it was a good product, maybe they they knew the founders, maybe they talked a good game about facebook acquiring them. Either way it was valued that high not because it was a stunning product, but because twitter thought it needed that company and was prepared to spend 100million on it+.
+Yes that could be construed as cyclical login.
It's the same for individuals, some rich guy would pay millions of dollars for a piece of art while it's just a piece of crap for another rich guy.
For any pre-launch company, this would mean looking at the product, the team involved (as in acquihires), and the fit with the parent company.
Also, they were very shrewd with their sales process. I can't recall where I read it, but they made a private pitch where they got people from all the major players, so that must have given Twitter pause.
After all, Periscope allows anyone to have a live broadcast show - and perhaps, just perhaps, to become the pointless celebrities of their own lives.
I know people who are actively doing, or trying to follow someone else's periscope shows, and it took me a couple of months to realise just why the entire idea rubs me the wrong way.
My first job out of college back in the mid-90s was processing expense statements for a small government contract (~200 employees). We were a division of a large corporation and would handle all our employee expense statements within our division. The first rule (and this applies across the board) was that for the most part employees could be trusted. So I was mainly looking for unapproved expenses (in this case anything over $100 had to be approved by their direct manager, anything over $500 had to be approved by their group manager, and anything over $1000 had to have division manager approval). While I was scanning I was just double checking to make sure they didn't have some random expense listed (i.e. cash advance on the credit card). After that it was fairly simple. The employees all had company credit cards that had personal guarantees to the employee, so if the payment wasn't made the employee was ultimately responsible for the bill. The only thing the company did was allow employees who may not otherwise qualify for the card eligible. Whenever an employee was ready they would fill out an expense statement and submit it to me with all their receipts. I would process everything and take it to the division head for final approval. The next pay period the expenses were included in their check (pre-tax).
My second example was with an Internet startup. I was employee 24 and when I first started it was pretty much a free for all on company expenses. There were no real controls in place, however, as time went on and we grew similar controls were established like above. Approvals were required at certain cost triggers. And expense statements were submitted for final approval. Again, we had company credit cards that were personally guaranteed but backed by the company.
Finally, when I worked at Microsoft in the late 90s/early 2000 the experience was very similar to both the above. There were thresholds for expense approvals, we would fill out expense statements online that went to our manager for approval and I can't remember if we got a separate checks or if they were included in our check. Like the other two examples, expenses started at the team level and moved up the chain depending on what the threshold was.
In all the cases there were clear policies in place regarding what was an expense and what was not. It was clear that if an expense wasn't approved the employee was responsible. And there was always someone reviewing the expenses to make sure they were acceptable. While time consuming, it is really not a complicated process and a single person can process expenses for a larger group (in my first case I personally manually handled - pre-Internet - about 100 expense statements a week). Unless there it is a company requiring extensive travel for all employees there really should not be a lot of direct "employee expense" statements.
These models are used to determine the probability of an account/customer/contagion risk group defaulting (aka PD) and the loss incurred, given a default (LGD).
The current models require a lot of historical data to train them, and need to incorporate economic cycle factors.
There are some vendors in this space, but their products are very dated, expensive and leave a lot to be desired. Also the products really provide a platform for an actuarial team to build upon, rather than having an out of the box solution (which is probably desirable in the banking space)
List of Unsolved Problems in Econ:
What happens when central bankers run out of ammo and realize monetary policy may not be an ideal path to fiscal stimulus? Or having the bright idea of devaluing your currency to depreciate your outstanding liabilities results in a mutually assured destruction scenario when every sovereign on earth implements the same idea simultaneously? And when "too-big-to-fail" entities amass derivative exposure that is 100X global GDP does it become time to panic yet?
But still its innovations like ZeroCoin and SmartContracts that give one hope that out of the rubble, creative solutions will arise. As long as they are grounded in economic reality and not fantasy, humanity will abide...
But pinning risk down "mathematically" is kind of tricky. There are several proxies for risk under modern portfolio theory, including variance, standard deviation, shortfall, half-normal variance. Why are there so many different measures? If analytical tractability was not a concern, what should risk models look like?
2. Multi-horizon portfolio optimization. Portfolios are typically optimized one time step (horizon) into the future. However, if one wishes to optimally allocate a portfolio with extremely long-term investment periods (think Berkshire), one needs to subdivide that period into multiple horizons and optimize over these together. This is computationally expensive - is there a way to do this efficiently?
Obviously a standard would be nice but in practice I'm sure each institution would come up with their own or embrace and extend the standard. e.g. FIX with trading.
I could consider cryptocurrency as the ultimate solution but online if everywhere its being used in equal importance and liquidity. For more traditional money, banks are squeezing fees & spreads out of regular people. Companies like TransferWise are trying to resolve some of these problems but still they rely on the existing banking system to move the funds around.
So there you go - open problem!
Personally, I cringe when I hear talking heads correlating then Fibonacci number with the stock market.
And I've come to realize, if Jim Crammer recommends a stock, don't buy it. I would like to know which professional out there has the best track record in stock speculation. It seems like something that we could accurately study, and publish the data?
I don't have the money to speculate in the stock market. It just seems like it's as bad as gambling at this point in history. It interests me though. If I had money it would go to realestate speculation. I'm so wrong on my stock picks, I've though about contrarian investing. Supposedly, there are such people?
A good start would be a readable and round-trippable format that Excel documents can be saved as
There is no consistent mathematical standard of measurement by which money is created. Instead, the monetary value of some good or service used as capital for a loan is largely up to the arbitrary appraisal of the bank.
In fact, I suspect there's a Superpac somewhere that would fund research showing the net effect it might have. Or some organization that would want to know what that does to algorithmic trading.
I'm guessing though, the likelihood of a bill like that making it all the way is pretty low.
1. Charge by the hour. Don't discount.
2. Provide an estimated range of your time based on your understanding of the scope work at the start of the project. Let the client work out how much it costs on their own.
3. Make it very very very clear that the estimate is non-binding. If it takes more time, the client pays more. If it takes less time, the client pays less.
4. Require a retainer for a large portion of the estimate. The retainer is to be applied against the last invoice so that you are never in a situation where the client owes you money.
5. Have an invoice schedule. Invoice on the schedule.
6. Walk away, if the potential client doesn't like your terms. Preparing proposals is a way of qualifying potential clients. Good clients, accept and pay under your terms.
Often, just saying, "I charge X per hour" is enough to determine if a client is serious. Amateur clients have unrealistic expectations. People you know will expect you to work for free. Don't. It's not worth it.
Maybe $49/mo including setup and twice monthly backups/status checks (look at automating this). (Adjust monthly subscription on your typical hourly rate and value of service you are providing, I'm just throwing a number out there).
If there are automated tools, they should run on the entire asset directory and dump to a new directory in whatever hierarchy makes sense to the tool. When that turns out to be slow, check "file modified" timestamps in the tool instead of dumping required knowledge on the artist.
Getting artists to actually use source code control instead of having personal folders full of things like rock01_retouched_new_final_final.3ds is a bit of a pipedream, but you can at least put the asset directory under source control and make that the only way to see things in the engine.
3-4-dd-rhand-07 - episode 3, scene 4, dirty dog, right hand, from keyframe #7
(there were naming conventions for background elements too but they were somewhat looser IIRC)
We had a cheat sheet for this with standard abbreviations for all the recurring characters, and a list of body part names. Everyone had a copy stuck to the wall or floating around their desk. I think that was an important part of what made it work. Don't expect new hires to pick it up by looking at the results of the naming scheme; codify it into a document you hand to them as part of orientation.
(We also accessed a lot of this stuff visually; the file handed to an animator would have all of the keyframe drawings in each scene laid out in sequence, with the raw art separated out into individual parts and turned into named symbols right there on the working canvas.)
All of this was something we hashed out over time; early stuff had a horrible mishmash of naming schemes. I'd advocate having a discussion about Organization as soon as possible, agreeing on a standard and sticking with it for new assets. Get the old stuff reorganized when you have a chance, maybe throw that task to an intern if you have one.
Code Game UI Gameplay GFX Physics Editor ThirdParty SourceAssets Levels Fire Ice Swamp Volcano Sewer Characters Player Models playerInital.fbx playerAwesome.fbx playerGodlike.fbx Animations Materials Merchant Thug ThugFat ThugTall Objects Urban Indoor Outdoor UI Menus Boot Main Options Icons ProcessedAssets Pak1 (UI stuff) Pak2 (Level 1 stuff)
But yeah, Perforce version control is pretty important. It's almost designed to help manage assets, especially large ones. And it's free for under 20 users, I think.
Beyond that, you might want to include the level, screen, and/or date for the assets in your naming structure. Pretty much every company, and sometimes every project, uses a different structure, though.
For the latter, most large games use an asset management system. Either homebrew, or something like Alienbrain. (Well, people used Alienbrain when I left. Not sure what's hip these days)
For in-game, there's usually a fairly strict organizational scheme. It depends on the game, but usually folders are about "location" - which map, which part of the world, which episode, etc. Asset names indicate a name, and various other bits like left/right hand hold, color, or whatever matters for that asset.
It's usually the lead artists job to come up with said scheme, unless you have a tech lead for the asset pipeline.
If you look for assets, you do a search in the asset management system, which also contains the in-game name and location.
For smaller games, you make do by manually organizing, but as things grow, you'll start hand-rolling tools.
An asset browser allowed you to perform queries (e.g. show me all the characters from level X which reference materials which reference texture Y). We had tags/labels, comments, everything you could want.
When you do it like this your folder organization becomes irrelevant. You can store everything in a single directory with a GUID for a filename if you want. Or store all textures in one place and all 3d models in another. The down side is it's quite opaque, everything must be done within your toolset, so you need great tool support.
Like daodedickinson recommends; you want to look at how AAA game designers design their systems, then imitate them. Your best avenue to figuring out how games are designed is by understanding how game modding is carried out in AAA games. In many games, almost all of the content and mechanics within the game are defined using the same scripting interface that mods are created through.
I recommend using games like Skyrim, Morrowind, Mount and Blade, and The Witcher (i forgot which one shipped with all the game's scripts in the install folder, might have been 2).
Being able to mine as much metadata from a file name and path is a plus. As is having a logical naming convention that can be queried from the string programmatically. Not to mention fast lookup and asset name generation merely from string concatenation...
This is a good problem to have, mfcecilia! You are on the path to making great games. Its stuff like this that gives you the confidence to say my solution is just as good as anyone else's and I am just going to do it and learn from my mistakes. Time pressure is actually your best ally. If you want your game to be playable by the end of the decade you will solve this challenge and level up to the next big one. Such as figuring out how to organize your assets in a single compressible pak that is laid out to support fast and efficient patching via binary diffs!
Good luck! And if you are still stuck check out the Unity and Unreal engine docs and forums for further tips on pipeline production. And of course, post a link when you build a playable alpha ;)
I wouldn't be so sure...
The most important thing, from the technical standpoint, is that your asset pipeline is robust and can handle weird things. The engine shouldn't consume files haphazardly, it should deal with "built" assets, where you can trace things from the in-game content back to the source file. A configuration layer usually appears to give an in-engine ID to a loaded asset, because files and assets do not map 1-to-1. You can choose to fight the organization battle in that layer, rather than in the file system. When you have a slick IDE like Unity, this is all built into the GUI, but a custom engine can just use a batch process to do the same.
Version control is useful - not a DVCS, because it doesn't scale to binary assets, but SVN or Perforce. Artists will groan about waiting around for the VCS to resolve things and the inevitable problems with locking, renaming, and deleting stuff, but their lives will be better off overall if it's in their workflow loop. It's "10 hours waiting on SVN Updates" vs "30 hours debugging project history".
Here's an article on "import" vs "export" based pipelines, where the thing being "imported" to the engine is a common, standardized format that every tool can export - rather than one proprietary tool the team happens to use:
Also most of what you see in the final game output is packaged and minified to a high degree in order to improve performance/memory/etc.
Usually the lead tech artist just sets a standard and everyone conforms to that standard. Art assets(.psd, .ma, etc) are usually stored in a separate section than in-game assets.
The desired result is that related names are convenient grouped together in an alphabetical sort.
A rule of thumb is: the most important part is at the beginning, and most specific part is at the end.
But what is convenient, important or specific is context sensitive and debatable, since there are many ways to name the same thing in different kinds of hierarchies.
Sometimes it's ambiguous what's most important, like when you're classifying things along two or more dimensions, like x y and time.
Should it be (MouseXCurrent, MouseXLast, MouseYCurrent, MouseYLast) or (MouseCurrentX, MouseCurrentY, MouseLastX, MouseLastY)?
In that case I'd put the most tightly bound dimension last (x and y, which are usually used together as a 2d vector, so keep them adjacent).
For example, you can use MPQ Explorer to look inside the package files of World of Warcraft, and see how they organise their tens of thousands of assets.
Generally, as others have said, it's by "where" rather than "what", or sometimes "what"/"where".
Beyond that - Perforce is the usual asset control system for these things. It offers the ability to tag files, which makes searching easier. When you're dealing with a huge pile of art, searching is basically the only way to go, so good tagging is very important.
(Source: I'm not a game designer, but I've worked with the complete art libraries of multiple triple-A games over the last two decades creating Machinima films, either working directly with the studio or on a modding basis. I know far more about the internal file structure of WoW, for example, than is probably healthy.)
Quake's pak0.pak: https://quakewiki.org/wiki/pak0.pak
Quake 3 Arena's pak0.pk3: http://openarena.wikia.com/wiki/Pak0.pk3
The Scheme hacker Shiro Kawai has, as one of his claims to fame, having written an asset management system for Squaresoft (now Square Enix) -- not for any of their games but for the movie Final Fantasy: The Spirits Within.
But from games which do have somewhat logical structures, it's usually that the files are seperated by purpose. So the music and sound effects in one folder, the textures in another, some level files in another folder, etc. And the names would be somewhat descriptive of the content, like 'course_desert_1.lvl' If you're lucky, this is also backed up in a git repository somewhere and has version control.
There is nothing particularly special about game development. Yes, there is an emphasis on real-time operation that changes the specific design of applications. But there is no reason to believe that should have any impact on project management.
//depot/main/game - all your code + exported (but not yet converted) data lives there. You can give this to QA, Build manager, scripter, coder and they can build a level, compile the game, tools, etc. if needs so. By exported here is what I mean: - Exported textures, models, sound, etc data ready to be further on converted to platform specific formats. The original data was kept in //depot/source
Keep several department oriented //depot/source p4 views. Each specific department would get mapped this in their view, others would not.
//depot/source/sound - For example big huge 24-bit sound files + whatever other extras ProTools or other software writes. Suitable for sound folks to keep their project settings, experiments, settings, but not suitable for everyone else to see.
//depot/source/textures - Your big ass huge PSD, or whatever else source files - containing all layers that you've built your textures, or whatever else a texture/material department might see fit (there might be more than one - character, environment, etc. departments with different organizations). Not suitable for the main team, great for whoever works on textures.
//depot/source/animations - For example big huge FBX MotionBuilder or something else files. Suitable for animation people to edit, but not suitable for the game tools to read them and convert them every time.//depot/source/models - etc. - your big ass again .3DS, .MA/.MB, even .FBX files. Great for modelers, not great for everyone.
You might even have external people working for you, you don't put their stuff directly with your stuff (legal maters, payment, review process, etc.)
You also don't want them to have access to everything you do, and you need to establish way to review their assets and how to communicate work - what needs to be done, requirments, etc.
So a typical game developer would only need
some studios would even submit back converted data, for example:
others prefer to convert while building. For example all huge ass PSD files with lots of layers were probably exported as .TIFF, .PNG, even .JPG for insanely big backdrops, and from then on these would get converted to swizzled optimized textures - for example on all iPhone/iPads you get PowerVR chip, and it has PVRTC texture compression, unlike ETC, DXT for PC.
It all depends also on your team.
So a WiiU only programmer, might just sync
# Not ideal locations, but something that might work:
edit: I don't know about "to-riches" but this is the turnaround I often think about. I guess it depends on your objectives.
The selfmade millionaires under 40 are statistical outliers ;)
(Not strictly "auto"biographies, but most of them have ghostwriters anyway)
"Virgin Rebel" (Richard Branson)"Return to the little Kingdom" (Steve Jobs)"Enter the Dragon" (Theo Paphitis)
(There are lots more, but they are in my bookshelf at home...)
George Orwell's Down and Out in Paris and London. He gives up his bourgeois lifestyle to live among the poor. I'm not sure he started anything at the end though. Besides himself, with a wider perspective of the world.
That out of the way, an area like that covered by StatusPage will cause you grief, at least with doing it at 'business scale'. People expect a status page to never go down and to be available even when The Worst occurs. It's not merely a software challenge but a huge operational and customer service one. Good luck though!
I want to offer a counterpoint to B, which is that a market with a clear leader is a market that isn't nearly as big as you think it is. The reason for this is that peeling customers off an incumbent is a lot more difficult than it seems at first. The temptation is to tell yourself, "This is a success if I get even a little bit of the market." That may be true for a market that's wide open, or that doesn't have a clear market leader. But if there is one, then your market size is really more like 20% of the addressable market, and your little slice of success has to be a lot larger than you think it is. And if its a good market, you've probably got a LOT of competitors thinking the same thing, and you're fighting it out over the slice of the market you can actually get to. I've experienced this in the event registration space, where a few companies like EventBrite dominate, and 300 other ticket companies fight it out for the 10% of the market that's actually up for grabs. Your marketing costs skyrocket, the customer acquisition costs are dramatically increased, and you're looking at a long slog to get to profitability.
All of that said, this doesn't mean don't do it. I'm a big fan of niche products, and being able to do the technical side means you've got an advantage over some potential competition who have to hire or contract out that part. But be aware that business success in a venture like this is harder than it may seem at first.
I think that no matter what your idea is, it always has some other competitor already establish in that industry. Think of it this way: we have car, Toyota, Honda, Ford,...Lots of car company. We have beer, bunch of beer. So I don't see why we shouldn't build a product even it's already has a clear leader. Why do Gitlab build their product when Github BitBucket is so big...
At the end of the day, business is all about finding client. All you have to do it build a product, good enough, find some client, and go from there. You can even pivot your product to something completely different. You may gain more experience, knowledge deal with the system which may leads to other production.
You gotta start something first. The purpose is to have a sense of what is going on. No matter how good a product is, I always see someone complains about some aspect of it. That means it has room to improve, it has another way to do it, to make it better and sell to those people.
So, yes. Go ahead. Build it. And let it know when you launch it.
That said, the risky thing about this in particular is infrastructure products like StatusPage and PagerDuty and Runscope have to work all the time, every time.
If your site is down and PagerDuty doesn't alert you - you're an ex customer. If Runscope gets bogged down and you miss out on metrics for 10-20 minutes, and your clients start leaving - you're an ex customer. If StatusPage goes down in the middle of your outage, you're an ex customer.
And in all those situations, you're going to make noise on your way out (twitter, medium, whatever).
This is incredibly difficult for a solo, bootstrapped operation to achieve. It costs real money and takes real expertise to get that level of performance and availability out of your infrastructure (not to mention what you need to do in the application). This stuff is completely orthogonal to, say, writing the app itself. You can be an amazing Rails/Django/whatever developer and totally mess up your infrastructure - it's super easy to do so.
On the other hand, being a generic SaaS operation charging reasonable fees - no one has expectations of 100% availability, and if people can't access your invoicing app or recruiting backend or whatever for 20-30 minutes in the middle of the night - no one is going to complain.
What are your goals? To build some income? To learn AWS, PHP, etc? It sounds like you've got a couple of different goals here.
A few years ago I saw a keynote at a game development conference talking about how on the app store most developers copy successful games. The presenter (David Whatley) called it mining for gold where others have already turned up every nugget possible (paraphrased because it's been a while...).
I think that's a good way to look at this as well. As a user of statuspage.io I can tell you that they leave a lot to be desired + their pricing isn't attractive. They have however a pretty robust and compelling solution.
Can you do something that will make me leave statuspage.io (after spending hours customizing my page) and _need_ to move over to your service? If so the answer is GO FOR IT and don't look back. I have a feeling the answer is no, and that's why you're unsure, at which point I'd start looking for other problems to solve.
Peter Thiel makes a good argument in his book Zero to One that every company needs to be designed to be a monopoly. While I disagree with some of that (competition is healthy), as a founder I know the importance of your differentiator being leaps ahead and not just an update away.
P.S. - The reason we pay for statuspage.io is because we don't have to build (and maintain) the whole management system and don't want to worry about it. For any legit company it's worth it.
Unless you wanted to try your luck in the social network space, because there's no way anyone could achieve anything against the clear leader MySpace.
So, if you can find sufficient differentiators (or the market is big enough), I'd say yes. Otherwise no.
- start with a product that solves one or two pain points of the incumbent tool.
- compete on price in the beginning and as you add value, raise prices for new users.
- you can do things that don't scale early on like offer great support. Your big customers have the founders phone number. That sort of thing.
- find some shelf space you can own by targeting seo in chosen, winnable verticals. It's hard to do successful sem when you're small. You don't even have enough traffic to split test easily. Acquiring free traffic sources is necessary.
- remember, saas is a ramp up. 10% month over month growth gets pretty big before too long.
Breaking that "first paying customers" barrier is difficult. Don't get discouraged when you show your project and no one pays attention, because that's what's going to happen and that's when you will really have to work hard for your dreams.
Programming is easy. Keeping your morale high is extremely difficult.
I think you've made up your mind but are just looking for a bump on the right direction. Go do it! You know you want to try. At worst, you learned some new stuff.
Then yes, absolutely!
Even if you were driven by revenue opportunity, it can still be worth starting a SaaS in a niche with a clear leader as long as you can clearly beat them in a few ways (ie. undercutting price, better UI / UX, etc).
So if this is a $5M potential market, probably there is a clear winner. If this is a $100M potential market, things are just starting.
For example, t-shirts were invented forever ago. Plenty of people start t-shirt companies and make money doing it. Hanes sells WAY more t-shirts than you will. It doesn't matter.
An established market is a better place to play than a totally new thing. You can be a very small operator and still make a very good living for yourself.
Think about Basecamp as another example. Microsoft Project owned project management. Basecamp came into the same market with a different angle and made a business out of it.
Traditional wisdom says stay away from existing big fish. I would say swim right next to them or in their wake. There are always little subniches and different ways you can sell the same basic solution in a different way.
Another way to look at it is software is a bit of fashion. People get tired of the same thing. So, sometimes they go buy a new thing that might have one feature they care about that the old thing didn't.
Most huge products you know about, use, and love started in niches that had established leader. This is true for iPhone, iPod, Mac, MacBook, Chromebook, Github, Facebook, Google, Twitter, MySql, Firefox, Chrome, Android, BlackBerry, Galaxy S, Xbox, Playstation, GoPro, and on and on and on and on and on.
Do yourself a favor, make a pitch page, have a beta sign up form, and start finding people to sign up for your beta. It doesn't even have to be a built product yet. It can be unfinished.
The only thing you need to have a business is customers that pay you money. You figure that out and it doesn't matter what niche you are in.
Ask yourself not whether there is a leader in the market, but whether that industry is in flux and whether the buyers in the industry are apt to seek and adopt something new.
If you don't get the sense that things are fluid in your target market, then I'd recommend staying away. In some markets people just don't like change.
IMO it's not about whether there is a leader, or whether it's an untapped market, it's all about how the market reacts to new things.
Look for reactions to other products in the same market on social media. Was there excitement? apathy? Why? Consider this a preview of the kind of reactions you're going to get. If you don't like it stay away.
Choose an existing market/app and go after it, but only if you bring a 10x differentiator.
You go to a flower market - there are tens of different vendors selling similar quality, similar product at the same price and at the same closed space. And they are doing fine.
Or look at a traditional marketplace - you have tens of farmers selling very similar product. And yet they are coming together to sell their fruits and vegetables. True, maybe there are different dynamics there, there are more buyers than vegetable stands and if the line is longer than 5 people you move to another stand.
But I believe the same works with software and Internet Businesses. It does not harm anyone if there are different tools doing similar things. Look at digital cameras - there are hundreds of them and there is a market for each.
A great example is Coca Cola and Pepsi. Pepsi was created because it was understood that with the market saturated with one product there would obviously be people who would buy Pepsi just because it's not Coca Cola.
Competition is a very sound and healthy environment to work at because you can perfect your product and narrow down your target audience. As @petercooper said: because you see that there already is a business that thrives, you save yourself a lot of trouble testing if anybody wants to buy such a product.
Now marketing is the key.
> I would love to learn, I'd class it as a success if it paid for its own hosting and made me more than say $100 a month
I think you know the answer you're looking for. Go for it.
Speaking of unknown players in this space, check out the wonderfully minimalistic updown.io. It's much cheaper than SP and really is quite good.
Here's our dashboard: https://updown.io/szug
2) Whatever niche you initially pick - please make the effort to do some basic customer discovery. Call some folks up who are directly experiencing the problem you are trying to solve. Even talking to 20 people will give you a lot more to go on. People are much more willing to talk if you aren't selling them anything.
Just make sure to have definite goals to make sure you are making progress along the way. If you miss goals continuously, maybe you should readjust your goals, maybe the niche is too difficult to break into, or maybe you need a different approach to marketing & getting traction - learning the "art" of finding out what it is will in itself be an invaluable experience.
If you can "niche", absolutely. A market leader cannot be serving everyone's needs precisely.
However my advice would be to find something truly uniquely different to your business, not just incrementally better or just incrementally different.
Note that "better" does not necessarily mean "better product". It could mean better marketing, better sales force, all of the above, or "other".
I suggest that you read The Discipline of Market Leaders, Marketing Warfare, and Differentiate or Die, and give serious thought to those ideas.
A lot of engineer types don't understand the sales cycle and how to design their sales funnel to capture curious visitors and cultivate them into paying customers.
Before launching a SAAS, look at whether you have a plan on attracting your "ideal customer" at a rate that makes economic sense to start your business venture.
Are there niches in the statuspage space? I doubt it.
There's definitely a lot of sites that don't use anything like statuspage.io, go out and convince them it'll help.
Talk to people who you think would be your customers. Good ol' fashioned market research.
If you can't sell it, build it anyway - but don't quit your job :)
Depending on how big they are you might not be able to beat them, but that doesn't mean you still can't be successful.
1) Computer Science theory and concepts. I might know some buzzwords but I didnt initially understand things in depth. It took time working on projects to start grasping them.
2) Perspective on the industry. People get so caught up in language and framework wars. It's easy to just take someone's opinion and run with it. After a while you realize that there isn't really a right or wrong and focus on learning underlying concepts.
3) How to keep cool under sudden pressure. Releasing a bug into prod would scare the hell out of me. Sure, it's never a good thing, but even Apple releases bugs. Taking a second to breathe and calm down can make a huge difference in effectively tackling pop-up issues.
I'm sure I'm missing some but those are the ones that came to mind for me anyways.
I'd like to add a defiant similar question and an answer to go with it.
What do non-self-taught web developers lack?
Tongue in cheek. I still have gaps all over when it comes to CS, paradigms, patterns, and I'm perpetually at odds with all the tooling around these days.
- SCRUM - it would be hard to teach oneself SCRUM without job environment
- jargon (I didn't know what "pull request" or "ticket" ment before I went to the first job)
- courage, self-assurance (because of lack positive feedback from other programmers - people who learn programming on jobs are in better situation than self learners)
- realism, cynicism (Self taught programmers are sometimes too optimistic or too pessimistic and dont have sense of reality).
Software engineering is the process by which a computer is enabled as a force multiplier in your quest to achieve your objectives and goals, stay focused on the goals. The ones that find software engineering interesting will continue on in that.
As a point of reference, none of my daughters wanted to be software engineers but they all appreciate that working in their fields of interest (physics, biology, and literature) requires they understand how computers are programmed.
Why should they choose software engineering as a career? Isn't it a miserable occupation for many without independent interest in the field? Don't many end up regretting it, having been goaded into it by overbearing parents, the promise of financial security, or a political movement to redistribute power from one faction to others? Doesn't the practical argument, that it's a good job, get weaker with each CS degree newly awarded?
Writing software will become a necessary skill for people with primary knowledge of other domains. The market is soon to be super-saturated with generic "software engineers," most of them unprepared to do anything more than plumb Java business software or glue together knick-knack web apps. I would encourage these children to find an interest in the world at large, and let the software follow if needed.
I'm a dad of three younger girls (10, 7, and 2). The 10-year old has tons of friends over all the time from her school and dance class. They compete to see who can do the best on their math/STEM homework.
I'm also an employer at a technology company where we didn't have any women full-time until employee 20 or so (save a temp or two). Now we have 8 women, three in technical positions. They fit in great.
Anyway, the best thing I've found is to just give them the same opportunities and to challenge them. For example, we throw math and science trivia games up on the Apple TV and play as a family or with friends. They have fun and it's helped a ton with their math skills.
Also, I volunteer as a Lego Mindstorms coach. My girls don't participate yet but about half the team of 8 are girls. They all love it. A couple were shy at first but it helps that the other coach is a woman. We've had one or two girls that were really shy and didn't want to participate in the formal Lego matches. I casually talked to their parents one-on-one about how we could help those individual girls and we decided to just have them come "watch." Within like 10 minutes those girls joined right in and did great at the matches. I'd say they're some of the smartest on our team.
Same thing with the ladies at work. Two of them have become leaders and two of the others are working their way there.
It's been a matter of finding their talents and letting them go down that path exploring tech and supporting them by giving them CBT Nuggets or Plural Sight subscriptions. They go home at night an learn, explore, and practice.
The only thing I've really noticed is that if a woman tries to "put her foot down" they can be seen as brash (or worse) especially by male engineers. Where if a man does it he's seen as a leader.
I'm not sure how to handle that yet, but a smile goes a super long way.
You could encapsulate SSL in SSL, so the first SSL layer is decrypted by your "colleagues" but the second one should just flow freely.
The problem here is that (A) SSL is defeated in your corporate network and (B) other protocols are probably blocked, to force you to use the proxy to reach Internet, so you're stuck with SSL.
Disclaimer: We haven't tried these scenarios (defeat SSL sniffing on a corporate network) because it's not the main use of our product and actually, as long as it's legal and ethical you should follow your employer's rules, so bypassing your company's security systems is not our business nor we condone it.
But it's technically interesting.
We do SSL tunnelling to create private networks; unfortunately we don't offer Internet gateways so it's not exactly a VPN tunnel. You could, however, install a proxy or a router inside your private network and use it to route your traffic to Internet through the private network.
They may have non-HTTPS sniffing reasons for installing an internal CA, and it is highly recommended in an AD-connected environment. So while they may start hijacking traffic, you might be jumping the gun.
I will say that to avoid hijacking you need a clean DNS server. If you have local admin you could try and see if you can just change to 188.8.131.52/184.108.40.206, but if they're competent they're likely blocking DNS going through the firewall for exactly that reason.
I'd recommend you just bring in a personal laptop, buy one of those tiny battery operated mobile WiFi hotspots "MiFi" (cellular to WiFi bridge), then just access the internet for personal usage entirely off of their equipment and network, it will cost less than $20/month with a pre-existing cellular plan.
e.g. T-mobile Z915 + $10/month
What I've usually seen is that they're using something like a Palo Alto/Cisco to do transparent/inline "blocking of bad stuff" like drive-by downloads, etc. and tracking general Internet usage. They could have also done it with an agent on each computer or whatever.
Many times the trigger is some troublesome employee or perhaps a malware outbreak somewhere.
In so far as circumventing it, best thing to do is use your own equipment for personal stuff. I have a VPN to my home office and use remote desktop (Windows 10 on both sides or ScreenConnect to my Mac) to keep things separate. No one can see the traffic, it's minimal, and legit.
Pursue what's in your own best interest. Some companies try to hang-on after you've given notice by trying to keep some level of commitment ... either part-time, or remote. I'd recommend against this as-well. Find your new place of employment, give notice, and have a clean-break at the end of your notice-period.
You can often do phone interviews by pretending to have a doctor's appointment in the morning and doing them from home. If you can't get all the way to a job offer remotely, you'll probably end up taking days off for on-site interviews, since you'd need to travel to the other geographic locale.
2. Yes. Keep it quiet and on personal time/email.
Curious to hear if others have had success with other methods or if anyone else has tried going back to a non-smartphone.
What I learned in one of my courses where we talked about addictions, is that people with addictive personalities tend to replace one addiction with another. Now, saying this doesn't present it as a positive thing, but it can be.
I started by completely taking these socials medias out of my life for a whole entire month, strictly. I didn't get on a single time to any of them once. And I replaced the addictions with something else. At first I thought maybe games would be good, but it was hard to get on my phone without going to these sites. So what I did is I replaced them with reading. I would take 2 minutes to read a couple pages, read on my ten minute breaks, read on my lunches, etc.
You don't have to do that, although I recommend it, but I would try to replace it with something that didn't have access to it, and then you'll have more control over it.
$ cat /etc/hosts|grep face127.0.0.1facebook.com127.0.0.1www.facebook.com
I'm really only addicted to HN these days, but I solve it by not going to HN at all when I need to be in Get Shit Done mode. After a day or two I don't find myself thinking about it that much.
I also put my laptop in a bag once in a while, padlock the bag, then put my phone and padlock key in my ksafe (http://www.thekitchensafe.com/). Offline heaven.
Come to think of it maybe I should delete Tweetbot from my phone for a while. It feels about time.
Coming at it from the other end, I find that the "Pomodoro Technique"  of timeboxing works pretty well to keep me on task, when I go through the whole ceremony of picking up the cute ladybug-shaped kitchen timer I've modified by painting out anything beyond 25min, giving it a twist, and having that kinesthetic memory plus the soft ticking reminding me that I have A Thing I Have Promised Myself I Will Work On For This Block Of Time.
I haven't been doing that much lately either. I should start doing it again.
I like this question. I'll see what other better answers come out out of it.
1 - No social media apps on my phone that might be tempting to check during the work day
2 - No social media logins on my work laptop of a distinctly personal nature
3 - Only checking social media when getting home and after a few minutes it's just tiring to wade through stuff and it makes it a lot easier to close it up and not be conditioned to think those outlets are worth the consistent attention
 This doesn't count Periscope which I use for promotional purposes or might come in handy in a pinch for sharing (but I don't open during work or watch many other streams)
 Social media doesn't include some forums, I'm strictly speaking FB/Twitter/etc. Forums are a different beast. Thankfully I tend to get tired of some which enable me to avoid them, or if I return, I've deleted my account and just read.
If I really feel the urge to read non-work stuff then I have my phone, which costs money, has a useless keyboard and a diminutive screen. If I am making a cup of tea then there is plenty of time there to see if anyone has sent me email etc.
Regarding work email, I do not read a lot of it and I expect my colleagues to know that I don't read emails. I do read important ones but social events and other work emails that are non-critical I just move to the 'almost read' folder. Generally my email is just used for test purposes, lots of systems cc me in on things so real emails are hard to find amongst the reports etc.
I do have problems with 'slack' at the moment, some people are a little evangelical about it and I just find it to be lots of noise. I wish 'slack' would go and that I could return to the lame 'Skype' as that did work well for my needs.
I don't really manage it. I just let it flow, I don't feel guilty. That's the first step.
I also disable browser & desktop notifications. It's fine to see a highlighted tab or a number in the systray.
My mobile is always on vibration. Social apps are muted. All of them. I wear a Fitbit wristband synced by Bluetooth for phone calls notifications.
I use Serializer as main input of news. I check it between tasks, scanning the titles and sending the articles to Pocket (important!).
I let myself check anything at any moment. When I feel "the urge" I just ask myself "should I check something?". Take a few seconds to answer that and I usually keep going on my task and check later. If not, it just happened. No big worry.
I also keep myself away from Twitter & Facebook using Buffer to plan my publications. I use Goofy or Pidgin to connect to Facebook chat.
Finally, I use Evernote with a keyboard shortcut to open my "brain dump" note. Here I jot down quick ideas that come across my mind while I'm doing a task. You can use anything else but Evernote is useful even walking. You can write down in your mobile and sync it later at home/office.
Keeps me addicted to the right things :).
When you think about it, it is not human, you have far more things to do than being distract by these little sounds. Most of the applications makes possible to set precisely when you want to be notified or not. Don't worry, even with notifications, you will still be distracted by your kids, cat, neighbors, flying birds and dust.
I don't think the browser extensions are a solution to this. You have to learn to control it by yourself.
It used to take so much energy for me to start working. But on Modafinil I switch to emacs and start hacking.
I bet I'm going through a honeymoon period, but I'd say I've learned more about programming this week than in any (any!) month of my life. I feel really focused.
Many use it to avoid sleep. I don't; I get eight hours of sleep a night. I'm trying to avoid crashing, burning out, dependency et cetera by using Modafinil like an antidepressant, not a five hour energy.
- Newsfeed Eradicator. Keeps me from consuming FB. I can still post, lookup the groups I'm in, lookup specific people, use FB Messenger etc. But it's no longer a black hole.
- StayFocusd in Chrome to block Reddit/Twitter/FB/HN from 8am to 2pm. By afternoon, either I'm engrossed in my work and don't need to worry about distractions or my brain is mush and no more work is getting done today. Most crucial time is when I first get to the office. Can still use Firefox if necessary, but this eliminates the mindless CMD+T.
I really recommend it.
I think a bit part of it for me, was finding another site that interested me enough to not have me thinking "man, I wonder what <enter in lame fb user> is saying.
Hope this helps :)
I don't have a problem with most of these. Facebook can demand a lot of attention though. I learned others expect what you give. So I don't give much, others are fine with that and Facebook isn't a problem.
My Mac at home is the entertainment computer. It has all the problem stuff on it, potential problem stuff too. When I have time, I can hop onto that computer and enjoy. No worries.
Take 20 minutes one day and block all those on facebook that you really don't care to follow or post too much stuff. You don't need to 'Unfriend' them, just 'unfollow' them. This way you only see the stuff you care about and will inevitably spend less time on Facebook. This can be applied to twitter/snapchat etc.
Sometimes I'll do an /etc/hosts block and shift that site I'm over visiting to another device. Makes me realize I'm using it too much. Once that moment hits I unblock when I feel I'm ready for it on my laptop again.
There is value for me in having a FB account. There are some people that I only communicate with through the service, and I'm part of some groups that do all their event organization through FB. Deleting my account, for me, was both undesirable and impractical. But I sure as hell wanted to break my addiction.
I started using a simple habit tracker on Android call Rewire to track my progress in breaking this habit. After a few false starts, "don't break the chain of success" became more motivating than I originally thought it would be.
I also ramped up the severity of my FB diet instead of going cold turkey right off the bat. This was roughly my progression:
1. Delete the phone app. There's not a great way around this. I still use Messenger, and for the first time I find myself really glad that the services are separated.
2. I started logging in and out of the service in a browser. When I finally tore myself away from the newsfeed, I'd sign out. When I was tempted to go back, having to sign in again was a usability barrier, but also a reminder to myself of what I was trying to accomplish. Sometimes it was enough to help me resist actually logging in.
3. No mobile FB. I did my best not to log in through a mobile browser. I still allowed myself to browse on a laptop or desktop.
4. No more FB. I configured my email settings to get notifications about very specific things and then looked at my news feed on a desktop browser for what would hopefully be the last time. My personal rule: if I get an email about something that was directed particularly to me, whether it's somebody posting on my page or somebody tagging me in a comment, I will log in through a desktop browser, address that event, and immediately log out. No looking at the newsfeed, no browsing to friends' pages. I also unsubscribed from all the promo emails FB started sending me when it detected that I was inactive.
I hope this helps! Breaking my FB addiction was tough, but very rewarding. I don't miss my newsfeed full of political vitriol and worthless clickbait. I've had more rewarding conversations with friends I care about through other means. I don't miss being part of "the conversation." So, A++, would recommend, but be realistic and gentle with yourself as you progress.
For example, if we always check emails just to see how many new-emails we have got, so that we can act on them asap, Its a good case as its going to improve our productivity and time-to-respond lower.
Another example, if we always check fb to see what other people's activities are. Well, we can turn this around and make us the person who is doing lots of personal activities (outside of internet domain) and posting it to facebook (may be weekly), or restrict it to closer pals/family.
Personally, if we interact more with Nature around us, it feels great.
Restrict the use of these "virtual" worlds and try to participate more with the world around us. Instead of posting a message on facebook, may be call your best friends and say hi. Its million times better than seeing 1 like for the post in the virtual world.
I really suggest reading Deep Work by Cal Newport.
For my phone - I deleted all of my social apps (apart from Instagram, Swarm etc) and keep it in another room or in my bag as much as possible.
When you no longer feel a need to use it, then it is safe to use it. This has been the best cure for addictions for me in the past, but YMMV.
Like the OP, I'm using StayFocusd and I've used RescueTime in the past, and it's actually been very helpful for me. Right now I've given up Facebook and I'm tackling Reddit next. I don't have a solution for my phone, but it hasn't been a problem for me because I leave it charging across the room when I'm working. It's still difficult for me during evenings, but I'll probably try something similar for that soon.
Firstly... and I do not mean this to sound like hurt pride, but... a discipline would need to be quite trivial to be understood by cursorily surveying a few online texts. There's a corpus of several centuries of findings, derivations, and unresolved controversies precisely _because_ it is nontrivial. (Side note: the existence of controversies that divide different schools of thought does not mean that everything is in question and that absolutely anything goes because, hey, we can always argue with words by distancing ourselves from observable reality that makes for religion not science, albeit even the dismal kind.)
Second: the general idea is that there exists a dynamic, complex system constituted of agents (people, sometimes aggregated into firms and/or nations, being almost always simultaneously consumers of something in need of everything except that which they are suppliers of, be it labour, materials, knowledge, time in the form of lending money, whatever) each doing their best to maximise the enjoyment (utility) of what they have by interacting in a series of markets, which for the sake of analysis we generally are forced to assume are in equilibrium (i.e. We're at the end of history where no external bumps or surprises are leaking into the market and nudging it in any direction) but in truth we know to be in perpetual disequilibrium as information percolates in, surprises happen, and generally guesstimates of everybody involved are shown to right at best on average. An equilibrium price comes to exist where supply and demand cross and we spend many a happy hour calculating that and then trying to figure out how a shocked system returns to equilibrium if we jolt it.
Thirdly: money is (surprisingly enough, for the public which seems to conflate economics and accounting) not necessarily the domain of economics. As a whole the discipline deals with incentives (most usefully and generically regarded as differences in subjective utility) and responses thereto (utility maximising strategies). Money is at best something that serves as a denominator to give everything a common unit and, at worst, an irksome distortion. This is one of those school of thought controversies I mentioned above: there are monetarists within the domain of economics and there is the separate domain of finance, somewhere between accounting and economics, and to which risk (uncertain future outcomes) is an essential ingredient and governmental fiscal policy (taxation and public spending)... that's yet another thing.
For the sake of reading I suggest (no offence intended) Managerial Economics For Dummies, The Origin Of Wealth (Eric Beinhocker), and The Social Atom (Mark Buchanan).
P.S. On mobile so I've had to edit this a few times... sorry if you caught me in flux but it's great to have a chance to mention stuff that amuses me once in a while.
Like to what extent their software is used in planning drone strikes and other military operations. And what, exactly, Palantir knows about the number of civilians killed and maimed in these operations. Let alone how any of the engineers working there, behind their hoodies and their high-end headphones -- perhaps reading this very thread right now, as we speak -- personally feel about this situation.
The company itself is essentially an elite technology consulting firm (albeit one that is actually technically competent). They have a set of core generic products (they have a finance analysis product, government analysis product, some other ones). BWStearn's description is accurate (a tool for analyzing entities and their relationships). But the key to their success is they take that generic product and then dispatch teams of engineers to customize each deployment for each client (hence consulting). Often clients will hire them because the client has engineering talent and has to hire Palantir because of that.
From what I've noticed the culture does learn fratty, but I didn't find it uncomfortably fratty. However, the people there work hard and they work long hours.
At least one of the non-clone ones mentions a strong Palantir internal push to pad GD with positive reviews.
I have no experience of their software, but the people I know who work there are very smart. Some of the best developers I've ever known. OTOH, many of the other best developers I've known refuse to work there on principle.
Here's an example of the effect it creates: https://www.youtube.com/watch?v=8GfKBvs53Ss
When users click through and buy something, you'd get a percentage of the sale. It could also be a lot more beneficial to users than just showing banner ads.
If you combine it with actually providing a benefit (i.e. a diamond block linking to the wiki page on diamond blocks), your users might very much appreciate the functionality.
If that's so, making sure you are very mobile-friendly and looking at app-install ad networks might be better than adsense.
Minecraft hosting affiliate program. Bonus if they have a recurring cost per sale model
You develop in a parsed environment, not raw text. Tooling will allow you to make structural edits instead of traditional text edits.
Everything is an expression and can be used as a value. Even loops and if-statements are expressions that can be assigned to a variable.
Macros. You can create languages. Change rules and syntax. Do performance optimizations moving processing to compile time instead of run time. To process matrices you create an intuitive language to handle them, rather than shoe-horning into a general purpose language missing low hanging optimization-fruit.
You develop against a running program. Other langs can do this but they are missing the first rate tooling or the community doesn't do things that way. While you develop the 4 times become 1. Thinking time, Typing time, Compile time, Run time. Try an idea, get immediate feedback. Your design medium is play-doh so design by making something tangible you can feel. In other langs your medium is marble so you plan it out ahead of time before you mess up your expensive marble block, then waste hours/days before you realize all your unit tests were made against a flawed API.
So much time and energy is wasted protecting marble. Play-doh is better.
Even if you only ever do basic Haskell it is very useful to have that mindset when using lambda expression and functional programming features embedded in other languages. Or to use the FP languages tied to a platform, like Scala and F#
For me, the important distinction has become: Is my interest in X as a professional or as a hobbyist? Treating X as a hobby takes the pressure off...and lets me make sense of why the overhead of something like Android development creates enough friction that it doesn't feel sustainable. YMMV.