HN user

johnkchow

99 karma

Passion for software and leadership.

https://johnkchow.com https://www.linkedin.com/in/johnkchow

Posts12
Comments50
View on HN

The hardest part during the transition is to give up doing what you love and excel at (coding) and instead doing something foreign and way more nebulous. But every time you feel that urge to go back to writing code, you need to remind yourself that as a manager, your primary goal is to have a multiplicative effect in the organization, and that starts with not only improving your team’s productivity, but coaching each and every member on your team to have great judgement and make the right decisions that balances the technical and business needs. And to have your team make the right decisions, you as the manager need to equip them with as much business context as possible and empower them to run as fast as they can.

I highly recommend reading High Output Management by Andy Grove. It’s written decades ago for the chip business, but it’s personally one of the most impactful books and really cemented for me the ideas I’ve laid out above.

I wish you luck! It’s not an easy process, but with work it can be incredibly rewarding to see people succeed and grow under your watch.

Just like many things in life, its all about building that habit in the first place. The most important thing is to be fiercely disciplined when it comes to carving out dedicated time for the task. Start off small: maybe 30 minutes a week to read new articles, every week. Don’t ever miss it. When that becomes easy and part of your routine, make it 40. So forth and so on until it’s something you don’t even have to think about.

Building up your habit is a long process, and it can’t be rushed. Don’t start off too big (i.e. start off spending 8 hours on a project in one day). I mean you can, but if it feels like a drag then you’re biting off more than you can chew. Prioritize on sustainability and consistency; otherwise you’ll unconsciously tell yourself that it’s too hard and set yourself up for failure.

EDIT 1: I realize the post is more about having feeling inspired/creative vs wanting to learn, so my thoughts may not be answering OP’s original question.

EDIT 2: I think a better way to frame the question is how to bring creative ideas to reality. If that’s the primary goal, building up the habit of trying to apply our ideas is IMO really important. Otherwise, ideas will just remain ideas.

I’d caution against jumping to conclusions. The author did say that he was emotionally shut down and wasn’t intaking any of the coaching sessions. It’s very possible that the CEO/Coach knew that it wasn’t going to work out, but it’s also very possible that they wanted to see the author succeed and prove them wrong.

I'm the Engineering Manager for the Reviews team at Reflektive (performance management SAAS), and I have to say that this article rings true with me personally and aligns with our company's mission. The recent trend when it comes to performance management is that companies a) no longer want the feedback process to be centrally driven and b) feedback between managers and direct reports should be given on a more frequent cadence. The latter point is especially challenging, because no software out there can magically can change an individual's behavior; the company culture[1] has to exist first to foster it.

Every company is different, but for some traditional companies Reflektive works with them to initially roll out Performance Reviews because companies have dedicated budget for it. Then, once they're comfortable with our tools, our Customer Success team partners with them to craft a roll-out plan for our "Check Ins" product, which is a lightweight feedback tool intended on used every 3 months. For Check Ins, it's meant to be purely about development; at Reflektive, our Check Ins contain no performance rating scores nor do we use it for compensation (we have a separate process for that).

The good news is that a LOT of companies, ranging from small startups to large 50k-employee enterprise companies, actually want to shift towards a more employee-driven model. Our team's number one priority right now is to empower employees/managers to own their own feedback process and to increase the frequency of feedback between managers and their teams. I'm super excited about what's coming down the pipeline!

[1]https://docs.google.com/presentation/d/1df5MALZKZU6lOeIXUiO-...

I'm the Engineering Manager for the Reviews team at Reflektive (performance management SAAS), and I have to say that this article rings true with me personally and aligns with our company's mission. The recent trend when it comes to performance management is that companies a) no longer want the feedback process to be centrally driven and b) feedback between managers and direct reports should be given on a more frequent cadence. The latter point is especially challenging, because no software out there can magically can change an individual's behavior; the company culture[1] has to exist first to foster it.

Every company is different, but for some traditional companies Reflektive works with them to initially roll out Performance Reviews because companies have dedicated budget for it. Then, once they're comfortable with our tools, our Customer Success team partners with them to craft a roll-out plan for our "Check Ins" product, which is a lightweight feedback tool intended on used every 3 months. For Check Ins, it's meant to be purely about development; at Reflektive, our Check Ins contain no performance rating scores nor do we use it for compensation (we have a separate process for that).

