As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I have been advocating using Scala at my company. One of my co-workers forwarded me this link tonight
http://blog.joda.org/2011/11/real-life-scala-feedback-from-yammer.html
I was hoping to get some constructive feedback from the SO community about this. I don't want this to turn into a flaming thread, but if there are legitimate concerns floating around out there I think it would be beneficial to discuss possible reasons and best practices that can avoid others falling into such traps.
I will say that I have been loving Scala and have not run into any of the problems that are mentioned. My application is also not very hashmap intensive, which appears to be where a fair number of their problems came from.
[Edit - apparently I need a question!]
The question is, do you think that the problems described are systemic to Scala, or more unique to their environment? If they are systemic, are there some good guidelines for a company that is just getting started with Scala to follow so that they don't end up in the same boat in 2 years?
Issues Described
Language Complexity
Systemic issue. Scala is unlikely to get less complex, whether or not that is a problem depends on the developers that are working with it. For me, it is complex enough to keep me interested and engaged, whereas pure Java can be mind-numbingly boring. My suspicion is that if Scala is way too complex for a particular developer, it is unlikely they're going to be top-notch dev when it comes to Java as well.
Community
So this one guy says the only way to do this is with a bijective map
on a semi-algebra, whatever the hell that is, and this other guy says
to use a library which doesn't have docs and didn't exist until last
week and that he wrote. The first guy and the second guy seem to hate
each other. What's the Scala way of sending an HTTP request to a
server?
That quote is pretty funny, but this is obviously a non-systemic issue with Scala. His main complaint about a lack of consensus regarding best-practices is relevant to all up-and-coming languages. I think Java developers have been spoiled in a way -- having gotten used to being part of such an enormous community where pretty much everything has been done before and possibly already standardized.
Build Toolchain
Another non-systemic issue.
Performance
This one does worry me a little bit and I can see getting frustrated very fast having to uncover previously unknown performance gotchas. I suspect for years to come there will be some pretty big performance penalties depending on how you use certain aspects of the language -- so people will have to exercise caution and make their own analysis regarding each project's performance requirements.
I concur with his sentiments here:
Despite the fact that we're moving away from Scala, I still think it's
one of the most interesting, innovative, and exciting languages I've
used...
And finally I would urge people to read Stephen Colebourne's blog with some degree of skepticism, because his personal disdain for the Scala language seems a bit oversize relative to the arguments.
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am making a very specific "control panel" sort of thing to organize information, record statistics, deliver alerts, and things like that.
My initial plan was to make it using CakePHP. I tried Cake, and although I thought it was really awesome, I really hated it due to the fact that it's "automagic." I didn't like how it did all this stuff without me knowing. Yesterday I switched to CodeIgniter, because a friend told me to try it. I like CI much better, however using a PHP framework just doesn't feel right. To me, it doesn't feel nearly free or flexible enough.
My question to you:
Should I continue trying to use a framework, or should I construct a 'semi-framework' that makes certain things easier (layouts, form validation, localization)?
Might I add that I already have a secure authentication system created (well, I THINK it's secure, but that's for a different discussion :P) that would be fairly simple to implement on this site.
Should I continue trying to use a framework, or should I construct a
'semi-framework' that makes certain things easier (layouts, form
validation, localization)?
I think the big issue here is whether using a framework is making your life easier or not. Frameworks are designed to simplify coding by giving you a powerful base to work off of in your own code. If that base is helping you by reducing the amount of code you need to write and the amount of maintenance that goes into it, then yes, I would strongly recommend you use a framework. If the framework is making your job more difficult because it is not well suited to your needs and is not reducing the amount of work you need to do overall, then I would strongly recommend not wasting your time with one.
Just like you'd stop using a dishwasher that isn't helping you wash the dishes faster or better, go ahead and stop using a framework that isn't helping you code faster or better.
It depends on your site. If you have large site with dozens of pages, better use a framework. But if your site is tiny, there is no need in using it.
Try combining Zend with NuSphere PHPEd IDE. Zend is a generic all-purpose framework which allows you to go as hardcore as you desire and it has tons of examples and documentation. PHPEd will enable you to do really nice debugging, even inside the framework code, so that you will feel in absolute control.
On the other hand, reinventing the wheel is never a good idea. You will never be able to get all the form validations right all by yourself and the amount of testing for all this code will make you stay in the office, on Tuesdays, during the graveyard shift :)
It might be a great idea to spend some time reading about some open-source projects, like Magento, so that you can observe the true power of generic frameworks, before trying to write your own.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I've started to use XCode several months ago, after using IntelliJ for several years, and there are quite a few features that I really miss. XCode is not that bad, but it is lacking some basic stuff.
To trigger the discussion, here are some of the features that I miss most, who knows maybe someone from Apple will bump into this post and steal some Ideas :)
Source-level error-highlighting. The write-compile-fix cycle feels like going back in time 15 years ago to my early C days. Many errors can be spotted without having to compile and Java IDEs have been doing it for years.
A decent debugger. This is a bit unfair because IntelliJ's debugger is the best I've used so far, but XCode's debugger is at least 5 years behind and Apple has a few more developers than JetBrains...
Stronger re-factoring. A no-brainer I guess. XCode has some renaming capabilities (which they call re-factoring), but they are very few.
Override method. This one is really amazing. XCode doesn't have an "override method" command which lets you choose the method you want to override from a super class or protocol. You need to go to the documentation or header file and start copy-pasting.
Duplicate selected line(s). I've bumped into some posts that offer workarounds for this via custom key-binding, but none of them works, at least for me.
Go to last edit point. Bummer! Come on Apple, this one is so easy to implement and so useful!
A better open quickly feature. IntelliJ's quick find of classes/files/text is so much better...
Turns out that my list goes on and on, so I'll stop here...
What other features do you miss most in your transition to XCode??
Ori
As for the better Open Quickly feature - Code Pilot for Xcode might help here :)
http://macoscope.net/en/mac/codepilot/
Maybe we soon will get all those features. According to an interview in JavaPosse #283, Jetbrains is working on an IDE for Objective-C :)
Intentions are a great tool in IntelliJ. They quickly help identify things I might have otherwise missed. The new Build and Analyze feature in XCode 3.2 is a good start in the right direction.
And they just announced IntelliJ is now available via Open Source. I hope this means we start seeing more adoption, perhaps more plugins to make it more useful for Mac/iPhone development.
+1 on all your points. But I'd also like to have better local revision tracking (Actually this is from eclipse, rather than IntelliJ, but still). I usually realise I should have taken a snapshot of the code after I've made a mess.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I was surfing the web and found myself at 3D Realms hiring page.
It sounds quite nice what they are advertising there. Everywhere you can read things like "Freedom from arbitrary completion date pressures".
This sounded very sensible to me since I sometimes have problems with schedules myself. But when I connected the statement with the game they will release "when it's done" Duke Nukem Forever I came to the question: "Could I work on a software project for more than 10 years without releasing anything?"
No release party, no it-finally-shipped feelings etc.
Maybe there are other levels of motivation I don't know about.
How would you feel about that?
Btw. some funny stuff about DNF: http://duke.a-13.net
Yes you can...finding someone who will pay you for ten years without releasing anything is another story though.
I'm sorry, but that's not a project.
A project is an undertaking with a clear goal, a defined budget and a defined end-date.
If you haven't all three of those, you are not working on a project.
I'd say this very much depends on your personality:
Is it important for you to get a customer's feedback on what you have implemented, or are you satisfied with the beauty of your code and feedback from collegues?
Do you want to / like to present your work to the public e.g. doing presentations?
Will "internal milestone parties" give you the same satisfaction as a release party?
Can you consistently work towards completing a task without a deadline (or will this lead you to jump from onw task to the other as soon as a task gets boring), leaving a lot of unfinished work?
For me (personally), I would not like to work on something where it looks like it isn't going to be release anyime in the forseeable future as I'd really miss the feedback from the community...
I couldn't do it. I don't think I could ever concentrate on a single project for 10 years without having anything to show for it. It reminds me a lot of SharpEnviro, a windows replacement shell who's development started some 10 years ago, and they are at release 0.0.7 with no current stable releases. And it's written in Delphi. I couldn't even concentrate on using a single language for a single project for that long. I mean, just wow!
Short answer: "No".
You must set goals and release to meet the goals.
If you can is, IMO, a question of personality (see others)
Another aspect is: should you. Here you need to consider things like
the impact on your resume,
esp. if you leave before the release is done or if the project finally fails (a real possibility).
your professional development. Chances are that both the technology and the methods used will also be at least ten years old when you're finally done.
Yes, I could. That doesn't mean you (or anyone else) could or should.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
How has the current economic downturn affected the way you/your team works ?
I am tending to do more enhancements, compared to brand new development a year or so ago.
This question came about during another pub conversation where we were discussing if it's good to work on supporting applications or working on new projects - which is more stable, for the foreseeable future, with companies cost cutting in all areas..
I mainly work on extending existing applications. I would say this is probably the safer of the two options also. More than likely people are already using the existing applications, and because of that you don't need to convince them it would be advantageous for them to start using it. From a business perspective, it is a lot easier to justify an expense than you already have than to try and add an additional one.
Number 3: rewriting existing apps (the guy who used to do my job suuuuccccckkkked).
Definitely seeing a downturn in large scale or new projects in general though, which is kind of the programming equivalent of saving not spending. Actually it's the literal equivalent of that, which is a problem for getting out of a recession.
Good question. I am at present working with project that has good customers and a decent revenue. So, the economic downturn did not affect much.
My suggestion is if there is a choice between choosing enhancing the existing projects or new projects, its better to go for the revenue generating existing projects. And investment in R&D projects may be reduced.
I believe "supporting" and bug-fixing on existing projects would not bring your much challenge and consequently experience. It can be a huge time waste for the career.
I am working on porting an existing business application to a new platform, which combines some of the aspects of work on an existing app, and some new stuff.
Its new because everything is going from Windows Forms to ASP.NET AJAX, and there are several changes involved in that process when it comes to the GUI and event based side of things, but its also partially work with existing stuff because the business rules are the same, the database is the same, although we have been gradually making improvements as needed to those.
On the other hand the company I work for supplies grocery stores which have been affected positively by more people eating at home, so despite being in Michigan, things are going well for the company, and we can afford to move this app onto the intranet.
The nice part about doing this is I get to learn all the new platform stuff, but we don't have to go out and get user input for some new set of use cases, plus we can work with the input we've received from the WinForms version.
I'm rewriting our existing applications. The fundamental design of the original applications wasn't flexible enough to handle our new business needs. Combined with questionable coding practices (a lack of separation of model, view and control and aging technologies with a lot of "NIH" syndrome) it was decided that rewriting the non-central portions of our applications was best.
Sadly, I'm not entirely sure I'm 100% qualified for this, but, I seem to be the most qualified of our team.
90% of my job is maintenance, or seems to be. But surprisingly, I've got about four projects of new development going or in the pipeline.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
When you first fire up Visual Studio, or even before that (Hopefully)
What do you consider best practices when starting a new project?
Different things I have done in the past
Consider the technology choices
Attempt to identify the potential bottlenecks/brickwalls
Throw away the specification
Ask lots and lots of questions
Launched straight into code! (who hasn't?)
As programmers we should be methodical in our approach.
What do you do when starting a new project?
Start using version control right away.
It is always frustrating building prototype "throwaway code" that eventually gets thrown away - and then realizing that some of that code would be really really useful to have.
(If applicable) Figure out whether you are building a throwaway prototype, an expandable prototype, or a final production system.
I think that a major problem with a lot of projects is that people don't get this one figured out to begin with. They either over-engineer and the project doesn't deliver on time, or they write throwaway code that later becomes too expensive to throw away.
I do the following when building for others. WHen I build myself using more agile dev concepts, I still cycle through these steps. It makes it very easy to involve others as well.
Analyze: What do we need to do and why. Aka feature spec.
Design: what are we going to build, how will it work, and why? aka. Technical Spec.
Plan: What and who do we need, when, to do what
Implement: Build, test, repeat.
Launch: Almost there.
Support/Document/Train, etc: In case you get hit by a bus, or someone arranges for it.
Scrum
++
Requirements Gathering
Scope
Out of Scope
Pick Platform to deliver on and appropriate Development Environment
Calculate Expenses, Make budget
Schedule
Review at each stage and educate the end user of what is being made throughout
easy tips
Create my first test project.
One main thing I always like to know is, who exactly is doing what! even from the starting point. Stops alot of time being lost.