Last year, an Innovation Hero championed a completely new build system based on their homegrown version of asdf, essentially.
I was the one who had to stay late multiple Fridays making sure our Formal Builds would still work. I've been working to roll back the least well executed portions of this innovation for the past year because it doubled the amount of time required to release our software in the last stages of the pipeline (which was already five days, another rant, I work at VeryBigCo on a mixed HW/SW product).
I believe in this story the entrepreneur referenced worked to clear all similar hurdles, but it's hard to feel bad for folks who view themselves as Innovation Heroes when in many cases they're applying solutions in search of a problem. It's also very not fun to be "that person" aka "The Adult in the Room".
Yes, today the "Innovation" is part of our processes, but in stripped down form and it cost us two missed formal builds with the corresponding loss of credibility in our customer's eyes... in addition to my own sour grapes and missed dinners with my kid. It also cost me a personal friendship with the hero (my fault, but it's really hard for me to get past the fact this individual put their ego over my time with my family).
Agree it's a sign of a dysfunctional organization but it goes both ways. As an Innovation Hero, you should be aghast at how inefficient your org is, but as a part of that org, you should stop and ask, "How did we get this way and am I sure my solution truly solves all aspects of this situation?"
I think your point here should resonate louder (at least where I live in the USA).
Jumping in and out of the "gifted" track should be possible if such a thing exists; however to your point, how would the track be defined and what should it contain? Would there be a list of items that need to be mastered? What evaluations determine if you can jump in... or when you need to "jump out"? Would the "gifted" track be age based the way it is currently or could the contents be tailored to fit the needs of the individual students?
Following that line of thinking, at what point do you qualify for a job? Also, what social stigmas would we attach to "jumping out"?
I don't have answers, but your point led me to some very interesting questions. Thank you!
This is a wonderful tool for simple flow charting. I agree with other posters that a little more documentation would be nice and would also like to request the ability to export the underlying SVG (I'm still browsing source to see if that exists). I'm willing to help add both, thank you for this!
The RaphaelJS library, which this is built on, doesn't have a built-in SVG exporter (though there is a limited functionality for that, along with SVG export plugins), but in FireFox and Chrome, these two lines will get you the <SVG/> export:
var svg = document.getElementsByTagName("svg");
var code = svg[0].outerHTML;
Of course, that assumes you're just getting the first SVG, etc and so on. Anyhow, this does NOT work on IE because IE hates innerHTML / outerHTML for SVG elements.
One tiny thing that stands out is that RaphaelJS is built to support even IE6, and yet this flowchart program seems to bork under IE.
Edit #2: forgot to mention, Raphael was specifically designed to fallback to VML if SVG is unavailable, so the export functionality would need to support both or pick and choose, or just reconstruct programmatically. A dilemma indeed.
Yeah, it's a pickle. Raphael supports limited subset of SVG with VML failover compatibility, but export is limited because you have to support two technologies.
Then it gets weirder because RaphaelJS isn't exactly responsive-ready. Takes some work to make graphics just resizable (you can scale with the viewbox, but that's about it.) Recently, I switched to pure SVG (even when programmatically generated) because nested SVG elements provide basically a mechanism for relative/responsive scaling, positioning and such.
The guy who came up with RaphaelJS was ahead of his time, and I believe he got hired by Adobe in part thanks to the project's exposure. The development stopped awhile back, and it shows, which is really sad because I liked how the programming style for Raphael is done.
One takes the SVG from the browser, encodes it and sends the <svg> as the body of an email (inlined, not as an attachment). Here's the relevant part:
function render() {
var link = document.createElement('a'),
time = Date.now();
link.href = 'mailto:? subject=exported%20sketch&body=%3C%3Fxml%20version%3D%221.0%22%20standalone%3D%22no%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E'+encodeURIComponent(new XMLSerializer().serializeToString(board));
link.id = time;
document.body.appendChild(link);
document.getElementById(time).dispatchEvent(new MouseEvent('click'));
document.getElementById(time).parentNode.removeChild(document.getElementById(time));
}
The other prepares it as a file and creates a download link (not seen on screen) and programmatically clicks that link to download it:
function download() {
var link = document.createElement('a'),
time = Date.now(),
svg = '<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+new XMLSerializer().serializeToString(board);
link.id = time;
link.setAttribute('download','sketch.svg');
link.href = 'data:text/html;charset=utf-8,' + encodeURIComponent(svg);
document.body.appendChild(link);
document.getElementById(time).dispatchEvent(new MouseEvent('click'));
document.getElementById(time).parentNode.removeChild(document.getElementById(time));
}
But be forewarned, since SVG uses XML namespaces instead of HTML, using things like '.innerHTML' won't work in certain browsers (iOS Mobile Safari for example) while innerHTML does tend to work as you would expect on most desktop browsers!
Canvas would work for exporting a bitmapped snapshot of the vector, but lacks the following:
- filesize: SVG is vector, but Canvas renders a bitmap
- non-destructive: SVG is human-editable after the fact, bitmaps only 'remember' the value of the top-most pixel and 'forgets' everything that has overlapped
- human-editable: Though not pretty, SVG's can be read and edited by hand, bitmaps require a graphics tool to edit easily
I have constructed the argument before that if you consider functionality as an asset and code as a liability, you can consider a refactor as retained earnings (or stockholder's/owner's equity, whichever you prefer). Along those lines, refactoring code becomes much more palatable.
I know it's a flawed analogy because refactoring costs money, so it isn't really RE. It did help me answer a question along a similar vein to yours ("...how do you see your balance sheet improving while still being balanced?"); where I was assuming a reduction in liabilities satisfied "...balance sheet improving...".
Yes and, since I had a good manager, I was rewarded when "the next person" came along and the amount of time required to onboard dropped from one month to two weeks.
Everything in that situation came down to documentation and I spent my first couple of days just chasing down the "correct" IT person to setup all of my accounts (company network, version control, bug tracking software, customer network, remote access, email - each required a different person and I had to ask around to find out who they all were). I commented that having one IT person who can handle everything would be ideal; but I had to settle for creating a list of "who to contact for what". This still shaved days off the next person's lead time.
Simple stuff like having a development machine ready to go (installing Visual Studio, an Office suite, etc) when the new person arrives really makes a difference. There was a learning curve w/r/t the actual system but the new person didn't have to switch gears between hunting people down, installing a myriad of in-house software with which they have no familiarity, and other general "drinking from the firehose".
I took some stabs at making the firehose drinking not as overwhelming; but I didn't do as well as I wanted.
The organization's attitude mattered, in retrospect. Bringing on new people took a significant amount of time (still does but it's better) and everyone did what they could to help me document the process. I imagine if the organization had not been incentivized to help me, then I would have failed and "first write the documentation" would not have worked at all.
I had a flashback of playing the board game Clue (http://www.hasbro.com/common/instruct/clue_%282002%29.pdf) with my siblings when I was younger. Specifically, I imagined a small team of developers in a large McMansion-Office trying to debug a large application saying things like, "I suggest the bug was commit'd in the kitchen, by Tom with his Custom Arch Laptop."
In my experience interviewing candidates, cultural fit largely outweighs other technical merits. I try to keep this in mind when I'm asked for my opinion.
While the questions in this article appear biased towards a 60/40 work/life balance, I would say they're spot on in detecting a very specific cultural fit. If nothing else, these questions would get a candidate talking. They're a little on the aggressive side for my interviewing style, but I imagine they're quite effective.
Keep in mind, the job candidate should also be interviewing the company. If someone were to ask me what unpaid work I have done in the past, I would consider the cultural ramifications of the question. In this case, I would need to be okay with an aggressive internal culture.
Come to think of it, it's important to realize that when you interview candidates you may very well be the first impression of the company. Articles like these offer a glance of a company/interviewer without having to go through the trouble of applying.
I would really like to find a way to study the effectiveness of interviewing styles. I wonder what metrics would even apply?
Great comments! I agree. A number of commenters have said, I would not want to work for a company like that and I think that is good. Who wants to take a job to, only 6 months later, realize they did not like the culture.
However, the point about 60/40 work life balance is not 100% accurate.
I am constantly reading Product Management literature not for work - but because I love it. I am finishing the Disney Biography because I love learning about leadership styles. In other words, I do a job that complements my "spare" time activities... and ANYONE who manages that is a good hire.
This is not to say - go to these things FOR work - that is not the gal/guy I am looking for. You should not do things FOR work that you are not paid to do (that is not fair). But, if you love the work you do and that extends into your life - all the better.
I don't have any factual link handy but don't a small percentage of startups take off? I remember reading here on HN that a VC will invest a little money in a lot of companies knowing (hoping?) that most ideas will fizzle, some will do okay, and a few will make millions or more.
Having grown up with Google, I had hoped to see Web ads as their first Unicorn and expected more of the side projects they let their employees work on "take off". It's certainly not for lack of trying; it would be very interesting to summarize Google's pushes into other markets and see why they have failed to expand their core competencies.
Google has in no way failed, but I have always expected another PageRank type success somewhere.
This looks like a lot of fun but I'm surprised to see this in Java. Nothing against Java, the JVM, or the ecosystem surrounding it; I expected to see a REST interface, or something similar.
Having read Artificial Intelligence: A Modern Approach (http://aima.cs.berkeley.edu/), I think it would be a neat side project to abstract as much out of the intelligent agent model from Chapter 2 as "makes sense" and see to what extent you can allow interfaces from any programming language.
I recommend looking into a large company that lets you move around (specifically let me recommend Boeing). I have changed groups several times and there is very little stigma assuming you can get yourself up to speed in a reasonable time frame and you're not, "leaving behind dead bodies".
Consider reading a book called, "The First 90 Days: Critical Success Strategies for New Leaders at All Levels". It's contents helped me gear my interviews towards how and when I would add value to a new group. I believe that is the key to changing jobs - average time to positive ROI from the new group's perspective, not average time spent in a group.
You have some great recommendations in this thread, so thank you for asking!
I was the one who had to stay late multiple Fridays making sure our Formal Builds would still work. I've been working to roll back the least well executed portions of this innovation for the past year because it doubled the amount of time required to release our software in the last stages of the pipeline (which was already five days, another rant, I work at VeryBigCo on a mixed HW/SW product).
I believe in this story the entrepreneur referenced worked to clear all similar hurdles, but it's hard to feel bad for folks who view themselves as Innovation Heroes when in many cases they're applying solutions in search of a problem. It's also very not fun to be "that person" aka "The Adult in the Room".
Yes, today the "Innovation" is part of our processes, but in stripped down form and it cost us two missed formal builds with the corresponding loss of credibility in our customer's eyes... in addition to my own sour grapes and missed dinners with my kid. It also cost me a personal friendship with the hero (my fault, but it's really hard for me to get past the fact this individual put their ego over my time with my family).
Agree it's a sign of a dysfunctional organization but it goes both ways. As an Innovation Hero, you should be aghast at how inefficient your org is, but as a part of that org, you should stop and ask, "How did we get this way and am I sure my solution truly solves all aspects of this situation?"