The good news is that a LOT of companies, ranging from small startups to large 50k-employee enterprise companies, actually want to shift towards a more employee-driven model. Our team's number one priority right now is to empower employees/managers to own their own feedback process and to increase the frequency of feedback between managers and their teams. I'm super excited about what's coming down the pipeline!

[1]https://docs.google.com/presentation/d/1df5MALZKZU6lOeIXUiO-...

Android Studio 2.2 10 years ago

It'd be helpful to have more context about your development experience. I've done some iOS development in the past, and as spapas82 mentioned once you understand the core Android concepts it's easy to pick up. The docs are good, and there's a lot of tutorials and small articles to get you going.

If you've never done native mobile app development (e.g. you only have background in web dev), then regardless which platform you start off with, the initial learning curve will be a bit steep. Most APIs are "lower level" than the web counterparts and there's more ceremony to piece things together since you're working in such a constrained environment (memory, CPU, battery, network speeds, inconsistent internet access, disk space).

All that said, I think Android is a _taaaad_ easier to start off with vs iOS if you're a web dev. There's the GC, the Activity model is similar to web pages and their View XML abstraction is not that far off from HTML/CSS.

I've been in a very similar situation before (one of the first engineer hires in a company that grew to about 15 people when I left). It's great that you're loyal and conscientious (you won't have any problems finding a job).

The first thing you need to do is sit down with your CEO and have an honest conversation about how you feel. Come prepared with an outline of all your grievances and be very specific about what changes that you need to see to be made. This includes compensation and hours. These days early stage startups are offering super competitive salaries, and it's more than fair to ask.

Having this conversation gives him a chance to do you and your coworkers right. Best case scenario: he totally empathizes and has a change in heart, and the company as a whole benefits.

But you have to be prepared for the worst (which will probably happen): not only will he offended by your honesty, he'll come out attacking your character. These kinds of CEO are just emotionally clueless, and nothing you say or do will change their minds. In this situation, you must be fully prepared to walk away from this company. By staying you'll be enabling his behavior and you have nobody to blame but yourself for being in a hostile environment. By leaving, you not only will find a better opportunity (and you will), you hopefully will give the CEO a wake up call.

When I put in my 2 weeks notice, I got blasted and put my founders and fellow engineers in a tough spot. But a lot of good came out of me leaving. Immediately after my 2 weeks notice, the CEO pulled everyone aside and gave everyone raises which were near market rates. The founders also became more aware of how employees felt. A few other coworkers who were as miserable as I was eventually left the company too, and they're all in better, happier places.

There will be some people who will see you as leaving people behind and making things tougher for them. Over time those individuals will come around and see that whatever decision you made, you made it for the right reasons. The most important thing to keep in mind while you go through this: your top priority is your physical, mental, and (most important) emotional health. Don't listen to what other people say.

Good luck with all this. This will be a tough journey, but if you keep your chin up, I guarantee that this will be the best thing that you'll ever do.

My parents immigrated to America in the 80's from China, and they simply thought that a college degree was the gateway to social mobility. They never thought that the skills learned in college would matter that much. Most parents in my community thought the same way. Most parents didn't speak English, so my generation was further isolated from the job market demands. Going to college, my friends and I had little idea of what we wanted to, not because we were indecisive but because we simply didn't know what jobs we could do. I saw many friends study history, music and foreign languages, and they struggled after graduating because they realized that their degrees aren't guarantees for good jobs.

The struggles weren't due to lack of desires or efforts. In my opinion, it's the disconnect between the perceived value in education and the actual skills needed for the work place. Raising awareness, such as vocational classes in high school and required internships as a prerequisite for college graduation, would have been tremendous for my generation. At the very least, it would have helped us realize that there's this gap between what we're learning in school versus what's actually needed in the work force.

