TGViewer
Channel Public Channel
Efficient programmer's notes

Efficient programmer's notes

@efficient_programmer

https://boosty.to/andreykas/donate - link to support me

This channel was created to share my experience in making countless attempts to be a more efficient and healthy person and programmer
Subscribers
80
Photos
4
Videos
0
Links
30

Showing posts older than #45 · Back to latest

Older Posts 20 shown
Post #43 407
Learn blockchain, bitcoin, and web 3.0

What is the hypest thing in software development nowadays?
I bet it is Web 3.0 that includes topics like blockchain, dApps*, smart contracts, and other buzzwords.

I've connected my diploma thesis with blockchain and its security features because I've been wanting to figure out how this works for ages.

I've dug a bit deeper than blockchain and can't stop satisfying my curiosity. I believe these technologies are still in their early stages of a long-term trend, so you and I are not missing the boat yet.

If you've always wanted to understand blockchain and how/why bitcoin works under the hood, here are only two videos I want you to watch (1,2). These are visual demos that explain basic concepts like hashing, blocks, transactions, coinbase, distributed ledger, digital signature, and how it all works in tandem.

Here are some other resources that I found valuable:
1. MIT course on blockchain and money (en, ru). Learn fundmentals with Gary Gensler - an American government official and former investment banker. Btw, I've skipped the first two lectures about the history of money just because they're boring.
2. Binance academy - "your one-stop guide to all things crypto." If you like reading articles more than watching YouTube.
3. Polygon** academy for developers. It seems to be a fast start to developing decentralized apps.
4. How to DeFi beginner/advanced and How to NFT. I've not got around to these yet but heard only positive feedback.

If you have something to add to the list, write it in the comments. I'm still quite a dummy in the theme, and will appreciate every suggestion.

*Decentralized apps
**A scaling solution for the Ethereum blockchain

#crypto #blockchain #learninpublic
  • 👍 6
Post #42 338
Easy money or How not to get followers

It was a long time ago. It was a time when every other article on the internet was about getting easy money, or at least it was just my filter bubble. I didn't have any skills besides playing tennis, though an idea of even insignificant online income seemed attractive.

So I've found a way. My work was to subscribe to other communities in VK* via a special platform. Every subscription gave me a couple of cents. At the end of the week, I had around 1k communities in my subscriptions and some dollars that I exchanged for a VK's internal currency and happily spent on online poker. I felt contended. Soon, I've cleaned up my community list.

I was wondering why did they pay me for such easy tasks. I've realized their business model not so long ago when I got interested in marketing. The platform I was using applied the CPA (cost per action) model.

Advertisers want to get more subscribers for their communities. They pay 0.2$ dollars for a subscriber to this service. Service offers you 0.02$ for a single subscription and earns 0.18$**. Advertisers get their subscribers, you and service earn money. Win-Win-Win.

Not so fast. Remember, I said that I'd cleaned up all my subscriptions after the experiment? Here's the catch. Advertisers get a disloyal and non-target audience.

Do you need these people as an advertiser?
Maybe, if your channel targets the general public (memes, news, funny cats&dogs). Probably, many people will stay with you if you have decent content. If your channel is domain-specific, every other subscriber coming from such a platform will unsubscribe ASAP as they get money or hide your posts from the feed because he/she most likely doesn't give a damn about you and your topic.

So, the conclusion is to make people subscribe to you because they are interested in you and the content you produce, not the money you offer them to subscribe.

You'll ask me how it's connected to programming. I've prepared two points for this case:
1. Every developer should be a bit of a marketer to sell his ideas, solutions, projects, and himself/herself***. So from now on, you may see posts about marketing on this channel.
2. I've considered this info interesting and worth writing about.

*Russian analogy for Facebook
**Numbers may vary
***During the job interview or working as a freelancer

#marketing #thoughts
  • 👍 5
Post #39 282
Stop using those annoying spinners

I've been catching myself thinking that loading spinners really piss me off lately. It's okay when I see them while logging in to some service, but it becomes a living hell when I see them everywhere afterward. In some mobile apps, you may encounter them on each and every screen. Moreover, I've seen a web app with 10-15 different sections on one screen with 10-15 spinners. One for each section.

I do understand why people use them. It is the easiest way to show that something is loading. And it's even worse when you don't give your user any feedback. But these spinners have some serious flaws.

