(Part 2) Best products from r/androiddev
We found 30 comments on r/androiddev discussing the most recommended products. We ran sentiment analysis on each of these comments to determine how redditors feel about different products. We found 138 products and ranked them based on the amount of positive reactions they received. Here are the products ranked 21-40. You can also go back to the previous section.
21. Learning Embedded Android N Programming
- [PERFECT SIZE] Don’t worry about getting the wrong size. Our women’s leggings high waisted are provided with a detailed user-friendly size chart so that you get what you wish for according to your desired size and fit
- [VERSATILE] Ourworkout leggings for women can be worn any way you want. Perfect for running, biking, workout and, yoga. Your all-time favorite buttery soft leggings are perfect as loungewear too.
- [STATE OF THE ART QUALITY] You will love our butter soft leggings for women as you experience how comfortable and stretchable the fabric is. Made from 92% polyester and 8% Spandex to give you freedom of movement with no chances of being see-through, rolling down, or getting ripped.
- [MACHINE WASHABLE] Forget color fading. Wash these thick leggings for women as many times as you want it will not fade or shrink. Our leggings are designed for long-lasting comfort.
- [MAKE THEM STOP AND STARE] Find the perfect matching color of our high rise leggings for women for your new outfit and show off your style everywhere you go! Casual, stylish, fun and fabulous.
Features:
22. Embedded Programming with Android: Bringing Up an Android System from Scratch (Android Deep Dive)
23. Android System Programming: Porting, customizing, and debugging Android HAL
- [PERFECT SIZE] Don’t worry about getting the wrong size. Our women’s leggings high waisted are provided with a detailed user-friendly size chart so that you get what you wish for according to your desired size and fit
- [VERSATILE] Ourworkout leggings for women can be worn any way you want. Perfect for running, biking, workout and, yoga. Your all-time favorite buttery soft leggings are perfect as loungewear too.
- [STATE OF THE ART QUALITY] You will love our butter soft leggings for women as you experience how comfortable and stretchable the fabric is. Made from 92% polyester and 8% Spandex to give you freedom of movement with no chances of being see-through, rolling down, or getting ripped.
- [MACHINE WASHABLE] Forget color fading. Wash these thick leggings for women as many times as you want it will not fade or shrink. Our leggings are designed for long-lasting comfort.
- [MAKE THEM STOP AND STARE] Find the perfect matching color of our high rise leggings for women for your new outfit and show off your style everywhere you go! Casual, stylish, fun and fabulous.
Features:
24. The Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses
25. Design Patterns: Elements of Reusable Object-Oriented Software
- Great product!
Features:
26. Android Espresso Revealed: Writing Automated UI Tests
- Install with your own hands easily and transfer your pedal bike into a motorized bike With this amazing rear kit. LCD Display: to show battery power, time, speed, mileage and gears
- Sine Wave Controller,Includes cruise and Support Regenerative Function, will charge battery
- Drive system has no moving chains or gears, no friction, more efficient, hand brakes to stop the motor
- Safe. Full Speed: about 15-25 mile/hour,Certificates: CE, CCC, EN15194
- Quiet and reliable brushless gearless front hub motor; Hub dropout width: 100mm front or 135mm rear
Features:
27. Android Application Development in 24 Hours, Sams Teach Yourself (3rd Edition) (Sams Teach Yourself -- Hours)
- HR Pharmaceuticals
- Fougera
Features:
28. Head First Software Development: A Learner's Companion to Software Development
- O Reilly Media
Features:
30. Crossing the Chasm: Marketing and Selling High-Tech Products to Mainstream Customers
31. Growth Hacker Marketing: A Primer on the Future of PR, Marketing, and Advertising
- Portfolio
Features:
32. Refactoring: Improving the Design of Existing Code
- Addison-Wesley Professional
Features:
33. Functional Programming in Scala
- Supports the Intel Xeon E3-1200 v5 processor and 6th Gen. Intel Core i3/ Pentium/ Celeron Processor
- Dual Channel DDR4, 2 DIMMs
- 8-channel HD Audio with High Quality Audio Capacitors
- Audio Noise Guard with LED Trace Path Lighting
- Realtek GbE LAN with cFos Speed Internet Accelerator Software
- APP Center Including Easy Tune and Cloud Station Utilities
- Support Intel Small Business Basics
- Micro ATX Form Factor; 22.6cm x 17.4cm
Features:
34. Code: The Hidden Language of Computer Hardware and Software
- Microsoft Press
Features:
35. The No Asshole Rule: Building a Civilized Workplace and Surviving One That Isn't
- Business Plus
Features:
37. Cracking the Coding Interview: 150 Programming Questions and Solutions
- MIT Press MA
Features:
39. Patterns of Enterprise Application Architecture
- ✔ AMD FX-4300 3.80GHz / 4.0 Turbo Quad Core | 1 TB 7200RPM Hard Drive | AMD AM3+ 970 Chipset Motherboard
- ✔ 8 GB 1866 MHz Gaming Memory DDR3 with Heat Spreader | 24X DVD ±RW Optical | Genuine Windows Professional 10 64-bit
- ✔ GTX 750 Ti 2GB Graphics Card | 1 x DL-DVI, 1 x Display Port 1.4, 1 x HDMI 2.0b | 9 x USB (7 X USB 2.0; 2 X USB3.0)
- ✔ Wi-Fi Ready | No bloatware | Free Keyboard & Mouse | Monitor Not Included
- ✔ 1 Year Warranty on Parts and Labor | Lifetime Free Technical Support | Assemble in the USA
Features:
Everything starts w/ making a good product
Marketing
Don't have a "leaky bucket"
In normal words: make sure ppl who install your game have a good experience right away and come back. Set up analytics so you can track this. If you are failing, work on the game and don't market yet. You should watch all of these free Y Combinator online startup classes, but #6 is most relevant here.
Design the game to be viral
This is where you've got it easier than normal apps, games can be designed to share and engage other users. I recommend reading Hooked for ideas on how to build a habit forming app that ppl will want to share. NOTE: annoying tricks don't work and no one wants that.
Crossing the Chasm is less relevant to a game but an insightful classic on the old "how do I develop a market for a technology product".
All of these strategy require focused and consistent effort to have a chance. I'm in the same boat you are so hopefully we can make something happen :)
BTW I'd be happy to share my notes on all these books if ppl are interested.
Not Android, but, much of what konk3r said in his comment is packaged nicely and easily consumable in Refactoring by Martin Fowler. Before you begin coding Android, understand Java and what it takes to write maintainable code. Any mildly intelligent chimpanzee can write code; it takes a talented programmer to write code that others (or even the dev himself) can maintain.
Other things:
Kotlin in Action seems to be the best reviewed on Amazon. I believe that anything specific to Android and Kotlin is not necessary since they're separate things that will convert pretty seamlessly. As for learning Kotlin, I'd recommend the Kotlin reference and good ol' google for any questions you might have. For a tutorial type series, Kotlin koans seems to be the best bet.
I personally came from Java then Swift within the last year. Kotlin so far has just been trial and error but not terribly difficult. If you want to buy a book to help with Kotlin, I'd do the koans series then buy something for functional programming. Possibly Functional Programming in Scala or the Java book from the same publisher. I've read a lot on functional programming and some stuff on lambda calculus. Outside of picking up haskell, just programming it the best you can and learning some of the basics from something like the funfunfunction series then build from there. Books can tell you theory but program design comes from experience.
EDIT: One thing that hasn't been inherently obvious so far was lambda expressions in Android. They seem like a powerful way to get things done effectively. Make sure you're using them when it seems appropriate.
You can start out with some of the New Boston Android Tutorials - http://www.youtube.com/playlist?list=PL3D7BFF1DDBDAAFE5
The best way to learn is to pick a project and see it through to fruition. Go with something simple but not too simple, I'd recommend trying to make your own clone of this tip calculator. Don't just make it kind-of work, get it to where you would be proud to release it.
If you are completely new to programming it will be slow going at first, but there is no better time to learn than now, with some google searches you can find hundreds of free online programming courses (MIT Open Courseware and UC Berkley should get you started). You can google just about any problem and find someone who has encountered it before and solved it, sites like stackoverflow have hit the mainstream with programmers and it has become far easier to disseminate and learn best practices.
Also, Code by Charles Petzold is by far the best introduction I have ever read on computing theory, it has very little to do with conventional programming though.
Shamelessly stealing from one of the Amazon reviews:
> The average person who uses a computer to surf the web or type letters has so little knowledge of the underlying technology he or she is using that it may as well be magic. Even programmers, who typically spend their days solving problems with the high-end abstractedness of object-orientation, may be more than a little unclear about what's actually going on inside the box when their compiled code is running.
Petzold attempts, and largely succeeds at, writing a book that leaves the reasonably intelligent layperson with a thorough comprehension of each layer that comprises a modern electronic computer (binary coding -> electronic representation -> transistors -> logic gates -> integrated circuits -> microprocessors -> opcodes -> assembly language -> high-level language -> applications). At times, the reader must follow along carefully, but Petzold tries to avoid needless complication.
Every project is made up of different people and they all have their own vibe. For the last 10 years, at least part of my job has been working in and managing people who work on open source. I and my team have contributed to AOSP, Eclipse, Apache, and others.
A random collection of unordered thoughts...
Although, I am not a professional (currently, I graduated high school this year, and I am taking a year off before university to recover my health), from what I learned and applied, your planning should be first dependent upon how much time you have to deliver the project and the extent of communication you have with the risk holders.
Ideally, if you have a great amount of time and extent of communication, you might want to adopt a unified process model in a waterfall manner such that you do all your planning in the beginning. First, scope the project to understand what the risk holders' general objectives are for the project. Second, adapt the scope to determine the user classes for the required Android application. Third, by defining your user classes, write user cases for them. The user cases help generate required system features and processes. These processes help you generate story boards regarding how the user should execute a user case which ultimately helps you design your views. Fourth, research the software and hardware constraints in regards to implementing the system features. This step allows you to prioritize what features you will implement first and how you might test them. (Don't forget to research operating system quirks between various Android versions and the interfaces the risk holders require.) Fifth, verify with the risk holders the priority of the required system features. Sixth, begin your high-level design. The extent of this step is dependent upon the quality of the prior steps. If you have a great grasps of the requirements for the project and they are invariable to change, design your architecture and then components. UML diagrams should be used again if you have a great understanding of the project. All of the above steps regard the aspect of modelling in a software development process. I ignored any planning for quality management.
Unfortunately, you may lack time or great communication with risk holders (i.e. unresponsive feedback and continually changing requests). If so, I wouldn't follow all the steps above since it takes a while and you don't want your time to be wasted. Follow a rapid prototyping process or the agile process. I don't have much to say about them. They are nice.
Importantly, like everyone said, high-level design is very important. For my first Android application, my application's architecture and components were so poorly designed that my core logic was too coupled with my views and my components did not achieve a level of abstraction required for ease in refactoring. Thus, when it came time to implement new features or fix old features, it would take too much time.
If you have to work with databases, schema migrations can be hellish (I felt like crying in the inside when I learned about schema migrations). From the words of almighty Jake Wharton: "I hate it all. Schema migrations, content providers, content values, uri matchers, cursors, column interfaces, sql builders." Thus, do special planning if required with databases.
Some blog post I found (It seems very interesting. I haven't tried it yet): http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/
Finally, a really nice read if you ever have the time, Software Engineering: A Practitioner's Approach: http://www.amazon.ca/Software-Engineering-A-Practitioners-Approach/dp/0073375977
Please take what I typed with a grain of salt, I just started programming for Android in October, so I too am trying to find out the best practices.
To expand on the above, I would say that you definitely need to learn DS&A before you can get a job. I got lucky getting my first job because they didn't ask me any algorithms questions but trying to find a job is next to impossible if you can't answer their questions on a whiteboard.
Also, practice coding on a whiteboard/paper. I cannot stress this enough. It's amazing how many things you think you know but you realize that your IDE fixes for you/reminds you of. Simple, simple things that make you look completely silly if you don't know them during interviews. Plus, it's just a different process.
It's also quite nerve-wracking to stand in front of a white board and have people watching you write code.....so it's easy for nerves to get in the way as well...
Also, get this book:
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
There are plenty of other books out there as well...
Good luck!
Hey that is the million dollar question. But because software is not an engineering, actually there is no reference book on SW architecture. Certainly there are books talking about this, but usually covering only some aspects and without real application examples.
Notice that in iOS programming the system imposes a great part of the architecture, so these guys are usually less concerned. But in Android we have more freedom, and the API actually encourages really bad practices (thanks Google). Because of this we are all a bit lost. Nowadays layered architecture and MVP seems to be the most popular approach, but then again everybody produces a different implementation...
Specifically for Clean Architecture you should read its author, Robert C. Martin. AFAIK this is not covered in detail in his books. You can read this blog post and watch this video. Other designs usually coming up in conferences are the Onion Architecture and the Hexagonal Architecture. But make no mistake: there's no route map on how to implement any of those, and examples claiming to follow this or that approach are usually not written by the authors of the architecture.
For DDD there is a very good book by Scott Millet with actual examples. But this style is meant for large enterprise backend apps, and the author himself advices against using is in small apps. So I'd say it is overkill for Android, but of course you could reuse some concepts successfully.
Theres also Software Architecture in Practice 3rd, but having read the 2nd edition I can tell you this is just smoke.
Probably best book to date is Fowler's but this is more a patterns compilation than an architecture guide.
Here's a rough outline, from high level to low(ish):
Extra Credit
That will get you started but there's tons more. The best thing you can do is write code and read code and be patient.
Although old, this book does a very good job explaining the Android architecture https://www.amazon.com/Embedded-Android-Porting-Extending-Customizing/dp/1449308295
Given it was written for Android 4, it doesn't have all the new Treble staff (the basis are still the same, so I think it's still worth reading), but the author has a set of slides that you can read after the book to get the recent changes: https://www.slideshare.net/opersys/presentations
​
Another useful book is https://www.amazon.com/Embedded-Programming-Android-Bringing-Scratch/dp/0134030001 . This one focuses more on getting AOSP running on a new device, and not that much in its internals or customization.
​
Two newer books I have recently found (although I haven't had time to read them) are https://www.amazon.com/Android-System-Programming-customizing-debugging/dp/178712536X (same author as the previous one, content mostly related to building the kernel and getting AOSP running in a new device/emulator) and https://www.amazon.com/Learning-Embedded-Android-N-Programming-ebook/dp/B01841W9AU
They are still pre-treble, but they are probably still useful.
​
Besides those, if you want something more related to internals and not so much on how to "get the source code and build AOSP", you could check https://www.amazon.com/Android-Security-Internals-Depth-Architecture/dp/1593275811 and https://www.amazon.com/Android-Hackers-Handbook-Joshua-Drake/dp/111860864X
I'm also a newbie when it comes to Android programming, however I'd like to jump into it. I have a bit of a background in C++, but Java is entirely new to me.
I just purchased two books on Amazon for Java and Android programming.
http://www.amazon.com/gp/product/0672334445
http://www.amazon.com/gp/product/0672335743
Always interested in learning with others. Just let me know. :)
I agree - seems like a lack of direction is what hinders you, rather than a tech choice. I would recommend reading the following "bibles" of product development
The Lean Startup
https://www.amazon.com/dp/B004J4XGN6/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
​
Inspired
https://www.amazon.com/Inspired-Create-Products-Customers-Love/dp/0981690408
​
These books are very accessible and will get you up to speed really quickly.
A middle ground is to have the developers write the Robot DSL and you write the tests using the DSL. It sounds nice, but not sure how many successes there have been with this approach. For more information:
https://jakewharton.com/testing-robots/
A book on Espresso from QA (not developer) perspective:
https://www.amazon.com/Android-Espresso-Revealed-Writing-Automated/dp/1484243145
What books can help you expand your knowledge of design patterns?
The second one (GoF book) is the defacto standard, but unfortunately, it's also a cure for insomnia. The first one is much more entertaining.
If you enjoyed the Head First experience, you should proceed to Head First Software Development which does cover this topic.
Strictly in order.
Head First Programming
Head First Java
Effective Java
Head First Design Patterns
Head First Software Development
<http://developer.android.com/training/index.html&gt;
You are welcome!
Hey, want to provide an update. Just received an email from Amazon, where they said, that despite one device had issues with my app, it's now live (https://www.amazon.com/gp/product/B06XPNXKZ2)
It took some time, but they finally accepted it.
I liked this one https://www.amazon.com/Android-Application-Development-Hours-Yourself/dp/0672334445
Grady Booch
http://www.amazon.com/gp/aw/d/020189551X/ref=pd_aw_sbs_14_2?ie=UTF8&amp;dpID=51-uo4HUPCL&amp;dpSrc=sims&amp;preST=_AC_UL100_SR100%2C100_&amp;refRID=110KGH6M22KWAJHKWZ5F
Eric Evans
http://www.amazon.com/Domain-Driven-Design-Tackling--Software/dp/0321125215
Martin Fowler
http://www.amazon.com/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420