This interoperability-focused approach brought the obvious question of adopting an existing open-source rendering engine such as WebKit. While there were some advantages, upon further investigation it was not the right path forward for two important reasons. First, the Web is built on the principle of multiple independent, yet interoperable implementations of Web standards and we felt it was important to counter movement towards a monoculture on the Web. Second, given the engineering effort required, we found that we could deliver an interoperability focused engine to customers significantly faster if we started from our own engine (especially if unshackled from legacy compatibility concerns), rather than building up a new browser around an open-source engine. We will continue to look at open source and shared source models where it makes sense and look forward to sharing more details in coming posts.

This is a powerful paragraph from the article. I'm all for competition, and if they actually produce the next great browser, that'll just mean better browsers overall (and probably even better tooling for us devs). I'm a bit skeptical whether they can pull it off, but at least I have a good feeling that they're out to prove us all wrong.

I work in a crowdfunding startup where GoFundMe is our #1 competitor. We knew they were dominating the personal causes space, but we didn't know they were doing THIS well. I have much respect for their huge revenue/growth while taking 0 VC money.

A huge part of their success is SEO/PR (which is just a huge positive feedback loop). The product has great onboarding and they offer good customer support (guaranteed 15 min or less response times, which is important when you're dealing with people dealing with tragedies from natural events). While I agree that the design is horrible, from a pure UX standpoint their site is extremely simple to use. The typical user is someone who's not tech savvy, and they're won't care if they raise thousands of dollars.

Also, let's get off our high tech horses here and stop blasting GFM. The reason why a lot of people here on HN haven't heard of them is because we here most likely are educated and have good jobs. We can afford for whatever shit comes our way. Also, most donations come from personal networks i.e. friends and family members, while larger campaigns get additional support from local communities. Crowdfunding sites like Fundly and GFM really do affect people's lives for the better.

Politics is one of the most valuable lessons learned at a big company. Although I work in a small startup, all the management is from big companies. Like any other startup, what's valued the most is getting stuff done. But I learned that shouting at the top of your lungs or bottling your emotions while being passive aggressive are the worst strategies in leading discussions.

I had to quickly learn how to present my argument in a non-confrontational way, get individual buy-in (and perspective) from all stakeholders before any meeting, and balance being transparent and forthright versus protecting your interests (it really helps that your interests aligns with company goals!).

To sum it up, "politics" IMO has made me a more effective leader.

There's a fork out there called EventMachine-LE, which is currently in active development for latest features (i.e. IPv6). https://github.com/ibc/EventMachine-LE

Anyway, just wanted to throw it out there that I've deployed several production apps (gaming/messaging servers) using EventMachine, and combined with em-synchrony, I'm pretty comfortable with its performance and limitations. There seems to be good community support (thanks to Ilya Grigorik's articles and em-synchrony) with plenty of examples/documentations.

Just wondering, are there any people out there with Celluloid app experience that's currently in production? Like any other geek, I love programming "the right way" but I know nothing about Celluloid and it's real-world benefits/drawbacks (performance, API, code maintainability, code documentation, community support, blog articles, etc).

The whole native mobile app kind of parallels with Flash on the web back in the day (funny how I could say "back in the day" with Flash). Flash -- from what I understood -- used to give a richer UX that HTML/CSS couldn't. The only problem was that Flash was one more thing that needed to be installed on top of the browser.

However, as JS frameworks matured and HTML5/CSS3 was introduced, the browser offered comparable UX, which ultimately lead to Flash losing relevance. I still think mobile browsers have a long way to go in terms of performance. However, this article suggests that native apps are experiencing the same market resistance as Flash once did. Once mobile browsers catch up, we might just experience another tech renaissance ala Web 2.0.

As a user I definitely appreciate the emphasis of privacy first as well as its clear responsibility for identification. However, from how I see it on the surface, it currently doesn't have the market reach as, say, FB Connect or Google, and I don't want to "flood" my users with too many options for authentication. What's the practical arguments of rolling out my own authentication (Rails + Devise) vs using Personas?

It's great that Mozilla has made Persona open for everyone to develop with. While I still believe that Firefox has a lot to gain with Persona, I also agree with your vision that this is a good step towards a safer web (only time will tell if this takes off). I'll take it a step further and argue that if Firefox lead the charge with Persona tightly integrated, it'll make the web even SAFER for the average user, because it will force other browsers to tackle the issue of security as well, benefiting all users regardless of browser platform.

I'm sure Firefox will release a Firefox plugin that will complement the basic service of identification. Imagine a plugin that lists all the websites you can authenticate with Persona. Or what if you had multiple personas, the firefox plugin can help you manage the selection of personas. Eventually, it'd become baked into Firefox, giving users that sense of it fundamentally "safer" than other browsers. Sure, this is all speculation, but it's a good marketing strategy on Mozilla's end and the start of gaining back the average consumer market share.

I personally feel the pain point of password/identity management across different websites, and I'm using LastPass to help. While LastPass's browser integration is great, its UX is... lacking. Mozilla's strategy to associate Firefox browser with identity is IMO awesome and the first sign that it's pioneering vs reacting to Chrome (before this news, I've always viewed Firefox as Chrome's successful but still little brother in terms of features, polish, performance, support, etc.).

BUT (and this is a big "but" I feel), this is contingent with their execution of browser integration. W/O rock solid browser integration with fluid UX, this would just add noise to identity services and cause more consumer confusion.

Ultimately, I'm rooting them on because a) I'm concerned about my security and b) I have too many passwords and c) I'm hella lazy.