In The Psychology of Waiting Lines, David H. Maister describes the psychology of queueing. The concepts from his research can be applied to any situation when people are forced to wait for something.

Here are my three takeaways:
1. Unexplained waits feel longer than explained waits.
2. Unoccupied time feels longer than occupied time.
3. Anxiety makes wait feel longer.

And now you can see why bare loading spinners are garbage:
1. They don't explain to us what we are waiting for.
2. We can only watch at the spinning wheel, which is boring. You can compare it to looking at the clock.
3. We don't know when it'll end.

Here is what you can do to fix it:
- Explain the wait. Put some text like: "We are looking for available tickets so you can forget about your work and chill out on the Miami beach. This might take up to a minute." below the spinner.
- Occupy your user with additional information, a short survey, fan fact, or motivational quote.
- Show progress indicator, which will display the actual progress. You can estimate the speed of the progress bar using historical data if you aren't able to get real-time feedback from the application.
- Remove the spinner if it is a placeholder for other content. You might have noticed how Google, Facebook, Instagram, and other big services handle such situations. Google shows low-quality images while high-quality ones are on their way. Facebook and Instagram often use Skeleton UI*. Facebook has even developed an open-source library Shimmer for Android and iOS that make these skeleton screens even more appealing.

*A skeleton screen is a UI that doesn't contain actual content; instead, it shows the loading elements of a page in a shape similar to the actual content.

#dev #thoughts
  • 👍 4
Post #38 327
The Broken Window Theory or Why Technical Debt is an Evil

Have you ever heard about the broken windows theory?

It states that any visible signs of crime and civil disorder, such as broken windows, vandalism, loitering, public drinking, create an urban environment that promotes even more crime and disorder.

"One broken window, left unrepaired for any substantial length of time, instills in the inhabitants of the building a sense of abandonment—a sense that the powers that be don’t care about the building. So another window gets broken. People start littering. Graffiti appears. Serious structural damage begins. In a relatively short period, the building becomes damaged beyond the owner’s desire to fix it, and the sense of abandonment becomes reality." - Andrew Hunt & David Thomas in "Pragmatic Programmer"

Therefore, we may conclude that policing these relatively small misbehaviors will decrease or prevent an increase of the crime rate in the area.

I hope you've already noticed where I'm going.

If you leave "broken windows" (bad designs, wrong decisions, or poor code) in your codebase, very soon it'll become a "dangerous place to live in". So, don’t leave them unrepaired. Fix them as soon as they are discovered, otherwise, all of a sudden, you'll need to get a dumpster, or move to another neighborhood.

Easier said than done, yeah?

#dev #thoughts
  • 👍 5
Post #37
Efficient programmer's notes pinned «Some thoughts on this channel Hello, my friends. It's been about a month since I've started this channel. And there are already 10 posts in here. These posts mostly are about good habits + efficiency. I appreciate all of you who were reading them. Hope it…»
Post #36
Efficient programmer's notes pinned «Hello, my fellow friends. I'm on detox now. It means that I'm trying to read books instead of scrolling the newsfeed, watching online courses instead of Instagram stories, eating fruits/vegetables/nuts/otherHealthyStuff instead of trashy snacks, walking every…»
Post #35 578
English from zero to hero (or from anywhere to hero)

Hi everybody, today I'd like to recommend a YouTube channel for those who want to get better at English regardless of their current level. In case you are C2, don't forget to suggest it to your friends when they ask you how to learn English.

I've heard about it from a programmer's interview who moved to the US, checked it out because I'm still on my long and complicated way to watching movies without subtitles (currently somewhere between B2 and C1). And it appeared to be a godsend.

There are 3.2k videos in total with 1.3m subscribers on the channel for Russian-speaking people. The guy has plenty of playlists of all kinds: Grammar from zero to hero (649 videos), 50 lessons for each level (A0-C1), English by formulas (398 videos), and much more. Here is the same channel, but completely in English. By the way, he also has many other channels, which partly duplicate the content of the main one. I've heard he also owns a mobile app "Engish Galaxy".

I've watched just a couple of vids from a C1 playlist and can say that I've enjoyed the process. If we take into account that all of these videos are high-quality, just imagine the amount of work done by Alexander Bebris.
Not afraid to call him Pavel Victor of the English education world.

However, you shouldn't forget to practice other skills like writing and speaking to improve your English.

If you are already acquainted with this man or his channel(s), I'd like to hear your thoughts about it. If you know any other good resources for learning English, it is a great chance to share them with others.

