159 karma · joined December 7, 2011
But that doesn't stop me from writing WCF services, web services, using message queuing (MSMQ but I prefer RabbitMQ with MassTransit nowadays) or writing T4 templates or custom code generators. I generally do website design (I have worked for a branding/design company previously where I designed websites based on graphic designers' slicing) that includes your typical front-end stuff like JavaScript/CSS with some pre-processing (SASS, Less, CoffeeSCript), AJAX and web sockets.
I would consider myself a 'full-stack' engineer because I am generally responsible from writing everything from the front end to the databases and integration. I consider things like design patterns, wiring up IOC containers, applying SOLID/GRASP principles (ex. abstracting components to minimalize the need for change), managing project timelines, planning and estimates a daily ritual. All my projects use either a N-Tier or a DDD approach.
I have also toyed with a multitude of programming languages and frameworks outside of my scope of 'specialisation'. I'd hence argue that becoming a good programmer would requiring you to become good across the board (and at things outside the scope of the project - ex. I apply similar approaches to what I've learned from writing Scala/Python/Haskell).
I wouldn't consider a programming 'specialist' the same as a domain expert.
You definitely need to acquire domain knowledge to be efficient at what you do, but you shouldn't need to be considered an industry expert. I've only seen bad things happen when programmers are left to make decisions that require domain knowledge because there are no real domain experts around.
There was a great post on HN a couple of weeks ago, unfortunately I've lost said link - just google for 'x ways to make your website look better'.
Implementing a Fibonacci sequence or a prime number sieve is much different than implementing e-mail scheduling component with dynamic constraints. I think the reason why Algorithms/Data Structures are important for interviews is because they show not only your level of experience with the tool-set you use, but also deeper understanding of the inner workings of said tools.
Overall there are some pretty good IDE's around, just need to shop around a bit.
I personally use notepad++ as a text editor, although lately I have been favoring sublime text 2. Geany on Linux seems pretty solid as well.
The point stays that IDE's generally favor statically typed languages while text editors are generally used for dynamic, scripting and low level languages.
In my personal opinion, startups aren't really a viable business strategy. The general idea of a startup is to attract investors to your idea with no reasonable timeframe regarding profitability, instead focusing on fast tracking the creation of a product/s. I really prefer the small business approach of prototyping and reworking to reach profitability and with every action taken to keep in mind the most important question: how will this directly make me money?
On a final note, write a lot of programs - even if they are only a couple of hundred lines of code. Productivity really kicks in after you've become comfortable not reinventing the wheel all the time - everyone should invest time into working this out of their systems.
I'd say there's a difference between a label and a job specification. If you get to choose your own title, it's meaningless.
You tend to specialize in that which you do for your 8+ hours a day. I personally wouldn't call someone a front-end developer unless they are very specialized (to the degree that they understand the internals and are writing custom controls for the stack).
This doesn't imply that someone can't be specialized in multiple fields - in the end you are just fulfilling a specific role. I personally believe a team works well when everyone is capable of doing most things (from doing front-end dev, back-end dev to gathering requirements and communicating with the client) and then having specializations.
Servicing is all about satisfying the needs of other individuals - in the case of businesses, this is always to make more money. As soon as you grasp this, you will start approaching potential customers with the foresight to tell them you want to make them money, hourly, vs. you want to charge them money, hourly.
I'd say the best preparation would be to save up money in advance, so that you may work a couple of months without getting paid. Although, ideally you should realize that you do need money to start freelancing full time - even if it's not your own. Ideally, you will have been freelancing before taking the plunge and have had quite a bit of freelancing experience already.
In the end, the best way to approach freelancing fulltime is to see it as a business. You will be running a business (as a sole-proprietor) and be working for yourself and charging business rates. I'd also urge you to watch and learn from this: https://vimeo.com/22053820
It's a tough game and you need to be a serious player. Best of luck!
Stylish and functional, I'd suggest you take a look at lifehacker.com . Functionality wise, it depends on what's appropiate for the type of website. There's a reason why portal websites are rarely being used (except on say, company intranets). Stylish I would attribute to a lot of things including layout, conciseness, typography, certain interactivity, considerate and a few others including things like support for graceful degradation where appropiate.
A website in my eyes is something someone visits with predetermined intentions looking to satisfy themselves within a specific niche. This described behavior doesn't differ from real world examples such as when you go to a supermarket to buy food.
In terms of environment, I prefer to create a folder and store installers and patches (ex. environment/dev, environment/install) - specifically the most recent ones.
A lot of devs I know prefer to doing their development on virtual machines and backing up the entire VM (think isolated dev environment). I personally, find it too slow. I prefer having everything I need available in order to do a fresh install if required (some other OSes tend to optimize for current hardware during installation).
My motto generally is, don't bet the bank on anything. A lot of people and companies try to bargain with you by quoting chance - 99.9% to their own benefit and greatly at your loss if it doesn't pan out. (They try to make you take on more risk than them, even though they will profit a lot more if whatever pans out)
Simply put, do the job for the jobs' sake and keep people/companies accountable to promises they've made. If it's not a promise, then it's probably mumbo jumbo.
What are the costs involved for the end user? Is it free? If so, tell them.
Consider your filter tweets section from an adoption standpoint:
Create filters to automatically move Tweets to folders, and reduce Twitter noise. Tweets can be filtered based on hashtags, URLs, Tweet content and author - or any combination of these.
1. I wouldn't recommend using the name 'folders'. Tweets aren't synonymous with letters (that go into folders), tweets are more like sticky notes. I'd suggest you think of a new name to call the tweet containers.
2. You first talk about moving tweets into folders and then about filtering them. (I think you are implying that you filter tweets into these 'folders'). You should use easier to understand terms such as 'Sort tweets from those who you are following into ...'. Use comparisons to simplify the explanation.
3. Provide sensible defaults or provide a sensible way to get users started. (ex. type in the twitter handle/username from your favourite tweeter). A demo is a good idea, but there should definitely also be an easy way to get started.
4. Market yourself effectively. From what I see on your website, it seems like the website is a twitter client - but I'm not sure. If it is a client, then say so. (You have to tell people what you want them to use your service for).
Some of the above recommendations simply require rewriting your copy (text on website). I have also suggested some options that will require hiring a developer. I reckon the best measure to use here is: if your mother uses twitter, will you be able to sit her down and will she be a 'self-starter' using your website or will you have to hold her hand? Try it. She'll definitely give you some useful input.:)
Even at South African rates, that's low considering risk and other factors towards the programmer.
Furthermore, freelance is generally by billable hour or fixed rate. By billable hour, I mean something built of worth for that hour - that's usually around 80% of actual time spent.
Unfortunately at that rate, the only programmers I can see that will find this offer attractive is: 1. Those who did crash courses and have no real world experience. 2. Programmers who lost their jobs and need something for the interim. 3. Freelancers trying to get into the market (or get clients).
My standard freelance rate at the moment is about $40/hour and I consider myself a pretty good developer with 4 years commercial development experience and have done quite a few freelance gigs (I have been coding for 6 years prior as a hobbyist). I consider this money as my 'spending' money.
I'd suggest you find a topic you are passionite about, check out what apps are already available, grab a few and learn from their mistakes.
If you check IE 9 developer tools, you can't even 'switch back' to IE 6 anymore (well, atleast not in x64 mode).
There's a reason why you should opt to use 'cross-browser' libraries such as jQuery. Google chrome has a couple of bugs and even firefox. Not all problems have solutions - take for example styling of 'web' controls. IE renders native controls, browsers render their specific controls - some allow text-indent while others don't.
In terms of application development - as far as I know all non .NET tools have pretty much be phased out (ie. VB6 etc.).
You essentially face the same problem to some degree (ex. users that still run with IE 6 are probably like to be running .NET 2.0 or none at all).
I think at the moment Microsoft is opting for cross-platform apps via web and wcf/web api services. You can also use Mono, but it's generally at least one major version behind (couple of years) and doesn't fully support everything the .NET framework does.
When talking about 'cross-platform' apps, people are rather quick to forget that applications are written during certain time periods. It's easy to support users who are using 10 year old software/hardware (ex. windows xp 32) with 10 year old software (.NET 1.0).
I reckon it's about the same effort to force a user to install 'open source' libraries such as open-gtk as it is to force the user to use a different browser or install the .NET framework if they're on windows.
I'm actually hoping that all the legacy windows operating systems get upgraded to Windows 8 when it gets released. Microsoft is running a campaign where you pay 30$ or something to upgrade a Windows XP+ OS to Windows 8. Windows 8 also boasts quite a bit of improved performance and less resource usage - which makes it perfect for all that legacy hardware (I reckon most PCs built the last 12 years should be able to run it). This would also pave the path to better HTML standards support with IE 10 and better .NET framework support (4.5).
In regards to the tools - I reckon if you're going a C#.NET route with professional+ visual studio with other addons, then I'd say the dev environment greatly surpasses that from what I've seen on linux (visual studio pro ~ $400 USD, addons are free and priced - I use resharper, mindscape web workbench and tangible t4 daily).
You could always go Java route if you don't like the .NET framework.
It would probably be a good idea to ask yourself - are you willing to invest in this company? If you are, is it for giggles or a future?
I'd also say if you are looking to join a startup, pick one that is incubated (ex. ycombinator, google umbono etc.)