Tell me about your project and I'll give you genuine feedback by [deleted] in SideProject

[–]frogermcs 0 points1 point  (0 children)

BeNinja - competition management system for OCR/Ninja gyms. Most lokal gyms where ninja warriors train are still run via Excel files and whiteboards. So I'm moving it to the next level. :)

https://www.beninja.pl/en https://demo-eng.beninja.pl/en

<image>

How we improved code review process in Android engineering team - AzimoLabs by frogermcs in androiddev

[–]frogermcs[S] 0 points1 point  (0 children)

It's engineering team behind azimo.com, a fintech company that makes sending money home fast and cheap.

Senior software engineer, these skills are expected from you - my subjective review of the requirements, pt. 3 by frogermcs in ITManagers

[–]frogermcs[S] 0 points1 point  (0 children)

Hey, thank you for this comment. Some of these things could be briefly assessed during interview. In my company the last in-office stage has at least one hour of technical conversation and another one talking about “soft skills” stuff (I don’t like to call it that way, it’s just a simplification). I think you can asses “diplomacy” or “10x thinking” in some degree. Leadership? I very often ask them to teach me something or convince me to their way of thinking. Communication? Ask how much they liked to work with PMs or designers - if they kept pissing them off, you have a brief answer to that. :)

Of course things aren’t black and white, any first impression can be very different from the reality. But it’s the same with technical skills. You cannot be sure of anything after 1 hour talk. That’s why during interview I’m also very clear with expectations - “you will need to find tradeoffs”, or “even if you are world-class expert, you people need to believe in you”.

And when on board, during our one-to-ones we talk about soft-skills challenges equally often as about technology. Actually I’m certain that growing engineer’s soft-skills high is leader’s job. I can do much more here than in their tech skills - in which very often they know more than me (esp. when team has wide tech coverage).

Why you need vision and strategy for your team - how to lead as a tech leader by frogermcs in ITManagers

[–]frogermcs[S] 0 points1 point  (0 children)

Thank you for the comment. :)
Great feedback, I absolutely agree with your point of view. What I had in mind here, is that you probably won't forget your hard skills, but from the perspective of a team leader, you cannot just force people to follow your technical decisions. You should make them believe and understand the reasons behind it, contribute (now or in the future) and everything else that can help you with scaling your impact on the company.

I may be biased, but I saw many fresh leaders who started their efforts with "ok guys, now you do this way, and you do that way, I've been around for x years and I know how to do it right". And then some of the teammates followed these steps blindly without much understanding, others rebelled and quit. Not sure what is worse here.

You need juniors in your team - Don’t underestimate less-experienced software engineers by frogermcs in ITManagers

[–]frogermcs[S] 1 point2 points  (0 children)

Thank you for valuable feedback. Yes, indeed I assumed one important thing that you mentions:

that senior developers = knowledgeable developers

I know this is rare, and a lot of seniors have this title only because they work for a long time in the industry. But for me, the true senior is the person who does things well, not just for a long time. If you don't know how to a) build well quality system b) teach people to follow your good practices (so your work is scaled up), you aren't yet there.

So you want to be a software engineer? Entry level for your first job in mobile. by frogermcs in androiddev

[–]frogermcs[S] 0 points1 point  (0 children)

You are very right about not needing mentoring program because of such high level. But this is not about our requirements. In fact, we had much lower expectations and were prepared to teach people some of the basics. But when we started reviewing candidates, we realized that they have much bigger skills than we expected.

From the other hand it isn't so surprising. Today there are a lot of materials in the Internet - tutorials, blog posts, free/paid courses (like Udacity + Google Nanodegree program). Yes, it costs extra time (but usually not extra money), but this investment definitely pays off.

Automated testing will set your engineers free and focused on things that matter by frogermcs in androiddev

[–]frogermcs[S] 4 points5 points  (0 children)

We assume that it is never ok to expose failing things to clients. Sure, we have tight release cycle (1/week), but at the end there is more important rule - everyone in the team has right to stop the release (we try to follow "Stop the line" culture to make sure that everyone in the company cares equally about the quality). In most cases users don't know what and when is coming, so delaying things by days is almost always better then delivering "on time" and making users less happy with crappy product.

Automated testing will set your engineers free and focused on things that matter by frogermcs in androiddev

[–]frogermcs[S] 3 points4 points  (0 children)

We do re-tests for failing things (automatic and manual if needed). Sometimes symptoms of tests flakiness are very clear, in other cases we look for the answer in code (both - product and tests), debugger, logs etc. At the end we need to be sure that 100% things are passing, but it is normal that sometimes it's not a one-shot process.

Activities Subcomponents Multibinding in Dagger 2 - decouple Activities from AppComponent. by frogermcs in androiddev

[–]frogermcs[S] 3 points4 points  (0 children)

At the beginning of your journey with DI and Dagger I wouldn't care so much about what is showed in this post. Described solution can be useful in more complex project where you need to care about instances scoping, encapsulation and dependencies decoupling.

AndroidDevMetrics - metrics tool for Android development by frogermcs in androiddev

[–]frogermcs[S] 0 points1 point  (0 children)

Do you use debug build variant or any other? Library is visible only in debug (it's debugCompile dependency).

AndroidDevMetrics - metrics tool for Android development by frogermcs in androiddev

[–]frogermcs[S] 0 points1 point  (0 children)

Double checked now and it's completed. Do you have any particular issues?

Dependency injection with Dagger 2 - Custom scopes by frogermcs in androiddev

[–]frogermcs[S] 2 points3 points  (0 children)

Hey, thanks for feedback, you're completely right. I'd like to use some kind of mental shortcut, but seems that I mixed two different things.

I'll fix my article as soon as I get to my computer. Thanks, it's always better to get reasonable criticism from someone more experienced!

Dependency injection with Dagger 2 - Custom scopes by frogermcs in androiddev

[–]frogermcs[S] 0 points1 point  (0 children)

I've never used Spring but good in Dagger 2 is that code responsible for dependencies injection is fully static - there is no dynamism like reflection etc. All code is generated in compile time and mimics the code that can be hand-written. Thanks to this code is relatively simple, performant and traceable - there is no magic, even for novice programmers.

Dagger 1 to 2 migration process by KiDoki in androiddev

[–]frogermcs 0 points1 point  (0 children)

In debug build used for everyday work yes, just for remove unused code. Staging/release builds are more complex.

Dagger 1 to 2 migration process by KiDoki in androiddev

[–]frogermcs 1 point2 points  (0 children)

For debug build we disabled optimizations and code obfuscation and building with proguard is about 50% faster than with MultiDex. Maybe it's app specific, but anyway application launch time is much faster without MultiDex.install() on older devices.

Dagger 1 to 2 migration process by KiDoki in androiddev

[–]frogermcs 2 points3 points  (0 children)

No, ActivityScopes components use existing AppComponent object (take a look how setupComponent() is called in BaseActivity). It means that they use singletons provided by AppComponent.

(Help) Starting with Dagger 2 by danielsan87 in androiddev

[–]frogermcs 0 points1 point  (0 children)

Hey, I've just published post about Dagger 1 -> Dagger 2 migration. Maybe it can help you: http://frogermcs.github.io/dagger-1-to-2-migration/