#english #career
YouTube English Professionally - phrasal verbs in English, English grammar lessons and English words We learn English grammar lessons for beginners (full course) and other levels (elementary, pre-intermediate, intermediate and advanced). We study how to learn English speaking easily. You'll also see lessons for English speaking pratice, tenses in English…
  • 👍 2
Post #34 418
Caching strategies

Why do we need caching? It's simple. People don't like loaders*. Moreover, people don't like waiting. So, caching some data to instantly show it next time a user asks for it without requesting the server increases app's UX. Which increases user retention. Which increases app's profit.

I have once stumbled upon a problem related to caching and cache invalidation in a mobile app. My main problem was that I'd never done it before and tried to reinvent the wheel. Luckily, my caching strategy was not so tricky. The cache had an expiration date, so I could invalidate it after a day/week/month, and the app could force an update from the server if needed by the "pull to refresh" thing.

After a while, I've found a talk from a mobile conference about different caching strategies. I'll shortly describe all of them, so you don't need to waste 30 minutes of your precious time watching the video. If you're interested in the theme or feel that something is still unclear after reading the post, then go to YouTube and watch the video (it is not boring at all, I promise).

Thanks to the guy who has even drawn block schemes for every strategy. I'll attach them in the comments.

Okay, let's start.

1. Lazy cache

The most basic one. If user request's some data, we try to find it in cache. If it is there, give it to user. If not - make a request to the server and update the cache with data from successfull response.

Pros:
- easy to implement
- instant data delivery
- cached data is independent of internet connection

Cons:
- no cache invalidation

When to use it:
- apps with immutable data that you should upload once a while like book readers, offline apps, etc.

2. Synchronized cache

The same thing as a previous one, but there are two new steps for invalidation. Local (by expiration date for ex.) and server (by status code 304 NOT MODIFIED for ex.) invalidation. If cache is valid we return data to the user.

Pros:
- faster delivery time for up to date data
- invalidation

Cons:
- dependent of connection

When to use:
- apps with not idempotent data*** where user can't add or edit this data. For example: news and booking apps

3. Write-through cache

The most difficult one to implement. However, the reading process is the same as in synchronized cache. But when we apply some changes, we need to synchronize them with our server database.

Pros:
- faster delivery time for up to date data
- invalidation
- full synchronization with server

Cons:
- dependent of connection
- after failed write we should go back to the initial state
- complex implementation

When to use:
- messenger is a best example

4. LRU cache

It speaks for itself. Least recently used cache is removed when we are out of cache memory, so we can put new piece of data in the cache. However, the invalidation now is in write process. MRU and other algorithms can be used.

Pros:
- instant data delivery
- cached data is independent of internet connection
- customizable invalidation mechanism
- not inflating the size of cache data

Cons:
- complex implementation
- you should be careful with invalidation. For example, you may remove some cached data, that user will need in a second.

When to use:
- apps with heavy content like instagram

* those annoying spinning things, which indicate that we are waiting for data from the server
** if there is no connection, we can't properly invalidate our cache
*** the data may update if you refresh the page

#dev
YouTube Дмитрий Васильев — Как кэшировать информацию в Android-приложении и не стрелять себе в ногу Подробнее о конференции Mobius: https://jrg.su/ojGU3B — — . . . . Дмитрий расскажет, чем руководствоваться при выборе предпочтительной стратегии кэширования для вашего проекта, и поделится опытом своей команды в реализации по-настоящему быстрого и гибкого…
Post #33 294
A small (27-inch) upgrade for my working desk. Excited to try it out. Actually, already watched "21 Jump Street"🙃
  • 🔥 1
Post #32 314
Size matters

I've recently read about interesting studies from Microsoft. According to them, if you are looking for a technological solution to boost your productivity, almost the only effective way is to buy a large monitor or even two of them.

I found it intriguing because I'm still working on my 13-inch laptop and have recently started to think it's not enough anymore.

Another study from the University of Utah has shown that people using 24-inch monitors complete a series of tasks faster than people with 18-inch monitors by around 52% working with text documents and 26% with spreadsheets. They've also found that taking something more than 24-inch doesn't actually improve users' performance anymore.

Of course, users from experimental group may not have known hotkeys for switching between windows or their tasks can't be compared to programming. So, one may say it doesn't work this way.