Definitely agree. I'm not sure if the OP is the author, but if he is and if he's trying to draw attention, then the motive shifts from sharing insightful lessons to personal "winning" (getting the most karma points, getting the most page views, etc). This seems to be the recent trend, and I'd like to see less emotionally charged titles for better reader engagement, even if it comes at a cost of less overall views.

I definitely agree with the statement about prototyping and testing. Testing is another signal of quality, a guarantee if you will, to your stakeholders that your software provided is dependable and trustworthy. That doesn't matter if you have no customers to begin with!

I'd also like to throw it out there that testing can be especially helpful when writing code against known problems. Some benefits are:

- Since you already know the problem domain, your test writing will be extremely quick and effortless, so the benefit of having that test in the first place far outweighs the time/effort invested in writing them.

- In dynamic languages especially, typos are what kills you in this situation. Testing will quickly catch 'em as you program.

- Finally, testing will force you to think more about the edge cases, since implementation is a straight-forward process. Thus, you'll spend less time later doing QA and have an overall more polished feature.

tl;dr: While not all recruiters are bad, I was better off just directly applying to companies and avoiding recruiters as much as possible.

A couple of months ago, I was interested in what the SF market had to offer, and I started responding to some of the emails coming my way.

Over the three month period, I've probably been approached by 3 retained recruiters and 10 contingent recruiters. All the retained recruiters (i.e. internal company recruiters) were thorough, thoughtful, and curated the opportunities to my career goals. Not only did they make sure that I was a qualified for the job, they made sure from the get go that I'm a good cultural fit and the position aligns with my personal goals.

Contingent recruiters, on the other hand, rarely asked what I wanted to do. Every single interview that they'd supposedly set up for would fall through, either because they didn't double check the position's needs or that they had communication problems with the hiring company. Additionally, the recruiters' coworkers would call me in the middle of the day several times a week to tell me about some new opportunities. I was still working at the time, and it was annoying to constantly step out of the office to hear nothing substantial. The whole process left me feeling like I was just a piece of meat.

In the end, I had a much better experience just getting a list of companies that were hiring from the recruiter and directly applying with the companies I was interested in myself. When the HR asks how I was referred, I'd usually mention the recruiter out of karma. If I were to do it again, I'd probably avoid the recruiters altogether and go directly for the companies I actually care about.

I can say I understand where you're coming from, and if you carry that chip on your shoulder for the rest of your life, you'll do just fine.

I want to share my personal story, since I felt the same way you did when I was in college.

