I'm a Senior Java programmer, with more than 7 years of experience, and lately, I'm using Google App Engine to build cloud software, usually, using frameworks like Spring, Objectify, Apache Tiles, etc... I'm even working on some android native app...
I think I'm good at this, for example, I did a complete billing system in two months all by myself; but the last days I've received a few disappointing comments from my boss who claims to know a guy "recently graduated of high-school" who can do the same as I do in two weeks or less (android apps, complete e-commerce systems, etc).
I'm wondering if I'm missing something... ¿there is a way to do it on such time? Maybe I'm little old and I'm doing it in a old way... are there a framework or programming language that you can recommend me?
There is no way you can create something like that in 2 weeks or less. I means sure you can install a pre-made system or add an e-commerce add on to Joomla or drupal.
But that is premade and has no customization. Off course graduates will know more about the latest systems and will work with the latest stuff.
When you become a programmer you have to make a commitment to keep an eye on new developments and try out the latest stuff to keep up to date. Staying with the same methods will cause you too come to a standstill, but that off course does not mean you write bad code or the system doesn't work.
Your manager should know that you can never complete a full system in 2 weeks if you want it to be secure and fully tested...
Related
I am learning programming, I learned Java, I took a little experience with Android, I made a simple application, then I started to learn flutter, I took a course and i created a simple application, and now many people tell me and I see that the web is more widespread and has more job opportunities, and I want to be a Frontend developer What would you advise me to continue learning flutter or go to the web because I want to work as a freelancer or in a company?
I think everyone would agree that only you yourself can decide what to do with your own life. We have neither right to decide it for you nor will to bear such responsibility.
"I want to fly planes, but I also want to drive a bus or maybe I should be a train operator?" All those professions have the "driver/pilot" role in common, yet they are very different. Just because everything you mentioned involves programming, doesn't mean it is all the same and learning a few lines of code here and there doesn't make a pro, but I'm sure you know that.
If you want a decent job, I suggest you to explore your local job market, see what real companies need most. Then think about the future - will they still need it by the time you finish studying it?
Keep in mind that the tech landscape in always changing. Flutter can be hot now, but in few years - who knows? For example, nobody in their sane mind today really considers Xamarin and C# as something to learn for cross-platform mobile dev, but it had future.. at some point. Anyway, hope you get the idea.
personally, I advise you to expose yourself to as many technologies as you can to increase your chances of obtaining a job and also because there is no way of knowing for sure which technologies your future employer will require from you and hence I say go ahead and learn web development since it's one of the most wanted skillsets in software development.
as for freelancing it really depends on what type of freelancing jobs you want or will accept.
thank you.
You are right, it is easier to find a job in web development than in mobile app development, my suggestion is that you continue on web development, your aim should not be to become a front-end developer only but rather try to become a fullstack web developer.
If your goal is to quickly get a job, I would stick with Android and maybe learn iOS as well. There are plenty of jobs in mobile, even as a junior developer. I would not invest too heavily in Flutter, it has all but lost the hybrid mobile framework user space, at least from a jobs perspective. Pick up React Native if you must. Learning web from scratch will be difficult; there are lots of nuances and different technology stacks, and companies are often looking for a wide variety of experience.
I have to develop an ERP System for a 2,000+ end users organisation.
Could you please suggest me with comparable points that among (Java or .Net)
in which technology I should invest money and time? Although I have done
some average projects in both, but this project is going to be very big in near
future in terms of scalability.
I want to know your experiences and some tips from you people, so that I can develop
and deploy this project efficiently.
I rate .Net > Java for this project only due to less development time available.
We have to use some Rapid App Development technology.
I have to deploy this on Cloud (Azure or Google App engine).
It will be better if I got answers from those people who works in both (.Net and Java).
I will appreciate answers from your experiences.
I would suggest creating a very small proof-of-concept project in both technologies, which do something real - like allow people to log in, see messages, and allow them to type in new messages, and log out again.
Even if the project is laughably small, if you do it well, you will have a finished product on each platform which have shown you by experience how things works and if you like the way you had to do them. You will be able to see if you can debug in the cloud, if you can profile when load testing, if you can do fast work inhouse which then works well when deployed to the cloud.
And you will need to figure out things. Are the online resources good? How responsive is the StackOverflow community for each platform when you ask questions?
Personally, I consider the ".NET is Windows-only" to be important. Except for that I do not believe there is any technical showstopper for either platform.
I think both approaches can be used to deliver this successfully. I would expect you to have the same amount of success/pain with either choice. When it comes to making a decision you should base it on the amount of expertise that you have to hand. That is, your own and that of your existing colleagues and the resources that you can acquire (new recruits, contractors, consultants etc.).
That said a couple of technical notes:
The Java approach tends to have more freedom, i.e. more frameworks and choice of technologies for various solutions (although GAE will bring in some restrictions).
There is less choice in the .NET space, but that is not always a bad thing. E.g. you tend not end up in tireless debates about the logging frameworks.
Java is starting to age as a language and C# is a bit nicer, however there a number of newer languages that run on the Java VM (Scala, Groovy, Ruby, Clojure).
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I've just finished a relatively large project for the Android, and it's left a bitter taste in my mouth with the knowledge that it will never run on one of the most ubiquitous handsets this side of the solar system (the one by that fruity little club).
So, for my next project, I want to write it in a way that makes most of the components easily transportable between the iPhone and Android platforms. The way I'm thinking of doing this is by coding most of it in Objective-C, and then adding the platform-specific parts in more Objective-C and Java respectively. On the Android side, this will require using the the NDK.
My knowledge of C is good, but my knowledge of Objective-C is close to zero, and I have no desire to learn C++. How sane is the approach above, and is there a better one? Is there any way I can code in Java and still reach the un-hacked iPhone market? And how likely is it that the people I know (iPhone users) will have an Android phone by next year?
Step back and think about what in the end you will logically be able to share.
The UI models are fairly different, the components are different. In the end what you might be able to share is data object classes, possibly some algorithms. It's not even like you could realistically end up sharing network code as in the old days because you aren't directly using sockets, you are using HTTP libraries.
So will all of the effort you are putting into this really find a payoff in the end? It seems to me the end result will be a brittle mess that is hard to update, and is mediocre on both platforms instead of being great on either.
Why are you writing applications? To make life easier for you, or your users?
Others have said basically this, but I'd like to make it more explicit. Your best bet is probably to write:
Cross-platform data models & core logic, using:
bits of GNUstep (Obj-C), or
CF-Lite (C), or
Whatever you'd like, as long as it's cross-platform :P
iPhone-only interface code, using Cocoa Touch (Obj-C)
Android-only interface code, however they do it for the Android.
That's as close as you can get; any attempt to write cross-platform interface code will undoubtedly result in a mediocre app on both platforms. But making all the rest of your code portable and just wrapping a device-specific interface around it is done all the time and has been worked great for some iPhone developers.
Objective-C without Cocoa is not so useful and won't bring you much closer to haveing a working iPhone codebase. You'd probably be better off writing your core in C with Core Foundation and using either Java or Objective-C for the platform specific parts. Apple has open sourced a large chunk of Core Foundation as CF-Lite, and it's toll-free bridged with Cocoa on OS X (i.e. you can use many CF classes interchangeably with their Cocoa counterparts).
My guess, which has no experience to back it up, is that you probably could write Obj-C with Google's NDK somehow, given that GCC exists for ARM, is open source, has an Obj-C compiler and a basic Obj-C runtime (which if it doesn't already probably could be hacked up to work on a new architecture), etc.
That might also be a lot of work for questionable benefit.
And of course "Obj-C" (without the NS classes) means something very different than "Cocoa", which is what most people really mean when they say "Obj-C". You might be able to re-use some of GNUstep for some that, but... Honestly, I doubt it. Sounds again like a lot of work.
So, yes, I think it is possible. It's also a lot of work and I don't think it's worth it.
Given what you've said, if I were attempting this, I would be tempted to write as much of your core logic as possible in C, then wrap it with two separate GUIs for each platform.
Coming at this from a different angle... I know that you said you wanted to try and stick with Java, but if you know C# then you could go with the MonoTouch framework for the iPhone. Mono is essentially and open source implementation of the .Net stack. The Mono team is working on bringing Mono to the Android so you could basically write a shared C# library for your business logic and have different Views/Controllers per platform. This would all be in C# of course and it is a bit more expensive, but it does solve the problem of writing everything in different languages.
I believe it is called MonoTouch on the iPhone and MonoDroid on Android.
The Apportable SDK is an Objective-C approach to write once and deploy to both IOS and Android. It will cross-compile a running IOS Xcode project to an Android SDK.
See here for sample apps that run on both platforms in minutes after download.
I'm not sure about Android but with the iPhone you can essentially write straight C as long as you wrap it up in Objective-C classes.
The Objective-C runtime has not been ported to Android yet. It shouldn't be too much work, but still, without a working knowledge of the language I doubt you'll have an easy time porting it.
What you are trying to do is going to be hard for a generic application, but should be possible for games, if you choose to develop the game in plain C (which is supported by both the Android NDK and the iPhone). You'd have to write up some glue code to pass input events from the Obj-C and Java environments into your C code, but that shouldn't be much of a problem - Objective-C allows you to directly call into your C code and there are plenty of example projects which do exactly this for Android.
I haven't tried this myself or finished watching the talk yet, but there is a Google Tech Talk on Developing iPhone Applications using Java up on YouTube that looks pretty promising.
XMLVM is a project which is capable of translating (some) Android applications to the iPhone. For more infromation, visit http://xmlvm.org/android/
I realize this may be a tad late, but it seems the industry is going in the direction of web apps these days to achieve app portability. That is, embedding a web-browser in your "skeleton native app", and writing javascript, css and html for Android, iOS and the other major smartphone platforms.
There are tools that help you with this. You might want to check out PhoneGap and Sencha Touch, but there are many more. Note that this approach may not be ideal for real-time/animation-intensive apps.
Here is a talk from facebook's mobile # scale conference where two teams (dropbox and orchestra) used similar approaches. Dropbox used C++ to create libdropbox and Orchestra (mailbox) used Objective-c to create libmailbox.
Again, they wrote their front ends in the platform native language and used their cross platform libs for core logic and data.
Key benefits I took away: Mailbox went from ios to android in 5 weeks because it was just building UI code. Dropbox can beta test changes to core functionality that are in the shared library with Android beta deployments were it's easier to do massive deploys at scale for beta builds.
If you can wait until later this year (exact amount of time unknown), Adobe will have AIR for Android and a compiler to iPhone. Thus you can write an app in AIR for the Android and use most of the same code to compile to the iPhone.
http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/
Even if you can't wait see: http://www.insideria.com/2008/12/actionscript-to-cocoa---protot.html where it explains the similarities between ActionScript and Cocoa.
Also check out: http://labs.adobe.com/technologies/air2/ for the AIR version capable of using the touch screen.
So you can soon write once and deploy to Android and iPhone using ActionScript 3.
Just for the disclaimer, I'm not trying to win the prize in Android Developer Challenge, but just want to participate.
I heard about the Android buzz lately and got interested in it. And today I stumbled upon a site talking about Android Developer Challenge 2. Luckily, the submission hasn't ended but unfortunately it starts tomorrow, August 1. Since this is a new opportunity I want to give it a try but I think I'm a little bit late.
I have configured the development platform and got some tutorials. I wanted to know if I could successfully develop a project within 30 days and submit it. Or is it really a big task which needs months of preparation. I just want to know if it is worth a try.
And for the record I know nothing about Androids except that it is an open source platform for application development on mobiles. I know Java but not competent, so may be need to touch up on that too.
It would be nice, if I get some real pointers on what I'm about to embark on. If it isn't possible I may need to pace down and enjoy other things in life too.
So is is possible to complete a small and decent app within 30 days or is it already late and if so are there any suggestions?
The real answer: It Depends.
The size and your capacity of learning are very important. The smallest and simplest your app is, the more chances you have. The faster you learn, the more chances you have.
If you make it too complex, then you have no chance.
Note that being capable of making a decent app is different of being capable of making a great app. It's still possible, but it'll be a real challenge.
My answer: Why not just try?
No matter what happens you'll get a lot of valuable experience. Working with a new technology, time management, project gauging, working under pressure.
I really don't see a drawback to just giving it a shot.
I had no prior Java experience when I did my first Android application in early 2008. There was very little documentation, and web searches mostly turned up nothing when you hit a snag. Nevertheless, I completed my first application in 15 days. So I would say you can easily code an application in 30 days nowadays if you have any prior software engineering experience. Of course, there is only so much you can do in 30 days, so don't aim for very complex application.
There are many factors that pose as a challenge for many android developers today which includes varying hardware features most especially. This can be rabbit hole if you want to touch on all places. Other challenges to expect are summaried at https://www.mytechgist.com/developers/most-common-difficulties-confronted-by-android-app-developers/
My friend and I are planning to build a simple chat client to let people in a (physical, real world) room chat with each other (people chatting over the same wifi network, possibly pinging some external server to organize things by the external IP address of the wifi network). Partly we planned this as a chance to play around with Groovy, which we haven't done much with. But then I thought - damn, how many people have the Java 1.5 runtime? Maybe this is kind of thing where Flash would be better (when I say "Flash" I mean "Flex")? I hate ActionScript and I have very little experience with it, and I've no real interest in using it, but I'm thinking, if we want 9 out of 10 of our friends to be able to use our software, Java is possibly not the way to go?
My concern is in particular with the demographic we have in mind, which will tend to be freelancers and artists and individuals, rather than people at work. I'm aware that Java still has a decent overall market share, but I'm under the impression that its use is heavily concentrated in the computers that people use at work. Folks who don't work at corporations may not have a modern runtime?
I then decided to look up Java market share. It is surprisingly hard to track down info about specific JREs.
There was this on stackOverflow, but its focus is on RIAs, which isn't what I'm talking about:
What's all this business about Flash, Flex, Adobe Air, Java FX and Silverlight?
And then conversations like this make it sound like Flash is the only reasonable choice to make if you want people to be able to use your software without jumping through a lot of hoops:
http://forums.java.net/jive/thread.jspa?messageID=317749&tstart=0
This seemed like a reasonable summary of Java versus Flash issues:
Client Java vs (Adobe) Flash for web applications, what to choose and when
I found it surprisingly hard to track down actual market share data on particular JREs. And I found no easy way to find out if folks who with modern JREs installed are mostly using their computers at work.
So I'm open to hearing some anecdotal information here. If we built our simple chat client in Groovy/Swing, would our target demographic be able to use it? Is Flash the only reliable way to go here?
If portability is your goal, why not go for a JS only approach, perhaps using one of the COMET styles of push? Here's an article to learn more:
http://ajaxian.com/archives/comet-a-new-approach-to-ajax-applications
If a JS RIA isn't what your after. Then Flash/Flex are your next best bet. I'm usually biased towards Java as a technology, but based on your target app and audience I think you'll get more joy using a Flash-based technology.
Adobe understand RIAs better than Sun, which was kinda demonstrated by some high profile Java 2D devs moving to Adobe in 2008/09. Plus with recent Flash Player developments you'll get your app onto more mobile devices.
Obviously server-side in Java ;-)