But I see some obvious reasons for such results and how bigger monitor can increase my productivity as a programmer.

A bigger screen:

1. Decreases switches between windows.

I usually have 3-4 windows opened at once while working: code editor, phone simulator or browser, UI design, and StackOverflow. For now, I have 3 macOS desktops with needed apps in full-screen mode. Switching from one to another takes time and mental energy.

2. Allows seeing more information at once.

"When people have to remember more, they tend to focus on fewer possibilities and fewer possible solutions. In other words, when people can only see a limited amount of their data, they have to remember the rest, which tends to limit them to fewer solutions and fewer strategies." You can focus on solving the problem instead of remembering some parts of your program.

3. Takes more space in my vision field, which results in better concentration, because I become less distracted. (Personal point)

I've also read from some authoriative sources, that 24-inch is not the limit. The perfect size and configuration depends on type of tasks you have to complete and your working style. So, choose your own path to happiness.

What's your current setup? Are you happy with it?

#efficiency
Post #31 261
HAPPY NEW YEAR!!!
Post #30 359
Mental programming by Kirill Mokevnin (2021). Easy to follow rules to write good code.

1. There is a difference between understanding the code and understanding the problem it solves. Good code should have both.

2. If you are unsure if a variable or method name fits your needs, send it to a chat and ask people what they expect from it.

3. Strings. There are no checks for strings. Therefore, if there is code like if (order.status == 'delivering') {...}, and you decide to rename a status label, you should manually find all the places, where you've written such checks and fix them.

What is a solution? Keep such checks in one place.

There are two possible ways to do it:
1) Method: order.isDelivering()
2) Enum: order.status == OrderStatus.delivering

4. Don't save on variables. Oneliners aren't cool if they prevent you from understanding the logic.

A popular example from C language: while (*dest++ = *src++);

5. One vs Many in variable naming.

If I see a variable named attributes, then I expect it to store some collection, not an individual object.

6. Semantics. Make your code meaningful.

Example: if (!items.children) {...}
Do you have any clue of what did we just checked? Me neither.

7. Null object pattern

In some cases instead of writing checks like
if (user != null && user.isAdmin()) {
user.doSomething();
}*,
you can use Null Object Pattern.

"We should use the Null Object Pattern when a Client would otherwise check for null just to skip execution or perform a default action. In such cases, we may encapsulate the neutral logic within a null object and return that to the client instead of the null value. This way client's code no longer needs to be aware if a given instance is null or not."

For the example above it could be
final user = cond ? AdminUser() : Guest(),
where Guest is a null object.

8. Command-Query separation

"It states that every method should either be a command that performs an action, or a query that returns data to the caller, but not both. In other words, asking a question should not change the answer."

Example: user.isValid() - predicate that returns boolean. We don't expect it to change anything. If it somehow modifies our state under the hood, it'll be almost impossible to find the bug when we face some weird behavior.

*This example doesn't apply to languages with null safety like Dart and Kotlin

#dev
YouTube Мокевнин Кирилл, Хекслет - Ментальное программирование 3 Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
Post #28 244
Procrastinate like a PROgrammer

How do people usually define pi variable (without math library) in their code:

Dart: var pi = 3.1415926535;
Python: pi = 3.1415926535

Stop it. This is just boooooring. Learn Rockstar language created by Dylan Beattie to become 'CERTIFIED ROCKSTAR DEVELOPER' and your code will look like a hard rock song from the 1980s.

Rockstar: My heart was ice. A life unfulfilled, wakin' everybody up, taking booze and pills

With its syntax, even the worst code can look like a piece of art.

There are people all over the world who like coding for fun creating many interesting things. Have you heard of naked html or generative art, or maybe a program written in C that looks like a donut that produces a 3D rotating donut in terminal?

Watch this video from a conference with a charismatic guy, I've mentioned above and have fun 🔥🔥🔥

#fun
Post #27 250
Choosing the perfect language/techology to work with

Before Flutter, I didn't know what I wanted to do as a programmer. I've tried different languages and technologies in university and by myself, and nothing made me happy.

I've taken a half-year online course on PHP/Laravel for beginners at school. Created a simple website for a cafe and forgot about this technology. Moved to Russia, where everyone around was saying that it is not mainstream anymore. "Look how cool are Python and Node.js," they said.