Coming out of school 2 years ago, I thought I was screwed. I had a shitty GPA, I had no work experience (not even internships), and I never took on a personal programming project. While my friends were getting offers months before graduation, I was still applying to companies (and not hearing back from any of them). Finally, a small .NET web shop gave me a call, and I royally screwed up the technical questions. The interviewer, with a disappointed sigh, asked me if I had any questions for him before we end the call. This was my opening, my chance to show him that indeed I did care about his company and, ultimately, programming. Prior to the call, I had done a lot of research on the company and who their big clients are, so I told him how cool that was and then asked what was the coolest project they've worked on. Impressed, the interviewer immediately changed his tone, and it was as if the interview restarted over. I pressed on, showing him my enthusiasm not only for the company, but for programming and how I wanted to become a better engineer tomorrow than the day before. The director, listening in on the call, pretty much gave me an offer. The offer was severely under market rate, and I was on a very short leash (3 month trial), but I was so happy, I cried. I knew that the next step was to impress the shit out of them.

So starting day 1, I'd gobble up everything about the tech stack and the domain. I'd subscribe to every .NET blog I could find. I bought and read books about design pattern and enterprise architecture. I listened to programming podcasts as I drove back and forth from work, and sometimes I'd listen to it as I tried to fall asleep. I'd constantly ask questions to my senior engineers about the .NET nuances, IoC containers, and good engineering practices. I questioned why we didn't do TDD, why we didn't switch from the Web Forms to MVC framework, why we're still using LinqToSQL instead of Entity Framework.

In three months, I got a raise, and within 6 months after that, I got another raise. My director called me the "rising star" in our company. I worked my ass off not because I wanted to prove to the world that I was good, but I wanted to prove to myself that I'm not a chump programming monkey.

A year after my first job, I got an offer to work at a friend's startup in SF, despite the fact it was on a Rails stack with WAY different architecture/requirement. Again, paid under market rate because of my lack of experience. Applied the same work ethic and dedication to the job. Learned how to scale, how to design web apps top to bottom, how to architect our systems topology, and how to get shit done.

On my personal time, I decided to build a website that would help the alumni members of my college fraternity keep in touch with each other for networking and inspirational purposes. Leveraging my knowledge from my job, built the entire damn thing, from the DB schemas, to the domain logic, to even the HTML/CSS. Initially it was built on ASP.NET MVC, then rebuilt the whole thing in Rails to improve our development speed. Now, I'm asking around other student orgs to see if they'd be interested in using our website.

Now, I guess I am that rockstar programmer, even though I don't really think that. Recruiters are constantly messaging me for job openings. I just got two offers from both a big, respectable company, and from another startup. It's surreal. I never thought I'd see this day, but I still have that chip on my shoulder to constantly improve. The point I'm trying to get is that it's not about where you start but it's the journey you're willing to take to get where you want to be. Earlier, tytso commented that you have to start at the bottom with an entry-level job, and it probably won't be the glamorous FB/Google/Apple/blahblahblah job that you so want. But that doesn't matter as long as you work in a place that you can get really fired up about. In my experience, a lot of managers would hire passionate, inexperienced guys over talented yet indifferent engineers because company culture is a big deal.

So what is it that you can do to prepare yourself right now? First, network the shit out of your school. Make as many friends as you can, regardless of their majors or background. I guarantee you you'll find other people who are smarter and more motivated than you are. Surrounding yourself with ambitious or A+ kids will a) in the short term inspire you to work harder and b) in the long term, they'll become valuable assets for your career. Then start a programming project. Right. Now. In my last year of college, I built a beer pong tournament website on LAMP. It wasn't the prettiest thing, visually/architecturally, but still proud of that thing. (For fun, I'm trying to rebuild it again with backbone, Rails, and MongoDB.)

Never forget this moment of frustration. In fact, embrace it. Use it as your motivating fuel. And then go do what makes you happy.

Most definitely. The one thing I try to be constantly aware of is whether I'm trying to learn too much at the same time, and whether what I'm learning is applicable to what I'm trying to achieve. Occasionally, I'll reward myself with something else that I'm interested in that isn't "pragmatic" per se. All about finding your personal happy balance between learning something applicable vs satisfying that insatiable curiosity .

Definitely agree with you larrys. It's about satisfying that innate curiosity that we all share. Some fiction books help the readers explore the inner emotions and other personal dynamics; information on how to scale your business/stack/team/product/whatever is just another channel for us to explore about the human potential (and thus, our own personal potential).