I've started learning Python/Django during my second year at uni. Learned a lot (at least I thought so) while working on small projects as a full-stack for other students. Several times in 1,5 years period tried to land a job as a python backend developer - failed. Funny that I've actually couldn't answer questions like "What is a hashtable lookup time complexity? What is a context manager in python?". Yeah, my knowledge of theory sucked. So I've decided to read Mark Lutts' thick book on python and try again - failed.

One day, I was looking through vacancies on HeadHunter and realized that there are so much more Java backend developer vacancies for interns and juniors in Saint-Petersburg. More vacancies - more chances to get a job. So I've started to think about switching to Java. And I've almost done that. I've tried and wasn't excited about it at all. I wanted something cooler and trendier, like Node.js.

Hopefully, at that very time, I've stumbled across Flutter. I've tried it out, liked it, and decided to do as much as I can to get my first software engineering job in a company - success.

What is the moral of the story?

This post's initial title was "The sooner you decide on what you want to specialize in, the better." But in the process of writing, I've realized that this is just half of the truth. Another half in that you should try to know what you like the most. And even if you choose to switch technology, you still have some knowledge and experience, that may be applicable in the future.

At the end comes this moment, where you have to commit to hard work for several months/years. Focus on consistency. Have a road map with clearly defined milestones. And you will succeed. Cause after all, programming is not so hard.

#career #thoughts
Post #26 295
How to pass a test task

Hi there. I've been checking a lot of pre-employment test tasks recently as a part of my job and noticed that all junior developers fall into similar traps. And here is a little post on what you should pay attention to, so the reviewer will approve your code, and you'll get more chances to land the job.

Usually, test tasks for mobile developers look like a simple app that an average junior developer can create in one weekend/week. Some companies may place greater emphasis on the UI part, some - on client-server communication or something more specific to their current project. The checklist below is a must-have in any of these cases.

Two main things I'm looking for in a test task while reviewing are the usage of the stack we use in our company and code cleanliness + overall tidiness.
Why? I want to be sure that my potential colleague will start delivering new features ASAP, and his/her code will be maintainable.

Here is a full checklist:

1. Reuse your code. Try to follow DRY and SOLID principles.

2. Don't overthink architecture: divide your code into well-defined layers. If you have no idea how to do it, ask somebody more experienced from the community.

3. Use the company's tech stack. I often see companies mention some libraries and approaches in their job requirements section. Show that you know them.

4. No commented out code, no logs. That's it.

5. Use linters. It may help you to follow the style guides of the language and/or framework. It annoys me when I see files like SomeUsefulClass.dart instead of some_useful_class.dart, or functions returning dynamics instead of defined types.

6. Don't forget about basic Dependency Injection

7. Think about basic UI/UX principles: no fancy fonts, no tiny/gigantic font sizes, no colors that contradict each other. If you are not a designer and Figma was not provided, try to make it as minimalistic as possible. When waiting for the response from the server, make the user know that something is going on - show a loading indicator. If something went wrong, show a clear error message. Remember, "An error occurred" is a bad one.

8. Run your code before submitting it. Don't waste the reviewer's time making him git clone, build and run your app only to see that it crushes.

9. Bonus tip: write a clear Readme. Just a basic description of the app is enough. Maybe nobody will notice it, but I always do.

If you have something to add, write it in the comments.

If you're a junior looking for a job, break a leg🍀

#career #dev
Post #25 246
Soft Skills: The software developer's life manual - book review

Several years ago, I was that kid who thought that the mainstream for Soft Skills in IT was totally weird. I believed it was all about communication with others, and introverts can't be effective in this field. Since then, I've learned the number one rule for effective communication with others: "Don't be an asshole," and life became a bit easier.

Moreover, it turned out that Soft Skills are not only about communication. There are also skills like time management, self-motivation, self-marketing, adaptability, critical thinking, learning, and more.

So, if you're interested in mastering these extremely valuable skills as I am, I highly recommend you to read John Sonmez's book "Soft Skills: The software developer's life manual." The author is a developer and a life coach, founder of Simple Programmer website, owner of two youtube channels (1,2). He is now selling out a lot of courses on related topics, but that shouldn't bother you. The book has minimum amount of water.

I think this is the most up-to-date book on Soft Skills for developers. It is divided into 7 sections: Career, Self-Marketing, Learning, Productivity, Fitness, Personal Finances and Spirit. You can read it from cover to cover, or pick only those topics you're interested in. For example, I've quickly sifted through the first chapter about career 'cause I've read a lot about it in other books, and attentively read next chapters about self-marketing and personal finances which were quiet useful.

The book is easy to read, and chapters are really small which allows quickly reading one of them while riding public transport. Moreover, it is full of practical examples, personal stories and assignments, so you could start "softly" upgrading yourself right away.

So, I'm 100% sure that it's worth reading for all software developers who understand that having great Hard Skills are not enough anymore for a successful career.

#books #career
Post #24 222
My Flutter story

Probably, this is one of those topics I'm the most excited to write about. The story began 1.5 years ago when I wanted to develop an app for learning new English words. If you'd asked me why didn't I take one of plenty of existing apps, I wouldn't have a rational answer. I've needed a brand new app for Android and iOS to study English with my girlfriend. (Spoiler Alert! I've never written one.)

So, I've started to look for ways to build such an app without learning Android/Kotlin and iOS/Swift. I've stumbled upon a video on YouTube that was comparing several cross-platform technologies. I guess they were React Native, Xamarin, and Flutter. I despised weakly-typed Javascript and Microsoft's version of Java - C# that went in pair with the first two technologies (I haven't even tried to understand how these frameworks work internally). At the same time, I've needed a breath of fresh air. So, I've started a pretty long course on Flutter/Dart (40+ hours) on Udemy and completed it in two months.

Probably somewhere here, I need to give a quick intro to the framework for those who don't know what it is.

Flutter is an open-source UI SDK created and released by Google in 2017. It is used to develop natively-compiled multi-platform apps from a single codebase, i.e., apps for Web, Desktop (Linux, Windows, macOS), and Mobile (Android, iOS). I think Java's slogan can be applied to Flutter: "Write once, run everywhere."
The framework heavily relies on Dart language (another invention from Google). So Flutter developers mostly write Dart code. For me, it is something between Java and Javascript. Not so cumbersome, but still statically typed.


Enough of theory for now. I'll need another post to list all the features of the Flutter/Dart stack and tell you what makes it better/worse than other solutions.

After the course on Udemy, I started making a Quiz app for my Mobile development classes at Uni and learning new libraries and approaches from ResoCoder's videos, the official Flutter channel on YouTube, and different thematic conferences like DartUp, Mobius, Flutter Live/Engage/Interact. Not to mention that I was freelancing with Python/Django here and there at that time. I've become acquainted with many topics: declarative UI, streams, state management, architecture, error handling, networking, Firebase, caching, theming, localization, notifications, and more.

Seven months after I first heard about the framework, I landed my first job as a Flutter developer. Since then, I've been working on several projects, and most of them are under NDA.

#flutter #career
Post #23 217
Read the source

What is the best way to become a better writer? Reading more. The same concept can be applied to programming.

I've been reading a lot of source code recently. Of course, not for fun. I had a troublesome task I'd never done before. Therefore I didn't know where to start.

So I've git-cloned an open-source library that solved a similar problem, and decided to adapt it to my needs. Little did I know what awaited me. I wanted to take the path of least resistance but found myself reading and understanding the code written by a stranger. Luckily, the package was small and relatively simple. However, I've managed to learn a lot of new things and changed my view on this topic.

Here is how reading sources may benefit you as a developer:

- It may help you to learn from gurus. Let's imagine you know a skilled programmer, but he is not as public as he could be. There is no conference with him on youtube you could watch or blog you could read. However, he contributes to open-source. The only way to learn from him is to read his code and try to understand something.

- Sometimes it's easier and faster to read the sources than look through docs or watch a tutorial on Youtube. Moreover, library creators often leave many comments in their code.

- You'll learn how popular libraries work under the hood and will be able to choose the most appropriate one. I often see heated debates about state management libraries/approaches in Flutter. How one is 1000 times faster and more convenient than another. Hello, GetX versus anything else. Everything in Dart/Flutter world is open-source. So try to understand how does it work.

- You develop a crucial skill - reading code. It's not a secret that an average developer spends more time reading code than writing. So, read more code to read code more efficiently.

- You may start contributing to open-source. Many companies appreciate it when hiring a developer. Maybe you'll add a new feature that many people need or fix an annoying bug when the maintainer has no time for it.

CAUTION! You can also face suboptimal code when sneaking through GitHub repositories. How to distinguish the good from the bad? I think you should know the basic "code smells" and have a bit of experience to trust your guts.

#career #dev #efficiency #thoughts
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →